NEWS
Stiebel Eltron Adaper: Verdichterstatus true / (null)
-
Ich möchte gerne aus iobroker (v6.10.1) über InfluxDB (InfluxDB v2.7.3) in Grafana (v10.2.0) anzeigen lassen, wann der Verdichter meiner Wärmepumpe (Stiebel Eltron WPL20AC) läuft und wann nicht.
Im Sinne von 0 oder 1.Kann mir jemand auf die Sprünge helfen, wie ich das machen kann? Der Wert ist entweder "true" oder "(null)".
Im Logging in den Verlaufsdaten wird nur "true" mitgeschrieben. -
-
@mickym Danke Dir. Leider klappt es noch nicht.
Hab ich das bisher richtig gemacht? Zuerst unter "Alias" ein Objekt angelegt und dort dann die ID des Messpunkts eingetragen:
Bei Zustandstyp hatte ich zuerst boolean - das hat auch nicht funktioniert.Trotzdem bleibts bei "true" oder "(null)".
Was mache ich noch falsch?
-
@schneider Vielleicht erkennt er den Status nicht dann probiere mal diese Konvertierung
Achso und der Alias sollte als Datentyp boolean haben.
(val !== undefined) ? true : false
oder wenn das nicht geht prüfe was für ein Datentyp rauskommt bei (null) und bei true in dem Du erst mal konvertierst.
typeof val
-
@mickym Leider funktioniert das auch nicht. So zeigt mir der Alias "true" und der Verdichter unter dem Striebel Adapter "false" an:
Ich habe bei der Konvertierung auch mal true und false vertauscht, das funktoniert aber auch nicht.
Wie / Wo mache ich das mit der Datentypprüfung?
-
@schneider Du gibtst einfach typeof val in die Konvertierungsfunktion ein. Dann siehst Du welcher Datentyp erkannt wird - dies kann man dann später in einer Bedingung abprüfen.
sprich mit der Konvertierungsfunktion siehst Du dann welche Datentypen erkannt werden.
Komischerweise liefert (null) bei typeof den Typ objekt. true/false hingegen boolean.
Das müsstest Du halt nochmal checken. Wenn es sich so verhält dann kann man einfach auf Typ boolean abprüfen.
Wenn es sich so verhält kannst Du den alias auf Typ boolean setzen und folgende Konvertierungsfunktion verwenden:
(typeof val === 'boolean') ? true : false
Damit sollte bei (null) false kommen, bei true true.
-
Wie komme ich in die Ansicht, welcher Datentyp das ist? (Da wo bei dir "string" angezeigt wird)
Damit kommt selber Effekt. Alias true, Verdichter false
(typeof val === 'boolean') ? true : false
Hat das evtl. was mit der Rolle zu tun? Alias "state", Verdichter indicator.state
Wobei das im Objekt steht (boolean)
-
@schneider Nun ich habe einfach typeof val in die Konvertierung eingetragen. Und den Alias auf String. Dann siehst Du doch was für ein Datentyp erkannt wird.
False ist Typ boolean. unten drunter ist doch (null) dann schau halt mal was für ein Datentyp das ist. Wie gesagt (null) wurde nicht als boolean erkannt. Bei mir hat also die Konvertierung geklappt. (also boolean = true und (null) = false) Ansonsten bin ich leider mit meiner Weisheit am Ende.
-
(null) scheint boolean zu sein.
Oh man.. ich versuche es mal weiter
Vielen Dank Dir auf jeden Fall schonmal
-
@schneider sagte in Stiebel Eltron Adaper: Verdichterstatus true / (null):
(null) scheint boolean zu sein.
Das ist schon komisch .
Probiere höchstens nochmal
(val === true) ? true : false
-
@mickym
(null) wird gezeigt, wenn der Datenpunkt keinen Zustand hat. Ohne Zustand kann er nicht triggern und somit auch den Alias nicht aktualisieren. -
@mickym Das ist total seltsam. Ich muss das morgen nochmal alles durchprobieren. Ich hatte eben mit der ersten Variante ein true & false im Alias. Nachdem die Zirkulationspumpe (mit der probiere ich das leichter durch als mit dem Verdichter) dann wieder ausging, steht im Alias wieder (null).
-
@paul53 Ah, das erklärt das Verhalten eben.
Ähm, hast du dazu ne Lösung? -
@schneider sagte: hast du dazu ne Lösung?
Zyklisches Polling des Datenpunktes per Skript und Schreiben in einen eigenen Datenpunkt unter "0_useradata.0".
-
@paul53 sagte in Stiebel Eltron Adaper: Verdichterstatus true / (null):
@mickym
(null) wird gezeigt, wenn der Datenpunkt keinen Zustand hat. Ohne Zustand kann er nicht triggern und somit auch den Alias nicht aktualisieren.Na ja schlüssig ist mir das zwar trotzdem nicht, wenn ein Zustand von boolean auf (null) geht, dann sollte doch undefined oder irgendwas dann der Zustand sein und triggern sollte ja das eine Änderung des states stattgefunden hat. Wenn man das nicht triggern kann, dann ist das ja nur mit polling möglich und das finde ich ja nicht gut.
-
@mickym sagte: triggern sollte ja das eine Änderung des states stattgefunden hat.
Getriggert wird bei Aktualisierung des Zeitstempels, den es nicht mehr gibt.
-
@mickym sagte: nur mit polling möglich
Ich vermute, dass man das Polling mit existsState(id) ausführen muss, um keine Warnungen zu erhalten.
const idSrc = 'stiebel-isg.0.Info.STATUSANLAGE.BETRIEBSSTATUS.VERDICHTER'; const idDst = '0_userdata.0.WP.Verdichter.Status'; var timer = null; on({id: idSrc, val: true}, function() { setState(idDst, true, true); clearInterval(timer); timer = setInterval(function() { if(!existsState(idSrc)) { setState(idDst, false, true); clearInterval(timer); } }, 10000); });
-
@schneider sagte: ne Lösung?
Man kann auch ausnutzen, dass der Datenpunkt jede Minute mit true aktualisiert wird, solange der Verdichter läuft.
const idSrc = 'stiebel-isg.0.Info.STATUSANLAGE.BETRIEBSSTATUS.VERDICHTER'; const idDst = '0_userdata.0.WP.Verdichter.Status'; var timer = null; on({id: idSrc, val: true}, function() { setState(idDst, true, true); clearTimeout(timer); timer = setTimeout(function() { setState(idDst, false, true); }, 70000); });
-
@schneider ich habe auch eine Stiebel Eltron und wollte mir auch per Grafana und iobroker (mit influx DB) eine Übersicht basteln, leider das gleiche Problem wie bei dir, ich sehe nur, wenn auf True gesetzt wird und sonst leere Punkte, somit immer nur "true" und nie ein "false" bzw. "Verdichter ist aus".
Ganz schlau werde ich als iobroker Neuling noch nicht aus den Nachrichten.
Wo gebt ihr den Code an, den zB auch @paul53 hier eingetragen hat?Ich habe es mit blockly Funktionen versucht, aber es aktualisiert sich nicht:
Ähnliches habe ich auch für meien PV gemacht, um zu visualisieren, ob Strom generiert wird etc. Da funktioniert es, aber da wird auch nicht "null" zurückgegeben, sondern halt Werte über 0 (watt).
Hast du es zum Laufen bekommen?
-