Sinope Line Voltage Thermostats

@vrouleau are you using ZHA or other module, to connect your zigbee devices

Thanks for the info Claude.

I can now move on to another thing to do with home assistant.

Have a nice day!

Stéphane

I am using zha on both hassio and docker

@vrouleau if you are using zha then you are missing the zha-quirks package. Check if it is installed in your HA. This package do the conversion from 0x0104 to 0x0101 for your dimmer. Check

I fixed the issue

for some reason setting the delay for the outside temp to 30 secs did not work

cluster_id: 0xff01
attribute: 0x0011
value: 30

so what I did is tried to send an outside temp of -32768 (x8000)

cluster_id: 0xff01
attribute: 0x0010
value: -32768

And this shows me the “set”

I also found that the default timeout for the outside temp is actually set to 10800 (3 hours)
So in the end I kept my automation that will set the out temperature when it changes
Then when I double tab on the switch it will set teh out temp to -32768, wait 5 secs, then rewrite the current outside temp 
 and voila
! what I wanted !

Next step is triple tap to switch from displaying Floor or Air temperature
 :slight_smile:
and IF I got it right


cluster_id: 0xff01
attribute: 0x0105
value: 1  (air) or 2 (floor) 

mmm, the above for Air/Floor temps is not working :frowning:
Could it be because attributes 0x0011 or 0x0105 are not defined in ZHA under cluster 0xFF01
(I can’t see them from the integration, I only see 0x0010 and 0x0020)

Does it means that I cant sent command to it at all, not even from Node Red ?
Like using the “Call Service” node, and setting the data to

{
    "ieee": "xx:xx:xx:xx:xx:xx:xx:xx",
    "endpoint_id": 1,
    "cluster_id": 65281,
    "cluster_type": "in",
    "attribute": 261,
    "value": 1
}

that might explain why I can’t change the default time out for outside to 30 secs


Still not working. I’ve put the zha debug traces. Here is a compare from my SP2600ZB:

