Sinope Line Voltage Thermostats

Hello, I made the switch from Hubitat to Home Assistant a few days ago so I’m still learning and I would like your opinion. I have a Daikin wall unit and 9 Sinopé TH1123ZB thermostats. I would like to control them by week / weekend planning but also with home / away management. I would also like to do an automation for Hydro-Quebec Flex D. I also like to have the outside temperature ‘Feels Like’ displayed on the thermostats.

Integration with the GT130 hub seems to bring certain advantages:
Automatic FlexD, and a schedule (not great but it works).
On the other hand, the display of the outside temperature is not ‘Feels like’ and I don’t want to manage attendance with NeviWeb but HA.

The direct integration of thermostats with HA by ZigBee is easy and I am able (thanks to Claude’s script) to set the outside temperature to ‘Feels like’.
On the other hand, I find nothing on the planning management side for the thermostats in HA.

For home / away management, I believe that regardless of the integration, I can lower the temperature by 2 degrees in absent mode and go back up on return.

Anyway, I would like to see if you have any advice and I would be curious to know how you operate. Merci!

Hi, I’m also starting with HA and from what I’ve seen, not required to have devices but you can use entity call services directly for scene and automation.

You can see the list of services that come with the GT130 integration on this link.

Hoping that it helps you a little :slight_smile:

Thank you for this Claude.
As many others, I’m having trouble with my DM2500ZB dimmer. I’m just starting out with Home Assistant, and I’m starting to get the hang of it. My Home Assistant is installed on a Rasberry Pi 4, everything is connected via a Conbee 2 key. All of my thermostats/normal light switches are working flawlessly.

However, my dimmers are only recognized as normal light switches:

{
“node_descriptor”: “NodeDescriptor(logical_type=<LogicalType.Router: 1>, complex_descriptor_available=0, user_descriptor_available=1, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress|RxOnWhenIdle|MainsPowered|FullFunctionDevice: 142>, manufacturer_code=4508, maximum_buffer_size=71, maximum_incoming_transfer_size=43, server_mask=10752, maximum_outgoing_transfer_size=43, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=False, *is_full_function_device=True, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=True, *is_security_capable=False)”,
“endpoints”: {
“1”: {
“profile_id”: 260,
“device_type”: “0x0104”,
“in_clusters”: [
“0x0000”,
“0x0002”,
“0x0003”,
“0x0004”,
“0x0005”,
“0x0006”,
“0x0008”,
“0x0702”,
“0x0b05”,
“0xff01”
],
“out_clusters”: [
“0x0003”,
“0x0004”,
“0x0019”
]
}
},
“manufacturer”: “unk_manufacturer”,
“model”: “unk_model”,
“class”: “zigpy.device.Device”
}

I’ve edited my configuration.yaml file to enable the Sinope zha-quirks that I downloaded from the zha-quirks-handler:

zha:
custom_quirks_path: /config/www/Sinope/

Am I missing something? Thank you in advance and joyeuses fêtes!

Welcome to HA @elsbree. Now that you have setup your Sinopé devices via neviweb130 you can find you devices in development tools under climate.neviweb130_climate_kitchen for example.
Just look in there for neviqeb130 and you will get all your devices name.
To view your device on the overview tab you can go two way. You cannot use both method at the same time.

  • use the lovelace configuration tool that you will find in the overview panel top wright corner, the three vertical dots. Choose edit dashboard, then on the lower wrigth coner clic on the blue button +add card and add the card you need for your light , thermostats etc. Just fill the info to setup the card. It will then appear on the front end. Proceed like that for all your devices. In HACS → frontend, you will find more lovelace cards that you can add.
  • edit lovelace manually by editing the file in config, iu-lovelave.yaml. You will need to add some configuration first in configuration.yaml for that method.
lovelace:
  mode: yaml
  resources:
    - url: /local/community/vertical-stack-in-card/vertical-stack-in-card.js
      type: module

Then in ui-lovelace.yaml add this for your thermostats

title: Home

views:
  - title:Neviweb
    path: neviweb
    icon: mdi:signal-variant
    theme: dark-mode
    cards:
      - type: custom:vertical-stack-in-card
        title: Chauffage plancher
        cards:
          - type: entities
            show_icon: True
            entities:
              - entity: climate.neviweb130_climate_plancher_cuisin
              - entity: climate.neviweb130_climate_plancher_solarium

      - type: custom:vertical-stack-in-card
        title: Lumières
        cards:
          - type: entities
            show_icon: True
            entities:
              - entity: light.neviweb130_light_bureau
              - entity: light.neviweb130_light_cave
              - entity: light.neviweb130_light_chambre_1

