[Gelöst]DOIF Error: Can't modify non-lvalue subroutine call in scalar assignment

Begonnen von Spezialtrick, 11 Juni 2017, 20:28:22

Vorheriges Thema - Nächstes Thema

Spezialtrick

Hallo,

bei folgendem DOIF

([BZ.Klimasensor:schimmelGefahr] eq "ja"   and [BZ.Klimasensor:lueftenMoeglich] eq "ja"   and [BZ.Fenster:state] eq "closed") (msg push @[Anwesenheit:residentsHomeDevs] Lüften im Bad notwendig!) DOELSEIF
([BZ.Klimasensor:schimmelGefahr] eq "ja"   and [BZ.Klimasensor:lueftenMoeglich] eq "ja"   and [BZ.Fenster:state] eq "open")   DOELSEIF
([BZ.Klimasensor:schimmelGefahr] eq "nein" and [BZ.Klimasensor:lueftenMoeglich] eq "nein" and [BZ.Fenster:state] eq "closed") DOELSEIF
([BZ.Klimasensor:schimmelGefahr] eq "nein" and [BZ.Klimasensor:lueftenMoeglich] eq "nein" and [BZ.Fenster:state] eq "open" and [BZ.Klimasensor:humdiff_avg] < -0.001) DOELSEIF 
([BZ.Klimasensor:schimmelGefahr] eq "nein" and [BZ.Klimasensor:lueftenMoeglich] eq "nein" and [BZ.Fenster:state] eq "open" and [BZ.Klimasensor:humdiff_avg] = 0) DOELSEIF
([BZ.Klimasensor:schimmelGefahr] eq "nein" and [BZ.Klimasensor:lueftenMoeglich] eq "nein" and [BZ.Fenster:state] eq "open" and [BZ.Klimasensor:humdiff_avg] > 0.001) (msg push @[Anwesenheit:residentsHomeDevs] Fenster im Bad schließen - Luftfeuchtigkeit steigt!) DOELSEIF
([BZ.Klimasensor:schimmelGefahr] eq "ja"   and [BZ.Klimasensor:lueftenMoeglich] eq "nein" and [BZ.Fenster:state] eq "closed") DOELSEIF
([BZ.Klimasensor:schimmelGefahr] eq "ja"   and [BZ.Klimasensor:lueftenMoeglich] eq "nein" and [BZ.Fenster:state] eq "open" and [BZ.Klimasensor:humdiff_avg] < -0.001) DOELSEIF
([BZ.Klimasensor:schimmelGefahr] eq "ja"   and [BZ.Klimasensor:lueftenMoeglich] eq "nein" and [BZ.Fenster:state] eq "open" and [BZ.Klimasensor:humdiff_avg] = 0) DOELSEIF
([BZ.Klimasensor:schimmelGefahr] eq "ja"   and [BZ.Klimasensor:lueftenMoeglich] eq "nein" and [BZ.Fenster:state] eq "open" and [BZ.Klimasensor:humdiff_avg] > 0.001) (msg push @[Anwesenheit:residentsHomeDevs] Fenster im Bad schließen - Lüften bringt nichts - Luftfeuchtigkeit steigt!) DOELSEIF
([BZ.Klimasensor:schimmelGefahr] eq "nein" and [BZ.Klimasensor:lueftenMoeglich] eq "ja"   and [BZ.Fenster:state] eq "closed") DOELSEIF
([BZ.Klimasensor:schimmelGefahr] eq "nein" and [BZ.Klimasensor:lueftenMoeglich] eq "ja"   and [BZ.Fenster:state] eq "open")


erhalte ich diese Fehlermeldung:

condition c05: Can't modify non-lvalue subroutine call in scalar assignment, line 1, at EOF

Hat jemand eine Idee woran es liegt und was die Fehlermeldung bedeutet?


FHEM - Debmatic - Zigbee2MQTT - Homekit

Thorsten Pferdekaemper

Hi,
Vergleiche in Perl gehen mit "==" und nicht mit "=". Das gilt wahrscheinlich auch für DOIF.
Gruß,
   Thorsten
FUIP

Spezialtrick

Zitat von: Thorsten Pferdekaemper am 11 Juni 2017, 20:31:08
Hi,
Vergleiche in Perl gehen mit "==" und nicht mit "=". Das gilt wahrscheinlich auch für DOIF.
Gruß,
   Thorsten

Danke für die rasend schnelle Hilfe!  :)
FHEM - Debmatic - Zigbee2MQTT - Homekit

Damian

Zitat von: Spezialtrick am 11 Juni 2017, 20:36:31
Danke für die rasend schnelle Hilfe!  :)

Bedingungen in DOIF sind "aufgebohrtes" Perl ;) d. h. alles außerhalb eckiger Klammern ist Perl.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Spezialtrick

Zitat von: Damian am 11 Juni 2017, 20:39:04
Bedingungen in DOIF sind "aufgebohrtes" Perl ;) d. h. alles außerhalb eckiger Klammern ist Perl.

Ok, das merke ich mir. :)

Ich hätte noch eine Frage zu diesem Teil:

and [BZ.Klimasensor:humdiff_avg] == 0)

Dieser Teil trifft nur zu, wenn humdiff_avg tatsächlich exakt 0 ist oder? Wie würde man den Bereich von -0.001 bis 0.001 abdecken?
FHEM - Debmatic - Zigbee2MQTT - Homekit

Damian

Zitat von: Spezialtrick am 11 Juni 2017, 20:50:18
Ok, das merke ich mir. :)

Ich hätte noch eine Frage zu diesem Teil:

and [BZ.Klimasensor:humdiff_avg] == 0)

Dieser Teil trifft nur zu, wenn humdiff_avg tatsächlich exakt 0 ist oder? Wie würde man den Bereich von -0.001 bis 0.001 abdecken?

so wie man das in höheren Programmiersprachen macht:

[BZ.Klimasensor:humdiff_avg] >= -0.001 and [BZ.Klimasensor:humdiff_avg] <= 0.001
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Spezialtrick

Zitat von: Damian am 11 Juni 2017, 21:05:40
so wie man das in höheren Programmiersprachen macht:

[BZ.Klimasensor:humdiff_avg] >= -0.001 and [BZ.Klimasensor:humdiff_avg] <= 0.001

Ich beherrsche leider keinerlei Programmiersprachen. Vielen Dank!
FHEM - Debmatic - Zigbee2MQTT - Homekit

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF