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. Einsteigerfragen
  4. MQTT Client - publish eines channels funktioniert nicht

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    15
    1
    532

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.9k

MQTT Client - publish eines channels funktioniert nicht

Geplant Angeheftet Gesperrt Verschoben Einsteigerfragen
10 Beiträge 3 Kommentatoren 606 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.
  • A Offline
    A Offline
    ae55
    schrieb am zuletzt editiert von
    #1

    Hallo,
    Ich habe ioBroker vor kurzem erst installiert und kenne mich dementsprechend noch recht wenig mit dem Aufbau und den Begriffen aus.

    Ich habe bei dem "Channel" (siehe Screenshots), den ich gerne per MQTT auf meinen Broker publishen würde, um die Daten in Home Assistant weiter zu verarbeiten und auszuwerten, auch schon MQTT publish aktiviert.
    Ich habe auch bereits den MQTT-Client konfiguriert, dieser zeigt auch keine Fehlermeldung.
    Screenshot_20250401_194457_Firefox.jpg Screenshot_20250401_194508_Firefox.jpg
    Habe ich als Anfänger vielleicht etwas übersehen oder es einfach falsch verstanden?

    Viele Grüße
    Aaron

    paul53P 1 Antwort Letzte Antwort
    0
    • A ae55

      Hallo,
      Ich habe ioBroker vor kurzem erst installiert und kenne mich dementsprechend noch recht wenig mit dem Aufbau und den Begriffen aus.

      Ich habe bei dem "Channel" (siehe Screenshots), den ich gerne per MQTT auf meinen Broker publishen würde, um die Daten in Home Assistant weiter zu verarbeiten und auszuwerten, auch schon MQTT publish aktiviert.
      Ich habe auch bereits den MQTT-Client konfiguriert, dieser zeigt auch keine Fehlermeldung.
      Screenshot_20250401_194457_Firefox.jpg Screenshot_20250401_194508_Firefox.jpg
      Habe ich als Anfänger vielleicht etwas übersehen oder es einfach falsch verstanden?

      Viele Grüße
      Aaron

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #2

      @ae55 sagte: "Channel" (siehe Screenshots), den ich gerne per MQTT auf meinen Broker publishen würde

      Man kann nur Datenpunkte publishen. Ein Kanal hat keinen Wert.

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      A 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @ae55 sagte: "Channel" (siehe Screenshots), den ich gerne per MQTT auf meinen Broker publishen würde

        Man kann nur Datenpunkte publishen. Ein Kanal hat keinen Wert.

        A Offline
        A Offline
        ae55
        schrieb am zuletzt editiert von ae55
        #3

        @paul53 Wie kann ich dann die gesamte Struktur unterhalb eines channels (alle channels darunter und die Datenpunkte, idealerweise als JSON oder ähnliches in NodeRed verwertbares Format) in einem MQTT-Topic publishen?

        AsgothianA 1 Antwort Letzte Antwort
        0
        • A ae55

          @paul53 Wie kann ich dann die gesamte Struktur unterhalb eines channels (alle channels darunter und die Datenpunkte, idealerweise als JSON oder ähnliches in NodeRed verwertbares Format) in einem MQTT-Topic publishen?

          AsgothianA Offline
          AsgothianA Offline
          Asgothian
          Developer
          schrieb am zuletzt editiert von
          #4

          @ae55 Indem du ein Skript schreibst, welches die DP des Channels in ein JSON verwandelt, und dieses in einen Datenpunkt unter 0_userdata.0 schreibst, den du dann publisht.

          A.

          ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
          "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

          A 1 Antwort Letzte Antwort
          0
          • AsgothianA Asgothian

            @ae55 Indem du ein Skript schreibst, welches die DP des Channels in ein JSON verwandelt, und dieses in einen Datenpunkt unter 0_userdata.0 schreibst, den du dann publisht.

            A.

            A Offline
            A Offline
            ae55
            schrieb am zuletzt editiert von
            #5

            @asgothian wie könnte so ein Skript aussehen?
            Wo schreibe ich dieses?

            paul53P 1 Antwort Letzte Antwort
            0
            • A ae55

              @asgothian wie könnte so ein Skript aussehen?
              Wo schreibe ich dieses?

              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von paul53
              #6

              @ae55 sagte: wie könnte so ein Skript aussehen?

              Etwa so:

              // IDs anpassen!
              const idsTrip = $('bosch-ebike.0.trips.01.attributes.*').toArray();
              const idJSON = '0_userdata.0.trips.JSON';
              const idTrigger = 'abc'; 
              
              on(idTrigger, function() {
                  const obj = {};
                  for(const id of idsTrip) {
                      const arr = id.split('.');
                      const attr = arr[arr.length - 1];
                      obj[attr] = getState(id).val;
                  }
                  setState(idJSON, JSON.stringify(obj));
              });
              

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              A 1 Antwort Letzte Antwort
              0
              • paul53P paul53

                @ae55 sagte: wie könnte so ein Skript aussehen?

                Etwa so:

                // IDs anpassen!
                const idsTrip = $('bosch-ebike.0.trips.01.attributes.*').toArray();
                const idJSON = '0_userdata.0.trips.JSON';
                const idTrigger = 'abc'; 
                
                on(idTrigger, function() {
                    const obj = {};
                    for(const id of idsTrip) {
                        const arr = id.split('.');
                        const attr = arr[arr.length - 1];
                        obj[attr] = getState(id).val;
                    }
                    setState(idJSON, JSON.stringify(obj));
                });
                
                A Offline
                A Offline
                ae55
                schrieb am zuletzt editiert von
                #7

                @paul53 ich habe das Skript jetzt hinzugefügt, habe jedoch das Problem dass einige Datenpunkte nicht richtig gepublished werden (siehe Screenshot)
                Screenshot_20250402_160938_Firefox.jpg
                In dem JSON ist nur einmal "assistModeUsage" enthalten, ich hätte allerdings z.B gerne {"attributes":{"assistModeUsage01": {"assistmodeUsage":XXXX}},{"assistModeUsage02": {"assistmodeUsage":XXXX}}}.

                Ist dies lösbar und wenn ja, wie?
                Viele Grüße
                Aaron

                paul53P 1 Antwort Letzte Antwort
                0
                • A ae55

                  @paul53 ich habe das Skript jetzt hinzugefügt, habe jedoch das Problem dass einige Datenpunkte nicht richtig gepublished werden (siehe Screenshot)
                  Screenshot_20250402_160938_Firefox.jpg
                  In dem JSON ist nur einmal "assistModeUsage" enthalten, ich hätte allerdings z.B gerne {"attributes":{"assistModeUsage01": {"assistmodeUsage":XXXX}},{"assistModeUsage02": {"assistmodeUsage":XXXX}}}.

                  Ist dies lösbar und wenn ja, wie?
                  Viele Grüße
                  Aaron

                  paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von paul53
                  #8

                  @ae55 sagte: siehe Screenshot

                  Du hattest verschwiegen, dass unter "attributes" weitere Kanäle vorhanden sind und erst darunter die Datenpunkte. Versuche es mal so:

                  on(idTrigger, function() {
                      const obj = {};
                      for(const id of idsTrip) {
                          const arr = id.split('.');
                          const ch = arr[arr.length - 2];
                          const dp = arr[arr.length - 1];
                          const objDp = {};
                          objDp[dp] = getState(id).val;
                          obj[ch] = objDp;
                      }
                      setState(idJSON, JSON.stringify(obj));
                  });
                  

                  Wenn nur die DP "assistmodeUsage" gewünscht sind, grenze es im Selektor ein:

                  const idsTrip = $('bosch-ebike.0.trips.01.attributes.*.assistmodeUsage').toArray();
                  

                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                  A 1 Antwort Letzte Antwort
                  0
                  • paul53P paul53

                    @ae55 sagte: siehe Screenshot

                    Du hattest verschwiegen, dass unter "attributes" weitere Kanäle vorhanden sind und erst darunter die Datenpunkte. Versuche es mal so:

                    on(idTrigger, function() {
                        const obj = {};
                        for(const id of idsTrip) {
                            const arr = id.split('.');
                            const ch = arr[arr.length - 2];
                            const dp = arr[arr.length - 1];
                            const objDp = {};
                            objDp[dp] = getState(id).val;
                            obj[ch] = objDp;
                        }
                        setState(idJSON, JSON.stringify(obj));
                    });
                    

                    Wenn nur die DP "assistmodeUsage" gewünscht sind, grenze es im Selektor ein:

                    const idsTrip = $('bosch-ebike.0.trips.01.attributes.*.assistmodeUsage').toArray();
                    
                    A Offline
                    A Offline
                    ae55
                    schrieb am zuletzt editiert von
                    #9

                    @paul53 Danke für deine Hilfe!
                    Es funktioniert jetzt zwar grundsätzlich, jedoch wird von jedem Kanal unter "attributes" nur der erste Datenpunkt gepublished, jedoch gibt es unter manchen dieser Kanäle mehre Datenpunkte...

                    paul53P 1 Antwort Letzte Antwort
                    0
                    • A ae55

                      @paul53 Danke für deine Hilfe!
                      Es funktioniert jetzt zwar grundsätzlich, jedoch wird von jedem Kanal unter "attributes" nur der erste Datenpunkt gepublished, jedoch gibt es unter manchen dieser Kanäle mehre Datenpunkte...

                      paul53P Offline
                      paul53P Offline
                      paul53
                      schrieb am zuletzt editiert von paul53
                      #10

                      @ae55 sagte: wird von jedem Kanal unter "attributes" nur der erste Datenpunkt gepublished

                      Neuer Versuch:

                      on(idTrigger, function() {
                          const obj = {};
                          let objDp;
                          let lastCh;
                          for(const id of idsTrip) {
                              const arr = id.split('.');
                              const ch = arr[arr.length - 2];
                              const dp = arr[arr.length - 1];
                              if(ch != lastCh) objDp = {};
                              objDp[dp] = getState(id).val;
                              obj[ch] = objDp;
                              lastCh = ch;
                          }
                          setState(idJSON, JSON.stringify(obj));
                      });
                      

                      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                      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

                      880

                      Online

                      32.6k

                      Benutzer

                      81.9k

                      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