FIBARO Heat Controller - Temperature / battery not displaying correctly

I have 4 fibaro heat controllers (FIBARO System FGT001 Heat Controller) connected to my HA via Z-Wave USB stick. I can turn them on/off, however the entity won’t display correctly neither the current temperature (of the internal sensor) nor the battery level.

I have just purchased a FIBARO HC lite to be able to firmware update those 4 controllers, and after updating from 4.0 -> 4.4 firmware and re-attaching to my HA / Z-Wave USB stick network, those 2 properties still are not set correctly.
Battery will always show 100, while temperature will always show 0. In the HC lite, both values were displayed correctly.

Is this a bug in HA?

Were you able to get it to work?

I have a Fibaro FGT-001 with external temperature sensor and I always had 100, I solved modifying the file, zwcfg _ ???. xml.

If I understand you correctly, you have a Fibaro FGT-001 with external temperature sensor.

You had a problem with how it reports its battery status (it always showed “100”, as in “battery full”).
You fixed that problem by some modifications to an xml file.

  1. What is that file?
  2. What kind of modifications worked for you?
  3. Could you confirm that NOW (after said modifications) - the battery status is being updated?

And on another note - what about reading the current temperature from the external sensor?

Does the heat controller report the values it considers to be “current temperature”?

Nope, doesn’t work. No battery status, no temperature value (from internal sensor).

For temperature you have to use an external FGBRS-001 probe, for example because FGT-001 does not transmit the detected temperature.
While for the battery after many tests I solved by modifying the file zwcfg_xxxxxxx.xml.
Find it in the .homeassistant folder
look for a line like this:

     <CommandClass id="128" name="COMMAND_CLASS_BATTERY" version="1" request_flags="5" innif="true">
			<Instance index="1" endpoint="1" />
			<Instance index="2" endpoint="1" />
			<Value type="byte" genre="user" instance="1" index="0" label="Battery Level" units="%" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="79" />
			<Value type="byte" genre="user" instance="2" index="0" label="Battery Level" units="%" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="100" />

Remove two lines and it must become like this:

     <CommandClass id="128" name="COMMAND_CLASS_BATTERY" version="1" request_flags="5" innif="true">
			<Instance index="1" endpoint="1" />
			<Value type="byte" genre="user" instance="1" index="0" label="Battery Level" units="%" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="79" />

All I had to do with HA in stop.

Sorry for my terrible English, I hope I was clear. :yum:

1 Like

I understand, so the zwave config is for some reason having 2 instances of the battery, and the second one beeing always 100. And HA will display the second one, thus its not working. Nice, I will try this out.

For the temperature, I don’t need additional sensors, I already know the temperature in each room because each room is having a fibaro multisensor. However, it would have been nice to see the heat controllers temperature too, especially because it looks weird in the iPhone Home app, when temperature is always 0°.

I wonder if it would be somehow possible, because the fibaro home center light will correctly display the temperature. So this means that there exists a way to get the temperature from heat controller to the zwave controller somehow. But maybe it is proprietary and non-accessible to openzwave / homeassistant, which would be a pity.

Just tested, didn’t work for me. After restarting HA, the second instance of the battery is there again.

I also had the same problem, I do not remember well, but I’m sure I modified it with HA in stop. Do a little bit of testing, it must work.



Wow this really works ! Thank you.

For anyone trying. You need to stop HA first. Make your modifications and than start HA again.
It will NOT work when editing values while HA is running and trying to restart the service.

Oh yes indeed, I can confirm that it works by first stopping HA. I think I might have edited the config previously, then just restart HA. Probably HA flushed the config to disk then it is stopped, so it didnt have any effect.

Great it works now for me too! Will this be a permanent solution, or will the config reset again, e.g. when updating HA or doing other stuff?

Patrick, I’m happy that it works, you made me worry.
:yum: :+1:

Well, actually the heater does not really entirely work (see:

I haven’t yet resolved the issues with the state not beeing updated. Also, according to fibaro, the internal temp sensor is not accessible, yet the device advertises a temp sensor, which also gets displayed in HA and also the iPhone home app, both with 0° always, which is really ugly.

I am tempted to move away from fibaro heaters, however I don’t know of a good alternative currently. I like the style, and I would like to stick with z-wave based devices.

I agree with all your analysis, and that the internal temperature sensor is not good.
Fortunately I can use it like that, even if they are more programming lines.

The problem of the update, every time I change the temperature or turn on and off (HA does not display Manual Valve Control) one of the two Fibaro I have, I’ve solved it with this automation:

id: fibaro_update
alias: Aggiornamento Fibaro
initial_state: true
hide_entity: false
- event: start
  platform: homeassistant
- platform: event
  event_type: call_service
    domain: climate
    service: set_temperature
- platform: event
  event_type: call_service
    domain: climate
    service: set_operation_mode
- condition: template
  value_template: "{{ now().strftime('%d-%m') >= '10-10' or now().strftime('%d-%m') <= '15-04' }}"
- 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
- data:
    message: "Aggiorno Fibaro"
  service: telegram_bot.send_message

I also put a time condition.

And I set up this configuration.yaml:

  usb_path: /dev/ttyACM0
  polling_interval: 600000

It should update every hour, but it’s every 40 minutes, but that’s okay for me.

I hope I understand your update problem.

I have already tried with the polling option, but also with a regular/automated refresh using refresh_entity within some automation. However both seemed not to work for me, and not update the status, e.g. the heaters will always display Off.

Note that I am not using the heaters by hand. I have some automation which calls the appropriate z-wave service (set_operation_mode service call with data: { "entity_id": [HEATER], "operation_mode": "Heat" }), but it does not update the status in home assistant.

Are you sure that the automation is complete?
In fact, I added a notification on the telegram at the end, possibly using a fake switch or a light on / off to see if it works.
Many times not by mistakes and you do not understand it worked or not.

To see if it receives the command I set the fibaro like this:


Another thing, forgive the stupid question, the fibaro is mounted on a valve?

Yeah well, when I trigger the automation, I can hear the heater turning the valve, and its getting warm :slight_smile: So yes in fact its working.

Also, I am not using home assistant for the automation. I am using node-red, which is calling the set_operation_mode service of the z-wave platform, with the above mentioned payload. Maybe I can try triggering directly from home assistant, and see if theres any difference.

in my experience the Fibaro heat can be added to Homeassistant OK by the z-wave JS integration, but it does not report heat and battery automatically. This can be solved with an automation to request an update from the device every few minutes, but it’s not ideal. I have contacted Fibaro technical support and they say"The Heat Controller should report the temperature on start-up of the device and also when it detects a temperature change higher than 0.5 degrees". There is no evidence in the z-wave log that this is happening although all the other functions of the device are logged correctly, so I suspect a small bug with OZW. Anyone else any thoughts?

Can anyone give an update on how they got on few years later? I really want to get some ZWave TRV’s but can only really find Fibaro and this thread does not look ideal :frowning: .

@codepig did you try the Fibaro TRV? I need to replace a faulty POPP/Danfoss valve and it looks like Fibaro is the only z-wave TRV available to buy these days. If the replacement valve is not going to report a temperature it will be annoying to modify my automations for only one room.