Sinope TH1300ZB Thermostat Time Format

Hi All,

I recently bought a Sinope TH1300ZB thermostat after not having any luck finding a suitable Z-Wave thermostat for floor heating. I added a Zigbee stick to my setup and the TH1300ZB paired with ZHA effortlessly. The important functionality is there but no configuration options are available and I wanted to change the time format from 24h to 12h. I think zigbee2mqtt provides configuration options but I went with ZHA for ease-of-use because I’ve never used Zigbee before.

I did lots of searching and found a few people asking how to change the format but no answers so thought I’d share how I changed the format on my thermostat.

  • On Home Assistant go to “Developer Tools” then “Services”
  • Select “Zigbee Home Automation: Set zigbee cluster attribute” as the Service
  • Use the following values:
    • IEEE: Address of your device
    • Endpoint ID: 1
    • Cluster ID: 65281
    • Cluster Type: in
    • Attribute: 276
    • Value: 1
    • Manufacturer Code: Leave unchecked

Then hit CALL SERVICE and the time format on your thermostat should change to 12h with am/pm indicator. Using a value of 0 probably (untested) changes it back to 24h.

Hi @fretwire

You can have all configuration options for Sinope with ZHA here : 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

You can thanks @claudegel for that.

To change time format in ZHA it is manufacturer cluster 0xff01, attribute 0x0114 (276)
to change any attribute value for your thermostat just go to parameters / device and services, select Zigbee Home Automation tile click on xxx devices at the bottom. This will open the list of all ZHA devices. click on your device and you will see a page with three column. On the left there is reconfigure with three vertical dots


Then in the popup select manage zigbee device

on that view you select on the first line the cluster 0xff01
On the next line you select the attribute 0x0114 time_format
zigbee2
At the bottom you have two button:
view attribute value (circled in black)
write attribute value ( circled in red)
first click on the read button to show the value which is TimeFormat.Format_24h
change the 24 for 12 like TimeFormat.Format_12h and click write attribute
that’s it

Thanks for getting this thermostat working so well under ZHA!

The next thing I’d like to do is get room_temperature populated into a sensor. Is there an equally easy way to do that or would I need to install zha-toolkit?

No need for that. Just create a template sensor like this. The value you need is exposed as current_temperature in the dev-tool state for your thermostat.
Just create a sensor for each thermostats

template:
    - sensor:
        - name: "salle_a_diner_current_temperature"
          unit_of_measurement: '°C'
          device_class: temperature
          state_class: measurement
          state: >
            {% if state_attr('climate.salle_a_diner_thermostat', 'current_temperature') < 1 %}
              {{ states('sensor.salle_a_diner_current_temperature') }}
            {% else %}
              {{ state_attr('climate.salle_a_diner_thermostat', 'current_temperature') }}
            {% endif %}

you can create a file template.yaml and load it in your configuration.yaml file like this
template: !include template.yaml
In dev-tool/states you will find all attributes for your thermostat that you can access the same way.

In dev-tool states I only see floor_temperature, no current_temperature. Could be because this is a floor heating thermostat. If I look in “Manage Zigbee Device” I can pull room_temperature from cluster 0xff01 (id is 0x010d) but it doesn’t show up in any dev-tool states.

No matter, the main thing I was looking for was energy monitoring and that works flawlessly (thanks to your efforts, I’m guessing).

Thanks again!!

Are you in floor mode or air mode. On my TH1300ZB this is what I have

please check cluster 0xff01, attribute 0x0105 airFloorMode.
1 = air, 2=floor
Also can you go back to manage zigbee device to check the attribute 0x0105 and also on thirds section, signature what do you have at the bottom last line
“class”: “thermostat.SinopeTH1300ZB” ? if not your device is not properly detected

In floor mode current_temperature is floor temperature. But attribute 0x010d will give you room temperature. For example my floor is at 17.8oC but air is at 23.04oC
In ZHA it is possible to make a sensor that read air temperature. You can also show floor temperature on the thermostat and show room temperature at the place of outside temperature.

with zha toolkit you can do this:

service: zha_toolkit.attr_read
data:
  ieee: climate.salle_de_bain_thermostat
  cluster: 0xff01
  attribute: 0x010d
  manf: 0x4508
  state_id: sensor.room_temperature
  state_attr: air_temperature
  allow_create: true
  force_update: true
  use_cache: true
  event_success: my_read_success_trigger_event
  event_fail: my_read_fail_trigger_event
  event_done: my_read_done_trigger_event

and the result will be a sensor.room_temperature with state attribute air_temperature


I just need to create an automation that will read this every x minutes
value 2304 is a raw value from the thermostat and should be divided by 100 to get 23.04oC

better

service: zha_toolkit.attr_read
data:
  ieee: climate.salle_de_bain_thermostat
  cluster: 0xff01
  attribute: 0x010d
  manf: 0x4508
  state_id: sensor.room_temperature
  allow_create: true
  force_update: true
  use_cache: true
  event_success: my_read_success_trigger_event
  event_fail: my_read_fail_trigger_event
  event_done: my_read_done_trigger_event


it directly populate the sensor state

My mistake I do have a current_temperature in dev-tool states! I must have filtered badly or was temporarily blind.

If I check attribute 0x0105 I see FloorMode.floor but that’s actually what I want because the floor heating is secondary heat in a small area (mud room and powder room off my back door).

The current_temperature attribute in the climate entity matches the value of the sensor.xxx_floor_temperature entity and I do want to monitor the floor temperature because the floor heating isn’t always on in that area.

Seems like these thermostats have at least two sensors. One 10k wired sensor for the floor temperature and a second sensor in the thermostat that measures the room temperature.

Checking the signature the bottom last line reads:
“class”: “zhaquirks.sinope.thermostat.SinopeTH1300ZB”

I’m all stock on my Home Assistant setup. The only custom_component I have installed is rpio_gpio because I need it to pull a GPIO high for a UPS I have installed on my Pi. Other than that I try to leave things 100% stock.

Ok so if you are FloorMode.floor then current_temperature is the floor temperature.
Yes these thermostats have two temperature sensor. one in the floor that is a 10k or a 12k and one in the thermostat for room temperature. This one is reported in attribute 0x010d.
So if you want to monitor floor temperature it is

template:
    - sensor:
        - name: "salle_a_diner_floor_temperature"
          unit_of_measurement: '°C'
          device_class: temperature
          state_class: measurement
          state: >
            {% if state_attr('climate.salle_a_diner_thermostat', 'current_temperature') < 1 %}
              {{ states('sensor.salle_a_diner_current_temperature') }}
            {% else %}
              {{ state_attr('climate.salle_a_diner_thermostat', 'current_temperature') }}
            {% endif %}

if you change FloorMode.floor to FloorMode.Air_by_floor then current_temperature will be reporting room temperature.