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. Abfrage MQTT Variable

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    496

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.7k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.6k

Abfrage MQTT Variable

Geplant Angeheftet Gesperrt Verschoben Einsteigerfragen
24 Beiträge 4 Kommentatoren 1.2k 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.
  • N NeueKlasse

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

    paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von 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 Antworten Letzte Antwort
    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
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      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
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        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
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          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
            schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
            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
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              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
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                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
                  schrieb am zuletzt editiert von
                  #22

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

                  1 Antwort Letzte Antwort
                  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
                    schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                    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
                      schrieb am zuletzt editiert von
                      #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 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

                      512

                      Online

                      32.5k

                      Benutzer

                      81.8k

                      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