core icon indicating copy to clipboard operation
core copied to clipboard

Missing support/visibility of thermostats (floor heating) through the Fibaro integration using Home center 3

Open spernesen opened this issue 3 years ago • 30 comments

The problem

Missing support/visibility for thermostats (floor heating) through the Fibaro integration using Home center 3. The thermostats (Device type: com.fibaro.hvacSystem) is not visible in Home assistant.

For example:

image

What version of Home Assistant Core has the issue?

2022.4.3

What was the last working version of Home Assistant Core?

No response

What type of installation are you running?

Home Assistant OS

Integration causing the issue

Fibaro

Link to integration documentation on our website

https://www.home-assistant.io/integrations/fibaro/

Diagnostics information

No response

Example YAML snippet

No response

Anything in the logs that might be useful for us?

No response

Additional information

No response

spernesen avatar Apr 13 '22 22:04 spernesen

fibaro documentation fibaro source (message by IssueLinks)

Hey there @rappenze, mind taking a look at this issue as it has been labeled with an integration (fibaro) you are listed as a code owner for? Thanks! (message by CodeOwnersMention)

Unfortunately I do not have such a device and also no HC3.

Can you please add here the json response from HC3 so we can support that device correctly? Relevant is the output of http://<FIBARO_HOST>/api/devices (you have to enter fibaro credentials). Just add the part for the relevant device or the complete output. If it contains private data just anonymize that parts.

Many thanks.

rappenze avatar Apr 18 '22 16:04 rappenze

@rappenze, thx for replying back to me. Here is the JSON-code for the "device-category":

{ "id": 168, "name": "Romtermostat", "roomID": 227, "view": [ { "assetsPath": "dynamic-plugins/com.fibaro.hvacSystem", "name": "com.fibaro.hvacSystem", "translatesPath": "/assets/i18n/com.fibaro.hvacSystem", "type": "ts" }, { "assetsPath": "dynamic-plugins/energy", "name": "energy", "translatesPath": "/assets/i18n/energy", "type": "ts" }, { "assetsPath": "dynamic-plugins/power", "name": "power", "translatesPath": "/assets/i18n/power", "type": "ts" } ], "type": "com.fibaro.hvacSystem", "baseType": "com.fibaro.device", "enabled": true, "visible": true, "isPlugin": false, "parentId": 165, "viewXml": false, "hasUIView": false, "configXml": false, "interfaces": [ "energy", "hcSchedule", "heatingThermostatSetpoint", "overrideTime", "power", "thermostatMode", "thermostatOperatingState", "zwave", "zwaveMultiChannelAssociation" ], "properties": { "pollingTimeSec": 0, "zwaveCompany": "Heatit", "zwaveInfo": "3,6,7", "zwaveVersion": "4.0", "categories": [ "climate" ], "climateZoneId": 10, "configured": true, "dead": false, "deadReason": "", "deviceControlType": 1, "deviceIcon": 70, "deviceRole": "Other", "emailNotificationID": 0, "emailNotificationType": 0, "endPointId": 1, "energy": 4195.9, "heatingThermostatSetpoint": 20, "heatingThermostatSetpointCapabilitiesMax": 35, "heatingThermostatSetpointCapabilitiesMin": 5, "heatingThermostatSetpointFuture": 20, "heatingThermostatSetpointStep": { "C": 0.5, "F": 1 }, "log": "", "logTemp": "", "manufacturer": "", "markAsDead": true, "model": "", "nodeId": 26, "overridesSchedule": false, "parametersTemplate": 0, "power": 0.31, "productInfo": "1,155,0,3,2,3,4,0", "pushNotificationID": 0, "pushNotificationType": 0, "saveLogs": true, "saveToEnergyPanel": true, "serialNumber": "", "setpointExpiryDate": 4294967295, "showEnergy": true, "smsNotificationID": 0, "smsNotificationType": 0, "storeEnergyData": true, "supportedDeviceRoles": [ "Other" ], "supportedThermostatModes": [ "Off", "Heat" ], "thermostatMode": "Off", "thermostatModeFuture": "", "thermostatModeManufacturerData": [], "thermostatOperatingState": "Idle", "timestamp": 0, "unit": "C", "useTemplate": true, "userDescription": "" }, "actions": { "reconfigure": 0, "reset": 0, "setHeatingThermostatSetpoint": 1, "setThermostatMode": 1, "setTime": 1 }, "created": 1649970369, "modified": 1649970461, "sortOrder": 98 },

