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. Skripten / Logik
  4. JavaScript Syntax Verstaendnisproblem

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.1k

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.4k

JavaScript Syntax Verstaendnisproblem

Scheduled Pinned Locked Moved Skripten / Logik
30 Posts 5 Posters 1.4k Views 3 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.
  • N Offline
    N Offline
    NeueKlasse
    wrote on last edited by NeueKlasse
    #1

    Hallo,

    const idSensor = 'mqtt.0.tele.Gascounter.SENSOR';
    const idZaehler = '0_userdata.0.Gaszaehler.Gaszaehlerstand';
    const idVerbrauch = '0_userdata.0.Gaszaehler.Gasverbrauch';
    var idZustandszahl = '0_userdata.0.Gaszaehler.Umrechnung.Zustandszahl';
    var idBrennwert = '0_userdata.0.Gaszaehler.Umrechnung.Brennwert';
    var idAnpassfaktor = '0_userdata.0.Gaszaehler.Umrechnung.Anpassfaktor';
    var idBACK = '0_userdata.0.Gaszaehler.Umrechnung.BACK';
    var idKostenpTag    = "0_userdata.0.Gaszaehler.Verbrauch.GaskostenDaily";
     
    on({id: idSensor, change: "ne"}, async function (obj) {
        let zaehler = parseInt(getAttr(obj.state.val, "COUNTER.C1")) / 100 * 0.999820;
        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);
        var costperday = parseFloat("0_userdata.0.Gaszaehler.Verbrauch.Daily") * 13.70 / 100;
        setState(idKostenpTag, costperday, true);
    });
    

    Zeile 16 costperday.... funktioniert nicht, ich verstehe nicht wie man zum Teufel eine Uservariable auslesen bzw. beschreiben kann, die Doku hilft mir hier nicht weiter... wie geht das?
    genauso wie oben die variablendeklaration.. wieso kann er nicht einfach das ausgewaehlte 'Zahl' aus der Objektdefinition auslesen? wieso wird immer string angenommen?

    ..das 13.7 ist auch noch eine userdata variable die dazukommen soll..

    rrov1R BananaJoeB 2 Replies Last reply
    0
    • N NeueKlasse

      Hallo,

      const idSensor = 'mqtt.0.tele.Gascounter.SENSOR';
      const idZaehler = '0_userdata.0.Gaszaehler.Gaszaehlerstand';
      const idVerbrauch = '0_userdata.0.Gaszaehler.Gasverbrauch';
      var idZustandszahl = '0_userdata.0.Gaszaehler.Umrechnung.Zustandszahl';
      var idBrennwert = '0_userdata.0.Gaszaehler.Umrechnung.Brennwert';
      var idAnpassfaktor = '0_userdata.0.Gaszaehler.Umrechnung.Anpassfaktor';
      var idBACK = '0_userdata.0.Gaszaehler.Umrechnung.BACK';
      var idKostenpTag    = "0_userdata.0.Gaszaehler.Verbrauch.GaskostenDaily";
       
      on({id: idSensor, change: "ne"}, async function (obj) {
          let zaehler = parseInt(getAttr(obj.state.val, "COUNTER.C1")) / 100 * 0.999820;
          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);
          var costperday = parseFloat("0_userdata.0.Gaszaehler.Verbrauch.Daily") * 13.70 / 100;
          setState(idKostenpTag, costperday, true);
      });
      

      Zeile 16 costperday.... funktioniert nicht, ich verstehe nicht wie man zum Teufel eine Uservariable auslesen bzw. beschreiben kann, die Doku hilft mir hier nicht weiter... wie geht das?
      genauso wie oben die variablendeklaration.. wieso kann er nicht einfach das ausgewaehlte 'Zahl' aus der Objektdefinition auslesen? wieso wird immer string angenommen?

      ..das 13.7 ist auch noch eine userdata variable die dazukommen soll..

      rrov1R Offline
      rrov1R Offline
      rrov1
      wrote on last edited by
      #2

      @neueklasse versuche es mal mit:

      var costperday = parseFloat(getState("0_userdata.0.Gaszaehler.Verbrauch.Daily").val) * 13.70 / 100;
      

      Dokumentation der getState()-Funktion: https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#getstate

      N 2 Replies Last reply
      0
      • N NeueKlasse

        Hallo,

        const idSensor = 'mqtt.0.tele.Gascounter.SENSOR';
        const idZaehler = '0_userdata.0.Gaszaehler.Gaszaehlerstand';
        const idVerbrauch = '0_userdata.0.Gaszaehler.Gasverbrauch';
        var idZustandszahl = '0_userdata.0.Gaszaehler.Umrechnung.Zustandszahl';
        var idBrennwert = '0_userdata.0.Gaszaehler.Umrechnung.Brennwert';
        var idAnpassfaktor = '0_userdata.0.Gaszaehler.Umrechnung.Anpassfaktor';
        var idBACK = '0_userdata.0.Gaszaehler.Umrechnung.BACK';
        var idKostenpTag    = "0_userdata.0.Gaszaehler.Verbrauch.GaskostenDaily";
         
        on({id: idSensor, change: "ne"}, async function (obj) {
            let zaehler = parseInt(getAttr(obj.state.val, "COUNTER.C1")) / 100 * 0.999820;
            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);
            var costperday = parseFloat("0_userdata.0.Gaszaehler.Verbrauch.Daily") * 13.70 / 100;
            setState(idKostenpTag, costperday, true);
        });
        

        Zeile 16 costperday.... funktioniert nicht, ich verstehe nicht wie man zum Teufel eine Uservariable auslesen bzw. beschreiben kann, die Doku hilft mir hier nicht weiter... wie geht das?
        genauso wie oben die variablendeklaration.. wieso kann er nicht einfach das ausgewaehlte 'Zahl' aus der Objektdefinition auslesen? wieso wird immer string angenommen?

        ..das 13.7 ist auch noch eine userdata variable die dazukommen soll..

        BananaJoeB Offline
        BananaJoeB Offline
        BananaJoe
        Most Active
        wrote on last edited by
        #3

        @neueklasse Ich habe gerade am Anfang mir oft das Detail des Skriptes in Blockly zusammengeklickt - und dann auf die JavaScript-Ansicht umgeschaltet oben rechts.
        So lernte ich schneller die Befehle und mit welchem man was macht. Der Blockly-Code ist dann manchmal "überladen" aber das vereinfachen ist dann ja eine gute Übung

        ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

        N 1 Reply Last reply
        0
        • rrov1R rrov1

          @neueklasse versuche es mal mit:

          var costperday = parseFloat(getState("0_userdata.0.Gaszaehler.Verbrauch.Daily").val) * 13.70 / 100;
          

          Dokumentation der getState()-Funktion: https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#getstate

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

          @rrov1 Super, Danke das ist es!

          1 Reply Last reply
          0
          • BananaJoeB BananaJoe

            @neueklasse Ich habe gerade am Anfang mir oft das Detail des Skriptes in Blockly zusammengeklickt - und dann auf die JavaScript-Ansicht umgeschaltet oben rechts.
            So lernte ich schneller die Befehle und mit welchem man was macht. Der Blockly-Code ist dann manchmal "überladen" aber das vereinfachen ist dann ja eine gute Übung

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

            @bananajoe Danke fuer den Hinweis, das versuche ich!

            1 Reply Last reply
            0
            • rrov1R rrov1

              @neueklasse versuche es mal mit:

              var costperday = parseFloat(getState("0_userdata.0.Gaszaehler.Verbrauch.Daily").val) * 13.70 / 100;
              

              Dokumentation der getState()-Funktion: https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#getstate

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

              @rrov1

              ich bringe die If funktion leider nicht zum laufen... wenn das if auskommentiert ist wird alles richtig resetted...
              der Wert beträgt aber "Room cleaning"....

              var idRobotState = 'mihome-vacuum.0.info.state';
              
              on({id: idRobotState, change: "ne"}, async function (obj) {
              
                  if (idRobotState === "Room cleaning") {
                      setState('mihome-vacuum.0.rooms.315001052296.roomClean', false);
                      setState('mihome-vacuum.0.rooms.315001052297.roomClean', false);
                      setState('mihome-vacuum.0.rooms.315001052299.roomClean', false);
                      setState('mihome-vacuum.0.rooms.315001052301.roomClean', false);
                      setState('mihome-vacuum.0.rooms.315001052302.roomClean', false);
                      setState('mihome-vacuum.0.rooms.315001052303.roomClean', false);
                      setState('mihome-vacuum.0.rooms.315001052305.roomClean', false);
                  }
              
              });
              
              paul53P BananaJoeB CodierknechtC 3 Replies Last reply
              0
              • N NeueKlasse

                @rrov1

                ich bringe die If funktion leider nicht zum laufen... wenn das if auskommentiert ist wird alles richtig resetted...
                der Wert beträgt aber "Room cleaning"....

                var idRobotState = 'mihome-vacuum.0.info.state';
                
                on({id: idRobotState, change: "ne"}, async function (obj) {
                
                    if (idRobotState === "Room cleaning") {
                        setState('mihome-vacuum.0.rooms.315001052296.roomClean', false);
                        setState('mihome-vacuum.0.rooms.315001052297.roomClean', false);
                        setState('mihome-vacuum.0.rooms.315001052299.roomClean', false);
                        setState('mihome-vacuum.0.rooms.315001052301.roomClean', false);
                        setState('mihome-vacuum.0.rooms.315001052302.roomClean', false);
                        setState('mihome-vacuum.0.rooms.315001052303.roomClean', false);
                        setState('mihome-vacuum.0.rooms.315001052305.roomClean', false);
                    }
                
                });
                
                paul53P Offline
                paul53P Offline
                paul53
                wrote on last edited by
                #7

                @neueklasse

                    if(obj.state.val === 'Room cleaning') {
                

                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

                N 1 Reply Last reply
                0
                • N NeueKlasse

                  @rrov1

                  ich bringe die If funktion leider nicht zum laufen... wenn das if auskommentiert ist wird alles richtig resetted...
                  der Wert beträgt aber "Room cleaning"....

                  var idRobotState = 'mihome-vacuum.0.info.state';
                  
                  on({id: idRobotState, change: "ne"}, async function (obj) {
                  
                      if (idRobotState === "Room cleaning") {
                          setState('mihome-vacuum.0.rooms.315001052296.roomClean', false);
                          setState('mihome-vacuum.0.rooms.315001052297.roomClean', false);
                          setState('mihome-vacuum.0.rooms.315001052299.roomClean', false);
                          setState('mihome-vacuum.0.rooms.315001052301.roomClean', false);
                          setState('mihome-vacuum.0.rooms.315001052302.roomClean', false);
                          setState('mihome-vacuum.0.rooms.315001052303.roomClean', false);
                          setState('mihome-vacuum.0.rooms.315001052305.roomClean', false);
                      }
                  
                  });
                  
                  BananaJoeB Offline
                  BananaJoeB Offline
                  BananaJoe
                  Most Active
                  wrote on last edited by
                  #8

                  @neueklasse aus dem Kopf: nur 2x =, dann passt er die Typen an

                  if (obj.state.val == "Room cleaning")
                  

                  on reagiert auf die Datenpunktänderungen und übergibt dieses Objektzustand an die angegebene Funktion - mit dem Variablennamen obj weil das in der Klammer so angegeben wird.

                  Mit dem Objekt erhälts du auch, aber nicht nur den Wert. Sondern z.B. alle Eigenschaften oder den Zeitstempel der Änderung.
                  obj.state.val enthält den Wert zu dem Zeitpunkt wo on ausgelöst wurde.

                  Zum Vergleichsoperator === : Ich nehme eigentlich immer den ==
                  Siehe auch https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness?retiredLocale=de

                  ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                  CodierknechtC 1 Reply Last reply
                  1
                  • N NeueKlasse

                    @rrov1

                    ich bringe die If funktion leider nicht zum laufen... wenn das if auskommentiert ist wird alles richtig resetted...
                    der Wert beträgt aber "Room cleaning"....

                    var idRobotState = 'mihome-vacuum.0.info.state';
                    
                    on({id: idRobotState, change: "ne"}, async function (obj) {
                    
                        if (idRobotState === "Room cleaning") {
                            setState('mihome-vacuum.0.rooms.315001052296.roomClean', false);
                            setState('mihome-vacuum.0.rooms.315001052297.roomClean', false);
                            setState('mihome-vacuum.0.rooms.315001052299.roomClean', false);
                            setState('mihome-vacuum.0.rooms.315001052301.roomClean', false);
                            setState('mihome-vacuum.0.rooms.315001052302.roomClean', false);
                            setState('mihome-vacuum.0.rooms.315001052303.roomClean', false);
                            setState('mihome-vacuum.0.rooms.315001052305.roomClean', false);
                        }
                    
                    });
                    
                    CodierknechtC Offline
                    CodierknechtC Offline
                    Codierknecht
                    Developer Most Active
                    wrote on last edited by
                    #9

                    @neueklasse
                    Um das von @paul53 etwas zu erläutern:
                    Im Zeile 1 besetzt Du eine Variable mit der Objekt-ID des DP.
                    In Zeile 3 triggerst Du auf Änderung dieses DP.
                    Der Inhalt des betroffenen Objektes wird als Parameter obj an die anonyme Methode übergeben. Das ist aber dann das komplette Objekt!
                    Mit obj.state.val kommst Du an den eigentlichen Wert.

                    "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
                    1
                    • BananaJoeB BananaJoe

                      @neueklasse aus dem Kopf: nur 2x =, dann passt er die Typen an

                      if (obj.state.val == "Room cleaning")
                      

                      on reagiert auf die Datenpunktänderungen und übergibt dieses Objektzustand an die angegebene Funktion - mit dem Variablennamen obj weil das in der Klammer so angegeben wird.

                      Mit dem Objekt erhälts du auch, aber nicht nur den Wert. Sondern z.B. alle Eigenschaften oder den Zeitstempel der Änderung.
                      obj.state.val enthält den Wert zu dem Zeitpunkt wo on ausgelöst wurde.

                      Zum Vergleichsoperator === : Ich nehme eigentlich immer den ==
                      Siehe auch https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness?retiredLocale=de

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

                      @bananajoe sagte in JavaScript Syntax Verstaendnisproblem:

                      Zum Vergleichsoperator === : Ich nehme eigentlich immer den ==

                      Um es etwas verständlicher auszudrücken:
                      == prüft auf Wertgleichheit. === prüft zusätzlich noch auf Typgleichheit.

                      Beispiel:
                      Ein Vergleich zwischen einem Float 1 und einem Integer 1 liefert bei == ein true zurück. Bei === ein false.

                      "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

                      paul53P 1 Reply Last reply
                      1
                      • paul53P paul53

                        @neueklasse

                            if(obj.state.val === 'Room cleaning') {
                        
                        N Offline
                        N Offline
                        NeueKlasse
                        wrote on last edited by
                        #11

                        @paul53

                        kann es sein das die if abfrage mit der obj.state.val anders sein muss aufgrund des abgefragten objekts? siehe screenshots,
                        er setzt die 6 States so nicht auf false.

                        Screenshot 2023-02-06 132317.jpg
                        Screenshot 2023-02-06 132248.jpg

                        var idRobotState = 'mihome-vacuum.0.info.state';
                        
                        on({id: idRobotState, change: "ne"}, async function (obj) {
                        
                            if(obj.state.val == 'Room cleaning') {
                                setState('mihome-vacuum.0.rooms.315001052296.roomClean', false);
                                setState('mihome-vacuum.0.rooms.315001052297.roomClean', false);
                                setState('mihome-vacuum.0.rooms.315001052299.roomClean', false);
                                setState('mihome-vacuum.0.rooms.315001052301.roomClean', false);
                                setState('mihome-vacuum.0.rooms.315001052302.roomClean', false);
                                setState('mihome-vacuum.0.rooms.315001052303.roomClean', false);
                                setState('mihome-vacuum.0.rooms.315001052305.roomClean', false);
                            }
                        
                        });
                        
                        CodierknechtC 1 Reply Last reply
                        0
                        • N NeueKlasse

                          @paul53

                          kann es sein das die if abfrage mit der obj.state.val anders sein muss aufgrund des abgefragten objekts? siehe screenshots,
                          er setzt die 6 States so nicht auf false.

                          Screenshot 2023-02-06 132317.jpg
                          Screenshot 2023-02-06 132248.jpg

                          var idRobotState = 'mihome-vacuum.0.info.state';
                          
                          on({id: idRobotState, change: "ne"}, async function (obj) {
                          
                              if(obj.state.val == 'Room cleaning') {
                                  setState('mihome-vacuum.0.rooms.315001052296.roomClean', false);
                                  setState('mihome-vacuum.0.rooms.315001052297.roomClean', false);
                                  setState('mihome-vacuum.0.rooms.315001052299.roomClean', false);
                                  setState('mihome-vacuum.0.rooms.315001052301.roomClean', false);
                                  setState('mihome-vacuum.0.rooms.315001052302.roomClean', false);
                                  setState('mihome-vacuum.0.rooms.315001052303.roomClean', false);
                                  setState('mihome-vacuum.0.rooms.315001052305.roomClean', false);
                              }
                          
                          });
                          
                          CodierknechtC Offline
                          CodierknechtC Offline
                          Codierknecht
                          Developer Most Active
                          wrote on last edited by Codierknecht
                          #12

                          @neueklasse
                          Du prüfst auf strings.
                          Die Werte sind aber number.
                          Korrekt wäre hier:

                          if(obj.state.val == 18) {
                          

                          Das wird lediglich zur besseren Lesbarkeit in Klartext übersetzt.

                          "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

                            @bananajoe sagte in JavaScript Syntax Verstaendnisproblem:

                            Zum Vergleichsoperator === : Ich nehme eigentlich immer den ==

                            Um es etwas verständlicher auszudrücken:
                            == prüft auf Wertgleichheit. === prüft zusätzlich noch auf Typgleichheit.

                            Beispiel:
                            Ein Vergleich zwischen einem Float 1 und einem Integer 1 liefert bei == ein true zurück. Bei === ein false.

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

                            @codierknecht sagte: Ein Vergleich zwischen einem Float 1 und einem Integer 1

                            Javascript kennt keine Integer.

                            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
                            • CodierknechtC Codierknecht

                              @neueklasse
                              Du prüfst auf strings.
                              Die Werte sind aber number.
                              Korrekt wäre hier:

                              if(obj.state.val == 18) {
                              

                              Das wird lediglich zur besseren Lesbarkeit in Klartext übersetzt.

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

                              @codierknecht habe es gerade versucht, erst wenn die Funktion "on change" ausgeklammert ist funktionert es..
                              oder gibt es eine bessere Methode? z.B einen alle 60sec loop?

                              BananaJoeB 1 Reply Last reply
                              0
                              • N NeueKlasse

                                @codierknecht habe es gerade versucht, erst wenn die Funktion "on change" ausgeklammert ist funktionert es..
                                oder gibt es eine bessere Methode? z.B einen alle 60sec loop?

                                BananaJoeB Offline
                                BananaJoeB Offline
                                BananaJoe
                                Most Active
                                wrote on last edited by BananaJoe
                                #15

                                @neueklasse das ganze reagiert natürlich nur wenn sich etwas ändert. Vorher passiert nichts. Also der Wert des Datenpunktes muss sich verändern (du hast change angegeben). Der Wert muss erst z.B. 17 werden um dann wieder 18 zu werden

                                Schreib mal folgendes in die Zeile vor dem if

                                console.warn("obj.state.val: " + obj.state.val);
                                

                                Das gibt er dir dann eine Warnmeldung mit dem aktuellen Wert im Log aus, siehst du unten dann in Orange (oder im Log)

                                ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                                N 1 Reply Last reply
                                1
                                • paul53P paul53

                                  @codierknecht sagte: Ein Vergleich zwischen einem Float 1 und einem Integer 1

                                  Javascript kennt keine Integer.

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

                                  @paul53 sagte in JavaScript Syntax Verstaendnisproblem:

                                  Javascript kennt keine Integer.

                                  Eines meiner Probleme mit untypisierten Sprachen :grin:
                                  Ich könnte auch schreiben "doofe Sprache" ... aber dann gibt's wieder Haue. :innocent:

                                  "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

                                  BananaJoeB 1 Reply Last reply
                                  0
                                  • BananaJoeB BananaJoe

                                    @neueklasse das ganze reagiert natürlich nur wenn sich etwas ändert. Vorher passiert nichts. Also der Wert des Datenpunktes muss sich verändern (du hast change angegeben). Der Wert muss erst z.B. 17 werden um dann wieder 18 zu werden

                                    Schreib mal folgendes in die Zeile vor dem if

                                    console.warn("obj.state.val: " + obj.state.val);
                                    

                                    Das gibt er dir dann eine Warnmeldung mit dem aktuellen Wert im Log aus, siehst du unten dann in Orange (oder im Log)

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

                                    @bananajoe ok, alles klar, gerade getestet, jetzt funktioniert alles wie es soll!

                                    gibt es die möglichkeit 2 States abzufragen?

                                    on({id: idRobotState || idResetButton, change: "ne"}, async function (obj) {
                                    
                                    if(obj.state.val == 18) || (obj.state.val == 1) {
                                    
                                    paul53P 1 Reply Last reply
                                    0
                                    • CodierknechtC Codierknecht

                                      @paul53 sagte in JavaScript Syntax Verstaendnisproblem:

                                      Javascript kennt keine Integer.

                                      Eines meiner Probleme mit untypisierten Sprachen :grin:
                                      Ich könnte auch schreiben "doofe Sprache" ... aber dann gibt's wieder Haue. :innocent:

                                      BananaJoeB Offline
                                      BananaJoeB Offline
                                      BananaJoe
                                      Most Active
                                      wrote on last edited by
                                      #18

                                      @codierknecht sagte in JavaScript Syntax Verstaendnisproblem:

                                      @paul53 sagte in JavaScript Syntax Verstaendnisproblem:

                                      Javascript kennt keine Integer.

                                      Eines meiner Probleme mit untypisierten Sprachen :grin:
                                      Ich könnte auch schreiben "doofe Sprache" ... aber dann gibt's wieder Haue. :innocent:

                                      gib TypeScript eine Chance?

                                      ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                                      1 Reply Last reply
                                      0
                                      • N NeueKlasse

                                        @bananajoe ok, alles klar, gerade getestet, jetzt funktioniert alles wie es soll!

                                        gibt es die möglichkeit 2 States abzufragen?

                                        on({id: idRobotState || idResetButton, change: "ne"}, async function (obj) {
                                        
                                        if(obj.state.val == 18) || (obj.state.val == 1) {
                                        
                                        paul53P Offline
                                        paul53P Offline
                                        paul53
                                        wrote on last edited by paul53
                                        #19

                                        @neueklasse sagte: gibt es die möglichkeit 2 States abzufragen?

                                        Ja, dann aber nicht mit obj.state.val.

                                        on({id: [idRobotState, idResetButton], change: "ne"}, async function (obj) {
                                           if(getState(idRobotState).val == 18 || getState(idResetButton).val == 1) {
                                        

                                        oder

                                        on({id: [idRobotState, idResetButton], change: "ne"}, async function (obj) {
                                           if(obj.id == idRobotState && obj.state.val == 18 || obj.id == idResetButton && obj.state.val == 1) {
                                        

                                        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

                                        N 1 Reply Last reply
                                        1
                                        • paul53P paul53

                                          @neueklasse sagte: gibt es die möglichkeit 2 States abzufragen?

                                          Ja, dann aber nicht mit obj.state.val.

                                          on({id: [idRobotState, idResetButton], change: "ne"}, async function (obj) {
                                             if(getState(idRobotState).val == 18 || getState(idResetButton).val == 1) {
                                          

                                          oder

                                          on({id: [idRobotState, idResetButton], change: "ne"}, async function (obj) {
                                             if(obj.id == idRobotState && obj.state.val == 18 || obj.id == idResetButton && obj.state.val == 1) {
                                          
                                          N Offline
                                          N Offline
                                          NeueKlasse
                                          wrote on last edited by NeueKlasse
                                          #20

                                          @paul53

                                          dann wird hierbei (beim ersten) das (obj) nichtmehr benoetigt? zumindestens wird es laut script nicht mehr abgefragt
                                          (grau)

                                          paul53P 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

                                          660

                                          Online

                                          32.5k

                                          Users

                                          81.6k

                                          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