NEWS
Homematic IP Cloud Access Point Adapter
-
@reindeer-web na super. Danke
-
Hallo,
bin neu hier. Weißt jemand ob die neueste v 1.18.0 von HomeMatic IP Cloud-Zugriffspunkt Adapter einwandfrei funktioniert? -
@krisiun Komische Frage ... Was genau willst Du wissen? ca. 950 User (ca. 10%) nutzen diese Version bereits und es gibt keine Problemmeldungen. Mehr kann ich dazu nicht sagen. Annahme ist daher: Ja klar, sonst hätte ich die nicht in Stable gepackt
-
@apollon77
Eigentlich logisch. Vielen Dank für die Antwort.
Ich bin ein Frischling und weiß noch nicht besonderes viel. -
Hi zusammen, erst mal vielen Dank für den Adapter!
Ich habe einige Fragen, die ich über die Dokumentation leider nicht herausfinden konnte.
- Wenn ich den Adapter einsetze, erstelle ich ja einen User im HmIP-System. Ich nehme an, der Adapter fungiert dann quasi wie ein Client mit der HmIP-App und holt sich darüber die Daten direkt aus der Cloud. Richtig?
- Wie oft werden die Daten abgefragt? Gibts da einen Intervall den ich einstellen kann? Auf der github-Seite steht, dass man die Server vom Hersteller nicht zu hart rannehmen soll, nur wo stelle ich da was ein?
- Ich habe das Problem, dass meine Gerätenamen und Räume nicht (alle) übernommen werden. Räume gar nicht und Gerätenamen immer nur der, den ich als erstes anlerne (beim Paar Thermostat+Fenstersensor). Der jeweils andere erhält den technischen (englischen) Namen. Ist das ein Bug?
- Wenn ich jetzt im ioBroker den Namen ändere, versucht dann der Adapter den auch in der HM-Cloud zu ändern oder ist die Namensänderung dann nur lokal im ioBroker?
- Wenn ich nachträglich Namen in der App durch mein Handy ändere, gibt es die Möglichkeit diese Namen mit dem ioBroker nachtäglich noch einmal zu syncen?
Ich weiß, viele Fragen, ich versuche nur das System zwischen Adapter und HM zu verstehen
Tausend Dank euch!
-
@cedric Na dann versuche ich Antworten zu geben
1.) Der Adapter ist quasi wie eine weitere Homematic App und nutzt die gleichen APIs und Daten Push Techniken wie die App
2.) Daten werden einmalig zum Start abgefragt oder wenn er sich komplett neu verbindet. Ansonsten ist eine Websocket-Verbindung offen wo die CloudSysteme von eq-3 Daten zum Adapter pushen. Ausser beim Start um einmalig alles zu lesen 8was aber "ein call" ist wo alles drin ist findet nur eine Kommunikation vom Adapter zu den Cloud Systemen statt wenn Du Werte in ioBroker änderst bzw setzt - auch hier sind aktuell Prüfungen drin das zB gleiche Werte nicht gesendet werden bzw auf einigen Datenpunkten sichergestellt wird das nicht zuviel gesendet wird bzw gerundet wird (zB bei Temperaturwerten). Also es ist viel Logik drin um überflüssige Kommunikation zu unterbinden
3-5.) Ohne jetzt Details zu kennen werden Namen primär beim Adapterstart synchronisiert für neue Geräte (bzw er erkennt neue geräte und startet sich ggf neu). Danach (und das war Userwunsch) bleiben Namen so wie Sie in ioBroker gesetzt wurden. Damit kannst du einfach in ioBroker die Namen so machen wie Du sie dort brauchst. Also ja wenn du neue geräte anlernst während der Adapter läuft dann kann es sein das er den originalnamen früher gespeichert hat als Du ihn danach ändern kannst
Da könnte man mal einen "vergiss alle namen und synce neu" Button einbauen bei ioBroker. Wenn relevant bitte Github issue als Feature request anlegen. Man könnte ebenso einbauen den namen in der App zu ändern. Das ist glaube ich noch nicht drin. Wäre die Frage was die Comunity sinnvoll erachtet -
Hallo,
ich habe hier von Homematic IP einen HMIP-FALMOT-C12 am laufen bei denen ich gerne die Ventil Positionen auslesen möchte.
Die Werte dazu müssten eigentlich vorhanden sein, leider zeigt das entsprechende Feld immer NULL an.Ich habe das mal testweise mit HomeAssistant ausgelesen, dort sind die Werte vorhanden
Wäre es möglich das auch hier zu implementieren?Hier ein Auszug aus einem HomeAssistant Dump
"1": {
"deviceId": "3014F7110000000000000009",
"functionalChannelType": "FLOOR_TERMINAL_BLOCK_MECHANIC_CHANNEL",
"groupIndex": 1,
"groups": [
"00000000-0000-0000-0000-000000000008"
],
"index": 1,
"label": "Heizkreislauf (1) Arbeitszimmer",
"valvePosition": 0.0,
"valveState": "ADAPTION_DONE"
},Gruß
Olaf
-
@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