Please let me know if you missing something or if you want the paste in other format.

Best regards,

spernesen avatar Apr 18 '22 18:04 spernesen

A little offtopic, but if it's possible to add this binary switch too (ordinary a quickapp/virtual device in HC3) , that would be great. Perfect as a solution for starting scenes in HC3 based on the conditions set from HA.

JSON-code: { "id": 562, "name": "test", "roomID": 225, "view": [ { "assetsPath": "dynamic-plugins/com.fibaro.binarySwitch", "name": "com.fibaro.binarySwitch", "translatesPath": "/assets/i18n/com.fibaro.binarySwitch", "type": "ts" }, { "type": "json" } ], "type": "com.fibaro.binarySwitch", "baseType": "com.fibaro.actor", "enabled": true, "visible": true, "isPlugin": true, "parentId": 0, "viewXml": true, "hasUIView": false, "configXml": false, "interfaces": [ "light", "quickApp" ], "properties": { "apiVersion": "1.2", "categories": [ "lights" ], "dead": false, "deadReason": "", "deviceControlType": 2, "deviceIcon": 2, "deviceRole": "Light", "icon": { "path": "assets/icon/fibaro/onoff/onoff0.png", "source": "HC" }, "isLight": true, "log": "", "logTemp": "", "manufacturer": "", "model": "", "quickAppVariables": [], "saveLogs": true, "state": false, "supportedDeviceRoles": [ "Light", "Drencher", "Pin", "NightLamp", "Kettle", "Bracket", "AirConditioner", "AlarmAlarm", "Coffee", "GardenLamp", "TvSet", "CeilingFan", "Toaster", "Radio", "RoofWindow", "Other", "AlarmState", "AlarmArm", "VideoGateBell", "VideoGateOpen", "Valve" ], "typeTemplateInitialized": true, "uiCallbacks": [], "useEmbededView": true, "userDescription": "", "value": false, "viewLayout": { "$jason": { "body": { "header": { "style": { "height": "0" }, "title": "quickApp_device_57" }, "sections": { "items": [] } }, "head": { "title": "quickApp_device_57" } } } }, "actions": { "toggle": 0, "turnOff": 0, "turnOn": 0 }, "created": 1650315830, "modified": 1650315830, "sortOrder": 386 }

Best regards,

spernesen avatar Apr 18 '22 21:04 spernesen

The binary switch should already be available if you select "Import entities from fibaro plugins?" when you add the integration. image

You can only add all entities from quickapps / plugins or none.

rappenze avatar Apr 19 '22 18:04 rappenze

Oh, I have not noticed that checkbox. Thx for the notice.

Is the JSON-code pasted earlier for the HVAC devices OK?

Best regards,

spernesen avatar Apr 19 '22 19:04 spernesen

The Json should be enough to implement this feature. Unfortunately it is quite different to existing fibaro climate devices so it needs a bit more work than I expected initially.

rappenze avatar Apr 20 '22 16:04 rappenze

I implemented that and created the PR #72300.

@spernesen Because I do not have the needed devices to test it, are you willing to checkout this branch and test if the change works? Probably there is also some other people out there which has this devices and are willing to test this change?

rappenze avatar May 22 '22 10:05 rappenze

Hello,

Thx! I can do that with pleasure, but I'm not quite sure how to test the branch @rappenze? Is there any simple turtorial for how to do it?

spernesen avatar May 22 '22 16:05 spernesen

There is a tutorial how to install development environment here: https://developers.home-assistant.io/docs/development_environment/

rappenze avatar May 25 '22 18:05 rappenze

I am very new to this and have never tested someone's PR before, but I think I've done it correctly and am seeing the following error.

