NEWS
Test Adapter stiebel-isg v1.4.x GitHub
-
@unltdnetworx Habe ich ja bereits größtenteils. Würde ich auch beibehalten. Aber ich muss ja mit getsState() auf die Heizkreispumpe vom Adapter zugreifen. Und wenn diese keinen Wert verzeichnet, dann gibt es doch die Warnung im Log.
-
Es gibt jetzt eine neue Version im Masterbranch. Es werden nun zusätzliche Felder aus bestimmten Heizungen unterstützt. Basierend auf der WPL25A.
Wer kann, bitte gerne testen und hier kurzes Feedback geben.
-
@SaschaS
Der Fehler kommt aus deinem Script, richtig?Du könntest es mit try und catch versuchen.
Etwa so:
try { var VORLAUFTEMP = getState('stiebel-isg.0.Info.IST_SOLLWERTE.HEIZUNG.VORLAUFTEMP').val; setState('eigenerDatenpunkt',VORLAUFTEMP,true); } catch (e) { setState('eigenerDatenpunkt',0,true); }
-
Also, ich habe das Update nun rund 24h getestet und hatte keine Zwischenfälle.
Auch die Werte wurden vom System mehrmals verändert und funktionierten.Also von meiner Seite aus, super Arbeit
-
mir ist jetzt im Langzeitbetrieb noch etwas aufgefallen.
Alle states motzen nicht mehr, ausser :
getState "stiebel-isg.0.Info.ANLAGE.HEIZUNG.AUSSENTEMPERATUR" not found (3)Immer der, egal was du davon willst, der schlägt auf.
In der alten Version macht dieser State keinen Mux, in der neuen, immer trouble.
Kannst du das ev. noch fixen? -
@maodch
Werden da denn Werte bei dir geschrieben? Ich denke, bei mir wird der aktualisiert.
Evtl. den Wert mal löschen. Wird er dann neu erzeugt? -
Bei mir heißt der Wert stiebel-isg.0.Info.ANLAGE.HEIZEN.AUSSENTEMPERATUR und wird sowohl neu erstellt, als auch aktualisiert.
-
Habe den State gelöscht, und er kam wieder, aber genau gleich.
Interessant ist aber, dass der State der einzige ist der Gross/Klein geschrieben wird, alle anderen sind UPPERCASE.Habe selbes auch auf meinem Backupsystem, eim Raspy4. Auch dort, sieht der State genau gleich aus.

