NEWS
Shelly addon über Node Red auf einer NAS mit iobroker
-
@mickym Ja korrekt, skript läuft einwandfrei durch, danke dir
-
@ronnyempire na dann viel Spaß. Ich began schon an mir zu zweifeln.
-
@mickym
Hallo mickym,herzlichen Dank für die tolle Erklärung und das Beispiel. Mit Deiner Hilfe habe ich es jetzt nach unendlich vielen Versuchen geschafft, die Werte der neuen Shelly-Plus-Generation aus dem JSON-String zu extrahieren und kann damit die Datenpunkte für die weitere Auswertung/Steuerung nutzen.
Wenn man's weiß, ist das ja ganz einfach
VG Michael -
@mickym Ich habe ein ähnliches Problem und bekomme die Konvertierungsfunktion nicht hin. Iobroker hängt teilweise minutenlang.
Dannpunkt vorhanden:
{"sn":{"Time":"2023-12-03T10:49:52","MHZ19B":{"Model":"B","CarbonDioxide":741,"Temperature":24.0},"TempUnit":"C"},"ver":1}
Meine Funktion:
Es wird kein Datenpunkt generiert. -
@laser Na Datenpunkt generiert ist etwas missverständlich - es liegt auch daran, dass Du den Pfad nicht richtig definierst.
die Konvertierung muss lauten:
JSON.parse(val).sn.MHZ19B.CarbonDioxide
Wenn Du so was nicht auf den ersten Block siehst empfehle ich Dir den JSON Formatter:
https://jsonformatter.org/Wenn Du Deinen JSON links einträgst und dann auf Format Beauty klickst, bekommst die Hierarchie schön zu sehen.
Wenn Du auf den Filter gehst, kannst Du direkt überprüfen, ob Du den Pfad richtig eingegeben hast:
-
@mickym Danke, das funktioniert. Mit dem richtigen Pfad. Es wird kein neuer Datenpunkt generiert, sondern im Vorhandenen wird der selektierte Wert eingetragen.
-
@mickym muß ich noch etwas tun, damit der Wert im Alias-Datenpunkt automatisch aktualisiert wird?
Wenn ich den MQTT Adapter neu starte , wird aktualisiert. -
@laser Nein - der Datenpunkt wird immer mit dem Originaldatenpunkt aktualisiert. Wenn dieser nicht aktualisiert wird, dann wird es der Alias auch nicht. Mit dem Adapterneustart - wird halt alles neu initialisiert. Aber wenn was nicht aktualisiert wird, liegt es an der Quelle und nicht am Alias.
-
@mickym Das liegt an der Tasmota - MQTT- Übertragung. Der Zeit- Stempel wird auch nicht aktualisiert. War halt ein Versuch, über Tasmota etwas zu messen. Muß im Tasmota etwas suchen, evtl. ist dort die Update zeit zu hoch eingestellt. Steht aber auf 5 Sec.
-
@laser Na ich weiß ja nicht welchen Datenpunkt Du da nimmst. Der Status wird in der Regel im stat Ast übermittelt.
Ansonsten kannst Du noch schauen ob im tele Ast der Status aktualisiert wird. Dort gibt es auch eine stat und sensor Datenpunkt. Ggf. ändert sich der Wert aber auch nicht, wenn nicht eine gewisse Schwelle überschritten wird - da das sonst dauernd zappelt.Du könntest den Sensor ja mal mit mehr CO2 zu Wertänderungen veranlassen.
Die Datenpunkte unter stat sollten eigentlich die Einzelwerte übermittel (hellblau markiert) - die unter tele (gelb) werden glaube ich ca. alle 30 s im Standard aktualisiert.
ich hab nur was mit discovery gesehen - aber ich denke das ist nur EINMALIG - um ggf. Geräte zu entdecken. Aber Du musst halt Deine mqtt Struktur bzgl. tasmota richtig untersuchen.
-
@mickym sieht bei mir etwas anders aus.
Das Gerät selber mißt zyklisch. Nur wird über MQTT nichts aktualisiert. -
@laser Ja das es generell anders aussieht - liegt daran, dass Du Deine topics von tasmota im mqtt anders aufbauen lässt. Ich mag die Standardeinstellung nicht. Aber schau mal Du solltest auch noch einen tele Ast haben? Ich mag das lieber sauber strukturiert und mag die Äste lieber unter den Geräten als die Geräte unter den tele, stat etc. Ast suchen zu müssen.
Schau wie gesagt unter Deinem tele Ast - wie gesagt - ich mag diese Standardeinstellung auch nicht - kannst ja ändern wenn Du Dein mqtt anders aufbauen lässt, aber den tele Ast hast Du in deinem Screenshot nicht aufgeklappt und eingeblendet
-
@mickym Und dort wird auch aktualisiert. Werde den Alias umstellen, auf "Tele".
-
@laser sagte in Shelly addon über Node Red auf einer NAS mit iobroker:
@mickym Und dort wird auch aktualisiert. Werde den Alias umstellen, auf "Tele".
Da ist es auch richtig.
-
@mickym So, jetzt wird aktualisiert. Mit dem "MQTT anders aufbauen", muß ich mir ansehen, wie das geht...
-
@laser Na wie gesagt - musst Du wissen - du kannst eine Struktur aufbauen - in dem Du die topics richtig benennst.
Wenn Du wie gesagt die tele,stat und cmnd Äste anders haben willst, dann ändere einfach die Reihenfolge der Variablen. Das geht allerdings nur, wenn Du wirklich mqtt benutzt und nicht sonoff-Adapter oder sowas.
Ich habe zum Beispiel alle tamota Geräte unter tasmota dann Gerät und dann die prefixe für cmnd, stat und tele unter den Geräten.
Du musst nur bei den einzelnen Geräten in der mqtt-Konfig ändern:
tasmota/%topic%/%prefix%/
Bei dem Topic könntest Du Dir noch eine Struktur überlegen
Also anstelle nur das Gerät im topic zu benennen - kannst Du Dir auch eine Hierarchie aufbauen - also zum Beispiel
schalter/kueche/steckdosen
Also alles Geschmackssache.
-
@mickym Meistens funktioniert das mit den "Konvertierungsfunktionen" auch. Aber relativ häufig stürzt IOBroker dabei ab. (Beim "Speichern").
Habe einen Tasmota ESP8266 am E-Zaehler installiert. Über einen Alias wollte ich nun die beiden Werte, die er ausgibt, auf 2 Datenpunkte verteilen.
Und diese Datenpunkte mit der Funktion: JSON.parse(val).SN175.E_in
und den anderen Datenpunkt: JSON.parse(val).Sn15.E_out
konvertieren. Hat 1x geklappt. Mit E_out. Der richtige Wert wurde angezeigt. Wenn ich die 2. Funktion in den 2. Datenpunkt eintrage, kommt es zum Absturz. Es hilft nur "iobroker restart" und schnell die Funktion austragen. -
@laser nun eigentlich sollte es meines Erachtens gehen. Hier hast du nur einmal sn175 und einmal sn15 geschrieben. Wenn alle Stricke reißen, dann dröselst Du alles mit Deiner Logikmaschine auf. In node-red habe ich auch einen fertigen Flow, der Dir alles in einzelne Datenpunkte schreibt.
Ich probiere das nachher trotzdem mal aus, ob man nicht 2 alias mit einer Quelle nutzen kann.
-
@mickym Das nach dem (val).xxx war ein Schreibfehler. Aus dem schlechten Gedächtnis- war ja abgestürzt. Mir ging es mehr darum, ob man überhaupt 2x den gleichen Datenpunkt nehmen kann.
-
@laser Ja eigentlich müsste es gehen - ich probier das bei mir gleich aus auch mit einem tele Wert.