2022-05-30 12:46:11 ERROR (MainThread) [homeassistant.components.climate] Error while setting up fibaro platform for climate Traceback (most recent call last): File "/workspaces/core/homeassistant/helpers/entity_platform.py", line 249, in _async_setup_platform await asyncio.shield(task) File "/workspaces/core/homeassistant/components/fibaro/climate.py", line 111, in async_setup_entry [ File "/workspaces/core/homeassistant/components/fibaro/climate.py", line 112, in FibaroThermostat(device) File "/workspaces/core/homeassistant/components/fibaro/climate.py", line 199, in init op_modes = prop.supportedThermostatModes.split(",") File "/usr/local/lib/python3.9/site-packages/fiblary3/client/v4/models.py", line 72, in getitem return list.getitem(self, key) TypeError: list indices must be integers or slices, not str 2022-05-30 12:46:11 ERROR (MainThread) [homeassistant.components.sensor] fibaro: Error on device update! Traceback (most recent call last): File "/workspaces/core/homeassistant/helpers/entity_platform.py", line 431, in _async_add_entity await entity.async_device_update(warning=False) File "/workspaces/core/homeassistant/helpers/entity.py", line 736, in async_device_update await task File "/usr/local/lib/python3.9/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) File "/workspaces/core/homeassistant/components/fibaro/sensor.py", line 147, in update self.current_value = float(self.fibaro_device.properties.value) TypeError: float() argument must be a string or a number, not 'RecursiveDict' 2022-05-30 12:46:11 ERROR (MainThread) [homeassistant.components.sensor] fibaro: Error on device update! Traceback (most recent call last): File "/workspaces/core/homeassistant/helpers/entity_platform.py", line 431, in _async_add_entity await entity.async_device_update(warning=False) File "/workspaces/core/homeassistant/helpers/entity.py", line 736, in async_device_update await task File "/usr/local/lib/python3.9/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) File "/workspaces/core/homeassistant/components/fibaro/sensor.py", line 147, in update self.current_value = float(self.fibaro_device.properties.value) TypeError: float() argument must be a string or a number, not 'RecursiveDict'

bobbbino avatar May 30 '22 14:05 bobbbino

Many thanks for the feedback. Unfortunately the errors are quite strange so I'm not sure if your setup was wrong or if I really made an error in the new code. Also 2 out of 3 errors are thrown from places where no code changes have been added. So I'm a bit confused...

rappenze avatar Jun 03 '22 15:06 rappenze

Hi @rappenze!

I've checked out the easiest way for me to test the branch for me.

If you could add a "version-parameter" to the "manifest.json" file next time you doing a update, I can add the "beta branch" as a custom component and increase the version with one number. The custom component will then override the stable Fibaro integration. I will return any errors from the log.

A example from the HACS-integration:

image

Regards, Philip

spernesen avatar Jun 04 '22 11:06 spernesen

Unfortunately adding a version to core integrations is not wished: https://developers.home-assistant.io/docs/creating_integration_manifest/#version

rappenze avatar Jun 10 '22 06:06 rappenze

