Sinope Line Voltage Thermostats

Bonjour Claude,
Je viens d’intégrer votre component à HA pour détecter mon thermostat sinope th1400wf. Il est bien détecté par HA.
J’aimerais que HA puisse afficher la valeur de la température extérieur (en ce moment affichée par mon thermostat sinopé). Par contre, l’attribut “extern_temp” ne semble pas existé pour mon entité [climate.neviweb130_climate_th1400wf_central] . Je vois que l’attribut est là pour les switch. Est-ce possible pour moi d’avoir accès à cet attribut?
Merci pour votre aide!

Bonjour @pocorbin Pour les appareils wifi on a pas acces au controle locale comme pour les zigbee. On les controle via le composant neviweb130 qui poll Neviweb et envoi certaine commandes, setpoint, verrouillage du clavier etc. Malheureusement Sinopé n’expose pas ce paramètre sur Neviweb et donc on ne peut envoyer nos propres valeurs de température locale à Neviweb.
Dans le cas des appareils zigbee on peut les connecter à un gateway zigbee locale et donc leur envoyer notre température locale.
Faudra en venir à parler directement aux thermostat wifi sans passer par neviweb mais pour l’instant ce n’est pas possible… mais ça me trotte dans la tête car ce sont les seul qu’on a pas de controle locale.

Ah… Dommage! Merci quand même pour votre excellent travail!

Hi Claude,

Thank you very much for this formula. I saw Dominique mention below having to add an offset to get the value correct for his setup, and it made me wonder - shouldn’t x_min also change based on the gauge type (5-95 vs. 10-80)? I have the same Sinope tank level monitor with a 5-95 gauge. When I plug the value I just pulled from my system (float4 = 43848000, which should be 265 as decimal, correct?) into your formula, I get 50.7377%. This is very close to what I see on my physical gauge, but not quite. The physical gauge is reading about 47.5% right now.

If I use x_min = 120 I get pretty much spot on with what the physical gauge is reading.

I @tr779, the formula was tested with a 10-80 gauge. it is possible that with your 5-95 gauge it need a little tweaking. So if you see that with x_min = 120 is closer than we will change the equation like this:

template:
  - trigger:
    - platform: time_pattern
      hours: "/5"
  - sensor:
    - name: "Tank remaining level"
      unit_of_measurement: "%"
      unique_id: sensor.tank_remaining_level
      icon: mdi:propane-tank
      state_class: measurement
      state: >
        {% set gauge = states('input_text.tank_gauge') %} # must match the above input_text name
        {% set angle = states('sensor.current_angle') | float %}
        {% set offset = states('input_number.gauge_offset') | float %} # must match the above input_number name
        {% if (gauge == "10-80") %}
          {% set x_min = 110 | float %}
          {% set x_max = 406 | float %}
          {% set delta = 46 | float %}
          {% set low = 10 | float %}
          {% set high = 80 | float %}
        {% else %}
          {% set x_min = 120 | float %}
          {% set x_max = 415 | float %}
          {% set delta = 55 | float %}
          {% set low = 5 | float %}
          {% set high = 95 | float %}
        {% endif %}

        {% if ((delta <= angle) and (70 >= angle)) %}
          {{ (((delta-x_min)/(x_max-x_min)*(high-low))+low+offset) | round(0) }}
        {% elif ((0 <= angle) and (delta > angle)) %}
          {{ (((angle)+360-x_min)/(x_max-x_min)*(high-low)+low+offset) | round(0) }}
        {% else %}
          {{ (((angle)-x_min)/(x_max-x_min)*(high-low)+low+offset) | round(0) }}
        {% endif %}

Confirm it is OK like this and I’ll update the doc

With the zigbee version of the Sedna valve installed with their flow meter, can you just see the quantity of active flow at present time, or can HA map/translate that into historical use data to be viewed/actioned upon? I’m looking for a cloud free version of like what the Flume 2 can do that I can install in my house. The Flume 2 works well for what you’d want, but it chews through batteries like crazy, and I don’t have mains power out by where my meter is to hack it with some dummy batteries, so trying to find a local solution I can install in the house on our plumbing for tracking water usage… hoping this could be an option. I use several of their thermostats and love their products. Though I’d prefer to cut their GT125 out of the equation though and just connect the zigbee version directly to my zigbee network…

ZHA will give you the flowrate in L/hr. Then it is possible in HA to make some graph for water usage per hour or days.

1 Like

Hi Claude,
First, Bravo for all the work you’re doing with the Sinope devices.
I just installed a Sinope RM3500ZB. I have other sinope thermostats so the qwirks are installed,

I want to use the RM3500ZB to switch OFF the water tank elements during Hydro Peak periods and set the temp lower when we are not occupying the house for an extended period.

The ON/OFF works fine.

I’d like to know how to use the other parameters.
I’m currently experimenting but if you have info that would be great.
I can use the “ZHA.Issue zigbee cluster” command in an automation to set parameters but I would like to know how they work.
Reading the qwirks I saw some attributes that look promissing
drConfigWaterTempMin 0xff01 0x0076 0=off, 45 to 55 celsius
drConfigWaterTempTime 0x00f1 0x0077 (currently at 2)
drWTTimeOn 0x00f1 0x0078 (currently 240)

