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 Topics als Datenpunkt statt als Variable empfangen

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.6k

MQTT Topics als Datenpunkt statt als Variable empfangen

Geplant Angeheftet Gesperrt Verschoben Einsteigerfragen
7 Beiträge 4 Kommentatoren 426 Aufrufe 3 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.
  • H Offline
    H Offline
    haubada
    schrieb am zuletzt editiert von
    #1

    Hallo,

    ich lese aktuell die Daten meines Cerbo (Victron) per MQTT aus.
    Dabei erhalte ich meine gewünschten Werte über den MQTT Adapter als Client.

    Beispielsweise möchte ich SOC der Batterie auslesen, welcher einen Wert von 49% hat.
    Als Ergebnis meiner MQTT Anfrage erhalte ich folgendes:

    e537c33f-f6e2-424a-9417-ab0981369f0b-grafik.png

    Hier steht {"value":49} als Variable.
    Ich hätte aber gerne einen Datenpunkt als number mit dem Wert 49.

    Das hätte ich mir so zusammengebaut und scheint auch zu funkioneren.

    on({id: "mqtt.1.N.b827eb547105.battery.512.Soc", change: "ne"}, function (obj) {
    
    	inhalt = JSON.parse(getState(id).val);
    
    	setState("0_userdata.0.Pylontech_SOC_täglich_log", parseFloat(inhalt.SML.Total_in), true);
    
    });
    

    Meine Frage wäre nun:
    Welches wäre das beste Vorgehen um Daten per MQTT direkt als Zahl zu erhalten?
    Muss ich ein Skript laufen lassen oder geht das irgendwie direkt?
    Der Datenpunkte sollte sich ändern wenn sich tatsächlich der MQTT Wert ändert und nicht städig falls der gleiche Wert empfangen wird (um Resourcen zu sparen)

    Danke und Grüße

    paul53P 1 Antwort Letzte Antwort
    0
    • H haubada

      Hallo,

      ich lese aktuell die Daten meines Cerbo (Victron) per MQTT aus.
      Dabei erhalte ich meine gewünschten Werte über den MQTT Adapter als Client.

      Beispielsweise möchte ich SOC der Batterie auslesen, welcher einen Wert von 49% hat.
      Als Ergebnis meiner MQTT Anfrage erhalte ich folgendes:

      e537c33f-f6e2-424a-9417-ab0981369f0b-grafik.png

      Hier steht {"value":49} als Variable.
      Ich hätte aber gerne einen Datenpunkt als number mit dem Wert 49.

      Das hätte ich mir so zusammengebaut und scheint auch zu funkioneren.

      on({id: "mqtt.1.N.b827eb547105.battery.512.Soc", change: "ne"}, function (obj) {
      
      	inhalt = JSON.parse(getState(id).val);
      
      	setState("0_userdata.0.Pylontech_SOC_täglich_log", parseFloat(inhalt.SML.Total_in), true);
      
      });
      

      Meine Frage wäre nun:
      Welches wäre das beste Vorgehen um Daten per MQTT direkt als Zahl zu erhalten?
      Muss ich ein Skript laufen lassen oder geht das irgendwie direkt?
      Der Datenpunkte sollte sich ändern wenn sich tatsächlich der MQTT Wert ändert und nicht städig falls der gleiche Wert empfangen wird (um Resourcen zu sparen)

      Danke und Grüße

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

      @haubada sagte: Muss ich ein Skript laufen lassen

      Nein, man kann auch einen Alias mit Lese-Konvertierung verwenden:

      JSON.parse(val).value
      

      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

      H 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @haubada sagte: Muss ich ein Skript laufen lassen

        Nein, man kann auch einen Alias mit Lese-Konvertierung verwenden:

        JSON.parse(val).value
        
        H Offline
        H Offline
        haubada
        schrieb am zuletzt editiert von
        #3

        @paul53
        Danke für die Rückmeldung.
        Wenn ich auf Alias klicke kommt bei mir eine leere Seite!?!

        Könntest Du mir das Vorgehen bitte noch etwas genauer beschreiben?
        Ich bekommen den Datenpunkt "mqtt.1.N.b827eb547105.battery.512.Soc" als String und möchte den Datenpunkt entweder direkt als Wert oder als Datenpunkt "0_userdata.0.Pylontech_SOC_täglich_log" als Wert.

        Aktuell verwende ich mehrere Blockly zur Weiterverarbeitung.
        Mit Skripten habe ich bisher nicht gearbeitet. Wie und wo füge ich den Quellcode passend ein und
        wann wird dieser ausgeführt?

        CodierknechtC 1 Antwort Letzte Antwort
        0
        • H haubada

          @paul53
          Danke für die Rückmeldung.
          Wenn ich auf Alias klicke kommt bei mir eine leere Seite!?!

          Könntest Du mir das Vorgehen bitte noch etwas genauer beschreiben?
          Ich bekommen den Datenpunkt "mqtt.1.N.b827eb547105.battery.512.Soc" als String und möchte den Datenpunkt entweder direkt als Wert oder als Datenpunkt "0_userdata.0.Pylontech_SOC_täglich_log" als Wert.

          Aktuell verwende ich mehrere Blockly zur Weiterverarbeitung.
          Mit Skripten habe ich bisher nicht gearbeitet. Wie und wo füge ich den Quellcode passend ein und
          wann wird dieser ausgeführt?

          CodierknechtC Online
          CodierknechtC Online
          Codierknecht
          Developer Most Active
          schrieb am zuletzt editiert von
          #4

          @haubada
          In den Objekten kannst Du unterhalb von alias.0 beliebige DP anlegen.
          In Deinem Fall legst Du dort einen vom Typ number an, lässt den dann auf mqtt.1.N.b827eb547105.battery.512.Soc gucken und trägst @paul53 's Vorschlag als Konvertierungsfunktion für's Lesen ein.

          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

          Proxmox 9.1.1 LXC|8 GB|Core i7-6700
          HmIP|ZigBee|Tasmota|Unifi
          Zabbix Certified Specialist
          Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

          1 Antwort Letzte Antwort
          0
          • L Online
            L Online
            Linedancer
            schrieb am zuletzt editiert von Linedancer
            #5

            Hi,
            Nur aus Interesse, warum nimmst du nicht dem Modbus Adapter. Da liegt, so wie du es willst direkt nur die Zahl im Datenpunkt.

            –

            Ciao, Gerhard

            H 1 Antwort Letzte Antwort
            0
            • L Linedancer

              Hi,
              Nur aus Interesse, warum nimmst du nicht dem Modbus Adapter. Da liegt, so wie du es willst direkt nur die Zahl im Datenpunkt.

              H Offline
              H Offline
              haubada
              schrieb am zuletzt editiert von
              #6

              @linedancer
              das hätte ich auch schon überlegt.
              Damit kenne ich mich aber auch nicht gut aus.

              Für MODBUS TCP müsste ja eine Lan Anbindung reichen, oder?

              Ich habe auch schon einige Threads dazu gefunden, aber was mir noch fehlt ist eine einfache Anleitung für die richtigen Parameter des Adapters.
              Hätte folgendes eingtstellt, aber es kommt das orange Dreieck:

              0195db67-6e49-414e-9a3d-8b72355435d3-grafik.png

              Was müsste ich in welche Register hinzufügen um die Daten z.B. für SOC zu bekommen?

              H 1 Antwort Letzte Antwort
              0
              • H haubada

                @linedancer
                das hätte ich auch schon überlegt.
                Damit kenne ich mich aber auch nicht gut aus.

                Für MODBUS TCP müsste ja eine Lan Anbindung reichen, oder?

                Ich habe auch schon einige Threads dazu gefunden, aber was mir noch fehlt ist eine einfache Anleitung für die richtigen Parameter des Adapters.
                Hätte folgendes eingtstellt, aber es kommt das orange Dreieck:

                0195db67-6e49-414e-9a3d-8b72355435d3-grafik.png

                Was müsste ich in welche Register hinzufügen um die Daten z.B. für SOC zu bekommen?

                H Offline
                H Offline
                haubada
                schrieb am zuletzt editiert von
                #7

                @haubada
                Habe es mit modbus hin bekommen und der Liste auf:

                Modbus TCP register liste

                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

                568

                Online

                32.7k

                Benutzer

                82.4k

                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