Hello @rappenze I also have such devices, I will try to test it, while I will post my json here for two types of devices: { "id": 227, "name": "224.1", "roomID": 221, "view": [{ "assetsPath": "dynamic-plugins/com.fibaro.hvacSystem", "name": "com.fibaro.hvacSystem", "translatesPath": "/assets/i18n/com.fibaro.hvacSystem", "type": "ts" } ], "type": "com.fibaro.hvacSystem", "baseType": "com.fibaro.device", "enabled": true, "visible": true, "isPlugin": false, "parentId": 224, "viewXml": false, "hasUIView": false, "configXml": false, "interfaces": ["coolingThermostatSetpoint", "energySaveHeatingThermostatSetpoint", "heatingThermostatSetpoint", "thermostatMode", "zwave", "zwaveMultiChannelAssociation"], "properties": { "pollingTimeSec": 0, "zwaveCompany": "Heatit", "zwaveInfo": "3,5,3", "zwaveVersion": "3.4", "categories": ["climate"], "configured": true, "coolingThermostatSetpoint": 0.0, "coolingThermostatSetpointCapabilitiesMax": 35.0, "coolingThermostatSetpointCapabilitiesMin": 5.0, "coolingThermostatSetpointFuture": 0.0, "coolingThermostatSetpointStep": { "C": 0.5, "F": 1.0 }, "dead": false, "deadReason": "", "deviceControlType": 1, "deviceIcon": 70, "deviceRole": "Other", "endPointId": 1, "energySaveHeatingThermostatSetpoint": 0.0, "energySaveHeatingThermostatSetpointCapabilitiesMax": 35.0, "energySaveHeatingThermostatSetpointCapabilitiesMin": 5.0, "energySaveHeatingThermostatSetpointFuture": 0.0, "energySaveHeatingThermostatSetpointStep": { "C": 0.5, "F": 1.0 }, "heatingThermostatSetpoint": 23.5, "heatingThermostatSetpointCapabilitiesMax": 35.0, "heatingThermostatSetpointCapabilitiesMin": 5.0, "heatingThermostatSetpointFuture": 23.5, "heatingThermostatSetpointStep": { "C": 0.5, "F": 1.0 }, "log": "", "logTemp": "", "manufacturer": "", "markAsDead": true, "model": "", "nodeId": 32, "parametersTemplate": 846, "productInfo": "1,155,0,3,2,2,3,4", "saveLogs": true, "serialNumber": "", "setpointExpiryDate": 0, "supportedDeviceRoles": ["Other"], "supportedThermostatModes": ["Off", "Heat", "Cool", "EnergyHeat"], "thermostatMode": "Off", "thermostatModeFuture": "Off", "thermostatModeManufacturerData": [], "unit": "C", "useTemplate": true, "userDescription": "" }, "actions": { "reconfigure": 0, "setCoolingThermostatSetpoint": 1, "setEnergySaveHeatingThermostatSetpoint": 1, "setHeatingThermostatSetpoint": 1, "setThermostatMode": 1 }, "created": 1656525105, "modified": 1656525215, "sortOrder": 188 } and { "id": 251, "name": "rad176.0", "roomID": 221, "view": [{ "assetsPath": "dynamic-plugins/com.fibaro.hvacSystem", "name": "com.fibaro.hvacSystem", "translatesPath": "/assets/i18n/com.fibaro.hvacSystem", "type": "ts" } ], "type": "com.fibaro.hvacSystem", "baseType": "com.fibaro.device", "enabled": true, "visible": true, "isPlugin": false, "parentId": 176, "viewXml": false, "hasUIView": false, "configXml": false, "interfaces": ["battery", "fibaroFirmwareUpdate", "heatingThermostatSetpoint", "thermostatMode", "zwave", "zwaveAlarm", "zwaveProtection"], "properties": { "pollingTimeSec": 0, "zwaveCompany": "Eurotronics", "zwaveInfo": "3,4,61", "zwaveVersion": "0.15", "RFProtectionState": 0, "RFProtectionSupport": 0, "alarmLevel": 0, "alarmType": 0, "batteryLevel": 90, "batteryLowNotification": true, "categories": ["climate"], "configured": true, "dead": false, "deadReason": "", "defInterval": 0, "deviceControlType": 1, "deviceIcon": 70, "deviceRole": "Other", "endPointId": 0, "firmwareUpdate": { "info": "", "progress": 0, "status": "UpToDate", "updateVersion": "0.15" }, "heatingThermostatSetpoint": 20.0, "heatingThermostatSetpointCapabilitiesMax": 28.0, "heatingThermostatSetpointCapabilitiesMin": 8.0, "heatingThermostatSetpointFuture": 20.0, "heatingThermostatSetpointStep": { "C": 0.5, "F": 1.0 }, "localProtectionState": 0, "localProtectionSupport": 7, "log": "", "logTemp": "", "manufacturer": "", "markAsDead": true, "maxInterval": 0, "minInterval": 0, "model": "", "nodeId": 23, "parametersTemplate": 0, "productInfo": "1,72,0,3,0,1,0,15", "protectionExclusiveControl": 0, "protectionExclusiveControlSupport": false, "protectionState": 0, "protectionTimeout": 0, "protectionTimeoutSupport": false, "saveLogs": true, "serialNumber": "", "setpointExpiryDate": 0, "stepInterval": 0, "supportedDeviceRoles": ["Other"], "supportedThermostatModes": ["Off", "Heat", "EnergyHeat", "FullPower"], "thermostatMode": "Heat", "thermostatModeFuture": "", "thermostatModeManufacturerData": [], "unit": "C", "updateVersion": "", "useTemplate": true, "userDescription": "" }, "actions": { "abortUpdate": 1, "reconfigure": 0, "retryUpdate": 1, "setHeatingThermostatSetpoint": 1, "setInterval": 1, "setThermostatMode": 1, "startUpdate": 1, "updateFirmware": 1 }, "created": 1656525105, "modified": 1656525304, "sortOrder": 212 }

