NEWS
[Gelöst] Diverse Werte aus einem Objekt auslesen
-
@Chaot Hey danke, cooles Script, das sieht ja auch total simpel aus!
Ich schaue mal wie gut ich mit der Blockly Lösung zurechtkomme, und probiere sonst alternativ nochmal deins.
Sehr cool. -
@smile Oh, Danke. Das hat vor einiger Zeit paul53 mal grob zusammengeschrieben und ich habe das dann für mich so erweitert. Im Grunde ganz einfach und flexibel.
-
Wow! Der Preis ist aber heftig für eine Sensorbox:
https://shop.air-q.com/air-Q-kaufenMeine Sensoren an den Wemos schauen zwar nicht so stylish aus, aber dafür sind sie vermutlich bei gerade mal 10% des Preises
-
@Chaot Ja der Preis ist ordentlich. Aber ich habe wirklich nach vielen Sensoren gesucht, die all diese Werte abdecken. Da wird die Luft echt dünn (Wortspiel). Gerade Wenn z.B. auch noch Sauerstoffgehalt mit gemessen werden soll und auch zusammen mit den anderen Werten, habe ich nichts vergleichbares gefunden. Zuzüglich eben der Möglichkeit die Daten auch per MQTT rauszugeben und nicht nur auf nem kleinen LCD Display von Zeit zu Zeit abzulesen.
-
@smile Aber wenn ich mir die Sensorik so durchschaue sind das alles ganz normale Sensoren die auch einzeln erhältlich sind und die auch bei mir zum Teil verbaut sind.
PMS5003 - ca 25 € - Feinstaub PM1, 2,5, 10
BME680 - ca. 3 € - Temp., Druck, Feuchte, VOC, CO2
Xadow (Grove) Mutichannel Gas Sensor - ca. 40 € - für verschiedene andere Gase
WemosD1 - ca. 3 € - als Basis der ganzen Geschichte mit Tasmota bespielt.Dazu kannst du dir aus der ganzen Liste noch deine Lieblingssensoren (Genauigkeit) auswählen:
https://tasmota.github.io/docs/Supported-Peripherals/ -
Eigentlich genau das, was ich gesucht habe.
Ich bekomme aus meinem Regensensor ein paar Werte. Ich will nur den Regenerkennungswert ON oder OFF haben.{"idx":10,"RSSI":10,"command":"switchlight","switchcmd":"Off"}
Script sieht so aus:
//Script zur Zerlegung der JSON Daten in einzelne Datenpunkte //Idee: Chaot // Umsetzung: paul53 var json = "mqtt.0.Wetterstation.in"/*Regenerkennung*/; var Switch = "javascript.0.Wetterstation.Regenerkennung"/*AN oder AUS*/; on(json, function(dp) { var obj = JSON.parse(dp.state.val); setState(Switch, parseFloat(obj.switchcmd)); });
Datenpunkt ist angelegt als Logikwert.
Fehlermeldung im Log und Datenpunkt ist leer.2020-11-03 13:08:30.193 - warn: javascript.0 (18363) Wrong type of javascript.0.Wetterstation.Regenerkennung: "number". Please fix, while deprecated and will not work in next versions. 2020-11-03 13:08:30.194 - warn: javascript.0 (18363) at Object. (script.js.Regenerkennung:11:4)
-
@haselchen sagte:
Datenpunkt ist angelegt als Logikwert.
Dann:
setState(Switch, obj.switchcmd == "On", true);
-
Geändert, aber trotzdem erscheint kein on oder off im Datenpunkt
//Script zur Zerlegung der JSON Daten in einzelne Datenpunkte //Idee: Chaot // Umsetzung: paul53 var json = "mqtt.0.Wetterstation.in"/*Regenerkennung*/; var Switch = "javascript.0.Wetterstation.Regenerkennung"/*AN oder AUS*/; on(json, function(dp) { var obj = JSON.parse(dp.state.val); setState(Switch, obj.switchcmd == "On", true); });
-
@haselchen sagte:
trotzdem erscheint kein on oder off im Datenpunkt
Ein Datenpunkt vom Typ "Logikwert" kennt nur false und true.
Wenn Du "On" oder "Off" haben möchtest, muss der Datenpunkt vom Typ "Zeichenkette" sein. -
Und wie bekomme ich das jetzt hin, dass dort der Wert aus dem Json erscheint (On,Off)?
-
@haselchen sagte:
Wert aus dem Json erscheint (On,Off)?
Datenpunkt-Typ ändern in "Zeichenkette" und
setState(Switch, obj.switchcmd, true);
-
Schon der Hammer, wie Du das so aus dem Ärmel schüttelst.
Noch eine Verständnisfrage, wenn ich den Datenpunkt im Blockly triggern will, ist wahrscheinlich true oder false doch am Sinnvollsten oder? -
@haselchen sagte:
wenn ich den Datenpunkt im Blockly triggern will, ist wahrscheinlich true oder false doch am Sinnvollsten oder?
Man kann innerhalb des Triggers auch einen String-Vergleich machen.
falls Wert == "On" mache ... sonst ...
Allerdings sollte Standard sein, dass Datenpunkte, die nur zwei Zustände annehmen können, vom Typ "Logikwert" sind. Es gibt ja noch die Zustandstexte (common.states).
-
Hab mir beide Varianten offen gehalten....true/false on/off.
Danke für die schnelle Hilfe. -
@paul53 sagte in [Gelöst] Diverse Werte aus einem Objekt auslesen:
Es gibt ja noch die Zustandstexte (common.states).
wozu dienen die genau, soweit ich verstanden habe wirken die sich nur auf die Ansicht im Objektbaum aus? Für eine entsprechende Ansicht/Ausgabe im Skript oder VIS müsste man die extra abfragen(mit getObject())?
-
@fastfoot sagte:
Für eine entsprechende Ansicht/Ausgabe im Skript oder VIS müsste man die extra abfragen(mit getObject())?
Ja.
-
@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