NEWS
[Gelöst] Diverse Werte aus einem Objekt auslesen
-
@Chaot Klar, man kann fast immer mit diversen einzelnen China Sensoren alles günstiger hinbekommen. Wobei ich Sauerstoff Wert jetzt noch bei keinem von den von dir genannten gesehen habe.
Für mich ist es aber mittlerweile auch ein gewisser Luxus wenn ich weniger Geräte verwalten / einbinden / pflegen muss. Und wenn ich hier ein Gerät habe, mit einer App dazu, und einer MQTT Anbindung, eine Firmware die geupdatet wird etc.. dann ist das für mich sehr angenehm.
Aber natürlich wie immer: Jeder wie er lieber mag / das Budget ermöglicht. -
@smile Da hast du natürlich Recht wenn du die Sensorik als AllInOne Gerät haben möchtest ist das eine wohl teure aber elegante Lösung.
Ich kann zwar nicht nachvollziehen was der Sauerstoffwert bringt, aber das ist an der Stelle auch nicht so wichtig.
Es scheint auch tatsächlich keinen wirklichen Sauerstoffsensor zu geben.In meinem Fall ist es halt so, das ich die Sensoren nur dort einsetze wo sie auch gebraucht werden. Also der Feinstaubsensor oberhalb der Haustür zur Straße hin, der CO Sensor an der Heizungsanlage und diverse Luftqualitätssensoren BME680 bzw. CCS811 in den Wohnräumen.
Das wären dann auf die Geräte hochgerechnet so um die knapp 3000 € und das ist mir auch mit Mengenrabatt zu heftig.
Zudem ist dann auch der DIY Spaß weg der zum ioBroker nach meiner Meinung zwingend dazugehört -
@Chaot Alles gut, kann ich auch total verstehen die Herangehensweise.
Für mich ist das Gesamtpaket hier angenehmer alles in einem zu haben, was nicht heißt dass ich den Preis nicht auch gehoben finde.
Der Hersteller hat mir gesagt dass die Summe an Sensoren wirklich nicht günstig in der Produktion sind und sie sollen auch sehr genau sein - hier ein Vergleich zu starten wird aber wohl sicherlich schwierigNundenn, trotzdem nun ein Gerät mehr welches mit iobroker wunderbar harmoniert - darüber freue ich mich
-
@Chaot Hallo kanst du mir ziegen wie die Datenpunkte konfiguriert werden müßen.
Ich habe auch die EMS-ESP von BBQ Kees und Lese über Domoticz aus.
Würde aber gern alles im Iobroker haben.
Über MQ TT habe ich die Daten im Iobroker.
MfG -
@kratzsch Das Problem ist, dass die Daten als json Tabelle über den MQTT Adapter ankommen.
Ich zerlege die dann per Script in einzelne Datenpunkte die ich benötige und stelle die dann in VIS dar bzw schreibe die dann auch in die influx DB.Heizung
Warmwasser:
Die Datenpunkte musst du dir manuell anlegen. Entsprechend kannst du sie dann dorthin legen wo sie dir am liebsten sind und du sie schnell erreichst.
Normalerweise würde ich sie in den Ordner 0_userdata.0 legen, der ja dafür auch vorgesehen ist. Aber als die Scripte entstanden sind gab es diesen Ordner noch nicht und ich habe noch keine Zeit/Lust gefunden meine Scripte und die VIS entsprechend umzuschreiben. -
@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.