Could you please confirm and/or complete my assumptions.
1- From what I read I deduct that the heater will turn on automatically if the temp set in 0x0076 is reached. It means that if I want to lower the tank temp for an extended period I need an automation to turn it OFF periodically, Is that correct?
2- Since there is no max temp attribute I assume the max temp is always the one set on the tank thermostat. Right? Or Is there a way to set a max temp?
3- What are the use of attributes 0x0077 TempTime and 0x0078 WTTimeOn?
4- On the Sinope site they talk about a setting for the water tank size. Is it attribute 0x0124? (currently 60) The size says that if can be configure to any of (40,50,60,80)
Any info would be great.
Thanks

drConfigWaterTempMin, goes from 45 to 55oC. this is a protection for your health to prevent some baterial growth if the temperature goes too low. If you set it to 50oC when you turn off the heater the temperature will gradually goes down and if it reach 50oC the heater will turn on automatically. If you set it to 0 the heater will never turn on.
This is what you need. set it to the desired low temperature and turn off the heater when you leave. If the temperature goes below that temperature the heater will turn on automatically.
The RM3500ZB is not a thermostat. The thermostat is in your heater. So you just cut the power and monitor temperature for the low limit you’ve set. The upper temperature limit is controlled by your heater thermostat.
So effectively you need an automation to monitor the status on/off when your away but you will need to set a gap of few degres to trun off again when the heater have restarted.
the tank size parameter is not used and useless anyway. The heater thermostat control the temperature and the drConfigWaterTempMin turn it back on if the temperature reach the limit.

Are we sure that works? I have the flow sensor, and have the valve connected to ZHA, and while HA shows the sensors for flow and such, the number is always 0. Instantaneous demand(0), summation delivered(0), and Opening(closed) never change, despite flow, valve state and so on. I know it works, because temperature and switch state both change as the info at the valve changes.

You need to configure your flowmeter in the manufacturer cluster, attribute 0x0240, flow_meter_config
If you read it now you probably have a value of
Array(type=AnonymousLVList, value=[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0])
Which is = to no sensor
FS4220 = Array(type=AnonymousLVList, value=[194, 17, 0, 0, 136, 119, 0, 0, 1, 0, 0, 0])
FS4221 = Array(type=AnonymousLVList, value=[159, 38, 0, 0, 76, 85, 1, 0, 1, 0, 0, 0])
See on GitHub - claudegel/sinope-zha: This is a custom quirks for sinope zigbee devices for testing before it is added to zha-device-handlers. It also explain how to setup those quirks in Home Assistant to use and test them before they are merged in zha-device-handlers in the README.MD file. You will need zha-toolkit custom_component to send the configuration value to your valve.

1 Like

You’re right - that’s exactly what that cluster shows.

For whatever reason, ZHA Toolkit is failing writing to that cluster though. Here’s my YAML, just in case you see something obvious:

service: zha_toolkit.attr_write
data:
  ieee: 50:0b:91:40:00:03:eb:d1
  endpoint: 1
  cluster: 0xff01
  attribute: 0x0240
  attr_type: 0x48
  attr_val: [194, 17, 0, 0, 136, 119, 0, 0, 1, 0, 0, 0]
  read_before_write: true
  read_after_write: true

You need to put the ieee of your valve :slight_smile: Check in parameter/device and services/ZHA. select your valve and clic zigbee info to get your ieee
What is your HA version and zha-toolkit version. Older version had problem writing array data to zigbee device

Find it
the line attr_val is wrong
attr_val: [32, 12, 0, 194, 17, 0, 0, 136, 119, 0, 0, 1, 0, 0, 0]
the three first number are missing

1 Like

That’s it! Thanks so much.

Have fun
when you read the value from the cluster / attribute you get only
194, 17, 0, 0, 136, 119, 0, 0, 1, 0, 0, 0
but when you write the array you need to add the size and type of data
32, 12, 0, 194, 17, 0, 0, 136, 119, 0, 0, 1, 0, 0, 0

Bonjour Claude, merci pour cette automatisation, ça fonctionne très bien. Est-ce qu’on peut faire la même chose avec l’heure affichée sur les Thermostat ? Je me demande de quelle façon elle peut se mettre à jour en ZHA.

Bonjour @Phil200, dans zha normalement l,heure est envoyé aux thermostats automatiquement. mais si tu veux le faire localement alors voici l’automation:

- id: set_time
  alias: set_time
  trigger:
    - platform: time
      at: "03:00:00"
  variables:
    thermostats:
      - 50:0b:91:40:00:02:26:6d  <--ieee de tous tes thermostats
      - 38:5c:fb:ff:fe:d9:ea:f4
  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: 0x0020
              value: "{{ (as_timestamp(utcnow()) - as_timestamp('2000-01-01'))| int }}"
  mode: single

L’heure est envoyée en secondes depuis 2000 tous les matin vers 3:00 AM

Claude ? Tu étais au courant de ceci ?