Sinope Line Voltage Thermostats

Hi @claudegel

Finally, I was able to make it work on a single thermostat using the Automation YAML editor in the GUI

alias: Sinope Affiche température ext . Salon
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.sainte_therese_temperature
condition: []
action:
  - service: zha.set_zigbee_cluster_attribute
    data:
      cluster_type: in
      ieee: 68:0a:e2:ff:fe:8d:bd:63
      endpoint_id: 1
      cluster_id: 65281
      attribute: 16
      value: "{{ ( states(\"sensor.sainte_therese_temperature\")|float * 100 ) |int}}"
mode: single

Works perfectly, I will add two more of these, one for each thermostat that I have.

BTW - Environnement Canada sensor.sainte_therese_temperature is pretty solid for me.
Once in a while (maybe once every two weeks) I can see some unavailable values, but doesn’t last more than 5 minutes.

Thanks for the support and the hard work on the Sinope products !

Can you post your automation that don’t work to check the indentation.
In yaml you cannot use tab to do the indentation, only spaces.
Also I uspect that the line mode: single
is not indented properly. If it is aligned with the data: content you will get the error extra keys not allowed in data.

Sorry @claudegel but I deleted the automation that didn’t work…

Thanks.

@claudegel

I tried it once more

- alias: Send-OutdoorTemp
  trigger:
    - platform: state
  entity_id: sensor.local_temp # sensor to get local temperature
  variables:
    thermostats:
      - 68:0a:e2:ff:fe:8d:bd:63  #ieee of your thermostat dvices, one per line
      - 38:5c:fb:ff:fe:df:35:6e
  action:
    - repeat:  #service will be call for each ieee
        count: "{{thermostats|length}}"
        sequence:
          - service: zha.set_zigbee_cluster_attribute
            data:
              ieee: "{{ thermostats[repeat.index-1] }}"
              endpoint_id: 1
              cluster_id: 0xff01 # 65281
              cluster_type: in
              attribute: 0x0010 # 16
              value: "{{ ( trigger.to_state.state|float * 100 ) |int }}" # sending temperature in hundredth of a degree
            mode: single

When I try to save it, there is a red exclamation mark :
Message malformed: extra keys not allowed @ data[‘0’]

Thanks.

I think that mode: single should be at the begining of the line.

Look at my example above

mode: single

should be aligned vertically with the action: line. The way you did it, it is part of data section and there is no mode value for the data section. Just put two space in front of the mode: single

- alias: Send-OutdoorTemp
  trigger:
    - platform: state
  entity_id: sensor.local_temp # sensor to get local temperature
  variables:
    thermostats:
      - 68:0a:e2:ff:fe:8d:bd:63  #ieee of your thermostat dvices, one per line
      - 38:5c:fb:ff:fe:df:35:6e
  action:
    - repeat:  #service will be call for each ieee
        count: "{{thermostats|length}}"
        sequence:
          - service: zha.set_zigbee_cluster_attribute
            data:
              ieee: "{{ thermostats[repeat.index-1] }}"
              endpoint_id: 1
              cluster_id: 0xff01 # 65281
              cluster_type: in
              attribute: 0x0010 # 16
              value: "{{ ( trigger.to_state.state|float * 100 ) |int }}" # sending temperature in hundredth of a degree
  mode: single

I’ve updated my example for outside temperature in sinope-zha readme.md to have the correct indentation in automation for mode: single

Support for double click and long press for Sinopé light and dimmer have been merged into zha-device-handler. It should appear into next zha update in HA.
To find out how to use it and make automation see my sinope-zha documentation.

Good morning,

I have 18 Sinope thermostats in my house (TH1123WF / TH1124WF).
As it was not possible to put them all in the same network, I therefore use two networks in NeviWeb.

When I try with this configuration, I can only access half of the thermostats (those of the first network).

# Example configuration.yaml entry
neviweb130:
  username: '[email protected]'
  password: 'MyPassword'
  network: 'Network1'
  scan_interval: 360
  homekit_mode: False
  stat_interval: 1800

I tried to use the following configuration, but only the thermostats of the first network are visible.
Can you help me?

climate:
  - platform: neviweb130
    username: "[email protected]"
    password: "MyPassword"
    network: "Network1"
    scan_interval: 360
    homekit_mode: False
    stat_interval: 1800  
  - platform: neviweb130
    username: "[email protected]"
    password: "MyPassword"
    network: "Network2"
    scan_interval: 360
    homekit_mode: False
    stat_interval: 1800

