NEWS
Konzept: JSON State Mapper für ioBroker Javascript Engine
-
Hallo zusammen!
Ich bin ein ioBroker-Neuling und arbeite viel mit Geräten, die JSON-Dokumente veröffentlichen. Also habe ich nach Möglichkeiten gesucht, Werte aus JSON-Dokumenten automatisch als separate Datenpunkte zu speichern. Das Ganze so konfigurativ wie möglich, also ohne für jeden neuen Sensor etc. Skripte anpassen zu müssen. Da ich mit mäßig umfangreicher Recherche keine Lösung finden konnte, die meinen Vorlieben und Arbeitsweisen am besten entsprach, und ich parallel dazu ohnehin in die Tiefen und Untiefen von ioBroker eintauchen wollte, habe ich eine eigene Softwarekomponente (ein TypeScript-Modul) entworfen. Im Sinne eines Proof of Concept, um zu sehen, ob sich mein Wunsch realisieren lässt. Wahrscheinlich gibt es da draußen auch bessere Lösungen. Vielleicht ist mein "Flow" auch nicht der der Allgemeinheit, weshalb meine Lösung für andere möglicherweise nicht so gut passt. Aber: Da das Modul schon etwas an Größe gewonnen hat und bei mir schon eine Weile erfolgreich im Einsatz ist, dachte ich, ich könnte den aktuellen Stand der Arbeit teilen. Als Inspiration, wie man es machen kann, nicht machen sollte oder was auch immer Das Modul liegt hier:
https://github.com/stevenengland/iobJs-JsonStateMapper
Aktuell ist alles auf Englisch dokumentiert. Mir ist erst auf dem Weg zur Lösung aufgefallen, wie viel umfangreicher die Deutsche Community für ioBroker ist Mal ganz was neues für mich... Wenn sich irgendwer hierfür interessiert und es auf Deutsch braucht, schaue ich einmal, dass ich das nachziehe.
Zur Lösung: Grob gesagt konfiguriert man, welche Änderungen welcher Datenpunkte, bestehend aus JSON-Dokumenten (Quelldatenpunkte), man abonnieren möchte und wohin (Zieldatenpunkte) Werte aus der Quelle bei jeder Änderung der Quelle geschrieben werden sollen. Bildlich dargestellt:
Es handelt sich hierbei um eine Tasmota Steckdose, von der ich die Leistung (Power), welche im Datenpunkt SENSOR steckt in einen eigenen Datenpunkt CURRENT_POWER übertragen möchte.Wie genau es funktioniert und was benötigt wird, ist in der README im Repo dokumentiert. Da ist viel Hinführung drin, am besten einmal zum Beispiel ganz unten springen. Viel mehr mag ich hier gar nicht schreiben, da ich aus Aktualitätsgründen die Dateils lieber im Repository pflege.
VG
-
Will das jetzt nicht kritisieren, hab was ähnliches für shelly plus geräte am laufen, aber es gibt den Sonoff Adapter der im Grunde das macht, was du erzielen möchtest.
Wenn du jedoch mit "richtigem" Mqtt arbeiten möchtest, ist der Adapter natürlich nicht zielführend. Das ist auch der Grund für mein shelly skript.
-
Hi, @ticaki danke für deine Ausführung. Das würde ich auch nicht als Kritik auffassen, sondern als Hinweise. Im Prinzip genau wie du sagst + ein anderer Aspekte:
- Ich nutze einen eigenen MQTT Broker
- Ich verarbeite auch non Sonoff kompatible Geräte
Ansonsten ist natürlich der Sonoff Adapter sicher eine feine Sache, keine Frage.
-
@stev-io
Soweit ich das sehe kannst du damit keine Schaltbefehle senden oder? -
@ticaki Das stimmt. Die einzige Aufgabe ist das "Mappen" von JSON Quelldatenpunkten auf eigene Zieldatenpunkte.
-
Ich finde deinen Ansatz richtig gut.
Der Flow Device -> MQTT (JSON) -> ioBroker ist recht häufig.
Egal ob nun Tasmota / Sonoff, WLED oder ähnliches.
Klar gibt es für Etliches entsprechende Adapter. Aber nicht alle sind gut gepflegt.
Da ist eine Art Universal-Empfänger schon nicht verkehrt.Vielen Dank für deine Mühe!
-
@blockmove Vielen Dank Deine Zusammenfassung ist echt um Längen besser als all meine vielen erklärenden Worte Ich werde das Wording glaube ich so oder so ähnlich übernehmen
-
@blockmove sagte in Konzept: JSON State Mapper für ioBroker Javascript Engine:
Aber nicht alle sind gut gepflegt.
Konkret? Würde gern aushelfen und die Adapter besser machen
-
@haus-automatisierung said in Konzept: JSON State Mapper für ioBroker Javascript Engine:
@blockmove sagte in Konzept: JSON State Mapper für ioBroker Javascript Engine:
Aber nicht alle sind gut gepflegt.
Konkret? Würde gern aushelfen und die Adapter besser machen
Ich kann dir aktuell keinen Adapter nennen.
Als letztes hat mich aber der WLED-Adapter "geärgert", da da die Anpassung an die neue WLED-Version sehr lange gedauert hat und in der Zwischenzeit das Log mit Warnmeldungen geflutet wurde. Ist aber mittlerweile wohl gefixt. Mir ist klar, dass fast alles rund um ioBroker Community-Projekte sind und deshalb ist das auch absolut keine Kritik! Also bitte keine Diskussion um Adapterentwicklung.
Ich persönlich versuche nun, wenn MQTT verwendet wird, auf Adapter zu verzichten und direkt mit MQTT zu arbeiten. Daher finde ich diesen universellen Ansatz @stev-io sehr interessant.
Aber das passt eben zu meiner Art mit ioBroker Dinge umzusetzen, Andere können das anders sehen.Für mich persönlich ist ioBroker eine Art universelles IoT-Tool, quasi eine Steigerung der Möglichkeiten von Node RED. Mag vielleicht daran liegen, dass ich aus der industriellen i4.0-Ecke komme und nicht unbedingt der "normale" Smarthome-Bastler bin.