Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Einsteigerfragen
    4. MQTT Topics als Datenpunkt statt als Variable empfangen

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    MQTT Topics als Datenpunkt statt als Variable empfangen

    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      haubada last edited by

      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

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @haubada last edited by

        @haubada sagte: Muss ich ein Skript laufen lassen

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

        JSON.parse(val).value
        
        H 1 Reply Last reply Reply Quote 0
        • H
          haubada @paul53 last edited by

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

          Codierknecht 1 Reply Last reply Reply Quote 0
          • Codierknecht
            Codierknecht Developer Most Active @haubada last edited by

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

            1 Reply Last reply Reply Quote 0
            • L
              Linedancer last edited by 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 1 Reply Last reply Reply Quote 0
              • H
                haubada @Linedancer last edited by

                @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 Reply Last reply Reply Quote 0
                • H
                  haubada @haubada last edited by

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

                  Modbus TCP register liste

                  1 Reply Last reply Reply Quote 0
                  • First post
                    Last post

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  395
                  Online

                  32.0k
                  Users

                  80.3k
                  Topics

                  1.3m
                  Posts

                  4
                  7
                  257
                  Loading More Posts
                  • Oldest to Newest
                  • Newest to Oldest
                  • Most Votes
                  Reply
                  • Reply as topic
                  Log in to reply
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                  The ioBroker Community 2014-2023
                  logo