You can then add what ever you need.
For automation you can also do it manually or use a component call scheduler-component where you can adjust temperature at different period during the day or for specific day, week ou weekend etc.
On my side I prefer to do it manually. So in configuration.yaml i’ve added the following code:
automation: !include_dir_merge_list automation/
Then I’ve created a subdir in config called automation and in that dir I put all my automation file for heating, light away mode hydro flex-D etc

when you do some changes in ui-lovelace.yaml just same and then click refresh in the upper right comre three dot menu.
Start with that and let us kno

Is it a DM2500ZB or a DM2550ZB the first one is supported correctly in zha but last one is new and not supported in ZHA. I just sent a pull request to zha-quirks to add them last weekend
Tell me which one you have.

1 Like

My pull request to add support for Sinopé zigbee thermostats back light control have been merge in zha-quirks. It should appear in next update and it will allow us to manage the back light from always on to on demand.

It is a DM2500ZB. Problem is, they are not correctly recognized by ZHA. Every time I want to pair them, I have to go through 2 interviews, because the first one never ends, so I have to unpair/pair the device again. The second interview ends instantly, but the device has an unknown manufacturer/model in ZHA.

I have three dimmers, they all do the same thing. I’m kinda lost here.

To control your devices there are many ways to do it. I personnaly add some file in my automatiion folder where are all my automations. I have automations to control temperature during week days and other for weekend. I also have automations for temperature control in away mode. For Hydro I don’t use the Eco Sinopé because it is not enough agressive. I completely cut my heating after doing a pre-heating of one 45 minutes before the peak and revert to normal heating after the peak. I prefert to have a button on my main overview pannel that when clicked, deactivate many automations and activate other that are used during peak period. For example:

###############################################
#    activer mode pointe energie d'hydro Québec
###############################################
  - id: pointe active on
    alias: pointe active on
    initial_state: true
    trigger:
      platform: state
      entity_id: input_boolean.avis_hydro
      to: 'on'
    action:
      - service: automation.turn_on
        data:
          entity_id: 
            - automation.coupe_courant
            - automation.allume_courant
            - automation.pre_chauffe_thermo
            - automation.pre_chauffe_plainte
            - automation.pre_chauffe_plancher
            - automation.plainte_off
            - automation.thermo_off
            - automation.plainte_on
            - automation.thermo_on
            - automation.rechauffe_plancher
            - automation.stop_plancher
            - automation.plainte_nuit_on
            - automation.thermo_nuit_on
      - service: automation.turn_off
        data:
          entity_id:
            - automation.augmenter_chauffage_salon_le_matin
            - automation.baisser_chauffage_chambres_le_matin
            - automation.chauffe_cuisine_matin
            - automation.chauffe_cuisine_soir
            - automation.chauffe_cuisine_weekend
            - automation.chauffe_bain_matin
            - automation.chauffe_bain_soir
            - automation.chauffe_bain_matin_weekend
            - automation.chauffe_bain_soir_weekend
            - automation.chauffe_solarium_matin
            - automation.chauffe_solarium_soir
            - automation.chauffe_solarium_weekend
            - automation.gestion_lumiere_noel
            - automation.gestion_prise_ext_en_semaine
            - automation.gestion_prise_ext_fin_de_semaine_2
            - automation.arrive_claude
      - service: switch.turn_off
        data:
          entity_id:
            - switch.schedule_chauffe_bureau_weekend
            - switch.schedule_chauffe_bureau_semaine
            - switch.schedule_chauffe_salle_de_lavage
            - switch.schedule_chauffe_salle_a_diner
            - switch.schedule_chauffe_salon
            - switch.schedule_chauffe_chambre_1
            - switch.schedule_chauffage_visite
      - service: switch.turn_on
        data:
          entity_id:
            - switch.schedule_chauffage_salon_pointe
            - switch.schedule_chauffage_salle_a_diner_pointe
            - switch.schedule_chauffe_salle_de_lavage_pointe
            - switch.schedule_chauffe_chambre_1_pointe

I have created a input_boolean.avis_hydro in configuration.yaml

input_boolean:
  avis_hydro:
    name: Avis_hydro
    initial: off
    icon: mdi:signal-variant

