Fibaro Heat Controller fgt001 wont update set temperature

When I update the set temperature of the heat controller it will not update in Home Assistant. It just stays were it is. To get the value which I set, I need to call “refresh node”. However, I when I call “refresh node” twice on the fgt001 home assistant will crash without error reporting a seg fault. Calling “refresh node” multiple times on any other zwave node works fine.

I use raspbian and run home assistant in venv. I have updated my python_openzwave to the newest version available on pip and copied the latest 12 day old fgt001.xml from github into my config folder. This xml supposedly works around an infinite loop error.

Does anyone else has similar issues or has an idea what I could fix?

1 Like

I’ve just bought the heat controller to use with home assistant and I’m having the same issue. Did you manage to find a way to get it working correctly?

Nope, I am using it in blind mode. That is I will not read the set temperature.

Given that I am not the only one this seems to be a more general issue. I hope it is related to
https://github.com/OpenZWave/open-zwave/issues/1220

So if all goes well it could be fixed next year with the new heating period (I currently only have a Danfoss and a Fibaro one for testing and will wait before I buy the rest). It would be a shame if not as the thermostats are nice.

Note if you are using it in blind mode you might be running into trouble as HA is not doing anything if you are already at set temp. So what I mean, you change the set temp say from 16C to 18C. The thermostat is then at 18C, and out of sync with HA which is still at 16C. You wont be able to set it back to 16C

Hello,

Almost one year later it’s look like the issue is still here(I just experienced it).
This github issue seem also related to our problem :

https://www.cnx-software.com/2018/10/03/z-wave-sdk-raspberry-pi-3-firmware/ :wink: I hope this will be ported into HA shortly. This should fix all z-wave issues

I found a trick.
Instead of refreshing the whole node (which leads to a HA crash) I refresh only one entity.
E.g :

- id: Refresh-FGT-001
  alias: Z Wave refresher
  hide_entity: true
  trigger:
  - platform: time
    minutes: "/15"
    seconds: 00
  action:
    - service: zwave.refresh_entity
      data:
        entity_id: sensor.thermometer
    - service: zwave.refresh_entity
      data:
        entity_id: climate.heater
1 Like

Hi, I read the example.
I did another that calls the entity only when there is a temperature or on/off event and not every 15 minutes, so I avoid draining the battery more than necessary.

id: fibaro_update
alias: Fibaro Update
initial_state: true
hide_entity: false
trigger:
- platform: event
  event_type: call_service
  event_data:
    domain: climate
    service: set_temperature
- platform: event
  event_type: call_service
  event_data:
    domain: climate
    service: set_operation_mode
condition:
- condition: template
  value_template: "{{ now().strftime('%d-%m') >= '10-10' or now().strftime('%d-%m') <= '15-04' }}"
action:
- data:
    entity_id: climate.fibaro_system_fgt001_heat_controller_heating
  service: zwave.refresh_entity
- data:
    entity_id: climate.fibaro_system_fgt001_heat_controller_heating_2
  service: zwave.refresh_entity

I also entered a temporal condition, to try.
I hope useful for someone.
:smiley:

hmm still not resolved I see. I just installed two heat controllers and the mode change is not registered as well aside from the temp. From heat to off and vice versa is not displayed correctly in HA

Thanks for this code, but it didn’t work for the on/off, just set temperature.

And yeah, almost 2 years after the first message, issue is still here.

Hi, sorry because I took it for granted, but there is no setting in another component.

In configuration.yaml:

zwave: 
#  polling_interval: 900000 # 15min
#  polling_interval: 600000 # 10min
  polling_interval: 300000 # 5min
#  polling_interval: 12300 # 1 min 

This is to enable polling

Then you have to put all the entities to 0 so as not to consume battery unnecessarily.
52

Do you also have an additional temperature sensor?

Yes I have external temperature sensor.

Entities of this node:

Node values:

I also have issues with the parameter 2:

The value has to be between 1 and 31, why this hint? (between 2145…). And seems like if I sent something else than 1, it correctly transmitted but after refreshing the page, it stay at 1.

And parameter 3 (read-only), it didn’t gave any information. It’s supposed to tell if a window is detected as open or if the external sensor is correctly linked.

Now put the polling intensity at 0 of all entities, except for the temperature.
For the second parameter it is certainly a badly done setup, because it does not remain written. However in Additional functions I put 8, so to see the color every time I set a temperature.
The third parameter does not work.

I also copy my updated automation, since the previous one gave me some problems.

id: fibaro_update
alias: Fibaro Update
initial_state: true
hide_entity: false
trigger:
- platform: event
  event_type: call_service
  event_data:
    service_data: { "entity_id": "climate.fibaro_system_fgt001_heat_controller_heating" }
- platform: event
  event_type: call_service
  event_data:
    service_data: { "entity_id": "climate.fibaro_system_fgt001_heat_controller_heating_2" }
- platform: event
  event_type: call_service
  event_data:
    service_data: { "entity_id": "climate.fibaro_system_fgt001_heat_controller_heating_3" }
- platform: event
  event_type: call_service
  event_data:
    service_data: { "entity_id": "climate.fibaro_system_fgt001_heat_controller_heating_4" }
condition:
- condition: template
  value_template: "{% if trigger.event.data.service == 'set_operation_mode' %}{{ trigger.event.data.service_data.operation_mode != states(trigger.event.data.service_data.entity_id) }}
  {% elif trigger.event.data.service == 'set_temperature' %}{{ trigger.event.data.service_data.temperature != state_attr(trigger.event.data.service_data.entity_id, 'temperature') }}
  {% else %}False{% endif %}"
action:
- data_template:
    message: "Update Fibaro {% if trigger.event.data.service_data.entity_id == 'climate.fibaro_system_fgt001_heat_controller_heating' %}Ufficio{% 
    elif trigger.event.data.service_data.entity_id == 'climate.fibaro_system_fgt001_heat_controller_heating_2' %}Ingresso{%
    elif trigger.event.data.service_data.entity_id == 'climate.fibaro_system_fgt001_heat_controller_heating_3' %}Living{%
    elif trigger.event.data.service_data.entity_id == 'climate.fibaro_system_fgt001_heat_controller_heating_4' %}Bathroom{% endif %}"
  service: notify.ios_######
- delay: '00:00:30'
- data_template:
    entity_id: "{{ trigger.event.data.service_data.entity_id }}"
  service: zwave.refresh_entity
- data_template:
    message: "Fibaro Updated."
  service: notify.ios_######

Then I would like to add that these valves are very beautiful but are designed to modulate based on the perceived temperature (which does not correspond to that of the probe), and there is no way of knowing if they are open or closed.

About the second parameter, I tried to remove/add my valve (2 differents) few times and the issue is not fixed. The value is good for you, you see 8?
Even if I don’t have the good value here, the good one is “in” the valve (I have 8 too, remote control make change the valve color but it’s always written “1”).

Thanks for the confirmation about the 3rd parameter, I wasn’t sure.

You write 8, send it and then don’t worry about what you read.

1 Like

I set up polling_intensity (of temperature) at 10 (with polling_interval by default), so get a value every 10mn. All others polling_intensity are 0

Here’s the battery, seems very consuming no?

I think you send too many requests, if I understand correctly, do you change the target temperature all day?
This implies that you ask the valve for a lot of information.
Can you post settings in zwave.yaml and automation?

No I didn’t change the target yersterday, I set up polling_intensity and don’t touch anything after that on the heat controller. It’s just that the temperature is sent to the valve every 10 minutes instead of default (I don’t know the default refresh frequency).

I don’t use zwave.yaml or anything about it in configuration.yaml, just the native integration, I didn’t change any default parameter about zwave integration. I turned off all automation about my heat controller yesterday, so nothing was active during this fall of battery.

Your problem is precisely that you send the target temperature to the valve too many times, if you use an event every 10min the valve responds with too much data and battery consumption.
You have to set the value of 10min in zwave.yaml and then create an automation that sends the target temperature only when you want to change it. Please note that the battery lasts for 1 day.

Here the only entity refresh every 10mn:

It’s the temperature from the external sensor, not the target! My needed is to have a fresh value of the actual temperature in HA, how am I supposed to do this differently? I’m not talking about the target temperature.

What the difference between write polling_intensity for temperature (not target!) at 10 in GUI and in zwave.yaml as you said?

I understand the issue about refresh entity to sent the target when I change it or turn on/off, but that’s not what I’m asking first. My issue is: the measured temperature by the external sensor isn’t up-to-date in HA. And of course after that I’ll activate my automation for when I change the set temperature