NEWS
State-Wert statt -Schlüssel auslesen (Blockly/JS/Lovelace)
-
Hallo zusammen! Ich portiere gerade recht erfolgreich meine Heimautomation von Home Assistant nach ioBroker.
Jetzt hänge ich allerdings an einer Stelle: ich versuche von einem Homematic Control Mode, der als Zahl mit dahinterliegender Werteliste (state) umgesetzt ist, anstatt dem Schlüssel der States den entsprechenden Wert auslesen zu lassen (common.states) und komme dabei einfach nicht weiter.
Beispielhaft einer der betroffenen Datenpunkte:
{ "from": "system.adapter.hm-rega.0", "user": "system.user.admin", "ts": 1601322081245, "common": { "name": "Heizungsthermostat (Bad).CONTROL_MODE", "type": "number", "role": "indicator", "def": 0, "min": 0, "max": 3, "read": true, "write": false, "states": { "0": "AUTO-MODE", "1": "MANU-MODE", "2": "PARTY-MODE", "3": "BOOST-MODE" }, "custom": { "lovelace.0": { "enabled": true, "entity": "sensor", "name": "LEQ0785938_4_CONTROL_MODE" } } }, "native": { "CONTROL": "HEATING_CONTROL.CONTROL_MODE", "ID": "CONTROL_MODE", "TYPE": "ENUM", "UNIT": "", "DEFAULT": 0, "FLAGS": 1, "MAX": 3, "MIN": 0, "OPERATIONS": 5, "TAB_ORDER": 0, "VALUE_LIST": [ "AUTO-MODE", "MANU-MODE", "PARTY-MODE", "BOOST-MODE" ] }, "acl": { "object": 1638, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1638 }, "_id": "hm-rpc.0.LEQ0785938.4.CONTROL_MODE", "type": "state" }
Ich möchte also in Blockly statt 0 den Wert "AUTO-MODE" auslesen. In Lovelace wird auch 0 statt dem Text angezeigt. Dieser Wert ist reine Information (von Homematic so vorgeben) und nicht schreibbar.
Hat das schon irgendeiner gelöst, bzw. allgemein einen Hinweis, wie man in ioBroker solche JS-Objekte ausliest?
Besten Dank schon mal.
-
-
@paul53, danke für die schnelle Antwort. Deinen beiden Links entneme ich, dass es in Blockly wohl nicht möglich ist (es sei denn, ich packe es dort in eine Funktion). Dort wurde aber nichts zum Thema Lovelace gesagt. Weißt du darauf zufällig auch eine Antwort?
-
Habe es gemäß den Informationen von @paul53 in einer Blockly-Funktion getestet. Funktioniert einwandfrei:
var input_obj; // Statustext aus States Objekt auslesen function get_state_text(input_obj) { return getObject(input_obj).common.states[getState(input_obj).val]; }
-
@AxelRHD said in State-Wert statt -Schlüssel auslesen (Blockly/JS/Lovelace):
@paul53, danke für die schnelle Antwort. Deinen beiden Links entneme ich, dass es in Blockly wohl nicht möglich ist (es sei denn, ich packe es dort in eine Funktion). Dort wurde aber nichts zum Thema Lovelace gesagt. Weißt du darauf zufällig auch eine Antwort?
Lovelace wird bei einem sensor nicht auf das States-Attribut zugreifen, Hm. Das ist auch nicht wirklich tivial zu ergänzen gerade... kann dir der neue Klimaanlagen-Typ vom Geräte-Adapter helfen? (ist noch nicht in lovelace unterstützt, steht aber auf der Liste).
-
@Garfonso, danke für die Antwort. Dann warte ich mal auf die Umsetzung und schaue es mir dann an. Ging in Home Assistant früher ja auch nicht so einfach. Da habe ich mir dann Dummy-Zustände gebaut, die auf den Attributen beruhten.
-
@axelrhd Hallo Axel. kannst mal bitte dein Blockly-Scrpit posten. Wie hast du "input_obj" mit deinem Trigger verknüpft?
-
bei mir im Blockly funktioniert das mit dem extrahieren der Texte nicht.
was stimmt da noch nicht? kannst du mir weiterhelfen?Danke u. Grüße
-
@diamand2k22 sagte: was stimmt da noch nicht?
Die JS-Funktion mit Ergebnis darf nur diese eine Zeile enthalten:
Das Funktionsgerüst erstellt Blockly.
EDIT: Außerdem muss an die Funktion die ID des Trigger-Datenpunktes übergeben werden.
-
es funktioniert, danke!
Das fehlen der ObjectID des Trigger-Datenpunktes war der Hauptfehler.