Then created a button like this in my ui-lovelace.yaml:

          - type: "custom:button-card"
            color_type: card
            color: rgb(223, 255, 97)
            entity: input_boolean.avis_hydro
            icon: mdi:thermometer
            name: Hydro
            state:
              - value: "on"
                color: red
                icon: mdi:alert
                styles:
                  card:
                  - animation: blink 2s ease infinite
              - operator: default
                color: green
                icon: mdi:shield-check
            styles:
            card:
              - font-size: 12px
              - font-weight: bold

When I clic the button it switch all my automation from normal operation to peak period automation and when I click again it revert everything to normal. So when I receive the email from Hydro Quebec I wait after 8 pm and click my hydro button. Automations are taking care of everything for morning and night peak period. When it is finished I just clic the button again to revert to normal operation until next peak period.
My next step is to use IMAP Email Content component to catch email received from Hydro Quebec to do the switch automatically. I’ve changed my email at Hydro to send peak message to a specific adress that my raspberry pi is monitoring. I just need to finish setup of IMAP email content so it can catch if it is a morning or night peak period or both. Lot of fun

1 Like

Then it is just because your zha-device-handlers
is not correctly installed or configured. Mine is installed since long time so let me remember how to do it and I’ll tell you the way to go.

1 Like

Wow thank you Claude for this detailed answer. I like your setup and if I understand correctly, I could simply integrate all my thermostat directly into HA without going through the Sinopé hub. I could have a local control, while displaying my outside temperature ‘Feel Likes’.

I searched for schedules today and found the scheduler-component, do you use it when I see “switch.schedule_chauffe_bureau_weekend”?

I’m also curious to see examples of your automation. Do I understand correctly that you switch to On all your automation connected to Hydro?

  • automation.pre_chauffe_thermo = activated 45 min before the period
  • automation.plainte_off = start of period
  • automation.plainte_on = end of period for return to normal

And you deactivate the automations which could open thermostats during a peak period like “automation.arrive_claude”.

I see that you have automation for some item like “chauffeur_cuisine_” and schedules for others. What makes you use one or the other?

Yes when you see switch.schedule_chauffe_bureau_weekend it is from scheduler-component. There is a nice feature for heating shema where you can add as many period on a single bar to play with your heating


really easy

As for Hydro peak, yes when I click the button it switch all my normal automation to off and all my hydro peak automation to on in one shut. The example I’ve posted above just switch all my system to peak mode. Every line is a complete automation to control one or more devices and I use automation.turn_on and automation.turn_off service to make the switch.

here is an example of heating automation for the one who are new to HA

###########################
##       alumer plancher cuisine a 6:00 AM en semaine
###########################
  - alias: chauffe cuisine matin
    initial_state: true
    trigger:
      platform: time
      at: "06:00:00"
    condition:
      condition: and
      conditions:
        - condition: state
          entity_id: binary_sensor.workday_sensor
          state: 'on'
        - condition: or
          conditions:
          - condition: state
            entity_id: sensor.season
            state: 'winter'
          - condition: numeric_state
            entity_id: sensor.dark_sky_temperature
            below: 3.0  
    action:
      service: climate.set_temperature
      entity_id: climate.neviweb130_climate_plancher_cuisin
      data:
        temperature: 22

You can note that I’m using two condition to find out if it is time to heat or not. sensor.season to know if it is winter and sensor.dark_sky_temperature to start heating even if it is not winter. Winter start on Decembre 21 but Novenber can be cold so if outside temperature goes below 3, the automation start it work. If condition are not met, the automation just do nothing. On peak period I just stop that automation and start another one that manage the peak period for that thermostat.
Of course you can replace Dark_sky by an outdoor sensor to have more precise outdoor temperature to know when it is time to heat. My next step

At the beginning all my automation was via text automation but now I’m switching some of them to scheduler-component as it become more and more efficient and easy to manage. In some case I still need text automation because there are more possibility and fine tuning. But I think that gradually everything will be managed via component like scheduler-component. I already started to contribute to this component.

1 Like

You can send local outside temperature to miwi thermostats 2nd display with my sinope-gt125 custom_component. For zigbee thermostats you cannot use neviweb130 custom_component as Neviweb just send outside temperature to each zigbee and wifi thermostats.
For zigbee thermostats on zha you can use the follong automation:

#################################
###      envoyer la température extérieure aux thermostat zigbee. 
#################################
  - alias: Heat-OutdoorTemp
    trigger:
      - platform: state
        entity_id: sensor.dark_sky_temperature
    variables:
      thermostats:
        - 50:0b:91:40:00:02:26:6d
    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 }}"

Off course you can replace Dark_sky with a local temperature sensor. If you want feel like temperature you can get it from Dark_sky or do some calculation with your local sensor temperature et wind speed sensor.

