This, even partially, would require a number of test runs on your parts.
Ahhh, I see.
I had added my HA water heater to HADB but the values I wanted (setpoint and mode) didn't come across (even though I have HADB working with other devices). Sure enough, they are not climate or sensor entities, so think I'll go the helper route.
Thanks for clarifying.
Some users reported a missing attribute in the climate integration (supportedThermostatFanModes). There is a patch available for this but I can't test it myself (my thermostats are not fancy enough). If anyone would like to try it and let me know if it works fine, here is the link:
https://raw.githubusercontent.com/ymerj/HE-HA-control/ymerj-patch-1/HA%20parent.groovy
Version 2.5:
- Add supported fan modes to climate entity
- Add support for valve entity
I took a quick look through the thread and I am sure there is a process for exposing missing devices but the thread is long and so I didn't see it.
I have a Tuya diffuser. I selected it from the available devices in HADB but it is not showing up as a device in Hubitat.
The device has a light switch, which does work, and a diffuser main control switch, which doesn't show. Thanks for any help on this.
Device are only created when a change in status occurs: Toggle the relevant device.
You would need to provide more info on the device. Especially the entity ID.
Thanks, I actually remembered to toggle the device several times.
The entity id is humidifier.diffuser
It has an on/off and a mode with small/large. That is essentially low/high setting. Thanks.
HADB does not currently support humidifier entities and there is no equivalent capability in HE.
I see a problem with setting a dynamic constrain on a hypothetical "setHumidifierMode" command in a generic component. Perhaps a workaround could be implemented but it would require some test runs on your parts.
Let me know if it is worth your while.
Happy to test it. Really only need to turn the diffuser on and off. Setting level between low and high is icing on the cake.
Every now and then the HE Integration in HA needs to be reloaded. Not sure what causes this.
I'd like to set up an automation in HA, maybe based on a trigger like
"When Hub HE Mode changes to Unavailable for 5:00"
Does anyone know the action that's needed to reload the HE Integration. I'm not too familiar with HA.
Thanks, Simon
Which integration are you referring to, specifically? The integration in this thread, Home Assistant Device Bridge (HADB), is used to bring Home Assistant devices into Habitat. It uses HA's built-in webSocket for connectivity, and thus there is no custom code on the HA side whatsoever.
If you're using the other HA Integration for Hubitat, which brings HE devices into HA, please post your question in that developers thread at
Thank you.... Looks like I'm using both !!!!
Version 2.6:
- Add support for humidifier entity (thanks to testing from @simon4)
- Add color mode to light entity to comply with EZdashboard requirement
- Add index to light effects
Should we change the old lights to a new driver?
I have a light that was there before, I can turn it on/off, but the status is not changing in hubitat, although the light itself does turn in/off
Update:
I actually fixed it by adding a ?
to the effectList on line 295 in hub parent driver. and the result is:
effectsList = newState?.attributes?.effect_list?.indexed(1)
Thanks. I made the change in github. HPM users will have to update if they need it.
Edit: Also added colorName (white) to CT so EZdashboard stop complaining.
I am trying to control a gecko spa control pack using the Gecko Integration in HA(GitHub - gazoodle/gecko-home-assistant: Home Assistant integration for spas equipped with Gecko Alliance in.touch2 modules), but it errors out so I'm assuming I need a custom driver. I was able to bring the light controls, and a few others over to HE using the HADB, but I cannot control the pump. Its setup as a fan control for off/low/high. Please see the following log dump.
dev:32942024-06-16 03:55:22.466 PMerrorParsing error: java.lang.NullPointerException: Cannot invoke method toInteger() on null object
dev:32942024-06-16 03:55:22.465 PMinfoInvalid fan speed received - null
dev:32942024-06-16 03:55:22.463 PMdebugparse: domain: fan, device_class: null, entity: fan.my_spa_pump_1, newVals: [off], friendly: Pump 1
dev:32942024-06-16 03:55:22.460 PMdebugparse(): description = {"id":1,"type":"event","event":{"variables":{"trigger":{"id":"0","idx":"0","alias":null,"platform":"state","entity_id":"fan.my_spa_pump_1","from_state":{"entity_id":"fan.my_spa_pump_1","state":"on","attributes":{"preset_modes":["OFF","LO","HI"],"preset_mode":"LO","icon":"mdi:pump","friendly_name":"Pump 1","supported_features":8},"last_changed":"2024-06-16T20:54:44.295370+00:00","last_reported":"2024-06-16T20:55:03.663477+00:00","last_updated":"2024-06-16T20:55:03.663477+00:00","context":{"id":"01J0HDA0FY16GG4Y79Q88GT4S7","parent_id":null,"user_id":"90ebcff91cc043648866af5fac7b94d3"}},"to_state":{"entity_id":"fan.my_spa_pump_1","state":"off","attributes":{"preset_modes":["OFF","LO","HI"],"preset_mode":"OFF","icon":"mdi:pump","friendly_name":"Pump 1","supported_features":8},"last_changed":"2024-06-16T20:55:23.238229+00:00","last_reported":"2024-06-16T20:55:23.238229+00:00","last_updated":"2024-06-16T20:55:23.238229+00:00","context":{"id":"01J0HDAKKBTP0Z8N0MKW5M4XR7","parent_id":null,"user_id":"90ebcff91cc043648866af5fac7b94d3"}},"for":null,"attribute":null,"description":"state of fan.my_spa_pump_1"}},"context":{"id":"01J0HDAKKBTP0Z8N0MKW5M4XR7","parent_id":null,"user_id":"90ebcff91cc043648866af5fac7b94d3"}}}
dev:32942024-06-16 03:55:02.896 PMerrorParsing error: java.lang.NullPointerException: Cannot invoke method toInteger() on null object
dev:32942024-06-16 03:55:02.895 PMinfoInvalid fan speed received - null
dev:32942024-06-16 03:55:02.893 PMdebugparse: domain: fan, device_class: null, entity: fan.my_spa_pump_1, newVals: [on], friendly: Pump 1
dev:32942024-06-16 03:55:02.891 PMdebugparse(): description = {"id":1,"type":"event","event":{"variables":{"trigger":{"id":"0","idx":"0","alias":null,"platform":"state","entity_id":"fan.my_spa_pump_1","from_state":{"entity_id":"fan.my_spa_pump_1","state":"on","attributes":{"preset_modes":["OFF","LO","HI"],"preset_mode":"HI","icon":"mdi:pump","friendly_name":"Pump 1","supported_features":8},"last_changed":"2024-06-16T20:54:44.295370+00:00","last_reported":"2024-06-16T20:54:45.269569+00:00","last_updated":"2024-06-16T20:54:45.269569+00:00","context":{"id":"01J0HD9DJAWYQCNQ3SSKPQ44K6","parent_id":null,"user_id":"90ebcff91cc043648866af5fac7b94d3"}},"to_state":{"entity_id":"fan.my_spa_pump_1","state":"on","attributes":{"preset_modes":["OFF","LO","HI"],"preset_mode":"LO","icon":"mdi:pump","friendly_name":"Pump 1","supported_features":8},"last_changed":"2024-06-16T20:54:44.295370+00:00","last_reported":"2024-06-16T20:55:03.663477+00:00","last_updated":"2024-06-16T20:55:03.663477+00:00","context":{"id":"01J0HDA0FY16GG4Y79Q88GT4S7","parent_id":null,"user_id":"90ebcff91cc043648866af5fac7b94d3"}},"for":null,"attribute":null,"description":"state of fan.my_spa_pump_1"}},"context":{"id":"01J0HDA0FY16GG4Y79Q88GT4S7","parent_id":null,"user_id":"90ebcff91cc043648866af5fac7b94d3"}}}
dev:32942024-06-16 03:54:44.527 PMerrorParsing error: java.lang.NullPointerException: Cannot invoke method toInteger() on null object
dev:32942024-06-16 03:54:44.524 PMinfoInvalid fan speed received - null
dev:32942024-06-16 03:54:44.522 PMdebugparse: domain: fan, device_class: null, entity: fan.my_spa_pump_1, newVals: [on], friendly: Pump 1
dev:32942024-06-16 03:54:44.518 PMdebugparse(): description = {"id":1,"type":"event","event":{"variables":{"trigger":{"id":"0","idx":"0","alias":null,"platform":"state","entity_id":"fan.my_spa_pump_1","from_state":{"entity_id":"fan.my_spa_pump_1","state":"on","attributes":{"preset_modes":["OFF","LO","HI"],"preset_mode":"LO","icon":"mdi:pump","friendly_name":"Pump 1","supported_features":8},"last_changed":"2024-06-16T20:54:44.295370+00:00","last_reported":"2024-06-16T20:54:44.295370+00:00","last_updated":"2024-06-16T20:54:44.295370+00:00","context":{"id":"01J0HD9DJAWYQCNQ3SSKPQ44K6","parent_id":null,"user_id":"90ebcff91cc043648866af5fac7b94d3"}},"to_state":{"entity_id":"fan.my_spa_pump_1","state":"on","attributes":{"preset_modes":["OFF","LO","HI"],"preset_mode":"HI","icon":"mdi:pump","friendly_name":"Pump 1","supported_features":8},"last_changed":"2024-06-16T20:54:44.295370+00:00","last_reported":"2024-06-16T20:54:45.269569+00:00","last_updated":"2024-06-16T20:54:45.269569+00:00","context":{"id":"01J0HD9DJAWYQCNQ3SSKPQ44K6","parent_id":null,"user_id":"90ebcff91cc043648866af5fac7b94d3"}},"for":null,"attribute":null,"description":"state of fan.my_spa_pump_1"}},"context":{"id":"01J0HD9DJAWYQCNQ3SSKPQ44K6","parent_id":null,"user_id":"90ebcff91cc043648866af5fac7b94d3"}}}
dev:32942024-06-16 03:54:43.566 PMerrorParsing error: java.lang.NullPointerException: Cannot invoke method toInteger() on null object
dev:32942024-06-16 03:54:43.561 PMinfoInvalid fan speed received - null
dev:32942024-06-16 03:54:43.558 PMdebugparse: domain: fan, device_class: null, entity: fan.my_spa_pump_1, newVals: [on], friendly: Pump 1
dev:32942024-06-16 03:54:43.554 PMdebugparse(): description = {"id":1,"type":"event","event":{"variables":{"trigger":{"id":"0","idx":"0","alias":null,"platform":"state","entity_id":"fan.my_spa_pump_1","from_state":{"entity_id":"fan.my_spa_pump_1","state":"off","attributes":{"preset_modes":["OFF","LO","HI"],"preset_mode":"OFF","icon":"mdi:pump","friendly_name":"Pump 1","supported_features":8},"last_changed":"2024-06-16T20:54:19.932170+00:00","last_reported":"2024-06-16T20:54:19.932170+00:00","last_updated":"2024-06-16T20:54:19.932170+00:00","context":{"id":"01J0HD8NRQFCE3EGDN5Y6190ZM","parent_id":null,"user_id":"90ebcff91cc043648866af5fac7b94d3"}},"to_state":{"entity_id":"fan.my_spa_pump_1","state":"on","attributes":{"preset_modes":["OFF","LO","HI"],"preset_mode":"LO","icon":"mdi:pump","friendly_name":"Pump 1","supported_features":8},"last_changed":"2024-06-16T20:54:44.295370+00:00","last_reported":"2024-06-16T20:54:44.295370+00:00","last_updated":"2024-06-16T20:54:44.295370+00:00","context":{"id":"01J0HD9DJAWYQCNQ3SSKPQ44K6","parent_id":null,"user_id":"90ebcff91cc043648866af5fac7b94d3"}},"for":null,"attribute":null,"description":"state of fan.my_spa_pump_1"}},"context":{"id":"01J0HD9DJAWYQCNQ3SSKPQ44K6","parent_id":null,"user_id":"90ebcff91cc043648866af5fac7b94d3"}}}
dev:32942024-06-16 03:54:19.196 PMerrorParsing error: java.lang.NullPointerException: Cannot invoke method toInteger() on null object
dev:32942024-06-16 03:54:19.192 PMinfoInvalid fan speed received - null
dev:32942024-06-16 03:54:19.189 PMdebugparse: domain: fan, device_class: null, entity: fan.my_spa_pump_1, newVals: [off], friendly: Pump 1
dev:32942024-06-16 03:54:19.183 PMdebugparse(): description = {"id":1,"type":"event","event":{"variables":{"trigger":{"id":"0","idx":"0","alias":null,"platform":"state","entity_id":"fan.my_spa_pump_1","from_state":{"entity_id":"fan.my_spa_pump_1","state":"on","attributes":{"preset_modes":["OFF","LO","HI"],"preset_mode":"HI","icon":"mdi:pump","friendly_name":"Pump 1","supported_features":8},"last_changed":"2024-06-16T20:49:40.945319+00:00","last_reported":"2024-06-16T20:49:41.919379+00:00","last_updated":"2024-06-16T20:49:41.919379+00:00","context":{"id":"01J0HD05ANFRYJP2ZXN19VP9JH","parent_id":null,"user_id":"90ebcff91cc043648866af5fac7b94d3"}},"to_state":{"entity_id":"fan.my_spa_pump_1","state":"off","attributes":{"preset_modes":["OFF","LO","HI"],"preset_mode":"OFF","icon":"mdi:pump","friendly_name":"Pump 1","supported_features":8},"last_changed":"2024-06-16T20:54:19.932170+00:00","last_reported":"2024-06-16T20:54:19.932170+00:00","last_updated":"2024-06-16T20:54:19.932170+00:00","context":{"id":"01J0HD8NRQFCE3EGDN5Y6190ZM","parent_id":null,"user_id":"90ebcff91cc043648866af5fac7b94d3"}},"for":null,"attribute":null,"description":"state of fan.my_spa_pump_1"}},"context":{"id":"01J0HD8NRQFCE3EGDN5Y6190ZM","parent_id":null,"user_id":"90ebcff91cc043648866af5fac7b94d3"}}}
Your pump (fan entity) does not report any percentage value for the speed. It only use presets which are not supported by HADB. Meanwhile, HA phased out the use of named speed a year ago or so.
HADB handling of that obsolete attribute is now irrelevant. Perhaps it can be refactored to handle presets instead.
On the latest HA , HE ( 2.3.9.153) and HADB I have an issue where a light that is part of a ESPHome fan/light combo no longer shows any state but 'on'.
The device will turn on and off from anywhere, ha, he or physical, but the state in HE is always on, which breaks automations as it's often skipped as it's 'already on'.
It's only started happening in the last week or so.
I am getting these java errors in the logs for the HADB parent device.
There was an oversight in the last update that cause this error. It was corrected on github.
I never remember what users have to do in HPM to get the update... I think it is:
- Repair
- Matchup
- Update
just Repair will do it. that pulls in a complete new set of code, regardless of whether it is needed.