Seite 1 von 1

Rechenproblem

Verfasst: 31. Mär 2024 12:26
von HABuserJM
Hallo,
ich habe einen Zigbee Helligkeitssensor, welcher über Zigbee2MQTT einen Wert in lux ausgibt. Also habe ich eine Regel erstellt welche folgendes Skript nach einer Änderung des Helligkeitswertes ausführt :

Code: Alles auswählen

if (items.getItem('Lichtsensor_1_Helligkeit_String').state < '15') {
            console.info('Helligkeit zu gering');
            if (items.getItem('Kerze_Helligkeit').state <= '10') {
              items.getItem('Kerze_Helligkeit').sendCommand('30');
              console.info('Flurlicht über Helligkeit an');
            }
          } else if (items.getItem('Lichtsensor_1_Helligkeit_String').state > '25') {
            console.info('Helligkeit ausreichend');
            if (items.getItem('Kerze_Helligkeit').state >= '11') {
              items.getItem('Kerze_Helligkeit').sendCommand('0');
              console.info('Flurlicht über Helligkeit aus');
            }
          }
Bei der ersten Helligkeitsprüfung stehe ich aber vor einem Rätsel. Bei Werten zwischen 15 und 99, sowie über 199 ist die Helligkeit ausreichend und die Lampe wird nicht geschaltet. Habe ich aber Hunderter Werte, ist der Vergleich der Meinung die Helligkeit wäre unter 15 und schaltet die Lampe ein.
Ist das ein allgemeines JavaScript Problem oder woran liegt es? Es ist übrigens egal, ob das Item vom Typ Number oder String ist.

Re: Rechenproblem

Verfasst: 31. Mär 2024 13:08
von Harka
Moin,
versuch mal bitte

Code: Alles auswählen

if (items.getItem('Lichtsensor_1_Helligkeit_String').numericState < 15) {
Vergleiche müssen immer Number ><= Number oder String ><= String sein. Dabei funktioniert der Vergleich bei String aber anders ('2' > '19').

Ich vermute mal, Du hast das mit Blockly erstellt? numericState findest Du unter dem einfachem getStateOfItem und für die Zahlen gibt es Math die blauen "Dinger". Dort findest Du auch Number(parseFloat) welches ich aber als 2.Wahl ansehe.

Re: Rechenproblem

Verfasst: 1. Mai 2024 20:11
von HABuserJM
Ja, habe ich mit Blockly erstellt, werde ich mal probieren, danke.

Re: Rechenproblem

Verfasst: 2. Mai 2024 19:41
von HABuserJM
Tja, also die blauen Math Teile kann ich leider nicht die Vergleiche < oder > als Operator einfügen und mit den grünen Strings funktioniert die Rechnung nicht.

Re: Rechenproblem

Verfasst: 2. Mai 2024 20:00
von Harka
Harka hat geschrieben: 31. Mär 2024 13:08 ...numericState findest Du unter dem einfachem getStateOfItem...
Forum_getnumericState.png

Re: Rechenproblem

Verfasst: 4. Mai 2024 10:17
von HABuserJM
Vielen Dank Harka, mit diesen Änderungen funktioniert mein Skript nun endlich.