1 Like

To get the latest zha-device-handler you just need to install ZHA from Configuration → devices and services. Click on the add buttton at the bottom and pick ZHA and install it.
In your configuration.yaml file you just add:

zha:
  database_path: zigbee.db

There are other parameters that you can add but you don’t need them:
enable_quirks boolean (Optional, default: true)
This is enabled by default so you don’t need it
custom_quirks_path string (Optional)
This one is if you want to use a development branch of ZHA to test new feature. If you add this it will override current ZHA on all HA update. The current 0.0.64 ZHA release already have the DM2500ZB quirk.
The quirk for the new DM2550ZB is on it’s way and should be added soon in dev branch then after in next ZHA release.

1 Like

EDIT:
Ok, I’m starting to get the hang of it.
Here’s what I did:

  • ZHA is already installed.
  • I added the database/path mentioned in my configuration.yaml file:

zha:
database_path: /config/zigbee.db
#custom_quirks_path: /config/custom_zha_quirks

  • Then I restarted my HA.
    *No success when pairing my DM2500ZB

So naturally, I’m thinking that I have no idea what I’m doing but here’s what I found:
Dimmer DM2500ZB
image

VS
Standard light SW2500ZB
image

So the quirks are definitely installed correctly, right?

could you post your zigbee device signature in ZHA for your DM2500ZB. Maybe Sinopé have changes the cluster for that devices. I’ve posted mine in previous post. I need to compare them for cluster number

Sure. I’ll give you 2 to compare. Sorry about the formatting.

Dimmer salon:

{
“node_descriptor”: “NodeDescriptor(logical_type=<LogicalType.Router: 1>, complex_descriptor_available=0, user_descriptor_available=1, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress|RxOnWhenIdle|MainsPowered|FullFunctionDevice: 142>, manufacturer_code=4508, maximum_buffer_size=71, maximum_incoming_transfer_size=43, server_mask=10752, maximum_outgoing_transfer_size=43, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=False, *is_full_function_device=True, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=True, *is_security_capable=False)”,
“endpoints”: {
“1”: {
“profile_id”: 260,
“device_type”: “0x0104”,
“in_clusters”: [
“0x0000”,
“0x0002”,
“0x0003”,
“0x0004”,
“0x0005”,
“0x0006”,
“0x0008”,
“0x0702”,
“0x0b05”,
“0xff01”
],
“out_clusters”: [
“0x0003”,
“0x0004”,
“0x0019”
]
}
},
“manufacturer”: “unk_manufacturer”,
“model”: “unk_model”,
“class”: “zigpy.device.Device”
}

Dimmer cuisine:

{
“node_descriptor”: “NodeDescriptor(logical_type=<LogicalType.Router: 1>, complex_descriptor_available=0, user_descriptor_available=1, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress|RxOnWhenIdle|MainsPowered|FullFunctionDevice: 142>, manufacturer_code=4508, maximum_buffer_size=71, maximum_incoming_transfer_size=43, server_mask=10752, maximum_outgoing_transfer_size=43, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=False, *is_full_function_device=True, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=True, *is_security_capable=False)”,
“endpoints”: {
“1”: {
“profile_id”: 260,
“device_type”: “0x0104”,
“in_clusters”: [
“0x0000”,
“0x0002”,
“0x0003”,
“0x0004”,
“0x0005”,
“0x0006”,
“0x0008”,
“0x0702”,
“0x0b05”,
“0xff01”
],
“out_clusters”: [
“0x0003”,
“0x0004”,
“0x0019”
]
}
},
“manufacturer”: “unk_manufacturer”,
“model”: “unk_model”,
“class”: “zigpy.device.Device”
}

The quirks normally just change device_type”: “0x0104 which is a dimmable switch
to device_type”: “0x0101 which is a dimmable light. Cluster are the same as what I have so we need to check the quirk version you have. I need to find out how to check it.
Are you o n the latest HA 2021.12.6 ?

I was on HA 2021.12.4, and I’ve just updated to 2021.12.6.
The problem is still there:

Here’s what I have in my custom quirks folder:
image

Am I missing anything?

what file do you have in your sinope dir. You should have init.py, light.py and thermostat.py
In light.py you should have a section class SinopeDM2500ZB(SinopeTechnologieslight): near line 93.
If you don’t have it that is the problem. your config/custom_zha_quirks may interfere with zha and the real quirks don’t load properly.

It is just a directory I created to organize the zha-device-handlers, I did not modify any of the quirks:
image

Line 93: