NEWS
Neuer Adapter: ioBroker.stiebel-lwz / ioBroker.stiebel-isg
-
Das weis ich ja, deswegen schrieb ich ja undefiniert. Dann verstehe ich aber nicht, warum es bei @nik82 funktioniert und auch bei mir früher mal ging. Versuche gerade den Workaround zu Basteln. Werde berichten.
@nik82 sagte in Neuer Adapter: ioBroker.stiebel-lwz / ioBroker.stiebel-isg:
@JB_Mystery
Ich kenn mich zwar mit Javascript nicht aus, aber ist das normal das du 3 "=" Zeichen nach dem .val schreiben musst?Mach doch mal ein Blockly, das hier funktioniert bei mir einwandfrei:
-
Also bei mir wird auch nur WAHR ausgewertet, sonst nichts. Alles andere geht nicht, das haben wir ja alles schon zig seiten vorher mal diskutiert.
Werde mal nochmal einen Test machen und gebe dann nochmal Bescheid. -
@nik82
Aber dein Starttrigger ist Elektrische Nacherwärmung geändert, oder bin ich da falsch? Und dies wird nur einmal ausgeführt, oder? Sonst müsstest du ja permanent die Telegramme bekommen. -
Ja, weil der Zustand von undefiniert in wahr ist ja eine Änderung und von wahr auf undefiniert müsste er auch eine Änderung erkennen. Aber ich werd das mal mit z.B. Warmwasser nochmal testen und gebe Bescheid.
Denn der Heizstab wird so schnell hoffentlich nicht einschalten:-) -
So habe es jetzt getestet und es funktioniert einwandfrei mit diesem Script:
Ergebniss:
@JB_Mystery
Bei deinem Testscript oben hast du erstens den Trigger auf aktualisiert und nicht auf geändert, dann hast du nochmal eine "falls" Abfrage in der "falls" Abfrage.Jetzt mach doch mal eines, mach GENAU mein Script oben und als Ausgabe wenn du nicht Telegram willst, mach einfach Email oder Debug out, aber mach mal GENAU das Script und gib uns Bescheid was dann passiert.
-
Habe dies getestet:
Ergebnis: Es kam kein LOG.Bin dann weiter auf die Suche gegangen. Mein Wert scheint irgendwie auf TRUE zu stehen, obwohl er nirgends als TRUE dargestellt zu sein scheint.
schedule("*/50 * * * * *", function () { //alle 30 Sek. if (getState('stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZKREISPUMPE').val = true) log ("Heizkreispumpe AN = TRUE; " + getState('stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZKREISPUMPE').val); });
Ich habe jetzt auch die Log Funktion aktiviert und die minimalen Pumpenzyklen erhöht, so dass ich heute mehrmals testen kann. Also mal abwarten. Ich weis nur nicht, was es bringt? Objekte kein Eintrag und auch im Flot sehe ich kein true.
Idee: Wie kann ich die undefinierten Werte (bei mir anscheinend TRUE) = false setzen, wenn sie nicht true sind? Oder geht das im Adapter?
Ich verzweifel hier noch.
-
Es geht ja darum mal zu wissen ob bei dir generell etwas nicht stimmt und dann können wir ja weiter schauen.
Wenn die Heizkreispumpe läuft, geht denn dann dein Objekt auf TRUE? Weil laut Screenshot oben ist es ja undefiniert, also steht gar nichts drin. Du loggst ja den Wert mit der History oder? Zeig mal was er da alles drin hat.
Ich hab da auch mal etwas gebastelt um die Werte statt undefiniert auf FALSE zu setzen:
Das funktioniert auch, ABER es ist nicht nötig, denn der TRUE wert wird immer richtig dargestellt und das reicht, deswegen müssen wir ja wissen ob das bei dir der Fall ist, denn wenn der TRUE Wert nicht richtig dargestellt wird, dann ist ja überhaupt was faul.
-
@JB_Mystery
Ich denke, der Wert wird NICHT geändert. Er verliert nur seine Gültigkeit. Vermutlich ist das keine Änderung. Teste doch mal mit aktualisiert und bau eine Prüfung ein, ob der Wert noch gültig ist, falls das geht. Ansonsten ob die letzte Aktualisierung nicht älter ist, als 2x deine eingestellte Aktualisierungszeit aus dem Adapter. -
@nik82
Genau so meinte ich das. -
Also es ist definitiv eine Änderung wenn die Gültigkeit verloren geht, das Beweist ja das Script oben von mir:-)
-
@JB_Mystery sagte in Neuer Adapter: ioBroker.stiebel-lwz / ioBroker.stiebel-isg:
Habe extra Screenshots gemacht, während Warmwasser erzeugt wurde, damit das true zu sehen ist.
Der Wert von Heizkreispumpe wird TRUE und undefiniert. Beides habe ich ja schon gezeigt. Lediglich die Abfrage auf Änderung funktioniert nicht.
Loggen tue ich nicht mit History, sondern über SQL.Wie ich ein Objekt auf Gültig abfrage, weis ich allerdings nicht. Kann dies also nicht testen.
Habe mal das nachfolgende gebastelt, vielleicht Hilft es euch. Meine Aktualisierungszeit im Adapter sind 45 sek.
on({id: 'stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZKREISPUMPE', change: "ne"}, function (obj) { log ("ne"); }); on({id: 'stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZKREISPUMPE', change: "any"}, function (obj) { log ("any"); }); schedule("*/60 * * * * *", function () { //alle 30 Sek. log (getState('stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZKREISPUMPE').ack + " ack; " + getState('stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZKREISPUMPE').c + " c; " + getState('stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZKREISPUMPE').expire + " expire"); log (getState('stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZKREISPUMPE').lc + " lc; " + getState('stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZKREISPUMPE').notExist + " notExist"); log (getState('stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZKREISPUMPE').q + " q; " + getState('stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZKREISPUMPE').ts + " ts; " + getState('stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZKREISPUMPE').val + " val"); });
Hier dann der Log über eine Phase Pumpe:
-
Bleib doch jetzt mal bei was simplen und nicht immer wieder was neues machen.
Also du hast dieses Script aktiviert:
Danach siehst du bei der Heizkreispumpe auch das es auf true springt und dann wieder undefiniert wird, richtig?
Dann MUSS das Script funktionieren.
Wenn nicht dann würde ich mal den Stiebel Adapter löschen, dann auch kompletten Verzeichnis-Baum in den Objekten löschen und dann nochmal installieren.
Und danach probierst du nochmal das ganz simple Blockly-Script.Meiner Meinung bringt es nichts wenn du immer wieder andere Scripte hier reinhaust und nicht bei einem Test mal bleibst. Zumindest kann ich dir dann nicht helfen.
-
Dieses Blockly läuft im Hintergrund immer mit, jedoch logt er nichts, da er die Änderung nicht mitbekommt.
Dann werde ich das Neuinstallieren jetzt mal testen.Ich habe nur eure Anweisungen versucht umzusetzen. Ich sollte doch die Zeiten vergleichen. Parallel habe ich noch die Javascript On change Sachen getestet. Aber nichts neues nur immer Parallel.
-
Neuinstallation des Adapters hilft leider auch nicht. Gleiches Bild.
-
@JB_Mystery
Mach mal ein Log direkt nach dem Auslösen des ersten Triggers, also nach "wurde geändert". -
Siehe letztes Log 14:28 Uhr.
-
Habe mir jetzt ein Script gebastelt, welches bei mir mit Umweg funktioniert.
Die Erkennung der Aktualisierung geht ja, nur die Erkennung der Änderung nicht. Deswegen nutze ich Aktualisierung und prüfe auf Änderung manuell.on({id: 'stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZKREISPUMPE', change: "any"}, function (obj) { if ((obj.oldState.lc + 44999) < obj.state.lc) { if (getState('stiebel-isg.0.Info.FACHMANN.PROZESSWERTE.POSITION_VENTIL').val == 2) { sendTo("email", { from: "ioBroker Heizung <xy@xy.de>", to: "xy@xy.de", subject: "Heizung", text: "Heizbetrieb - Verdichter ist angegangen und läuft. " }); } if (getState('stiebel-isg.0.Info.FACHMANN.PROZESSWERTE.POSITION_VENTIL').val == 4) { sendTo("email", { from: "ioBroker Heizung <xy@xy.de>", to: "xy@xy.de", subject: "Warmwasser", text: "Warmwasserbetrieb - Verdichter ist angegangen und läuft. " }); } } });
Falls ihr aber noch meine Fehlfunktion rausfindet, wäre ich euch Dankbar. Vielen Dank für eure bisherige Unterstützung.
-
Hallo,
also ich kann mir leider nicht erklären warum er bei dir das nicht als Änderung erkennt.
Aber solange es mit der Aktualisierung und der Abfrage geht ist es ja auch noch ok. -
Hallo,
habe das gleich Problem:
Was muss ich hier tun!?
Habe es leider noch nicht verstanden!?
Änderungen in welcher Datei und wo?Vielen Dank vorab
Carsten -
Hallo Carsten,
ist das bei dir auch nur einmal am Tag? Muss ich bei mir mal genauer drauf achten. Ich tippe auf einen Geräteneustart.Werd das die Tage mal rauspatchen. Ich melde mich dann.