-
Wegen der Groß-/Kleinschreibung hatte ich ursprünglich mal angefangen, die Namen zu übersetzen auch auf Englisch. Aber mit immer mehr Dynamik hab ich das wieder entfernt und offensichtlich den Eintrag vergessen.
Hat aber keine Auswirkungen.
-
@unltdnetworx try und catch bringen nichts. Sobald ich getState().val verwende und bei den unten abgebildeten Werten kein State vorhanden ist, erhalte ich Warnings im Log. Egal ob getstate().val/.lc/.ack/.q/ts
javascript.0 2020-02-01 15:14:36.341 warn (25315) at script.js.ISG.Test:5:28 javascript.0 2020-02-01 15:14:36.341 warn (25315) getState "stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZKREISPUMPE" not found (3) javascript.0 2020-02-01 15:14:36.340 info (25315) script.js.ISG.Test: Ausgabe5: undefined javascript.0 2020-02-01 15:14:36.340 warn (25315) at script.js.ISG.Test:4:28 javascript.0 2020-02-01 15:14:36.339 warn (25315) getState "stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZKREISPUMPE" not found (3) javascript.0 2020-02-01 15:14:36.339 info (25315) script.js.ISG.Test: Ausgabe3: undefined javascript.0 2020-02-01 15:14:36.339 warn (25315) at script.js.ISG.Test:3:28 javascript.0 2020-02-01 15:14:36.338 warn (25315) getState "stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZKREISPUMPE" not found (3) javascript.0 2020-02-01 15:14:36.338 info (25315) script.js.ISG.Test: Ausgabe2: null javascript.0 2020-02-01 15:14:36.337 warn (25315) at script.js.ISG.Test:2:28 javascript.0 2020-02-01 15:14:36.337 warn (25315) getState "stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZKREISPUMPE" not found (3) javascript.0 2020-02-01 15:14:36.336 info (25315) script.js.ISG.Test: Ausgabe1: undefined javascript.0 2020-02-01 15:14:36.336 warn (25315) at script.js.ISG.Test:1:28 javascript.0 2020-02-01 15:14:36.335 warn (25315) getState "stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZKREISPUMPE" not found (3)
Wurden in früheren Versionen vom Adapter für das ISG nicht auch "false"-Werte geschrieben?
-
@SaschaS
Nein, können sie nicht, weil das ISG den Wert einfach nicht mehr anzeigt. Daher kann ich ihn auch nicht auf false setzen lassen.Zeig bitte mal deinen Code.
-
@unltdnetworx
Hm..ist ja doof.Mein Code ist noch am Entstehen. Prinzipiell geht es mir aber darum, dass ich auf Änderungen von stiebel-isg.0.Info.IST_SOLLWERTE.STATUS.HEIZKREISPUMPE oder stiebel-isg.0.Info.IST_SOLLWERTE.STATUS.HEIZEN reagieren möchte. Ist dazu greife ich eben mit getState() auf die Variable vom ISG Adapter zu.
schedule("* * * * *", function () { const HEIZKREISPUMPE = "stiebel-isg.0.Info.IST_SOLLWERTE.STATUS.HEIZKREISPUMPE"; var VORLAUFTEMP = getState('stiebel-isg.0.Info.IST_SOLLWERTE.HEIZUNG.VORLAUFTEMP').val; var RÜCKLAUFTEMP = getState('stiebel-isg.0.Info.IST_SOLLWERTE.HEIZUNG.RÜCKLAUFTEMP').val; var SPREIZUNG = getState('stiebel-isg.0.Info.IST_SOLLWERTE.HEIZUNG.SPREIZUNG').val; var ISTWERT_HK1 = getState('stiebel-isg.0.Info.IST_SOLLWERTE.HEIZUNG.ISTWERT_HK1').val; var VOLUMENSTROM = getState('stiebel-isg.0.Info.IST_SOLLWERTE.HEIZUNG.VOLUMENSTROM').val; //var HEIZKREISPUMPE = false; // pump active, valid temperatures only if (getState(HEIZKREISPUMPE).notExist) { setState('stiebel-isg.0.Info.IST_SOLLWERTE.HEIZUNG.HKP_VORLAUFTEMP',0,true); setState('stiebel-isg.0.Info.IST_SOLLWERTE.HEIZUNG.HKP_RÜCKLAUFTEMP',0,true); setState('stiebel-isg.0.Info.IST_SOLLWERTE.HEIZUNG.HKP_SPREIZUNG',0,true); setState('stiebel-isg.0.Info.IST_SOLLWERTE.HEIZUNG.HKP_ISTWERT_HK1',0,true); setState('stiebel-isg.0.Info.IST_SOLLWERTE.HEIZUNG.HKP_VOLUMENSTROM',0,true); console.log("Die HKP läuft aktuell nicht. "); } else { setState('stiebel-isg.0.Info.IST_SOLLWERTE.HEIZUNG.HKP_VORLAUFTEMP',VORLAUFTEMP,true); setState('stiebel-isg.0.Info.IST_SOLLWERTE.HEIZUNG.HKP_RÜCKLAUFTEMP',RÜCKLAUFTEMP,true); setState('stiebel-isg.0.Info.IST_SOLLWERTE.HEIZUNG.HKP_SPREIZUNG',SPREIZUNG,true); setState('stiebel-isg.0.Info.IST_SOLLWERTE.HEIZUNG.HKP_ISTWERT_HK1',ISTWERT_HK1,true); setState('stiebel-isg.0.Info.IST_SOLLWERTE.HEIZUNG.HKP_VOLUMENSTROM',VOLUMENSTROM,true); console.log("Die HKP ist aktiv. Die VL beträgt " + VORLAUFTEMP); }; };
-
@SaschaS
Und wenn du meinen Vorschlag mal probierst? -
@unltdnetworx Sorry, dass hatte ich nicht explizit erwähnt. Auch hierbei gibts einen Eintrag...
try { var VAL1 = getState('stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZEN').val; console.log('try'); } catch (e) { console.log('case'); }
führt zu
17:57:56.304 info javascript.0 (25315) Stop script script.js.ISG.Test 17:58:13.848 info javascript.0 (25315) Stop script script.js.ISG.Test 17:58:22.988 info javascript.0 (25315) Start javascript script.js.ISG.Test 17:58:23.004 warn javascript.0 (25315) at script.js.ISG.Test:7:15 17:58:23.005 info javascript.0 (25315) script.js.ISG.Test: try 17:58:23.005 info javascript.0 (25315) script.js.ISG.Test: registered 0 subscriptions and 0 schedules 17:58:29.994 info javascript.0 (25315) Stop script script.js.ISG.Test
javascript.0 2020-02-01 17:58:23.004 warn (25315) at script.js.ISG.Test:7:15 javascript.0 2020-02-01 17:58:23.003 warn (25315) getState "stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZEN" not found (3)
-
Kann ich dem Wert 'stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZEN' zufällig einen default-Wert zuweisen, so dass dieser immer gesetzt wird, außer dein Adapter meldet ein "true"?
Nur so eine Idee.. -
@SaschaS
Ein Standardwert wird mit dem ersten Aktualisieren überschrieben, also wird es wenig bringen. -
Gibt es eine andere Möglichkeit? Ich werde ja nicht der einzige mit solch einer Anforderung sein
-
@SaschaS
Das ist kein direktes Adapterproblem. Evtl. kannst du einen Thread im JS Bereich aufmachen, wie man mit Werten umgehen kann, deren Gültigkeit abgelaufen ist. So werden die Werte nämlich behandelt. Kommt nach der doppelten Abrufzeit vom ISG kein Wert, verfällt die Gültigkeit. -
@unltdnetworx Ok. Wenn es kein direkts Adapterproblem ist, muss ich an entsprechender anderer Stelle schauen.
Ich habe nun auch versucht z.B. den Datenpunkt 'stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZKREISPUMPE' zu klonen (also seperat zu erzeugt) und mittels
on ({id : "stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.HEIZKREISPUMPE", change: "any"}, function(obj) { console.log("Es wurde eine Änderung festgestellt -> update2"); update2(); });
Änderungen festzustellen und in der Funktion update2() false/true für mein eigens angelegte Variable zu setzen.
Allerdings wird jeder Refresh (ca. 60 Sekunden) als Änderung interpretiert. Kann das sein?21:02:10.612 info javascript.0 (1102) script.js.ISG.TestHeizenIndicator: Update3:Die HKP ist aktiv 21:02:10.613 info javascript.0 (1102) script.js.ISG.TestHeizenIndicator: !Wert: false 21:02:10.614 info javascript.0 (1102) script.js.ISG.TestHeizenIndicator: Der Status der HKP wurde gewechselt! 21:03:13.763 info javascript.0 (1102) script.js.ISG.TestHeizenIndicator: Es wurde eine Änderung festgestellt -> update 21:03:13.764 info javascript.0 (1102) script.js.ISG.TestHeizenIndicator: try 21:03:13.769 info javascript.0 (1102) script.js.ISG.TestHeizenIndicator: Es wurde eine Änderung festgestellt -> update2 21:03:13.770 info javascript.0 (1102) script.js.ISG.TestHeizenIndicator: Update2:try 21:03:13.770 info javascript.0 (1102) script.js.ISG.TestHeizenIndicator: Es wurde eine Änderung festgestellt -> update3 21:03:13.771 info javascript.0 (1102) script.js.ISG.TestHeizenIndicator: VAL1: true 21:03:13.774 warn javascript.0 (1102) at update3 (script.js.ISG.TestHeizenIndicator:29:5) 21:03:13.777 warn javascript.0 (1102) at Object.<anonymous> (script.js.ISG.TestHeizenIndicator:52:1) 21:03:13.783 info javascript.0 (1102) script.js.ISG.TestHeizenIndicator: Update3:Die HKP ist aktiv 21:03:13.784 info javascript.0 (1102) script.js.ISG.TestHeizenIndicator: !Wert: true 21:03:13.784 info javascript.0 (1102) script.js.ISG.TestHeizenIndicator: Der Status der HKP wurde gewechselt! 21:04:10.578 info javascript.0 (1102) script.js.ISG.TestHeizenIndicator: Es wurde eine Änderung festgestellt -> update
-
@unltdnetworx Und eine technische Frage zum Adapter selbst. Kann man den Adapter eigentlich auch dafür verwenden um gezielt Wert ans ISG zu senden?
z.B. Wenn ich "stiebel-isg.0.Einstellungen.HEIZEN.HEIZKURVE HK1.val35" anpassen möchte. Kann ich das dann direkt in ioBroker machen, oder würde der Wert nach dem nächsten Refresh des Adapters wieder überschrieben werden.
Habe es bislang noch nicht getestet. Danke