Rechenproblem

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
HABuserJM
Beiträge: 90
Registriert: 18. Apr 2021 11:30
Answers: 0
Wohnort: Berlin

Rechenproblem

Beitrag 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.

Harka
Beiträge: 317
Registriert: 30. Apr 2021 13:13
Answers: 15

Re: Rechenproblem

Beitrag 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.

HABuserJM
Beiträge: 90
Registriert: 18. Apr 2021 11:30
Answers: 0
Wohnort: Berlin

Re: Rechenproblem

Beitrag von HABuserJM »

Ja, habe ich mit Blockly erstellt, werde ich mal probieren, danke.

HABuserJM
Beiträge: 90
Registriert: 18. Apr 2021 11:30
Answers: 0
Wohnort: Berlin

Re: Rechenproblem

Beitrag 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.

Harka
Beiträge: 317
Registriert: 30. Apr 2021 13:13
Answers: 15

Re: Rechenproblem

Beitrag von Harka »

Harka hat geschrieben: 31. Mär 2024 13:08 ...numericState findest Du unter dem einfachem getStateOfItem...
Forum_getnumericState.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

HABuserJM
Beiträge: 90
Registriert: 18. Apr 2021 11:30
Answers: 0
Wohnort: Berlin

Re: Rechenproblem

Beitrag von HABuserJM »

Vielen Dank Harka, mit diesen Änderungen funktioniert mein Skript nun endlich.

Antworten