NEWS
Statusabfrage per Telegram mit Wandlung von Werten
-
Hallo,
ich will per Telegram den Status meiner Fenster abfragen (offen/gekippt/geschlossen).
Das Blocky Skript dafür konnte ich mir erstellen und ich erhalte auch die Werte wenn ich das Triggerwort an meinen Bot schicke. Mein Problem ist, dass der Status in Zahlen zurückgegeben wird:- 0: geschlossen
- 1: gekippt
- 2: geöffnet
Hat jemand einen Tipp für mich wie in dem Skript gleichzeitig eine Umwandlung durchführen (0=geschlossen / 1=gekippt / 2=geöffnet) kann die ich dann zugeschickt bekommen?
Hier mein aktuelles Skript:
-
@samsungfreak sagte:
Umwandlung durchführen (0=geschlossen / 1=gekippt / 2=geöffnet)
-
@paul53 Danke dir! Allerdings werde ich daraus nicht so richtig schlau.
Wie bekommen ich da mit; ID, val rein?
Bei den drei Punkte habe ich entsprechend das JavaSkript eingefügt:- return getObject(id).common.states[val];
Aber wo trage ich die "Übersetzung" genau ein?
Ebenfalls finde ich den folgenden Baustein nicht: -
@samsungfreak sagte:
Wie bekommen ich da mit; ID, val rein?
@samsungfreak sagte in Statusabfrage per Telegram mit Wandlung von Werten:
Ebenfalls finde ich den folgenden Baustein nicht:
Nachdem die Funktion erstellt ist, steht sie auch unter "Funktionen" zur Verfügung.
-
@paul53 Danke das hat geklappt aber ich komme dann nicht weiter:
die Funktion "getStateText mit" kann ich nicht andocken an erstelle Text aus.
Mir ist jetzt auch noch nicht klar wo genau ich die Übersetzung eintragen kann ((0=geschlossen / 1=gekippt / 2=geöffnet) -
@samsungfreak sagte:
die Funktion "getStateText mit" kann ich nicht andocken an erstelle Text aus.
Du musst auch die JS-Funktion mit Ergebnis verwenden.
Da deine Werte nicht aus einem Trigger-Datenpunkt kommen, musst Du andere Blöcke zuweisen:
-
@paul53 Ah jetzt klappt es fast:
Ich bekomme jetzt als Wert "Closed" da so das Objekt von der HomeMatic beschrieben wird (jetzt verstehe ich auch das JavaSkript). Kann ich da noch einen eigenen Namen reinbringen also, dass dann statt closed "geschlossen" steht usw.?
-
@samsungfreak sagte:
Kann ich da noch einen eigenen Namen reinbringen also, dass dann statt closed "geschlossen" steht usw.?
Wenn es mit dieser Funktion verwendet wird, kann man es nur im Datenpunkt-Objekt ändern (RAW-Ansicht).
"states": { "0": "geschlossen", "1": "gekippt", "2": "offen" },
-
@paul53 Du meinst den Code einfach 1:1 austauschen wo vorher "return getObject(id).common.states[val];" stand? Das geht leider nicht.
-
@samsungfreak sagte:
austauschen wo vorher "return getObject(id).common.states[val];" stand?
Nein, nicht in der Funktion, sondern im Datenpunkt-Objekt im Tab "Objekte".
Wenn du die Funktion entsprechend ändern möchtest, dann so:if(val == 0) return 'geschlossen'; if(val == 1) return 'gekippt'; return 'offen';
Das geht aber auch mit einer Blockly-Funktion mit Ergebnis:
-
Dann mache ich das lieber mit der Blocky Funktion.
So sollte es doch eigentlich dann ausreichen/richtig sein oder? Er macht leider immer wieder oben "getFensterText2" statt "getFensterText".
Siehst du einen Fehler? -
@samsungfreak sagte:
"getFensterText2" statt "getFensterText".
Lösche die Javascript-Funktion, wenn es die Blockly-Funktion machen soll. Zwei Funktionen können nicht den gleichen Bezeichner haben.
-