NEWS
Homematic IP Cloud Access Point Adapter
-
@apollon77 sagte in Homematic IP Cloud Access Point Adapter:
Da könnte man mal einen "vergiss alle namen und synce neu" Button einbauen bei ioBroker.
Es gibt Aliasse, die sollten primär verwendet werden.
-
Ich gehe mal davon aus, dass HomeAssistant auch nur auf der REST-API von Greenberet aufsetzt, insofern sollte das grundsätzlich erstmal identisch sein. Natürlich kann es trotzdem Unterschiede bei der Unterstützung von Komponenten geben, da die REST-API nicht mehr weiterentwickelt wird und damit für jedes Smarthome System mit HMIP-Unterstützung jetzt leider parallel entwickelt wird.
In der App, und der iobroker HMIP-Adapter verhält sich auch nur wie bereits erwähnt wie eine App, wird keine Ventilposition angezeigt. Also gehe ich davon aus, dass keine Ventilposition übertragen wird.
-
@okoehler Ich habe in diesen States noch nie Werte gesehen, aber habe solche Geräte nicht. Im zweifel Adapter Loglevel mal auf "Debug" setzen und in die Daten schauen. es wird das gesetzt was ankommt. Dann auch gern in der App mal ändern um zu sehen ob State Updates dafür kommen ... sishet du alles im Log im Zweifel.
Wenn da was ist was der Adapter nicht kann dann Log und Details mitr als Issue oder E-Mail bereitstellen und man kann es nachrüsten.
-
@ofbeqnpolkkl6mby5e13 Ja und Nein, bzw das gute an ioBroker ist ja das sehr wenig schwarz und weiss ist. je nachdem wie man es nutzt macht der Request schon sinn - auch das man es erkennt was was ist wenn man zb Aliasse mappen muss
-
@ofbeqnpolkkl6mby5e13 sagte in Homematic IP Cloud Access Point Adapter:
Ich gehe mal davon aus, dass HomeAssistant auch nur auf der REST-API von Greenberet aufsetzt, insofern sollte das grundsätzlich erstmal identisch sein. Natürlich kann es trotzdem Unterschiede bei der Unterstützung von Komponenten geben, da die REST-API nicht mehr weiterentwickelt wird und damit für jedes Smarthome System mit HMIP-Unterstützung jetzt leider parallel entwickelt wird.
Also was HomeAssistant hier zu tun hat weiss ich nicht, aber der Adapter redet selbst mit der eq-3 cloud. Ich glaube das wir damals die ersten waren die die API Reverse-Engineered haben - oder es war parallel ... aber ist am Ende auch egal ... Aktuell ist das Featureset so das unser Adapter mehr kann als das Python Projekt, weil ich es noch aktiv betreue wenn was ist
-
@apollon77 sagte in Homematic IP Cloud Access Point Adapter:
Also was HomeAssistant hier zu tun hat weiss ich nicht...
Äh, da wird die ValvePosition für FALMOT-C12 angezeigt. Zumindest laut Log von oben.
Nein, Jogibear hat die von Greenberet für iobroker portiert.
-
@ofbeqnpolkkl6mby5e13
@okoehler Na dann ein Github issue bitte ... aktuell ist nur valveState im Adapter drin ... -
@ofbeqnpolkkl6mby5e13 sagte in Homematic IP Cloud Access Point Adapter:
Nein, Jogibear hat die von Greenberet für iobroker portiert.
Na dann mag es so gewesen sein ...
-
Ich hab die normalen HMIP Thermostate und die zeigen im Adapter die Ventilpositionen an, weiß jetzt nicht ob das hier hilft.
-
Hallo,
ich habe mal mit der Restapi ein wenig rumgespielt, wo ich jetzt dazu sagen muss dass ich mit python sehr wenig am Hut habe.
Aber ich habe er irgendwie geschafft die Ventilpositionen auszugeben, der letzte Wert ist die VentilpositionVerteiler Heizkreislauf (1) Arbeitszimmer ADAPTION_DONE 0.0
Verteiler Heizkreislauf (2) Badezimmer ADAPTION_DONE 1.0
Verteiler Heizkreislauf (3) Schlafzimmer ADAPTION_DONE 0.0
Verteiler Heizkreislauf (4) Flur/Bad ADAPTION_DONE 0.0
Verteiler Heizkreislauf (5) WoZi 1 Kamin ADAPTION_DONE 0.0
Verteiler Heizkreislauf (6) WoZi 2 Mitte ADAPTION_DONE 0.0
Verteiler Heizkreislauf (7) WoZi 3 Fenster ADAPTION_DONE 0.0
Verteiler Heizkreislauf (8) Flur Eingang ADAPTION_DONE 0.0
Verteiler Heizkreislauf (9) Küche ADAPTION_DONE 0.0
Verteiler ADJUSTMENT_TOO_SMALL None
Verteiler ADJUSTMENT_TOO_SMALL None
Verteiler ADJUSTMENT_TOO_SMALL NoneDazu habe ich in der Klasse device.FloorTerminalBlock12 folgenden Code eingefügt
c = get_functional_channel("FLOOR_TERMINAL_BLOCK_MECHANIC_CHANNEL", js) if c: self.set_attr_from_dict("label", c) self.set_attr_from_dict("valvePosition", c)
und in der functionalChannels.py class FloorTerminalBlockMechanicalChannel
def from_json(self, js, groups: Iterable[Group]): super().from_json(js, groups) self.set_attr_from_dict("valveState", js) self.set_attr_from_dict("valvePosition", js)
Das ist natürlich wildes gehacke. Wie bekommen wir das denn jetzt sauber in die API?
-
Hier ebenfalls über Greenberets Python REST-API:
"3014F7110000000000000100": { "availableFirmwareVersion": "1.4.6", "connectionType": "HMIP_RF", "firmwareVersion": "1.4.6", "firmwareVersionInteger": 66566, "functionalChannels": { "0": { "busConfigMismatch": null, "coProFaulty": false, "coProRestartNeeded": false, "coProUpdateFailure": false, "configPending": false, "coolingEmergencyValue": 0.0, "deviceCommunicationError": null, "deviceDriveError": null, "deviceDriveModeError": null, "deviceId": "3014F7110000000000000100", "deviceOverheated": false, "deviceOverloaded": false, "devicePowerFailureDetected": false, "deviceUndervoltage": false, "displayContrast": null, "dutyCycle": false, "frostProtectionTemperature": 8.0, "functionalChannelType": "DEVICE_BASE_FLOOR_HEATING", "groupIndex": 0, "groups": [ "00000000-0000-0000-0000-000000000040" ], "heatingEmergencyValue": 0.25, "index": 0, "label": "", "lockJammed": null, "lowBat": null, "minimumFloorHeatingValvePosition": 0.0, "mountingOrientation": null, "multicastRoutingEnabled": false, "particulateMatterSensorCommunicationError": null, "particulateMatterSensorError": null, "powerShortCircuit": null, "profilePeriodLimitReached": null, "pulseWidthModulationAtLowFloorHeatingValvePositionEnabled": false, "routerModuleEnabled": false, "routerModuleSupported": false, "rssiDeviceValue": 128, "rssiPeerValue": null, "shortCircuitDataLine": null, "supportedOptionalFeatures": { "IFeatureBusConfigMismatch": false, "IFeatureDeviceCoProError": false, "IFeatureDeviceCoProRestart": false, "IFeatureDeviceCoProUpdate": false, "IFeatureDeviceCommunicationError": false, "IFeatureDeviceDriveError": false, "IFeatureDeviceDriveModeError": false, "IFeatureDeviceIdentify": false, "IFeatureDeviceOverheated": false, "IFeatureDeviceOverloaded": false, "IFeatureDeviceParticulateMatterSensorCommunicationError": false, "IFeatureDeviceParticulateMatterSensorError": false, "IFeatureDevicePowerFailure": false, "IFeatureDeviceTemperatureHumiditySensorCommunicationError": false, "IFeatureDeviceTemperatureHumiditySensorError": false, "IFeatureDeviceTemperatureOutOfRange": false, "IFeatureDeviceUndervoltage": false, "IFeatureMinimumFloorHeatingValvePosition": true, "IFeatureMulticastRouter": false, "IFeaturePowerShortCircuit": false, "IFeatureProfilePeriodLimit": false, "IFeaturePulseWidthModulationAtLowFloorHeatingValvePosition": true, "IFeatureRssiValue": true, "IFeatureShortCircuitDataLine": false, "IOptionalFeatureDeviceErrorLockJammed": false, "IOptionalFeatureDisplayContrast": false, "IOptionalFeatureDutyCycle": true, "IOptionalFeatureLowBat": false, "IOptionalFeatureMountingOrientation": false }, "temperatureHumiditySensorCommunicationError": null, "temperatureHumiditySensorError": null, "temperatureOutOfRange": false, "unreach": false, "valveProtectionDuration": 5, "valveProtectionSwitchingInterval": 14 }, "1": { "deviceId": "3014F7110000000000000100", "functionalChannelType": "FLOOR_TERMINAL_BLOCK_MECHANIC_CHANNEL", "groupIndex": 1, "groups": [ "00000000-0000-0000-0000-000000000038" ], "index": 1, "label": "Bad", "valvePosition": 0.04, "valveState": "ADAPTION_DONE" }, "10": { "deviceId": "3014F7110000000000000100", "functionalChannelType": "FLOOR_TERMINAL_BLOCK_MECHANIC_CHANNEL", "groupIndex": 10, "groups": [], "index": 10, "label": "", "valvePosition": null, "valveState": "ADJUSTMENT_TOO_SMALL" }, "11": { "deviceId": "3014F7110000000000000100", "functionalChannelType": "FLOOR_TERMINAL_BLOCK_MECHANIC_CHANNEL", "groupIndex": 11, "groups": [], "index": 11, "label": "", "valvePosition": null, "valveState": "ADJUSTMENT_TOO_SMALL" }, "12": { "deviceId": "3014F7110000000000000100", "functionalChannelType": "FLOOR_TERMINAL_BLOCK_MECHANIC_CHANNEL", "groupIndex": 12, "groups": [], "index": 12, "label": "", "valvePosition": null, "valveState": "ADJUSTMENT_TOO_SMALL" }, "13": { "deviceId": "3014F7110000000000000100", "functionalChannelType": "HEAT_DEMAND_CHANNEL", "groupIndex": 0, "groups": [ "00000000-0000-0000-0000-000000000101", "00000000-0000-0000-0000-000000000102" ], "index": 13, "label": "" }, "14": { "deviceId": "3014F7110000000000000100", "functionalChannelType": "DEHUMIDIFIER_DEMAND_CHANNEL", "groupIndex": 0, "groups": [ "00000000-0000-0000-0000-000000000103" ], "index": 14, "label": "" }, "15": { "deviceId": "3014F7110000000000000100", "functionalChannelType": "CHANGE_OVER_CHANNEL", "groupIndex": 0, "groups": [ "00000000-0000-0000-0000-000000000104", "00000000-0000-0000-0000-000000000105", "00000000-0000-0000-0000-000000000106", "00000000-0000-0000-0000-000000000107" ], "index": 15, "label": "" }, "2": { "deviceId": "3014F7110000000000000100", "functionalChannelType": "FLOOR_TERMINAL_BLOCK_MECHANIC_CHANNEL", "groupIndex": 2, "groups": [ "00000000-0000-0000-0000-000000000021" ], "index": 2, "label": "Schlafen 1", "valvePosition": 0.0, "valveState": "ADAPTION_DONE" }, "3": { "deviceId": "3014F7110000000000000100", "functionalChannelType": "FLOOR_TERMINAL_BLOCK_MECHANIC_CHANNEL", "groupIndex": 3, "groups": [ "00000000-0000-0000-0000-000000000044" ], "index": 3, "label": "WC", "valvePosition": 0.0, "valveState": "ADAPTION_DONE" }, "4": { "deviceId": "3014F7110000000000000100", "functionalChannelType": "FLOOR_TERMINAL_BLOCK_MECHANIC_CHANNEL", "groupIndex": 4, "groups": [ "00000000-0000-0000-0000-000000000030" ], "index": 4, "label": "K\u00fcche ", "valvePosition": 0.0, "valveState": "ADAPTION_DONE" }, "5": { "deviceId": "3014F7110000000000000100", "functionalChannelType": "FLOOR_TERMINAL_BLOCK_MECHANIC_CHANNEL", "groupIndex": 5, "groups": [ "00000000-0000-0000-0000-000000000030" ], "index": 5, "label": "K\u00fcche", "valvePosition": 0.0, "valveState": "ADAPTION_DONE" }, "6": { "deviceId": "3014F7110000000000000100", "functionalChannelType": "FLOOR_TERMINAL_BLOCK_MECHANIC_CHANNEL", "groupIndex": 6, "groups": [ "00000000-0000-0000-0000-000000000046" ], "index": 6, "label": "Wohnen 1", "valvePosition": 0.0, "valveState": "ADAPTION_DONE" }, "7": { "deviceId": "3014F7110000000000000100", "functionalChannelType": "FLOOR_TERMINAL_BLOCK_MECHANIC_CHANNEL", "groupIndex": 7, "groups": [ "00000000-0000-0000-0000-000000000046" ], "index": 7, "label": "Wohnen 3", "valvePosition": 0.0, "valveState": "ADAPTION_DONE" }, "8": { "deviceId": "3014F7110000000000000100", "functionalChannelType": "FLOOR_TERMINAL_BLOCK_MECHANIC_CHANNEL", "groupIndex": 8, "groups": [ "00000000-0000-0000-0000-000000000046" ], "index": 8, "label": "Wohnen 2", "valvePosition": 0.0, "valveState": "ADAPTION_DONE" }, "9": { "deviceId": "3014F7110000000000000100", "functionalChannelType": "FLOOR_TERMINAL_BLOCK_MECHANIC_CHANNEL", "groupIndex": 9, "groups": [ "00000000-0000-0000-0000-000000000046" ], "index": 9, "label": "Wohnen 1", "valvePosition": 0.0, "valveState": "ADAPTION_DONE" } }, "homeId": "00000000-0000-0000-0000-000000000001", "id": "3014F7110000000000000100", "label": "Fu\u00dfbodenheizungsaktor \u2013 12-fach, motorisch", "lastStatusUpdate": 1663348784591, "liveUpdateState": "LIVE_UPDATE_NOT_SUPPORTED", "manufacturerCode": 1, "modelId": 365, "modelType": "HmIP-FALMOT-C12", "oem": "eQ-3", "permanentlyReachable": true, "serializedGlobalTradeItemNumber": "3014F7110000000000000100", "type": "FLOOR_TERMINAL_BLOCK_12", "updateState": "UP_TO_DATE" } },
Also da hat EQ-3 die valvePosition hinzugefügt. Im Januar gab es das noch nicht. Siehe mein Issue aus der Zeit:
GitHub -
@okoehler sagte in Homematic IP Cloud Access Point Adapter:
Das ist natürlich wildes gehacke. Wie bekommen wir das denn jetzt sauber in die API?
In der API ist es. Der Adapter unterstützt es bisher nicht. Vielen Dank erstmal für die Info!
Ich mache ein Issue auf:
https://github.com/iobroker-community-adapters/ioBroker.hmip/issues/395
-
@ofbeqnpolkkl6mby5e13 Jo, kommt die tage dann
-
@ofbeqnpolkkl6mby5e13 sagte in Homematic IP Cloud Access Point Adapter:
Also da hat EQ-3 die valvePosition hinzugefügt. Im Januar gab es das noch nicht. Siehe mein Issue aus der Zeit:
Ja das ist "blöd" ... das sehe ich nicht wenn es mal eingebaut ist wenn die neue States hinzufügen
-
Danke für die Integration der Ventilposition und des Channellabels des HmIP-FALMOT-C12!
Für die Einheit hast du natürlich % gewählt. In den Dump-Daten, die ich aus der Python REST-API gezogen habe, steht aber keine Einheit. Zumindest habe ich das nicht gefunden. War das Logik, oder worauf ist das begründet?
Ich frage das, weil bei keiner anderen valvePosition im Adapter eine Einheit vorgegeben ist.
-
@ofbeqnpolkkl6mby5e13 Annahme und weil es sinn macht? Bzw checke gern was der Wert ist wenn ganz offen - wenn 100 dann ists % ... dann kann ich die Einheit ggf nachziehen bei den anderen
-
100% macht kein Heizungsventil auf und schon gar nicht bei einer Fußbodenheizung mit hydraulischem Abgleich durch den FALMOT-C12. Ich wüsste auch nicht, wie ich das provozieren sollte.
-
@ofbeqnpolkkl6mby5e13 Ok, dann anders: Macht die Einheit % für dich sinn? Wenn ja lassen wirs so, wenn nein dann halt nicht ... Eine einheitenlose Zahl ist auch nicht das gelbe vom Ei ...
Ein weiterer Anhaltspunkt für % war das hmip hier wohl 0,04 als Wert hatte bei einem Datensatz ... -
Ja, natürlich, das ergibt absolut Sinn. Ich war halt positiv über die Einheit überrascht, weil die sonst nicht gesetzt war.
Aktuell ist ein Wert bei 14%, also keine 0,irgendwas Werte.
Ach so, durch die Einheit % wird das automatisch umgerechnet.
-
@ofbeqnpolkkl6mby5e13 sagte in Homematic IP Cloud Access Point Adapter:
Aktuell ist ein Wert bei 14%, also keine 0,irgendwas Werte.
Ach so, durch die Einheit % wird das automatisch umgerechnet.Nicht automatisch, aber ja ich rechne das um. Problem kist wenn ich das bei den anderen mache dann wird es ein breaking change wenn user darauf logik haben ...hhmmmmmmmm