NEWS
[Gelöst] Diverse Werte aus einem Objekt auslesen
-
@Chaot Hallo und vielen dank für die schnelle Antwort.
Wo ich die datenpunkte anlege habe ich schon heraus gefunden. Aber wie mussen die Datenpunkte Konfiguriert werden. Das bekomme ich noch nicht hin.Vielicht kannst du image
vom Datenpunkten senden .
Vielen Dank im voraus. -
@kratzsch Den Datenpunkt legst du entsprechend der Datenart an.
Also der Datenpunkt "javascript.0.Heizung.Systemdruck" beispielsweise ist eine Zahl mit bar als Einheit.
Type - number
Unit - bar
min -
max - 3 -
@Chaot Nochmal Danke Datenpungt habe ich angelegt dein Script übernommen aber leider werden keine werde in denn Datenpunkt geschrieben.
Ich habe woll noch einen Fehler denn ich noch nicht gefunden habe.
Vielicht kannst du hier noch einen Fehler erkennen. -
@kratzsch erste Zeile:
mAtt.0.... anstelle von mQtt.0 -
@Chaot Danke aber ich muss leider wieder nach fehlern suchen klapt noch nicht
-
@kratzsch sagte:
Fehler erkennen.
Laut Bild:
const OutTemp = '0_userdata.0.javascript.0.Heizung.OutTemp';
-
@kratzsch Ist der Wert den du abfragen willst überhaupt in der json drin? Die Heizungen liefern alle ganz unterschiedliche Werte, je nach Modell.
Versuche doch mal Druck oder Vorlauftemperatur abzufragen.
Stimmt der Datenpunkt aus der json auch überein oder hast du von mir die Namen übernommen? Auch hier kann es Unterschiede geben.
Du könntest ja man die json hier posten damit man eventuell das Script entsprechend entwerfen kann.
Bitte keinen Screenshot sondern in Code Tags packen.@paul53 Das ist mir ja gar nicht aufgefallen. Logisch das das nicht gehen kann.
-
@Chaot said in [Gelöst] Diverse Werte aus einem Objekt auslesen:
Code Tags
Die Werte die ich abfragen möchte stehen im Mqtt Adapter. Wie das mit den Code Tags geht weis ich leider nicht.
Ich bin dabei mir vieles anzueignen da ich jetzt in Rente bin und eine beschäftigung brauche.
Allso hier noch mal ein Screenshot leider.Aber vielicht möchte ich etwas machen das nicht möglich ist.
-
@kratzsch sagte:
Wie das mit den Code Tags geht weis ich leider nicht.
Oben </> anklicken und dann den Text (Code, Logs) hinein kopieren.
-
@paul53 Also ich bin schon sehr überrascht über eure hielfbereitschaft das ist einfach Klasse.
Und hier noch die Daten die in Mqtt geschrieben werden als beispiel die Boiler Daten.```
{"heatingActive":"off","tapwaterActive":"off","wWComfort":"Hot","wWSelTemp":60,"wWSetTemp":60,"wWDisinfectionTemp":70,"selFlowTemp":31,"selBurnPow":100,"curBurnPow":0,"pumpMod":100,"wWType":"buffer","wWChargeType":"charge pump","wWCircPump":"on","wWCircPumpMode":"continuous","wWCirc":"on","outdoorTemp":9.1,"wWCurTemp":58.2,"wWCurFlow":0,"curFlowTemp":31,"boilTemp":31,"wwStorageTemp1":58.2,"wWActivated":"on","wWOneTime":"off","wWDisinfecting":"off","wWCharging":"off","wWRecharging":"off","wWTempOK":"on","wWActive":"off","burnGas":"off","flameCurr":0,"heatPump":"on","fanWork":"off","ignWork":"off","wWHeat":"off","heatingActivated":"on","heatingTemp":48,"pumpModMax":100,"pumpModMin":100,"pumpDelay":7,"burnMinPeriod":10,"burnMinPower":0,"burnMaxPower":100,"boilHystOn":-6,"boilHystOff":6,"wWStarts":13087,"wWWorkM":65127,"UBAuptime":6548566,"burnStarts":112008,"burnWorkMin":389687,"heatWorkMin":324763,"serviceCode":"0Y","serviceCodeNumber":0}Hier mein versuchs Script
var json = "mqtt.0.ems-esp.boiler_data"/BoilerDaten/;
var OutTemp = "javascript.0.Heizung.OutTemp"/Aussentemperatur/;
var BoilTemp = "javascript.0.Heizung.BoilTemp"/Boilertemperatur/
var Vorl = "javacript.0.Heizung.Vorlauf"/Vorlauf/;
var Activehet = "javacript.0.Heizung.activehet"/Activ/;on(json, function(dp) {
var obj = JSON.parse(dp.state.val);
setState(OutTemp, obj.outdoorTemp);});
-
@kratzsch
Du hast in der Zeile 2,3 und 4 die Position der Datenpunkte angegeben:'javascript.0.Heizung.OutTemp'
Laut deinem Bild darüber mit den von dir angelegten Datenpunkten sind die aber bei
'0_userdata.0.javascript.0.Heizung.OutTemp'
Also entweder die Datenpunkte richtig anlegen und dann das Script an die richtige Stelle verweisen, oder das Script jetzt an die aktuellen Datenpunkte verweisen.
Aber ich würde das ehrlich gesagt so machen das es dauerhaft so bleiben kann. Also den Ordner javascript.0 den du unter 0_userdata.0 angelegt hast wieder löschen und dort mit der richtigen oder sinnvollen Ordner und Datenstruktur anfangen.- Unter 0_userdate.0 einen neuen Ordner anlegen - Heizung wäre eine gute Wahl.
- Unter dem neuen Ordner Heizung die benötigten Datenpunkte erstellen.
- im Script die Zeilen 2 bis 4 auf diese Datenpunkte verweisen
'0_userdata.0.Heizung.******'
Dann sollte das klappen.
-
@Chaot So ich habe es nochmal versucht leider ohner erfolg.Hier noch mal mein Script und der Datenpunkt.
var json = "mqtt.0.ems-esp.boiler_data"/*BoilerDaten*/; var outdoorTemp = "0_userdata.0.Heizung.outdoorTemp"/*outdoorTemp*/; on(json, function(dp) { var obj = JSON.parse(dp.state.val); setState(outdoorTemp, obj.outdoorTemp); });``` Objekt bearbeiten 0_userdata.0.Heizung.outdoorTemp Name Typ Allgemein Nativ Zugriffskontrolle Weitere (nur lesend) Raw (nur Experten) Rolle Art Beschreibung Maßeinheit minimaler Wert
-
@kratzsch sagte:
on(json, function(dp) { var obj = JSON.parse(dp.state.val); setState(outdoorTemp, obj.outdoorTemp); });
Es wird nur getriggert, wenn sich der Inhalt des JSON-Datenpunktes ändert. Vorher passiert nichts.
-
@paul53 Ok Danke schön aber ich denke das ich auf denn richtigen weg bin dank deiner Grossen Hielfe,
-
@kratzsch Kleiner Tip: Den MQTT Adapter kurz anhalten und neu starten. Dann sollte der Datenpunkt neu geschrieben werden.
-
@Chaot Leider immer noch nicht geklappt.Muss für die Zeile 1 auch ein datenpunkt erstellt werden.
-
-
@paul53 sagte in [Gelöst] Diverse Werte aus einem Objekt auslesen:
var json = "mqtt.0.boiler_data";
Verstehe ich jetzt auch nicht warum das ohne Ordnerstruktur da liegt, aber du hast Recht!
-
@Chaot Hallo
Einmal hat es geklappt und der Wert wurde geladen aber leider nur einmal.Hier der Log Eintrag.``
code_2020-11-23 20:05:23.744 - [32minfo[39m: history.0 (799) enabled logging of 0_userdata.0.Heizung.outdoorTemp, Alias=false
text -
@kratzsch Möchte mich nochmal für die Hilfe bedanken.
Hatte noch einen Schrieb Fehler jetzt geht es.```