Sinope Line Voltage Thermostats

Thanks Claude, if you need me to provide some info / data / logs, just let me know.

Also with my limited knowledge acquired in the last 24h, I don’t understand why in the device’s “Manage Clusters” I can see the “Manufacturer Specific Cluster (x0FF01)”, but I can’t get any attributes from it, even if I do see a couple defined in the quirk…

Let me finish to publish new release in my other custom_components today and I’ll start having a look in the ZHA for sinopé tomorrow.
In ZHA for your TH1124ZB could you post the zigbee information so I can check if something is missing from the quirks
Thank you

Bonne année Claude! Si tu as besoin de n’importe quoi, gêne-toi pas.

Happy New Year Claude,

So Not sure what info you needed so heres what I found in the HA logs about the TH1124ZB

2021-01-01 10:33:26 DEBUG (MainThread) [zigpy_deconz.api] APS data indication response: [98, <DeviceState.APSDE_DATA_REQUEST_SLOTS_AVAILABLE|2: 34>, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0x0000>, 1, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0x7cbf>, 1, 260, 0, b'\x18+\x01\x04\x00\x00B\x1fSinope Technologies\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00B\x1fTH1124ZB\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 0, 175, 255, 118, 72, 1, 0, -28]
2021-01-01 10:33:26 DEBUG (MainThread) [zigpy.zcl] [0x7cbf:1:0x0000] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=True> manufacturer=None tsn=43 command_id=Command.Read_Attributes_rsp>
2021-01-01 10:33:26 DEBUG (MainThread) [zigpy_deconz.api] 'aps_data_indication' response from <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0x7cbf>, ep: 1, profile: 0x0104, cluster_id: 0x0000, data: b'182b01040000421f53696e6f706520546563686e6f6c6f67696573000000000000000000000000050000421f5448313132345a420000000000000000000000000000000000000000000000'
2021-01-01 10:33:26 DEBUG (MainThread) [zigpy.endpoint] [0x7cbf:1] Manufacturer: Sinope Technologies
2021-01-01 10:33:26 DEBUG (MainThread) [zigpy.endpoint] [0x7cbf:1] Model: TH1124ZB
2021-01-01 10:33:26 DEBUG (MainThread) [zigpy.quirks.registry] Checking quirks for Sinope Technologies TH1124ZB (50:0b:91:40:00:02:57:06)
2021-01-01 10:33:26 DEBUG (MainThread) [zigpy.quirks.registry] Considering <class 'zhaquirks.sinope.thermostat.SinopeTechnologiesThermostat'>
...
2021-01-01 10:33:26 DEBUG (MainThread) [homeassistant.components.zha.core.gateway] device - 0x7CBF:50:0b:91:40:00:02:57:06 entering async_device_initialized - is_new_join: True
2021-01-01 10:33:26 DEBUG (MainThread) [homeassistant.components.zha.core.gateway] device - 0x7CBF:50:0b:91:40:00:02:57:06 has joined the ZHA zigbee network
2021-01-01 10:33:26 DEBUG (MainThread) [homeassistant.components.zha.core.device] [0x7CBF](TH1124ZB): started configuration
2021-01-01 10:33:26 DEBUG (MainThread) [homeassistant.components.zha.core.channels.base] [0x7CBF:ZDO](TH1124ZB): 'async_configure' stage succeeded
...
2021-01-01 10:33:27 DEBUG (MainThread) [homeassistant.components.zha.core.device] [0x7CBF](TH1124ZB): completed configuration
2021-01-01 10:33:27 DEBUG (MainThread) [homeassistant.components.zha.core.device] [0x7CBF](TH1124ZB): stored in registry: ZhaDeviceEntry(name='Sinope Technologies TH1124ZB',

If you need other info, let me know where to get it from

Thank you all for your support, I wish you an happy new year full of domotic

Bonjour/hi , bonne année/happy new year,
I read a good part of the discussion about the integration of Sinope in HA.
I am interested in ZHA, I have a TH1300ZB and two TH1124ZB which are currently working quite well. the one in the bedroom had too much light and I had a lot of pressure from my wife to find a solution. As I have found nothing here about it, I looked by myself and I am proud to have succeeded.
first I found the concerned cluster ID and attribute in the smartthings handle device:

if(backlightAutoDimParam == "On Demand"){ 	//Backlight when needed
    traceEvent(settings.logFilter,"Backlight on press",settings.trace)
    cmds += zigbee.writeAttribute(0x0201, 0x0402, 0x30, 0x0000)
}
else{										//Backlight sensing
    traceEvent(settings.logFilter,"Backlight Always ON",settings.trace)
    cmds += zigbee.writeAttribute(0x0201, 0x0402, 0x30, 0x0001)
}  

But nothing happened when I ‘zha.set_zigbee_cluster_attribute’ service in the developer tools. so after weeks on research :stuck_out_tongue_winking_eye: I decide to modify the hvac.py file content in /usr/local/lib/python3.8/site-packages/zigpy/zcl/clusters/ folder
simply add the 0x0402 attibute in the thermostat attribute list (line 300):

    0x0010: ("local_temperature_calibration", t.int8s),
    0x0011: ("occupied_cooling_setpoint", t.int16s),
    0x0012: ("occupied_heating_setpoint", t.int16s),
    0x0013: ("unoccupied_cooling_setpoint", t.int16s),
    0x0014: ("unoccupied_heating_setpoint", t.int16s),
    0x0015: ("min_heat_setpoint_limit", t.int16s),
    0x0016: ("max_heat_setpoint_limit", t.int16s),
    0x0017: ("min_cool_setpoint_limit", t.int16s),
    0x0018: ("max_cool_setpoint_limit", t.int16s),
    0x0019: ("min_setpoint_dead_band", t.int8s),
    0x001A: ("remote_sensing", RemoteSensing),
    0x001B: ("ctrl_seqe_of_oper", ControlSequenceOfOperation),
    0x001C: ("system_mode", SystemMode),
    0x001D: ("alarm_mask", AlarmMask),
    0x001E: ("running_mode", RunningMode),
    0x0402: ("backlightAutoDimParam", t.enum8),
    # ...

after just restart HA. not sure if i had too delete the ./pycache/ folder. Go to manage the device cluster in the ZHA integration, select thermostat from the list and find the backlightAutoDimParam cluster and set it to 0.

I know that is not a permanent solution but it save my couple / or the thermostat :face_with_raised_eyebrow:

I then looked for the integration of the outside temperature which is present in the thermostat.py file but as @Buhric mentioned there is no cluster in the list.
also, I think cluster 0x0011 is missing for display activation (set to 10800, seen in ConBee integration.
Anyway, the ‘SinopeTechnologiesManufacturerCluster’ seems not to be concidered.
that’s it for my first post
Voila pour ma premiere participation

Thank you @emericM the most important is to have a High WAF.
I’ll check to see if I can send a PR to add this permanently in Zigpy.
I’m finishing with the other custom_component for sinopé devices and will work on ZHA and zigpy to implement what we need for all Sinopé devices.
Happy new year to all of you.

Yesterday I’ve added some custom services to the neviweb custom_component so it is not necessary to go to Neviweb portal to change some devices parameter. It could be done directly in HA devtool/services:

  • neviweb.set_backlight_idle, to set backlight intensity for thermostats
  • neviweb.set_timer, to be able to set cut off delay when device is turn_on, on light, dimmer and switch
  • neviweb.set_keypad_lock, to be able to lock keypad on thermostat, light, dimmer and switch
  • neviweb.set_second_display, to switch from setpoint to outside temperature for thermostat second display line
  • neviweb.set_led_indicator, to change led indicator intensity and color for on and off state, for light and dimmer. This one is still buggy but the other one work fine.

Next I’ll do the same for neviweb130 component for zigbee and wifi devices

Salut Claude,

Since your last update, I lost 6 thermostats in HA. Any idea ?

Using integration via Neviweb only

2021-01-05 11:40:27 ERROR (MainThread) [homeassistant.components.climate] neviweb: Error on device update!
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 359, in _async_add_entity
    await entity.async_device_update(warning=False)
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 466, in async_device_update
    await task
  File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/config/custom_components/neviweb/climate.py", line 277, in update
    self._away_temp = float(device_data[ATTR_AWAY_SETPOINT])
KeyError: 'roomSetpointAway'

or

2021-01-05 11:40:30 ERROR (MainThread) [homeassistant.components.climate] neviweb: Error on device update!
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 359, in _async_add_entity
    await entity.async_device_update(warning=False)
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 466, in async_device_update
    await task
  File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/config/custom_components/neviweb/climate.py", line 287, in update
    self._backlight_idle = device_data[ATTR_BACKLIGHT]
KeyError: 'backlightIntensityIdle'

Hi @ironslow, The only error I have in my log is
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='neviweb.com', port=443): Read timed out. (read timeout=30)
It’s Neviweb that do not respond. All my 10 thermostats are ok. I have lots of those Read timed out until 8:15 this morning. Then everything is back to normal

KeyError: 'roomSetpointAway'

is when device_data return nothing. I try to update device but data is empty. I should have a protection for this with a warning.

KeyError: 'backlightIntensityIdle'

is for the same reason device_data[ATTR_BACKLIGHT] = None

Hi there,

I also have issues with the last update, the last working version was 1.2.5.
Interesting fact 2/4 thermostats are still working, probably because they are more recent.

Here is the log:

2021-01-05 21:19:33 DEBUG (MainThread) [custom_components.neviweb.climate] Setting up neviweb climate Bureau: {'id': 13467, 'identifier': '001EC0C14F33-000020C5-0-000076CA', 'name': 'Bureau', 'family': '1122', 'location$id': 4254, 'parentDevice$id': 13464, 'group$id': 1017, 'orderIdx': 0, 'sku': 'TH1120RF-3000B', 'vendor': 'Sinopé', 'url_en': 'http://www.sinopetech.com/en/boutique/products/neviweb-en/thermostat-for-electric-heating-wireless-communication/', 'url_fr': 'http://www.sinopetech.com/boutique/produits/thermostat-pour-chauffage-electrique-communication-sans-fil/', 'signature': {'protocol': 'miwi', 'type': 10, 'model': 1122, 'modelCfg': 3, 'hardRev': 1, 'softVersion': {'major': 1, 'middle': 7, 'minor': 0}, 'softBuildCfg': 3, 'family': '1122'}}
2021-01-05 21:19:33 DEBUG (MainThread) [custom_components.neviweb.climate] Setting up neviweb climate Grande chambre: {'id': 13465, 'identifier': '001EC0C14F33-000020C5-0-00004888', 'name': 'Grande chambre', 'family': '1120', 'location$id': 4254, 'parentDevice$id': 13464, 'group$id': 43608, 'orderIdx': 0, 'sku': 'TH1120RF-3000', 'vendor': 'Sinopé', 'url_en': 'http://www.sinopetech.com/en/boutique/products/neviweb-en/thermostat-for-electric-heating-wireless-communication/', 'url_fr': 'http://www.sinopetech.com/boutique/produits/thermostat-pour-chauffage-electrique-communication-sans-fil/', 'signature': {'protocol': 'miwi', 'type': 10, 'model': 1120, 'modelCfg': 82, 'hardRev': 0, 'softVersion': {'major': 1, 'middle': 3, 'minor': 1}, 'softBuildCfg': 0, 'family': '1120'}}
2021-01-05 21:19:33 DEBUG (MainThread) [custom_components.neviweb.climate] Setting up neviweb climate Petite chambre: {'id': 13466, 'identifier': '001EC0C14F33-000020C5-0-000046DF', 'name': 'Petite chambre', 'family': '1120', 'location$id': 4254, 'parentDevice$id': 13464, 'group$id': 1018, 'orderIdx': 0, 'sku': 'TH1120RF-3000', 'vendor': 'Sinopé', 'url_en': 'http://www.sinopetech.com/en/boutique/products/neviweb-en/thermostat-for-electric-heating-wireless-communication/', 'url_fr': 'http://www.sinopetech.com/boutique/produits/thermostat-pour-chauffage-electrique-communication-sans-fil/', 'signature': {'protocol': 'miwi', 'type': 10, 'model': 1120, 'modelCfg': 82, 'hardRev': 0, 'softVersion': {'major': 1, 'middle': 3, 'minor': 1}, 'softBuildCfg': 0, 'family': '1120'}}
2021-01-05 21:19:33 DEBUG (MainThread) [custom_components.neviweb.climate] Setting up neviweb climate Salon: {'id': 13468, 'identifier': '001EC0C14F33-000020C5-0-00011053', 'name': 'Salon', 'family': '1122', 'location$id': 4254, 'parentDevice$id': 13464, 'group$id': 43601, 'orderIdx': 0, 'sku': 'TH1120RF-3000B', 'vendor': 'Sinopé', 'url_en': 'http://www.sinopetech.com/en/boutique/products/neviweb-en/thermostat-for-electric-heating-wireless-communication/', 'url_fr': 'http://www.sinopetech.com/boutique/produits/thermostat-pour-chauffage-electrique-communication-sans-fil/', 'signature': {'protocol': 'miwi', 'type': 10, 'model': 1122, 'modelCfg': 3, 'hardRev': 1, 'softVersion': {'major': 1, 'middle': 7, 'minor': 0}, 'softBuildCfg': 3, 'family': '1122'}}
2021-01-05 21:19:33 DEBUG (SyncWorker_1) [custom_components.neviweb.climate] Updating neviweb climate Bureau (0.652 sec): {'roomSetpointMin': 15, 'roomSetpointMax': 23, 'roomSetpointAway': 15, 'earlyStart': 'on', 'lockKeypad': 'unlocked', 'secondaryDisplay': 'outsideTemperature', 'backlightIntensityIdle': 0, 'wattage': {'error': None, 'value': 988}, 'setpointMode': 'autoBypass', 'rssi': 54, 'roomSetpoint': 21, 'outputPercentDisplay': 34, 'roomTemperature': {'value': 21.02, 'error': None}, 'alarmsActive0': {'type': 'none', 'severity': 'indication', 'duration': 0, 'configIdx': 0}}
2021-01-05 21:19:34 DEBUG (SyncWorker_0) [custom_components.neviweb.climate] Updating neviweb climate Grande chambre (0.421 sec): {'roomSetpointMin': 15, 'roomSetpointMax': 23, 'earlyStart': 'on', 'lockKeypad': 'unlocked', 'secondaryDisplay': 'outsideTemperature', 'backlightIntensityIdle': 0, 'wattage': {'error': None, 'value': 1500}, 'setpointMode': 'autoBypass', 'rssi': 39, 'roomSetpoint': 17.5, 'outputPercentDisplay': 0, 'roomTemperature': {'value': 17.5, 'error': None}, 'alarmsActive0': {'type': 'none', 'severity': 'indication', 'duration': 0, 'configIdx': 12}, 'hardwareRev': 5}
2021-01-05 21:19:34 ERROR (MainThread) [homeassistant.components.climate] neviweb: Error on device update!
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 359, in _async_add_entity
    await entity.async_device_update(warning=False)
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 466, in async_device_update
    await task
  File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/config/custom_components/neviweb/climate.py", line 277, in update
    self._away_temp = float(device_data[ATTR_AWAY_SETPOINT])
KeyError: 'roomSetpointAway'
2021-01-05 21:19:34 DEBUG (SyncWorker_2) [custom_components.neviweb.climate] Updating neviweb climate Petite chambre (0.496 sec): {'roomSetpointMin': 15, 'roomSetpointMax': 23, 'earlyStart': 'on', 'lockKeypad': 'unlocked', 'secondaryDisplay': 'outsideTemperature', 'backlightIntensityIdle': 0, 'wattage': {'error': None, 'value': 750}, 'setpointMode': 'auto', 'rssi': 54, 'roomSetpoint': 17, 'outputPercentDisplay': 0, 'roomTemperature': {'value': 17.34, 'error': None}, 'alarmsActive0': {'type': 'none', 'severity': 'indication', 'duration': 0, 'configIdx': 12}, 'hardwareRev': 5}
2021-01-05 21:19:34 ERROR (MainThread) [homeassistant.components.climate] neviweb: Error on device update!
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 359, in _async_add_entity
    await entity.async_device_update(warning=False)
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 466, in async_device_update
    await task
  File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/config/custom_components/neviweb/climate.py", line 277, in update
    self._away_temp = float(device_data[ATTR_AWAY_SETPOINT])
KeyError: 'roomSetpointAway'
2021-01-05 21:19:35 DEBUG (SyncWorker_1) [custom_components.neviweb.climate] Updating neviweb climate Salon (0.397 sec): {'roomSetpointMin': 15, 'roomSetpointMax': 23, 'roomSetpointAway': 15, 'earlyStart': 'on', 'lockKeypad': 'unlocked', 'secondaryDisplay': 'outsideTemperature', 'backlightIntensityIdle': 0, 'wattage': {'error': None, 'value': 2284}, 'setpointMode': 'autoBypass', 'rssi': 39, 'roomSetpoint': 20.5, 'outputPercentDisplay': 30, 'roomTemperature': {'value': 20.46, 'error': None}, 'alarmsActive0': {'type': 'none', 'severity': 'indication', 'duration': 0, 'configIdx': 0}}
2021-01-05 21:28:35 DEBUG (SyncWorker_6) [custom_components.neviweb.climate] Updating neviweb climate Bureau (0.6 sec): {'roomSetpointMin': 15, 'roomSetpointMax': 23, 'roomSetpointAway': 15, 'earlyStart': 'on', 'lockKeypad': 'unlocked', 'secondaryDisplay': 'outsideTemperature', 'backlightIntensityIdle': 0, 'wattage': {'error': None, 'value': 988}, 'setpointMode': 'autoBypass', 'rssi': 54, 'roomSetpoint': 21, 'outputPercentDisplay': 36, 'roomTemperature': {'value': 21, 'error': None}, 'alarmsActive0': {'type': 'none', 'severity': 'indication', 'duration': 0, 'configIdx': 0}}
2021-01-05 21:28:36 DEBUG (SyncWorker_8) [custom_components.neviweb.climate] Updating neviweb climate Salon (0.333 sec): {'roomSetpointMin': 15, 'roomSetpointMax': 23, 'roomSetpointAway': 15, 'earlyStart': 'on', 'lockKeypad': 'unlocked', 'secondaryDisplay': 'outsideTemperature', 'backlightIntensityIdle': 0, 'wattage': {'error': None, 'value': 2284}, 'setpointMode': 'autoBypass', 'rssi': 35, 'roomSetpoint': 20.5, 'outputPercentDisplay': 31, 'roomTemperature': {'value': 20.48, 'error': None}, 'alarmsActive0': {'type': 'none', 'severity': 'indication', 'duration': 0, 'configIdx': 0}}

Could you check in Neviweb for those two thermostat if they have the away setpoint setting. Maybe some old thermostat just don’t have this settting

Looks like they all have the same settings on neviweb, including the away temperature.

Is there something specific that changed after version 1.2.5 linked to this setting ?

roomSetpointAway

was there but

backlightIntensityIdle

is new
I’ll push a new release in few minutes with some protection for these two setting and logging if they are missing

1 Like

Could you check in your debug console if theparameter name is the same

roomSetpointAway

and

backlightIntensityIdle

Not sure how I can check that ? What debug console are you talking about ? The chrome debug console ?

Nevermind I’ve read older posts, I’ll check that.

Ctrl Maj K in firefox
Ctrl Maj I for chrome

Not working:

Request:

https://neviweb.com/api/device/00000/attribute?attributes=roomSetpointAway,lockKeypad,roomSetpointMin,roomSetpointMax,signature,wattage,temperatureFormat,timeFormat,cycleLength,earlyStart,backlightIntensityIdle,secondaryDisplay,wattageOverride

Response:

{"roomSetpointAway":16,"lockKeypad":"unlocked","roomSetpointMin":15,"roomSetpointMax":23,"signature":{"protocol":"miwi","type":10,"model":1120,"modelCfg":82,"hardRev":0,"softVersion":{"major":1,"middle":3,"minor":1},"softBuildCfg":0,"family":"1120"},"wattage":{"error":null,"value":1500},"temperatureFormat":"celsius","timeFormat":"24h","cycleLength":"short","earlyStart":"on","backlightIntensityIdle":0,"secondaryDisplay":"outsideTemperature","wattageOverride":null}

Working:

Request:

https://neviweb.com/api/device/00000/attribute?attributes=roomSetpointAway,lockKeypad,roomSetpointMin,roomSetpointMax,signature,wattage,temperatureFormat,timeFormat,cycleLength,earlyStart,backlightIntensityIdle,secondaryDisplay,wattageOverride

Response:

{"roomSetpointAway":15,"lockKeypad":"unlocked","roomSetpointMin":15,"roomSetpointMax":23,"signature":{"protocol":"miwi","type":10,"model":1122,"modelCfg":3,"hardRev":1,"softVersion":{"major":1,"middle":7,"minor":0},"softBuildCfg":3,"family":"1122"},"wattage":{"error":null,"value":988},"temperatureFormat":"celsius","timeFormat":"24h","cycleLength":"short","earlyStart":"on","backlightIntensityIdle":0,"secondaryDisplay":"outsideTemperature"}

Is this for the thermostat that was buggy

Yes it is.