PolommX avatar Jun 30 '22 18:06 PolommX

Traceback (most recent call last): File "/workspaces/core/homeassistant/helpers/entity_platform.py", line 250, in _async_setup_platform await asyncio.shield(task) File "/workspaces/core/homeassistant/components/fibaro/climate.py", line 111, in async_setup_entry [ File "/workspaces/core/homeassistant/components/fibaro/climate.py", line 112, in FibaroThermostat(device) File "/workspaces/core/homeassistant/components/fibaro/climate.py", line 198, in init op_modes = prop.supportedThermostatModes.split(",") File "/usr/local/lib/python3.9/site-packages/fiblary3/client/v4/models.py", line 72, in getitem return list.getitem(self, key) TypeError: list indices must be integers or slices, not str

PolommX avatar Jul 01 '22 13:07 PolommX

Thanks for your feedback, so it looks like I implemented something wrongly with the data model. Give me some time, I think I need to write some tests so that I can at least ensure that the basics of my code works.

rappenze avatar Jul 01 '22 13:07 rappenze

Ok, no problem. Thank you! I'm ready to try when you say

PolommX avatar Jul 01 '22 18:07 PolommX

Hello @rappenze , can I help you?

PolommX avatar Jul 06 '22 08:07 PolommX

For sure you're welcome to fix the code as needed if you have the according knowledge.

But in the meanwhile I was able to add tests to verify the new code in the PR and also i fixed some problems. Additionally I checked that the additional JSON added should as well work.

So if you can test again that would be a great help.

rappenze avatar Jul 09 '22 20:07 rappenze

Hey @rappenze Looks great! without errors added to the main page I'll test and then come back

PolommX avatar Jul 10 '22 07:07 PolommX

Hello @rappenze Everything works! Looking forward to the release! ;) If you need to check something specific, I'm always ready.

PolommX avatar Jul 11 '22 18:07 PolommX

Thanks for your feedback. I opened the PR so now it will go through code review and hopefully be merged in the near future.

rappenze avatar Jul 11 '22 20:07 rappenze

Hello, my thermostats are also not visible in latest HAOS. How is the integration looking? Or is it already available in the dev branch? Is there something I can do to make it work? Thank you!

MichalRybecky avatar Aug 13 '22 20:08 MichalRybecky

Hello, @rappenze please tell me, I see that PR has moved to the editing stage Looking forward to this change in release)

PolommX avatar Sep 07 '22 12:09 PolommX

I replaced the PR with a new one because it was never reviewed, probably because it was too big. Also in the meantime the typings have been added in the same file in a separate PR so mine was not mergeable anymore. Let's hope the new PR get's more attention.

rappenze avatar Sep 11 '22 18:09 rappenze

Also just noticed that i can only see temperature, but not the actual switches of the hvac switches. I see your PR has gotten a review too, if you need more feedback i believe i have the same setup/requirement (just @ my name if needed)

riemers avatar Sep 19 '22 20:09 riemers

Hi, I’m keen for this merger to be added. I’m stuck without being able to control the temperature through HA, and holding back on buying more till it works Any idea on when it might be released, or if I can get a pre release version?

thanks for your work Jon

jonml avatar Nov 06 '22 19:11 jonml

Seems PR is stuck again :-(

HELTUN thermostats do not work due to missing hvac support. Is it possible to release alpha version with PR included?

Thanks.

Usever avatar Nov 07 '22 13:11 Usever