NEWS
Problem mit getStateAsync
-
@automatisierer-0
Pack Bitte Code Schnipsel nächstes mal in Code Tags. So ist es fast unmöglich den Code zu lesen. Aber ich glaube du hattest eine Klammer Zuviel. Probiere es mal so:var MyoldValue = await getStateAsync("knx.0.Heizung_und_Temp_(HZ).Alles_(Zentral).HZ_-TH-Therme-Heizkreis_1_Vorlaufemperatur(R)_old").val;
-
@ciddi89
Nein, so wie du schreibst gehts nicht --> Compilerfehler
Was soll ich machen für die von dir gewünschten Code Tags?? Wie geht das? -
@automatisierer-0 dann pack das mal in Code Tags damit man das lesen kann…
-
@automatisierer-0 sagte: Was mache ich falsch?
Ich finde getStateAsync() nicht in der Funktionsdokumentation.
-
@paul53
Ich auch nicht, daher meine Frage 2
// DP ezeugen und Initialisierung createState("0_userdata.0.Debug.Therme_-_Heizkreis_1_Vorlaufemperatur_(R)_old", 0); setState("0_userdata.0.Debug.Therme_-_Heizkreis_1_Vorlaufemperatur_(R)_old", 12); // Vorlauftemperatur Heizkreis geändert on({id: "knx.0.Heizung_und_Temp_(HZ).Alles_(Zentral).HZ_-_TH_-_Therme_-_Heizkreis_1_Vorlaufemperatur_(R)", change: "any"}, async function (obj) { var value = obj.state.val var MyoldValue = (await getStateAsync("knx.0.Heizung_und_Temp_(HZ).Alles_(Zentral).HZ_-_TH_-_Therme_-_Heizkreis_1_Vorlaufemperatur_(R)_old")).val; sendTo("pushover", "send", {message: "---Lesen OLD", sound: "" }); sendTo("pushover", "send", {message: "--- Callback Heizkreis Vorlauftemp Old: " + MyoldValue + "-", sound: "" }); sendTo("pushover", "send", {message: "---Gelesen OLD", sound: "" }); sendTo("pushover", "send", {message: "--- Callback Heizkreis Vorlauftemp Aktuell: " + value, sound: "" }); sendTo("pushover", "send", {message: "---333333", sound: "" }); // old_value setzen await setStateAsync("knx.0.Heizung_und_Temp_(HZ).Alles_(Zentral).HZ_-_TH_-_Therme_-_Heizkreis_1_Vorlaufemperatur_(R)_old", value); })
-
@automatisierer-0 getStateAsync gibt es. Nutze es auch in einem Script. Versuche es mal so: So ist es in meinem script auch.
const MyoldObj = await getStateAsync(`knx.0.Heizung_und_Temp_(HZ).Alles_(Zentral).HZ_-_TH_-_Therme_-_Heizkreis_1_Vorlaufemperatur_(R)_old`); let MyoldValue = MyoldObj.val;
-
@automatisierer-0
Im Javascript-Adapter ist die Funktion allerdings implementiert.
Weshalb möchtest Du getStateAsync() verwenden? Hast Du den Puffer in der Javascript-Instanz deaktiviert?var MyoldValue = (await getStateAsync("knx.0.Heizung_und_Temp_(HZ).Alles_(Zentral).HZ_-_TH_-_Therme_-_Heizkreis_1_Vorlaufemperatur_(R)_old")).val;
Die Klammern sind falsch.
-
Das Script stimmt ja erstmal, aber ist der State auch wirklich gesetzt / enthält einen Wert? Wenn man ein neues Objekt vom Typ state anlegt, dann ist dort erstmal kein State gespeichert und man bekommt
null
.@automatisierer-0 sagte in Problem mit getStateAsync:
script.js._Automation: TypeError: Cannot read property 'val' of null
Denn: Da kam ja
null
zurück. Also darauf prüfen:const state = await getStateAsync(`knx.0.Heizung_und_Temp_(HZ).Alles_(Zentral).HZ_-_TH_-_Therme_-_Heizkreis_1_Vorlaufemperatur_(R)_old`); if (state) { const value = state.val; }
@automatisierer-0 sagte in Problem mit getStateAsync:
Die Reihenfolge der angezeigten Pushover Nachrichtenam Handy ist durcheinandergewürfelt.
Dann musst du mit
await sendToAsync()
arbeiten und auf das Ergebnis warten. -
@paul53
Wie ist es richtig? -
@automatisierer-0 sagte: Wie ist es richtig?
var MyoldValue = await getStateAsync("knx.0.Heizung_und_Temp_(HZ).Alles_(Zentral).HZ_-_TH_-_Therme_-_Heizkreis_1_Vorlaufemperatur_(R)_old").val;
Vielleicht kann man mit .val auch erst nachträglich auf das Objekt zugreifen? Wie @ciddi89 gezeigt hat:
const MyoldObj = await getStateAsync('knx.0.Heizung_und_Temp_(HZ).Alles_(Zentral).HZ_-_TH_-_Therme_-_Heizkreis_1_Vorlaufemperatur_(R)_old'); let MyoldValue = MyoldObj.val;
-
@paul53 said in Problem mit getStateAsync:
var MyoldValue = await getStateAsync("knx.0.Heizung_und_Temp_(HZ).Alles_(Zentral).HZ_-TH-Therme-Heizkreis_1_Vorlaufemperatur(R)_old").val;
NEIN: bringt Compilerfehler
-
@paul53 said in Problem mit getStateAsync:
const MyoldObj = await getStateAsync(
knx.0.Heizung_und_Temp_(HZ).Alles_(Zentral).HZ_-_TH_-_Therme_-_Heizkreis_1_Vorlaufemperatur_(R)_old
);NEIN: Gleicher Fehler, funktioniert nicht
-
@automatisierer-0 sagte: funktioniert nicht
Tausche die ` gegen Hochkommata aus.
-
@haus-automatisierung said in Problem mit getStateAsync:
Dann musst du mit await sendToAsync() arbeiten und auf das Ergebnis warten.
Kannst du mir bitte die Codezeile schreiben wie es richtg sein soll?
Die Alte ist:sendTo("pushover", "send", {message: "---Lesen OLD", sound: "" });
-
@paul53 said in Problem mit getStateAsync:
Hast Du den Puffer in der Javascript-Instanz deaktiviert?
Nein. Bitte wie mache ich das ?
-
@automatisierer-0 sagte in Problem mit getStateAsync:
Kannst du mir bitte die Codezeile schreiben wie es richtg sein soll?
Na
await sendToAsync("pushover", "send", { message: "---Lesen OLD", sound: "" });
-
@automatisierer-0 das mit den Puffer lass mal sein.
Frage: Warum muss es unbedingt async sein? Hier reicht der ganz normale getState aus. Finde merkwürdig das du ein Compiler Fehler bekommst. Was sagt der genau? Hab es in mehreren scripts genau so und da kommt kein Fehler. Steht da wirklich schon was im Datenpunkt drin den du abfragen möchtest? Finde keine Antwort auf die Frage die Hausautomatisierung dir gestellt hat. -
@haus-automatisierung said in Problem mit getStateAsync:
await sendToAsync("pushover", "send", { message: "---Lesen OLD", sound: "" });
-
@automatisierer-0 Naja, die Doku und Type Definition ist scheinbar nicht ganz vollständig (hatten wir ja oben schon). Soll ich auf die Stelle im GitHub Repo verlinken, dass es die Funktion gibt?
-
@haus-automatisierung
Ich bin ziemlich ein Anfänger, der Verweis auf github befüchte ich wird mit gar nicht weiterhelfen.Aber wie löse ich das Problem mit dem Fehler: cannot find name 'SendToAsync' ?
Was muss ich tun dass der Fehler weggeht?