NEWS
[Xiaomi Temp-Sensor] Luftfeuchte abfragen
-
Auch ohne HomeMatic Zentrale CCU2 ist es mir letztendlich gelungen, beide Typen an Xiaomi-Sensoren (Standard und Aqara) mit Alexa abzufragen. Nun bieten die Sensoren auch die Luftfeuchte (der Aqara-Sensor auch noch den Luftdruck) an und ich hatte gehofft, den Wert ähnlich elegant per Alexa bereitstellen zu können.
Prinzipiell musste ich dazu den Datenpunkt "value.humidity" beschreibbar machen, damit er Alexa bereit gestellt wird. Die Darstellung im cloud-Adapter und in Alexa erfolgt dann als Gruppe, was ok ist.
Leider hat es nicht funktioniert und ein Blick in die https://github.com/ioBroker/ioBroker.cloud/blob/master/lib/alexaSmartHomeV2.js#L237 zeigt mir, dass wohl die Funktionen getHumidity() in % und getPressure() in Pa analog zu getTemperature() implementiert werden müssen.
Wie kann ich unterstützen, dass diese Funktionalität bereit gestellt wird?
Wen es interessiert, hier die Herausforderungen für mich
So habe ich mich mit den Aufzählungen gemüht:
! Der Schlüssel waren für mich die Aufzählungen enum.function und enum.roo. Weil ich keine ccu2 im Einsatz habe, habe ich auch die vorinstallierte Homematic-Adapter gelöscht. Warum auch immer ließen sich später zwar Räume hinzufügen, aber die Funktionen konnten nicht erweitert werden.
! Also habe ich die System-Objekte eingeblendet und wollte darüber editieren. Weil aber beim Einfügen kein enum-Typ angeboten wird, habe ich zunächst ein beliebiges Objekt angelegt und anschließend im raw-Mode den Type umgestellt. Ganz schlechte Idee: Nun hat die Admin-Oberfläche komplett gesponnen und den Objekt-Baum nur noch "verkrüppelt" dargestellt. Erst als ich diese Elementwieder gelöscht hatte, konnte ich in der Web-Oberfläche wieder etwas gescheites sehen.
! Geholfen hat schließlich, das Element enum.function komplett zu löschen und es im Objekt-Baum wieder erneut anzulegen. Nun konnten auch unter Aufzählungen die Elemente (bei mir Temperature und Humidity) ergänzt werden. Offensichtlich kommt ioBroker mit den Objekten ins Schleudern, die von Adaptern angelegt wurden, die nicht mehr existieren?!So sinnvoll ist für mich das Arbeiten mit Aufzählungen:
! Offensichtlich mit jedem Neustart verwirft ioBroker die von mir geänderten Namen der Objekte unter miHome. Ich habe mir mit einem Script geholfen, dass die Dutzenden Sensoren auf Knopfdruck wieder benennT:
!function SetCommonName(aID, aName) { aObj = getObject(aID); aObj.common.name = aName; setObject(aID, aObj, function (err) { if (err) log('Cannot write object: ' + err); }); } ! extendObject("mihome-vacuum.0", {common: {name: '#01 Staubsauger oben'}}); extendObject("mihome-vacuum.1", {common: {name: '#02 Staubsauger unten'}}); ! SetCommonName("mihome.0.devices.gateway_34ce008d6000", '#00 MiHome Gateway'); SetCommonName("mihome.0.devices.sensor_ht_158d0001a2a000", '#01 Andreas Büro'); SetCommonName("mihome.0.devices.sensor_ht_158d0001a2a000", '#02 Bad'); SetCommonName("mihome.0.devices.magnet_158d0001881000", '#10 tbd'); SetCommonName("mihome.0.devices.motion_158d000171b000", '#01 OG Flur'); SetCommonName("mihome.0.devices.switch_158d00018b46ff", '#02 Andreas Büro rund'); SetCommonName("mihome.0.devices.switch_158d0001714401", '#11 Aqara Schalter eckig'); SetCommonName("tr-064.0", '#01 Fritzbox 6490'); stopScript(); !
! Da ich nun aber über die Aufzählungen der Räume und Funktionen verfüge (wie gesagt: keine ccu2), ist die Zuordnung ein Klacks und es klappt formal auch die Auswahl im clod-Adapter-Dialog.
! Weil aber damit Alexa noch nicht antwortete, habe ich die Objekte per Hand "Alexa-smart" geschaltet.So habe ich die Xiaomi-Sensor-Temperatur-Datenpunkte "Alexa-smart" geschaltet:
! Der cloud-Adapter-Dialog hat mich leider nicht ausreichend unterstützt. Deshalb habe ich die Datenpunkte im Raw-Mode editiert und dabei dieses Schema verwendet:
!{ "_id": "mihome.0.devices.sensor_ht_158d0001216000.temperature", "common": { "name": "Temperature", "type": "number", "unit": "°C", "role": "value.temperature", "def": 0, "min": -10, "max": 50, "read": true, "write": false, "smartName": { "de": "Schlafzimmer" } }, "type": "state", "native": {}, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } } !
! Keine Ahnung, welche der common-Properties (def, min, max, smartName) nun wirklich maßgebend sind - es hat das gewünschte Ergebnis gebracht und Alexa antwortet mir auf die Frage zu obigen Beispiel: "Alexa, wie ist die Temperatur im Schlafzimmer?" korrekt. Es klappt sogar die Variante "Temperatur auf dem Balkon". Es ist also ausreichend, im SmartName des Datenpunkts den Zimmername zu hinterlegen, weil durch die Rolle des Datenpunkts die Wigenschaft klar ist. Smart halt. -
` > Prinzipiell musste ich dazu den Datenpunkt "value.humidity" beschreibbar machen, damit er Alexa bereit gestellt wird. Die Darstellung im cloud-Adapter und in Alexa erfolgt dann als Gruppe, was ok ist.
Leider hat es nicht funktioniert und ein Blick in die https://github.com/ioBroker/ioBroker.cloud/blob/master/lib/alexaSmartHomeV2.js#L237 zeigt mir, dass wohl die Funktionen getHumidity() in % und getPressure() in Pa analog zu getTemperature() implementiert werden müssen. `
Das gleiche trifft dann wohl auch für z.B. Homematic IP Wandthermostate (habe nur IP Geräte) zu, die könnten auch die Luftfeuchtigkeit wiedergeben ?
-
Hallo neo4a,
ich möchte auch die Luftfeuchte per Alexa ansagen lassen. Gibt es etwas Neues, hast Du es geschafft?
-
Hm, ich habe nun auch die Aqara Sensoren die alles zur Verfügung stellen und sind per ZigBee angebunden. Die value.humidity habe ich schreibbar gemacht und steht im Cloud Adapter auch zur Verfügung. Alexa antwortet aber immer mit "das xxx unterstützt das nicht".
-
ich habe homematic-ip, aber wenn Du in den Objekten einen Wert hast geht es auch mit dem Alexa2 Adapter.
Das aktulle Blockly kann ich noch nachreichen…(habe es leicht verändert)