NEWS
alles neu mqtt
-
Hallo, habe meinen Iobroker auf proxmox umgebaut.
dabei habe ich auch einen mqtt broker extra, eine node-red extra , zigbee2mqtt extra etc.
Nachdem ich meine VIS1 neu in Vis 2 machen muss habe ich mir gedacht alles auf einen Nenner mqtt zu bringen.
Das JSON format ist fuer mich noch eine Huerde genauso wie Objekt orientiert zu programmieren.jetzt habe ich mir mit Hilfe von AI ein script gebastelt , die Datenpunkte manuell angelegt und ueberprueft ob die auszulesenden auch in mqtt vorhanden sind.
eines der scripte seht ihr hier, es laueft und soll nur getriggert werden wenn sich die daten im mqtt aendern.
dann sollen die daten in den objekten gefuellt werden.on({id: 'mqtt.0.zigbee2mqtt.mobile2', change: 'ne'}, function (obj) { if (obj.state.val) { try { var data = JSON.parse(obj.state.val); console.log('Parsed data:', data); // Log the parsed data for debugging // Check and set the values in the mobile2 data points if (data.battery !== undefined) { setState('0_userdata.0.mobile2.battery', data.battery); console.log('Updated battery level:', data.battery); } else { console.warn('Battery data is missing'); } if (data.humidity !== undefined) { setState('0_userdata.0.mobile2.humidity', data.humidity); console.log('Updated humidity:', data.humidity); } else { console.warn('Humidity data is missing'); } if (data.linkquality !== undefined) { setState('0_userdata.0.mobile2.linkquality', data.linkquality); console.log('Updated link quality:', data.linkquality); } else { console.warn('Link quality data is missing'); } if (data.power_outage_count !== undefined) { setState('0_userdata.0.mobile2.power_outage_count', data.power_outage_count); console.log('Updated power outage count:', data.power_outage_count); } else { console.warn('Power outage count data is missing'); } if (data.pressure !== undefined) { setState('0_userdata.0.mobile2.pressure', data.pressure); console.log('Updated pressure:', data.pressure); } else { console.warn('Pressure data is missing'); } if (data.temperature !== undefined) { setState('0_userdata.0.mobile2.temperature', data.temperature); console.log('Updated temperature:', data.temperature); } else { console.warn('Temperature data is missing'); } if (data.voltage !== undefined) { setState('0_userdata.0.mobile2.voltage', data.voltage); console.log('Updated voltage:', data.voltage); } else { console.warn('Voltage data is missing'); } } catch (e) { console.error('Error parsing message:', e); } } });
koennte Ihr mir bitte sagen ob das Script wirklich wartet bis sich etwas aendert..die debugging Eintraege kommen dann wieder weg , so wie die log Eintraege
Moeglichkeit muesste auch sein das ganze im Alias Adapter mit parsen der Daten zu machen...aber da kenn ich mich genauswenig aus.
-
Warum willst du die Daten aus dem MQTT -Datenpunkt noch einmal nach 0_userdata.0 schreiben.
wenn du eine andere Struktur möchtest würde ich die Topics anpassen oder mir im alias Baum diedaten anlegen und ggf. auch konvertieren.das triggern auf einen Ordner wird nicht funktionieren, da er sich nicht ändert.
-
@tt-tom
naja wenn ich die Datenpunkte habe kann ich hinten einfach in die Datenbank eintragen
hier geht das weil der Datenpunkt in MQTT ein einzelner ist.
welches bei json daten etwas komplizierter ist dann auszulesen.Auch die Verwendung in echarts ist dann doch einfacher?? oder gibt es die in vis2.0 nicht mehr?
vielleicht liege ich da falsch..... ich ueberlege das ganze auch nur in node-red zu machen.
eigentlich will ich nur ein paar charts haben mit Temperaturverlauf ,Regenmenge Humidity.Das koennte ich auch in Grafana machen und muss ich mir erst ansehen.
-
okay, dann habe ich das falsch verstanden. Ich dachte dein Bild von den Objekten wäre vom MQTT.
Jetzt gibt es trotzdem noch die Möglichkeit, es über einem Alias auszulesen. Hier mal ein Beispiel, ich lese das JSON von meinem Smartmeter aus.müsste so aus sehen bei dir
JSON.parse(val).battery
-
Ich hab doch ein fix und fertigen Flow - der alles zerlegt. Keine Ahnung warum man das mit JS macht, wenn man eh NodeRed nutzt.
-
@mickym said in alles neu mqtt:
Ich hab doch ein fix und fertigen Flow - der alles zerlegt. Keine Ahnung warum man das mit JS macht, wenn man eh NodeRed nutzt.
ja ich benutzte eine Instanz die nicht im iobroker ist, diese im IObroker habe ich stillgelegt.
ich werde Node Red Iobroker wieder aktivieren , wo finde ich deine flows?
Ich war irgendwie, seit mein Zigbee abgestuerzt ist und sich einiges in Iobroker geaendert hat auf dem Weg es zu vereinfachen und alles selbst zu machen.(nur in Node Red)
Das betrifft auch eine Visualisierung , Vis 1 war noch einfach fuer mich Vis 2.0.ein anderes Kaliber.Irgendwie ist mir das zu kompliziert geworden mit den Aenderungen und wenn man fragt fuehlt es sich fuer mich an man quaelt und die Stimmung ist nicht so besonders in den Foren, kommt mir so vor.
Es betrifft auch andere Bereiche, influxdb war super nur jetzt mit appkeys etc. ...ich werde jetzt mal sqlite probieren.
einen schoenen Tag
-
@fred-freund Du kannst den Flow auch im Standalone modus verwenden - nur musst Du halt das root topic - dass nun auf 0_userdata.0 eingestellt ist - auf Deine Bedürfnisse ändern. Entweder in dem Du im Nachhinein das Topic änderst oder direkt im Subflow.
https://forum.iobroker.net/topic/43856/json-oder-javascript-objekt-in-iobroker-datenpunkte-zerlegen
Falls Du also in einer Standalone Lösung - statt im iobroker das zerlegen willst musst Du nur das topic ändern, dann geht das auch mit mqtt Nodes.
Im Subflow selbst geht es ganz hinten in der Finalisierung des topics.
Falls Du noch Hilfe zu dem Subflow brauchst, melde Dich halt - ich habe allerdings auch noch in der Node eine ziemlich ausführliche Hilfe geschrieben.
-
@mickym said in alles neu mqtt:
@fred-freund Du kannst den Flow auch im Standalone modus verwenden - nur musst Du halt das root topic - dass nun auf 0_userdata.0 eingestellt ist - auf Deine Bedürfnisse ändern. Entweder in dem Du im Nachhinein das Topic änderst oder direkt im Subflow.
https://forum.iobroker.net/topic/43856/json-oder-javascript-objekt-in-iobroker-datenpunkte-zerlegen
Falls Du also in einer Standalone Lösung - statt im iobroker das zerlegen willst musst Du nur das topic ändern, dann geht das auch mit mqtt Nodes.
Im Subflow selbst geht es ganz hinten in der Finalisierung des topics.
Falls Du noch Hilfe zu dem Subflow brauchst, melde Dich halt - ich habe allerdings auch noch in der Node eine ziemlich ausführliche Hilfe geschrieben.
Vielen Dank fuer Deine Hilfe.