Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. alles neu mqtt

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.2k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    737

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.0k

alles neu mqtt

Geplant Angeheftet Gesperrt Verschoben JavaScript
8 Beiträge 3 Kommentatoren 804 Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Fred FreundF Offline
    Fred FreundF Offline
    Fred Freund
    schrieb am zuletzt editiert von Fred Freund
    #1

    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);
            }
        }
    });
    

    d9964462-a507-4569-9e49-47918b5c6ee7-image.png

    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.

    many Thx for your support,
    Vielen Dank!

    T 1 Antwort Letzte Antwort
    0
    • Fred FreundF Fred Freund

      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);
              }
          }
      });
      

      d9964462-a507-4569-9e49-47918b5c6ee7-image.png

      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.

      T Offline
      T Offline
      TT-Tom
      schrieb am zuletzt editiert von TT-Tom
      #2

      @fred-freund

      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.

      Gruß Tom
      https://github.com/tt-tom17
      Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

      NSPanel Script Wiki
      https://github.com/joBr99/nspanel-lovelace-ui/wiki

      NSPanel Adapter Wiki
      https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

      Fred FreundF 1 Antwort Letzte Antwort
      0
      • T TT-Tom

        @fred-freund

        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.

        Fred FreundF Offline
        Fred FreundF Offline
        Fred Freund
        schrieb am zuletzt editiert von
        #3

        @tt-tom
        naja wenn ich die Datenpunkte habe kann ich hinten einfach in die Datenbank eintragen
        e7d8b965-536c-4edf-877d-689ff300754e-image.png
        hier geht das weil der Datenpunkt in MQTT ein einzelner ist.

        f162e58d-1b1b-480d-830f-7177bcdda07a-image.png
        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?
        cd770daf-7df8-422c-9ae9-b6441fc51ce0-image.png

        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.

        many Thx for your support,
        Vielen Dank!

        T 1 Antwort Letzte Antwort
        0
        • Fred FreundF Fred Freund

          @tt-tom
          naja wenn ich die Datenpunkte habe kann ich hinten einfach in die Datenbank eintragen
          e7d8b965-536c-4edf-877d-689ff300754e-image.png
          hier geht das weil der Datenpunkt in MQTT ein einzelner ist.

          f162e58d-1b1b-480d-830f-7177bcdda07a-image.png
          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?
          cd770daf-7df8-422c-9ae9-b6441fc51ce0-image.png

          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.

          T Offline
          T Offline
          TT-Tom
          schrieb am zuletzt editiert von TT-Tom
          #4

          @fred-freund

          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.

          39022dd0-5ff2-46f7-a34b-618fc7b9ef42-image.png

          müsste so aus sehen bei dir

          JSON.parse(val).battery
          

          Gruß Tom
          https://github.com/tt-tom17
          Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

          NSPanel Script Wiki
          https://github.com/joBr99/nspanel-lovelace-ui/wiki

          NSPanel Adapter Wiki
          https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

          1 Antwort Letzte Antwort
          0
          • mickymM Online
            mickymM Online
            mickym
            Most Active
            schrieb am zuletzt editiert von
            #5

            Ich hab doch ein fix und fertigen Flow - der alles zerlegt. Keine Ahnung warum man das mit JS macht, wenn man eh NodeRed nutzt.

            Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

            Fred FreundF 1 Antwort Letzte Antwort
            1
            • mickymM mickym

              Ich hab doch ein fix und fertigen Flow - der alles zerlegt. Keine Ahnung warum man das mit JS macht, wenn man eh NodeRed nutzt.

              Fred FreundF Offline
              Fred FreundF Offline
              Fred Freund
              schrieb am zuletzt editiert von
              #6

              @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

              many Thx for your support,
              Vielen Dank!

              mickymM 1 Antwort Letzte Antwort
              0
              • Fred FreundF Fred Freund

                @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

                mickymM Online
                mickymM Online
                mickym
                Most Active
                schrieb am zuletzt editiert von mickym
                #7

                @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.

                09f31df6-851d-43f3-85ac-a8591a58695f-image.png

                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.

                Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                Fred FreundF 1 Antwort Letzte Antwort
                0
                • mickymM mickym

                  @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.

                  09f31df6-851d-43f3-85ac-a8591a58695f-image.png

                  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.

                  Fred FreundF Offline
                  Fred FreundF Offline
                  Fred Freund
                  schrieb am zuletzt editiert von
                  #8

                  @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.

                  09f31df6-851d-43f3-85ac-a8591a58695f-image.png

                  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.

                  many Thx for your support,
                  Vielen Dank!

                  1 Antwort Letzte Antwort
                  0
                  Antworten
                  • In einem neuen Thema antworten
                  Anmelden zum Antworten
                  • Älteste zuerst
                  • Neuste zuerst
                  • Meiste Stimmen


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  658

                  Online

                  32.6k

                  Benutzer

                  82.0k

                  Themen

                  1.3m

                  Beiträge
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                  ioBroker Community 2014-2025
                  logo
                  • Anmelden

                  • Du hast noch kein Konto? Registrieren

                  • Anmelden oder registrieren, um zu suchen
                  • Erster Beitrag
                    Letzter Beitrag
                  0
                  • Home
                  • Aktuell
                  • Tags
                  • Ungelesen 0
                  • Kategorien
                  • Unreplied
                  • Beliebt
                  • GitHub
                  • Docu
                  • Hilfe