2021-10-12 08:02:12 DEBUG (MainThread) [zigpy_deconz.api] Command Command.aps_data_indication (1, 1)
2021-10-12 08:02:12 DEBUG (MainThread) [zigpy_deconz.uart] Send: 0x1731000800010001
2021-10-12 08:02:12 DEBUG (MainThread) [zigpy_deconz.uart] Frame received: 0x17310046003f0022020000010244d301040100002800181101040000421353696e6f706520546563686e6f6c6f6769657305000042085350323630305a4200afffe0d70300b7
2021-10-12 08:02:12 DEBUG (MainThread) [zigpy_deconz.api] APS data indication response: [63, <DeviceState.APSDE_DATA_REQUEST_SLOTS_AVAILABLE|2: 34>, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0x0000>, 1, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0xd344>, 1, 260, 0, b'\x18\x11\x01\x04\x00\x00B\x13Sinope Technologies\x05\x00\x00B\x08SP2600ZB', 0, 175, 255, 224, 215, 3, 0, -73]
2021-10-12 08:02:12 DEBUG (MainThread) [zigpy.zcl] [0xd344: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=17 command_id=Command.Read_Attributes_rsp>
2021-10-12 08:02:12 DEBUG (MainThread) [zigpy_deconz.api] 'aps_data_indication' response from <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0xd344>, ep: 1, profile: 0x0104, cluster_id: 0x0000, data: b'181101040000421353696e6f706520546563686e6f6c6f6769657305000042085350323630305a42'
2021-10-12 08:02:12 INFO (MainThread) [zigpy.device] [0xd344] Read model 'SP2600ZB' and manufacturer 'Sinope Technologies' from <Endpoint id=1 in=[basic:0x0000, identify:0x0003, on_off:0x0006, smartenergy_metering:0x0702, electrical_measurement:0x0B04, manufacturer_specific:0xFF01] out=[ota:0x0019] status=<Status.ZDO_INIT: 1>>
2021-10-12 08:02:12 INFO (MainThread) [zigpy.device] [0xd344] Discovered basic device information for <Device model='SP2600ZB' manuf='Sinope Technologies' nwk=0xD344 ieee=00:0d:6f:00:15:65:ff:f7 is_initialized=True>

vs the DM2500ZB:

2021-10-12 07:52:11 DEBUG (MainThread) [zigpy_deconz.uart] Send: 0x179a000800010001
2021-10-12 07:52:11 DEBUG (MainThread) [zigpy_deconz.uart] Frame received: 0x179a002a0023002202fdff00026a5600000013000c00006a56331a010040910b508e00afff8cd70300d9
2021-10-12 07:52:11 DEBUG (MainThread) [zigpy_deconz.api] APS data indication response: [35, <DeviceState.APSDE_DATA_REQUEST_SLOTS_AVAILABLE|2: 34>, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0xfffd>, 0, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0x566a>, 0, 0, 19, b'\x00jV3\x1a\x01\x00@\x91\x0bP\x8e', 0, 175, 255, 140, 215, 3, 0, -39]
2021-10-12 07:52:11 INFO (MainThread) [zigpy_deconz.zigbee.application] New device joined: 0x566a, 50:0b:91:40:00:01:1a:33
2021-10-12 07:52:11 INFO (MainThread) [zigpy.application] Device 0x566a (50:0b:91:40:00:01:1a:33) joined the network
2021-10-12 07:52:11 DEBUG (MainThread) [zigpy.application] Device 50:0b:91:40:00:01:1a:33 changed id (0x566a => 0x566a)
2021-10-12 07:52:11 DEBUG (MainThread) [zigpy.device] [0x566a] Skipping initialization, device is fully initialized
2021-10-12 07:52:11 DEBUG (MainThread) [zigpy.application] Device is initialized <Device model=None manuf=None nwk=0x566A ieee=50:0b:91:40:00:01:1a:33 is_initialized=True>

The reply from the DM2500ZB did not contain enough info on the model/manifacturer. Weird. Bad device?

Hi, I’ve been using Sinope Zigbee thermostats for a while now but via the Smarthings integration into Home Assistant
 My friend showed me NeviWeb and now purchased a GT-130 thinking that I would still be able to integrate them into HA with the sinope-gt130 community addon developed by claudegel. Tried to install it using the manual and the github way according to the README on github and it is not working for me. Did a bit of Googling and did not find anything except this long thread
 Running the latest version of Hassio. Can anyone point me to the instructions? Thx.

Hi @sricard999, you need to install Sinope Neviweb130 integration via HACS
or GitHub - claudegel/sinope-130: Neviweb custom component for Home Assistant to manage devices connected via a GT130.
Files are installed in custom_components/neviweb130
Then you need to add this in your configuration.yaml file:

neviweb130:
  username: !secret climate_username
  password: !secret climate_password
  network: !secret climate_gateway130
  scan_interval: 360

username is your email address that you use to connect to Neviweb
password is your password
network is the name of your location name in Neviweb where your zigbee devices are linked.
scan_interval is the frequency at which HA will poll for each devices. Leave it at 360
Try this and let me know

Add this in configuration.yaml:

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

I have the Sinope TH1300ZB Zigbee thermostat connected to Home Assistant using ZHA and am attempting to create an automation that will update the outside temperature on the thermostat display. However, no attributes are showing up under the ManufacturerSpecificCluster (0xff01) using Manage Clusters. I have tried to manually update the temperature calling the set Zigbee cluster attribute service in Developer Tools (see below), but receive an error in the logs that attribute 16 does not exist.

service: zha.set_zigbee_cluster_attribute
data:
  ieee: [ieee address]
  endpoint_id: 1
  cluster_id: 65281
  cluster_type: in
  attribute: 16
  value: '60'
  manufacturer: '4508'

Similar to @Buhric above, I am wondering if these attributes are not defined and subsequently not accessible. It appears that others have been able to get this working and I would appreciate any guidance on how to update the outside temperature.

Here is my automation to send outside temperature to zigbee thermostats in ZHA:

#################################
###     send outside temp to zigbee thermostats
#################################
  - alias: Heat-OutdoorTemp
    trigger:
      - platform: state
        entity_id: sensor.dark_sky_temperature
    variables:
      thermostats:
        - 50:0b:91:40:00:02:26:6b  #IEEE of the devices, one per line
        - 50:0b:91:40:00:99:36:7a
    action:
      - repeat:
          count: "{{thermostats|length}}"
          sequence:
            - service: zha.set_zigbee_cluster_attribute
              data:
                ieee: "{{ thermostats[repeat.index-1] }}"
                endpoint_id: 1
                cluster_id: 0xff01
                cluster_type: in
                attribute: 0x0010
                value: "{{ ( trigger.to_state.state|float * 100 ) |int }}"
1 Like

@claudegel thank you for the reply and sharing your automation. I am still getting the following error in my logs: 2021-10-30 20:10:37 ERROR (MainThread) [zigpy.zcl] [0x372c:1:0xff01] 16 is not a valid attribute id when using your code in an automation. Out of curiosity, if you go to manage clusters in the Sinope entity, are do you see attributes under ManufacturerSpecificCluster (0xff01)? I have the ManufacturerSpecificCluster available under Clusters, but when selected, there are no attributes available under Cluster Attributes. I think this may be my issue, but do not know why I am seeing all of the other attributes for the Sinope thermostat, but nothing for the ManufacturerSpecificCluster (which includes the Outdoor temp).

When you go in configuration → integration. Choose one of your thermostat. Select manage cluster then you will see in the cluster list two cluster for 0xff01. There is one cluster «out» and one «in»
In the «out» cluster there is no cluster attribute but for the «in» cluster there is 0x0010 for outside temp and 0x0020 for time

Do you have this when you go in one of your zigbee thermostat in ZHA. Check last linezigbee cluster2
It must say Quirk: zhaquirks.sinope.thermostat.SinopeTH1300ZB
If you don’t see this then your thermostat is not properly recognised as a SinopĂ© zigbee device

I think that must be my issue. The last line is “Power Source: Mains”. There is no “Quirk” line below that. I am also noting that my thermostat is using an older firmware version (0x01000700 instead of 0x01000900). I have attempted to locate the latest firmware and I cannot find a source to download.

Do you have any ideas why my thermostat is not being recognized correctly? Note that I am using the GoControl HUSBZB-1 Zigbee USB stick; updated firmware to version ncp-uart-sw-6.7.8.ebl per suggestion in earlier post in this thread. Also, any suggestions for downloading the latest firmware for the Sinope? I appreciate your help!

Mine are all 0x01000900. I think that if you connect it in Neviweb via the GT130 it will be updated automatically to firmware 0x01000900
You will see it in device info: software version 1.0.9
Now you are at software version 1.0.7
It should be possible to update the software version without using Neviweb. I need to check.
Or we will need to add another quirk in ZHA

I do not have the GT130. My TH1300ZB was previously connected to a SmartThings Hub and I recently moved everything over to Home Assistant via the HUSBZB stick (Zigbee and Wave). Apparently, the SmartThings Hub does not apply Sinope firmware updates. I figured out how to successfully update firmware on my Hue bulbs via ZHA, after finding the firmware files to download. I should be able to use a similar approach to update the Sinope thermostat via ZHA if the firmware file is available. If necessary, I can also buy a GT130, but would prefer not to spend the money on a hub that I will only use once to apply the firmware update. Thanks.

I’ve asked SinopĂ© howto update the firmware. If they answer I’ll post it. meanwhile I’ll keep searching for that. The Sinope zigbee devices can be updated OTA

This is great! Two tips for anyone else stopping by:

  • Don’t try to test this using the “Run Actions” button in the UI (it won’t work). Instead, go over to Developer Tools, select your outdoor temperature sensor entity, change its State value to something, and click “Set State”. This will spoof a new value on that sensor, which will trigger the automation correctly.
  • If you’re a fellow American whose weather sensor gives a Fahrenheit value, you can just change the value template accordingly to handle the conversion: "{{ ((trigger.to_state.state|float - 32) * 55.55) |int }}"
  • If you’re trying to pull the outdoor temperature from a Weather integration, you’ll first need to set up a fake sensor using a Template in your configuration.yaml with a state string similar to this one (replacing Dark Sky with your weather integration of choice): "{{ state_attr('weather.dark_sky', 'temperature') }}"
    • The entity_name in the automation trigger should be set to the entity ID of this sensor.
1 Like