And after restarting HA, I have tose errors :

2023-03-31 12:12:49.320 WARNING (SyncWorker_1) [homeassistant.loader] We found a custom integration neviweb130 which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2023-03-31 12:13:00.637 ERROR (MainThread) [homeassistant.setup] Error during setup of component neviweb130
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/setup.py", line 256, in _async_setup_component
    result = await task
  File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/config/custom_components/neviweb130/__init__.py", line 122, in setup
    data = Neviweb130Data(hass_config[DOMAIN])
KeyError: 'neviweb130'
2023-03-31 12:13:01.423 ERROR (MainThread) [homeassistant.setup] Unable to prepare setup for platform neviweb130.climate: Unable to set up component.
2023-03-31 12:13:01.431 ERROR (MainThread) [homeassistant.setup] Unable to prepare setup for platform neviweb130.climate: Unable to set up component.

Can you tell me how to do it?

Hi @bluecandy101 it is presently not supported in neviweb130. But as I did it for my other custom_component neviweb for miwi devices on Neviweb, I can add the code needed to support two locations in Neviweb in the same neviweb130 custom_component.
I’ll create a new branch on my git later today and let you know so you can test. Should not be complicated.

Oh, that would be really nice! THANKS !

Ok it’s ready for testing. I’ve created branch two-locations on my git

I’ve also updated the doc in the readme.md of that branch.
your configuration.yaml should look like this

neviweb130:
  username: '<your Neviweb username>'
  password: '<your Neviweb password>'
  network: '<your gt130 location name in Neviweb>' (gt130 emplacement dans Neviweb)
  network2: '<your second location name in Neviweb>' (2e emplacement)
  scan_interval: 360
  homekit_mode: False
  stat_interval: 1800

In theory, neviweb130 can detect automatically your two locations in Neviweb. But if you also have a GT125 then you need to put the two parameters «network» and «network2» in your config to avoid mixing with your GT125 location.
Pick all file in the branch __init__.py, climate.py, light.py, const.py, sensor.py, switch.py and services.yaml and replace what you have in config/custom_components/neviweb130.
Let me know.

All thermostats are listed… It’s great! Thank you.

I’ll have to figure out which is which…
We don’t have access to the names given in the NeviWeb application?

Normally neviweb130 create the name of the new devices like this:
climate.neviweb130_climate_«name of your device in Neviweb»
So, th1123wf_12 should be the name of your device in Neviweb.
Normally it is better to give good easy to understand names for your devices in Neviweb and once you load them in HA they are easy to retrieve. Anyway it’s always possible to rename your devices in HA.
Let me know if all is working fine so I can push a new version for neviweb130.

Could it be a good idea to add a number to the name to know from which network it was polled ?.
Something like climate.neviweb130_climate_1_«name of your device in Neviweb» (first network)
climate.neviweb130_climate_2_«name of your device in Neviweb» (second network)

I’ve added climate.neviweb130_climate_2_… for the second network to differentiate the device from each network. Didn’t change for the first network as it will affect all devices names already loaded in HA. This will change the device name for those on the second network.
So try it and let me know.

I copied the latest version to the folder and restarted Home Assistant.
All thermostats are named in NeviWeb. I do not see their names in the entity list. Is there anything I need to do different?

Check in HA log for the line [custom_components.neviweb130] Received gateway data…
You should see something like:
[{‘id’: 351438, ‘identifier’: ‘14b457fffe7a9472-943469fffe3887aa’, ‘name’: ‘Calypso chauffe eau’, ‘family’: ‘2151’,…
‘name’: ‘Calypso chauffe eau’ is what I pick to set the mane of the devices. Maybe for the wifi Neviweb is sending something else to show the name you put for your devices.
If you don’t see this line maybe you need to activate logging for neviweb130. Put this in your configuration.yaml

logger:
  default: warning
  logs:
    homeassistant.custom_components: debug
    custom_components.neviweb130: debug

This is what I see in Neviweb


Look like the name you put in Neviweb are for the area
It’s the first ligne that will be sent as the device name

You were right. Only the rooms were named.
I changed all the names and now I have a name in the displays.


Thank you !

Great, I’ll push a new release

1 Like

Can you advise where you place this configuration? I tried it in my configuration.yml to no success :frowning: