Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Einsteigerfragen
  4. Abfrage MQTT Variable

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Abfrage MQTT Variable

Scheduled Pinned Locked Moved Einsteigerfragen
24 Posts 4 Posters 1.2k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • CodierknechtC Codierknecht

    @paul53 sagte in Abfrage MQTT Variable:

    getAttr() wurde für Blockly entwickelt und wird in Javascript nicht benötigt.

    Danke für den Hinweis - sollte aber doch trotzdem funktionieren.

    Das hier funzt jedenfalls einwandfrei:

    const idSensor = 'mqtt.0.tele.Gascounter.SENSOR';
    const idZaehler = '0_userdata.0.Gaszaehler.Gaszaehlerstand';
     
    on({id: idSensor, change: "ne"}, async function (obj) {
        let zaehler = parseInt(getAttr(obj.state.val, "COUNTER.C1")) / 100;
        setState(idZaehler, zaehler, true);
    });
    
    N Offline
    N Offline
    NeueKlasse
    wrote on last edited by
    #14

    @codierknecht Jap, das funzt! Danke,

    @paul53 mich würde trotzdem interessieren wieso es ohne die getAttr im moment noch nicht geht.

    CodierknechtC paul53P 2 Replies Last reply
    0
    • N NeueKlasse

      @paul53 COUNTER Grossgeschrieben, das hatte ich auch versucht, ändert leider nichts an dem Error

      paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by paul53
      #15

      @neueklasse sagte: ändert leider nichts an dem Error

      Dann enthält der Datenpunkt kein Objekt, sondern ein JSON.

      const idSensor = 'mqtt.0.tele.Gascounter.SENSOR';
      const idZaehler = '0_userdata.0.Gaszaehler.Gaszaehlerstand';
       
      on(idSensor, function(dp) {
          let zaehler = JSON.parse(dp.state.val).COUNTER.C1 / 100;
          setState(idZaehler, zaehler, true);
      });
      

      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

      CodierknechtC N 2 Replies Last reply
      0
      • paul53P paul53

        @neueklasse sagte: ändert leider nichts an dem Error

        Dann enthält der Datenpunkt kein Objekt, sondern ein JSON.

        const idSensor = 'mqtt.0.tele.Gascounter.SENSOR';
        const idZaehler = '0_userdata.0.Gaszaehler.Gaszaehlerstand';
         
        on(idSensor, function(dp) {
            let zaehler = JSON.parse(dp.state.val).COUNTER.C1 / 100;
            setState(idZaehler, zaehler, true);
        });
        
        CodierknechtC Offline
        CodierknechtC Offline
        Codierknecht
        Developer Most Active
        wrote on last edited by
        #16

        @paul53 sagte in Abfrage MQTT Variable:

        Dann enthält der Datenpunkt kein Objekt, sondern ein JSON.

        Davon war ich bei MQTT einfach mal ausgegangen ;-)

        "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 Reply Last reply
        0
        • N NeueKlasse

          @codierknecht Jap, das funzt! Danke,

          @paul53 mich würde trotzdem interessieren wieso es ohne die getAttr im moment noch nicht geht.

          CodierknechtC Offline
          CodierknechtC Offline
          Codierknecht
          Developer Most Active
          wrote on last edited by
          #17

          @neueklasse sagte in Abfrage MQTT Variable:

          mich würde trotzdem interessieren wieso es ohne die getAttr im moment noch nicht geht.

          Mich auch :grin:

          "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 Reply Last reply
          0
          • N NeueKlasse

            @codierknecht Jap, das funzt! Danke,

            @paul53 mich würde trotzdem interessieren wieso es ohne die getAttr im moment noch nicht geht.

            paul53P Offline
            paul53P Offline
            paul53
            wrote on last edited by
            #18

            @neueklasse sagte: wieso es ohne die getAttr im moment noch nicht geht.

            Es fehlte JSON.parse().

            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

            CodierknechtC 1 Reply Last reply
            0
            • paul53P paul53

              @neueklasse sagte: wieso es ohne die getAttr im moment noch nicht geht.

              Es fehlte JSON.parse().

              CodierknechtC Offline
              CodierknechtC Offline
              Codierknecht
              Developer Most Active
              wrote on last edited by Codierknecht
              #19

              @paul53
              Jepp - wenn man dann auch die korrekte Groß- und Kleinschreibung verwendet, klappt's auch mit dem Nachbarn :man-facepalming:
              In meinem Test-DP stand das noch als Counter.

              "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

              N 1 Reply Last reply
              0
              • paul53P paul53

                @neueklasse sagte: ändert leider nichts an dem Error

                Dann enthält der Datenpunkt kein Objekt, sondern ein JSON.

                const idSensor = 'mqtt.0.tele.Gascounter.SENSOR';
                const idZaehler = '0_userdata.0.Gaszaehler.Gaszaehlerstand';
                 
                on(idSensor, function(dp) {
                    let zaehler = JSON.parse(dp.state.val).COUNTER.C1 / 100;
                    setState(idZaehler, zaehler, true);
                });
                
                N Offline
                N Offline
                NeueKlasse
                wrote on last edited by
                #20

                @paul53, @Codierknecht Funktionieren beide! Danke ihr Beiden!!

                ist das hier der richtige thread für... gibt es eine moeglichkeit von einer
                zahl z.b. 32,4 in der VIS nur die 2. Stelle auszugeben?

                also bei ems-esp.0.boiler.actual boiler temperature => hier betraegt die Object ID 32,4. wenn ich nur die 2. Stelle anzeigen lassen wollen würde, gibt es hier eine möglichkeit, oder muss ich separate Variablen erstellen in die ich per script die einzelnen stellen verteile?

                CodierknechtC 1 Reply Last reply
                0
                • N NeueKlasse

                  @paul53, @Codierknecht Funktionieren beide! Danke ihr Beiden!!

                  ist das hier der richtige thread für... gibt es eine moeglichkeit von einer
                  zahl z.b. 32,4 in der VIS nur die 2. Stelle auszugeben?

                  also bei ems-esp.0.boiler.actual boiler temperature => hier betraegt die Object ID 32,4. wenn ich nur die 2. Stelle anzeigen lassen wollen würde, gibt es hier eine möglichkeit, oder muss ich separate Variablen erstellen in die ich per script die einzelnen stellen verteile?

                  CodierknechtC Offline
                  CodierknechtC Offline
                  Codierknecht
                  Developer Most Active
                  wrote on last edited by
                  #21

                  @neueklasse
                  Da soll also tatsächlich nur eine "2" stehen?
                  Würde mit einem Binding funktionieren - z.B. in einem HTML-Widget

                  {val:ems-esp.0.boiler.actual_boiler_temperature; val.substr(1,1)}
                  

                  Ich habe hier mal vorausgesetzt, dass in der Objekt-ID nicht wirklich Leerzeichen enthalten sind.

                  "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

                  N 1 Reply Last reply
                  0
                  • CodierknechtC Codierknecht

                    @neueklasse
                    Da soll also tatsächlich nur eine "2" stehen?
                    Würde mit einem Binding funktionieren - z.B. in einem HTML-Widget

                    {val:ems-esp.0.boiler.actual_boiler_temperature; val.substr(1,1)}
                    

                    Ich habe hier mal vorausgesetzt, dass in der Objekt-ID nicht wirklich Leerzeichen enthalten sind.

                    N Offline
                    N Offline
                    NeueKlasse
                    wrote on last edited by
                    #22

                    @codierknecht Super, funktioniert, danke! Jetzt kann ich mit den neuen erkenntnissen herumexperimentieren!

                    1 Reply Last reply
                    0
                    • CodierknechtC Codierknecht

                      @paul53
                      Jepp - wenn man dann auch die korrekte Groß- und Kleinschreibung verwendet, klappt's auch mit dem Nachbarn :man-facepalming:
                      In meinem Test-DP stand das noch als Counter.

                      N Offline
                      N Offline
                      NeueKlasse
                      wrote on last edited by NeueKlasse
                      #23

                      @codierknecht

                      die 'idAnpassfaktor' betraegt 0,999987 ich habe es bereits mit parseFloat und get Attr getestet, leider geht
                      das nicht so wie ich möchte...

                      ">> <<" ist zur veranschaulichung

                      const idSensor = 'mqtt.0.tele.Gascounter.SENSOR';
                      const idZaehler = '0_userdata.0.Gaszaehler.Gaszaehlerstand';
                      const idVerbrauch = '0_userdata.0.Gaszaehler.Gasverbrauch';
                      const idZustandszahl = '0_userdata.0.Gaszaehler.Umrechnung.Zustandszahl';
                      const idBrennwert = '0_userdata.0.Gaszaehler.Umrechnung.Brennwert';
                      const idAnpassfaktor = '0_userdata.0.Gaszaehler.Umrechnung.Anpassfaktor';
                       
                      on({id: idSensor, change: "ne"}, async function (obj) {
                          let zaehler = parseInt(getAttr(obj.state.val, "COUNTER.C1")) / 100 * >> idAnpassfaktor <<;
                          var roundedm3 = Math.round((zaehler + Number.EPSILON) * 100) / 100;
                          var roundedkwh = Math.round((zaehler + Number.EPSILON) * 100 * 0.95 * 11.1) / 100;
                          setState(idZaehler, roundedm3, true);
                          setState(idVerbrauch, roundedkwh, true);
                      });
                      
                      

                      wie wäre hier der Korrekte Syntax?

                      CodierknechtC 1 Reply Last reply
                      0
                      • N NeueKlasse

                        @codierknecht

                        die 'idAnpassfaktor' betraegt 0,999987 ich habe es bereits mit parseFloat und get Attr getestet, leider geht
                        das nicht so wie ich möchte...

                        ">> <<" ist zur veranschaulichung

                        const idSensor = 'mqtt.0.tele.Gascounter.SENSOR';
                        const idZaehler = '0_userdata.0.Gaszaehler.Gaszaehlerstand';
                        const idVerbrauch = '0_userdata.0.Gaszaehler.Gasverbrauch';
                        const idZustandszahl = '0_userdata.0.Gaszaehler.Umrechnung.Zustandszahl';
                        const idBrennwert = '0_userdata.0.Gaszaehler.Umrechnung.Brennwert';
                        const idAnpassfaktor = '0_userdata.0.Gaszaehler.Umrechnung.Anpassfaktor';
                         
                        on({id: idSensor, change: "ne"}, async function (obj) {
                            let zaehler = parseInt(getAttr(obj.state.val, "COUNTER.C1")) / 100 * >> idAnpassfaktor <<;
                            var roundedm3 = Math.round((zaehler + Number.EPSILON) * 100) / 100;
                            var roundedkwh = Math.round((zaehler + Number.EPSILON) * 100 * 0.95 * 11.1) / 100;
                            setState(idZaehler, roundedm3, true);
                            setState(idVerbrauch, roundedkwh, true);
                        });
                        
                        

                        wie wäre hier der Korrekte Syntax?

                        CodierknechtC Offline
                        CodierknechtC Offline
                        Codierknecht
                        Developer Most Active
                        wrote on last edited by
                        #24

                        @neueklasse

                        let zaehler = parseInt(getAttr(obj.state.val, "COUNTER.C1")) / 100 * getState(idAnpassfaktor).val;
                        

                        "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 Reply Last reply
                        0
                        Reply
                        • Reply as topic
                        Log in to reply
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes


                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        743

                        Online

                        32.6k

                        Users

                        82.1k

                        Topics

                        1.3m

                        Posts
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                        ioBroker Community 2014-2025
                        logo
                        • Login

                        • Don't have an account? Register

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Home
                        • Recent
                        • Tags
                        • Unread 0
                        • Categories
                        • Unreplied
                        • Popular
                        • GitHub
                        • Docu
                        • Hilfe