NEWS
iobroker, MQTT und Shelly - Was geht wie?
-
@hal wenn es zu sehr nervt, dann nimm deine Logikmaschine und schreib Dir selbst einen Datenpunkt unter 0_userdata.0
-
@hal Nun du kannst Dir entweder Aliase erstellen, für die Datenpunkte, die Dich interessieren:
https://forum.iobroker.net/post/980575Oder Du nutzt Deine Logikmaschine. Wenn Du NodeRed nutzt, habe ich auch einen Flow der Dir alles in einzelne Datenpunkte zerlegt, aber das braucht man in der Regel nicht.
Also nachdem Dein Objekt ein Doppelpunkt enthält und auch deine Daten nicht sauber sind, habe ich das hier mal mit einem Alias für Dich nachgebaut:
Also wenn Dein Datenpunkt diesen JSON enthält:
{ "method": "NotifyStatus", "params": { "em:0": { "id": 0, "a_act_power": -932.3, "a_aprt_power": 2434.9, "a_current": 10.391, "a_freq": 50, "a_pf": 0.38, "a_voltage": 234.5, "b_act_power": 2215.8, "b_aprt_power": 2462.7, "b_current": 10.524, "b_freq": 50, "b_pf": 0.9, "b_voltage": 234.1, "c_act_power": 1582.4, "c_aprt_power": 2779.7, "c_current": 11.904, "c_freq": 50, "c_pf": 0.57, "c_voltage": 233.5, "n_current": null, "total_act_power": 2865.999, "total_aprt_power": 7677.312, "total_current": 32.819 } } }
Dann ist da ein Doppelpunkt bei dem em:0 drin - und den musst Du dann in Deiner Konverierungsfunktion, wie folgt schreiben:
JSON.parse(val).params['em:0'].total_act_power

Dann erhälst du im Alias auch Deinen Wert einzeln.
@mickym
Hallo mickym, leider wird mein log jetzt massive von den Alias Fehlern vollgeschrieben und ich muß einen anderen Weg finden. Mit Blockly habe ich es versucht, bin aber auch nicht erfolgreich gewesen:

Du hast von einem NoteRed Flow geschrieben, der die einzelnen DP erzeugt. Kannst Du mir den zur Verfügung stellen ?
-
@mickym
Hallo mickym, leider wird mein log jetzt massive von den Alias Fehlern vollgeschrieben und ich muß einen anderen Weg finden. Mit Blockly habe ich es versucht, bin aber auch nicht erfolgreich gewesen:

Du hast von einem NoteRed Flow geschrieben, der die einzelnen DP erzeugt. Kannst Du mir den zur Verfügung stellen ?
@hal sagte in iobroker, MQTT und Shelly - Was geht wie?:
Du hast von einem NoteRed Flow geschrieben, der die einzelnen DP erzeugt. Kannst Du mir den zur Verfügung stellen ?
Klar - Du musst den nur importieren:
https://forum.iobroker.net/topic/43856/json-oder-javascript-objekt-in-iobroker-datenpunkte-zerlegen
Ich habs gerade auch nochmal getestet, funktioniert ohne Fehler:
Kannst auch direkt importieren:

Du musst nur im Node-Red Adapter das Erstellen von Fremdobjekten zulassen:
Diese Node erzeugt Dir dann folgenden Ast aus einzelnen Datenpunkten:

-
@mickym
Hallo mickym, leider wird mein log jetzt massive von den Alias Fehlern vollgeschrieben und ich muß einen anderen Weg finden. Mit Blockly habe ich es versucht, bin aber auch nicht erfolgreich gewesen:

Du hast von einem NoteRed Flow geschrieben, der die einzelnen DP erzeugt. Kannst Du mir den zur Verfügung stellen ?
@hal Ich habs aber gerade auch nochmal im Blockly für Dich probiert und so funktioniert es meines Erachtens:
Du musst Dich halt den Pfad lang schlängeln:
Hier der Import:
Aber wie gesagt, wenn Du meinen NodeRed Flow nehmen und wenn Du den ganzen Shelly triggerst und keepTopic gleich true verwendest, wird Dir auch der ganze Baum zerlegt.
-
@hal Ich habs aber gerade auch nochmal im Blockly für Dich probiert und so funktioniert es meines Erachtens:
Du musst Dich halt den Pfad lang schlängeln:
Hier der Import:
Aber wie gesagt, wenn Du meinen NodeRed Flow nehmen und wenn Du den ganzen Shelly triggerst und keepTopic gleich true verwendest, wird Dir auch der ganze Baum zerlegt.
-
9@mickym Jetzt habe ich die Qual der Wahl ;-)
Sowohl RedNote als auch Blockly funktionert .
DANKE .@hal Wenn Du mit dem Flow den ganzen Baum exportierst, dann sieht das so aus:

Da kannst Du den 1. Teil dann wieder mit einer Text Node kürzen, dass dan mqtt.1.shellies zum Beispiel nicht mitkommt.
Also das gleiche Beispiel nur der Anfang des Topics weggekürzt:

In diesem Fall, lässt Du bei keepTopic einfach den Teil des topic durch einen Leerstring ersetzen:

Wichtig ist halt dass Du über Wildcard Deinen ganzen Ast bzw. alle Datenpunkte Deines Shellies triggern lässt.
Aber wenn beides funktioniert, dann hast Du ja nun wieder alle Möglichkeiten. -
9@mickym Jetzt habe ich die Qual der Wahl ;-)
Sowohl RedNote als auch Blockly funktionert .
DANKE .@hal Falls Du übrigens auch in Node-Red nur EINEN Wert und nicht das ganze JSON Objekt extrahieren willst, geht das genauso einfach wie in Blockly. Du musst das ganze mit einer JSON NOde nur in ein Objekt verwandeln:

Hier auch zum Ausprobieren:
-
@hal Falls Du übrigens auch in Node-Red nur EINEN Wert und nicht das ganze JSON Objekt extrahieren willst, geht das genauso einfach wie in Blockly. Du musst das ganze mit einer JSON NOde nur in ein Objekt verwandeln:

Hier auch zum Ausprobieren:
-
@hal sagte in iobroker, MQTT und Shelly - Was geht wie?:
@mickym Du bist genial !
Danke für die Blumen! - Ich würde an Deiner Stelle halt vielleicht ein Issue erstellen, wegen dem Alias und diesen Fehlermeldungen.
Übrigens wenn Dein Objekt getriggert hat, kannst Du natürlich sowohl im NodeRed als auch im Blockly auch Deine Werte, die für Dich von Interessen sind auf einmal extrahieren (wenn Du nicht mit dem Flow alle Werte brauchst). In NodeRed machst Du dann einfach für jeden Wert, den Du extrahieren willst, hinter die JSON Node eine ChangeNode bzw. halt im Blockly jeweils ein Attribut Puzzlestück.
-
@hal sagte in iobroker, MQTT und Shelly - Was geht wie?:
@mickym Du bist genial !
Danke für die Blumen! - Ich würde an Deiner Stelle halt vielleicht ein Issue erstellen, wegen dem Alias und diesen Fehlermeldungen.
Übrigens wenn Dein Objekt getriggert hat, kannst Du natürlich sowohl im NodeRed als auch im Blockly auch Deine Werte, die für Dich von Interessen sind auf einmal extrahieren (wenn Du nicht mit dem Flow alle Werte brauchst). In NodeRed machst Du dann einfach für jeden Wert, den Du extrahieren willst, hinter die JSON Node eine ChangeNode bzw. halt im Blockly jeweils ein Attribut Puzzlestück.
-
@mickym btw, ich habe noch ein (für mich ) etwas komplexes Blockly im Kopf, kann ich bei Problemen ggf. auch auf Deine Expertise hoffen ?