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. Skripten / Logik
  4. Objekte von Typ number in Binding auf Gleichheit in prüfen

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    21
    1
    873

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

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

Objekte von Typ number in Binding auf Gleichheit in prüfen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
7 Beiträge 2 Kommentatoren 329 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.
  • F Offline
    F Offline
    franzda
    schrieb am zuletzt editiert von franzda
    #1

    In einem Blockly-Script speichere ich nach einer Logik einen Wert der ursprünglich von einem Adapter stammt in ein User Objekt um (von 20 Werten bestimme ich den min Wert)

    Die Speicherung mache ich mit Aktualisieren und/oder Steuern.
    Die Werte sind bestätigt.

    Wenn ich in einer Binding folgende Logik bei Hintergrund Farbe eintrage

    {h1: Wert_von_Adapter; h2: Wert_von_Sript; h1==h2?"color1":"color2"} 
    

    funktioniert nicht!

    Wenn ich die Abfrage ändere und statt == auf > und/oder < abfrage wird die Hintergrundfarbe richtig angezeigt.

    Also meine Frage
    Wie muss ich einen Adapter Wert umspeichern damit ich auf Gleichheit abfragen kann.

    In der Objektdefinition kann ich keinen Unterschied erkennen. Ist die interne Speicherung abweichend?

    CodierknechtC 1 Antwort Letzte Antwort
    0
    • F franzda

      In einem Blockly-Script speichere ich nach einer Logik einen Wert der ursprünglich von einem Adapter stammt in ein User Objekt um (von 20 Werten bestimme ich den min Wert)

      Die Speicherung mache ich mit Aktualisieren und/oder Steuern.
      Die Werte sind bestätigt.

      Wenn ich in einer Binding folgende Logik bei Hintergrund Farbe eintrage

      {h1: Wert_von_Adapter; h2: Wert_von_Sript; h1==h2?"color1":"color2"} 
      

      funktioniert nicht!

      Wenn ich die Abfrage ändere und statt == auf > und/oder < abfrage wird die Hintergrundfarbe richtig angezeigt.

      Also meine Frage
      Wie muss ich einen Adapter Wert umspeichern damit ich auf Gleichheit abfragen kann.

      In der Objektdefinition kann ich keinen Unterschied erkennen. Ist die interne Speicherung abweichend?

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

      @franzda
      Sind beide DP definitiv vom gleichen Typ?

      @franzda sagte in Objekte von Typ number in Binding auf Gleichheit in prüfen:

      Ist die interne Speicherung abweichend?

      Sind das Fließkommazahlen?
      Dann wäre das schon fast normal. Bin jetzt kein JS-Experte und weiß daher nicht, wie das in JS intern gehandhabt wird. Aber in fast allen Sprachen müssen für die interne Speicherung von Fließkommazahlen einige Klimmzüge gemacht werden. Abweichungen an der x-ten Nachkommastelle sind da fast die Regel.
      Man könnte für den Wert aus dem Adapter einen Alis einrichten und den Wert über die Konvertierungsfunktion auf eine bestimmte Anzahl Nachkommastellen abschneiden.
      Das Gleiche macht man im Script für den berechnetet 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

      F 1 Antwort Letzte Antwort
      0
      • CodierknechtC Codierknecht

        @franzda
        Sind beide DP definitiv vom gleichen Typ?

        @franzda sagte in Objekte von Typ number in Binding auf Gleichheit in prüfen:

        Ist die interne Speicherung abweichend?

        Sind das Fließkommazahlen?
        Dann wäre das schon fast normal. Bin jetzt kein JS-Experte und weiß daher nicht, wie das in JS intern gehandhabt wird. Aber in fast allen Sprachen müssen für die interne Speicherung von Fließkommazahlen einige Klimmzüge gemacht werden. Abweichungen an der x-ten Nachkommastelle sind da fast die Regel.
        Man könnte für den Wert aus dem Adapter einen Alis einrichten und den Wert über die Konvertierungsfunktion auf eine bestimmte Anzahl Nachkommastellen abschneiden.
        Das Gleiche macht man im Script für den berechnetet Wert.

        F Offline
        F Offline
        franzda
        schrieb am zuletzt editiert von
        #3

        @codierknecht said in Objekte von Typ number in Binding auf Gleichheit in prüfen:

        Sind das Fließkommazahlen?

        Ja das ist absolut richtig. Fließkomma ist immer ein Thema.
        Jedoch ich speichere die Werte lediglich um somit müsste nach meinem Verständniss die Abfrage funktionieren.

        "Ungleichheit" entsteht nach Operationen (soweit ich das sehe)

        CodierknechtC 1 Antwort Letzte Antwort
        0
        • F franzda

          @codierknecht said in Objekte von Typ number in Binding auf Gleichheit in prüfen:

          Sind das Fließkommazahlen?

          Ja das ist absolut richtig. Fließkomma ist immer ein Thema.
          Jedoch ich speichere die Werte lediglich um somit müsste nach meinem Verständniss die Abfrage funktionieren.

          "Ungleichheit" entsteht nach Operationen (soweit ich das sehe)

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

          @franzda

          Jedoch ich speichere die Werte lediglich um somit müsste nach meinem Verständniss die Abfrage funktionieren.

          Ich wäre mit da jedenfalls nicht zu 100% sicher.
          Kannst Du das mal testweise mit einem kleinen Stückchen JS prüfen und Dir im Log mal die Gleichheit (als Boolean) und die Differenz der beiden Werte ausgeben lassen?

          console.log('Gleichheit: ' + (getState('alias.0.klima.x').val == getState('alias.0.klima.y').val));
          console.log('Differenz: ' + (getState('alias.0.klima.x').val - getState('alias.0.klima.y').val));
          

          Man könnte für den Wert aus dem Adapter einen Alias einrichten und den Wert über die Konvertierungsfunktion auf eine bestimmte Anzahl Nachkommastellen abschneiden.
          Das Gleiche macht man im Script für den berechnetet Wert.

          Versuch macht klug ;-)

          "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

          F 1 Antwort Letzte Antwort
          0
          • CodierknechtC Codierknecht

            @franzda

            Jedoch ich speichere die Werte lediglich um somit müsste nach meinem Verständniss die Abfrage funktionieren.

            Ich wäre mit da jedenfalls nicht zu 100% sicher.
            Kannst Du das mal testweise mit einem kleinen Stückchen JS prüfen und Dir im Log mal die Gleichheit (als Boolean) und die Differenz der beiden Werte ausgeben lassen?

            console.log('Gleichheit: ' + (getState('alias.0.klima.x').val == getState('alias.0.klima.y').val));
            console.log('Differenz: ' + (getState('alias.0.klima.x').val - getState('alias.0.klima.y').val));
            

            Man könnte für den Wert aus dem Adapter einen Alias einrichten und den Wert über die Konvertierungsfunktion auf eine bestimmte Anzahl Nachkommastellen abschneiden.
            Das Gleiche macht man im Script für den berechnetet Wert.

            Versuch macht klug ;-)

            F Offline
            F Offline
            franzda
            schrieb am zuletzt editiert von
            #5

            @codierknecht said in Objekte von Typ number in Binding auf Gleichheit in prüfen:

                                                                                                                                        console.log('Gleichheit: ' + (getState('alias.0.klima.x').val == getState('alias.0.klima.y').val));                                                                                                                                                                            console.log('Differenz: ' + (getState('alias.0.klima.x').val - getState('alias.0.klima.y').val));                                            
            

            Ja die Werte sind abweichend wie ich in meiner Frage auch angenommen habe. Verstehe aber nicht Warum.
            Ich habe die Logik auch in JS laufen Lassen. Das gleiche Ergebnis. Die Abweichung entsteht also in

            setState("0_userdata.0.König.mine10"/*mine10*/, getState("tankerkoenig.0.stations.cheapest.e10.feed").val, true);
            
            javascript.0
            2023-01-22 20:25:11.871	warn	script.js.common.iobroker1.Tankstelle.König.GleichheitAbfrageJS: Differenz: -0.020000000000000018
            javascript.0
            2023-01-22 20:25:11.871	warn	script.js.common.iobroker1.Tankstelle.König.GleichheitAbfrageJS: Gleichheit: false
            javascript.0
            2023-01-22 20:25:11.871	warn	script.js.common.iobroker1.Tankstelle.König.GleichheitAbfrageJS: Gleichheit
            
            on({id: [].concat(['0_userdata.0.König.test']), change: "ne"}, async function (obj) {
              var value = obj.state.val;
              var oldValue = obj.oldState.val;
              console.warn('Gleichheit');
              console.warn('Gleichheit: ' + (getState('0_userdata.0.König.mine10').val == getState('tankerkoenig.0.stations.4.e10.feed').val));
              console.warn('Differenz: ' +  (getState('0_userdata.0.König.mine10').val -  getState('tankerkoenig.0.stations.4.e10.feed').val));
            
            });
            
            CodierknechtC 1 Antwort Letzte Antwort
            0
            • F franzda

              @codierknecht said in Objekte von Typ number in Binding auf Gleichheit in prüfen:

                                                                                                                                          console.log('Gleichheit: ' + (getState('alias.0.klima.x').val == getState('alias.0.klima.y').val));                                                                                                                                                                            console.log('Differenz: ' + (getState('alias.0.klima.x').val - getState('alias.0.klima.y').val));                                            
              

              Ja die Werte sind abweichend wie ich in meiner Frage auch angenommen habe. Verstehe aber nicht Warum.
              Ich habe die Logik auch in JS laufen Lassen. Das gleiche Ergebnis. Die Abweichung entsteht also in

              setState("0_userdata.0.König.mine10"/*mine10*/, getState("tankerkoenig.0.stations.cheapest.e10.feed").val, true);
              
              javascript.0
              2023-01-22 20:25:11.871	warn	script.js.common.iobroker1.Tankstelle.König.GleichheitAbfrageJS: Differenz: -0.020000000000000018
              javascript.0
              2023-01-22 20:25:11.871	warn	script.js.common.iobroker1.Tankstelle.König.GleichheitAbfrageJS: Gleichheit: false
              javascript.0
              2023-01-22 20:25:11.871	warn	script.js.common.iobroker1.Tankstelle.König.GleichheitAbfrageJS: Gleichheit
              
              on({id: [].concat(['0_userdata.0.König.test']), change: "ne"}, async function (obj) {
                var value = obj.state.val;
                var oldValue = obj.oldState.val;
                console.warn('Gleichheit');
                console.warn('Gleichheit: ' + (getState('0_userdata.0.König.mine10').val == getState('tankerkoenig.0.stations.4.e10.feed').val));
                console.warn('Differenz: ' +  (getState('0_userdata.0.König.mine10').val -  getState('tankerkoenig.0.stations.4.e10.feed').val));
              
              });
              
              CodierknechtC Online
              CodierknechtC Online
              Codierknecht
              Developer Most Active
              schrieb am zuletzt editiert von
              #6

              @franzda
              Wieviele Nachkommastellen sind denn relevant?

              Ich kenne mich mit den Bindings nicht wirklich aus, aber vielleicht funzt ja sowas:

              {h1: Wert_von_Adapter; h2: Wert_von_Sript; trunc(h1*100)/100==trunc(h2*100)/100?"color1":"color2"}
              

              oder vielleicht auch so:

              {h1: trunc(Wert_von_Adapter*100)/100; h2: trunc(Wert_von_Sript*100)/100; h1==h2?"color1":"color2"} 
              

              "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

              F 1 Antwort Letzte Antwort
              0
              • CodierknechtC Codierknecht

                @franzda
                Wieviele Nachkommastellen sind denn relevant?

                Ich kenne mich mit den Bindings nicht wirklich aus, aber vielleicht funzt ja sowas:

                {h1: Wert_von_Adapter; h2: Wert_von_Sript; trunc(h1*100)/100==trunc(h2*100)/100?"color1":"color2"}
                

                oder vielleicht auch so:

                {h1: trunc(Wert_von_Adapter*100)/100; h2: trunc(Wert_von_Sript*100)/100; h1==h2?"color1":"color2"} 
                
                F Offline
                F Offline
                franzda
                schrieb am zuletzt editiert von
                #7

                @codierknecht
                Kommando zurück.

                Mir ist eingefallen, dass ich schonmal ein Problem hatte dasbolded text nach Neustart sich aufgelöst hatte.
                Ich habe eben Raspi neu gestartet und browser cashe gelöscht.

                Es sieht so aus das jetzt alles klar ist.
                Prüfe nochmal und melde mich neu wenn doch nicht.

                Danke für Deine schnelle Hilfe

                H

                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

                780

                Online

                32.5k

                Benutzer

                81.6k

                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