Problem mit notify "und" und mehrere "oder"

Begonnen von cerberus, 05 August 2014, 21:53:14

Vorheriges Thema - Nächstes Thema

cerberus

Hallo, ich habe folgende Problem mit einem notify. Es soll ein Alarm ausgelöst werden wenn einmal die Bedingung ANLAGE_STATUS "scharf" und Alarmgruppe_Fenster_OG_aktiv_inaktiv "aktiv" oder eben "extern" erfüllt sind. Leider scheint das mit meinem Code nicht zu funktionieren, den es wird auch Alarm ausgelöst wenn nur die Bedingung Alarmgruppe_Fenster_OG_aktiv_inaktiv "extern" gesetzt ist ohne das der ANLAGEN_STATUS "scharf" ist. Das "&&" scheint gänzlich ignoriert zu werden. Frage, müssen die beiden || eventuell zusammen geklammer oder kann ich das || anders angeben z.B. so Value("Alarmgruppe_Fenster_OG ) eq "aktiv|extern" ?


define act_on_extern_Fenster_OG notify Alle_Fenster_OG:offen {\
if (Value("ANLAGE_STATUS") eq "scharf" && Value("Alarmgruppe_Fenster_OG_aktiv_inaktiv") eq "aktiv" || Value("Alarmgruppe_Fenster_OG_aktiv_inaktiv") eq "extern") {\
fhem("set ALARM_STATUS ALARM ;; set ALARM_Melder on");;\
DebianMail('xxx.xxx@@gmail.com', 'FHEM Zutrittsalarm', 'Fenster OG ausgelöst');;\
}\
}


Danke und Gruß
cerberus
Banana PI mit Bananian + Fhem 5.5, 2x SCC SlowRF/Homematic + RS485 LAN Gateway HMW-LGW-O-DR-GS-EU + RPI2 I2C to 1-Wire Host Adapter for Raspberry Pi

Bennemannc

Hallo,

bei oder müssen immer Klammern drum also Alarm && ( ... || ...) - mal nur so eine Frage am Rande: wieviel Möglichkeiten gibt es bei den Fenstern ? Wenn es drei sind, kannst Du auch nur nach "ne" (nicht gleich) dritte Status sein. Dann kannst Du Dir das mit dem oder sparen.

Gruß Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

AK-868

#2
Ich habe das gleiche Problem auch schon gepostet gehabt.  http://forum.fhem.de/index.php/topic,25601.msg187262.html#msg187262

Mal gehts mal nicht. Heute gings wieder nicht mehr.

Ich hab auch schon einiges umgeschrieben und gemacht und getan.
Mit den Parametern...

Uhrzeit  : 5:30 Uhr
fc1_high_c : 25
Hell: Ja

...wurden die JL hochgefahren. So wie der code lautet, hätte er nicht hochfahren dürfen!

Bennemannc, guter Rat funktioniert aber nicht.


define notify_Hell notify Hell:Ja {\
if ((ReadingsVal("Wetter", "fc1_high_c", "20") le "19" || $hour ge "12") && ReadingsVal("Hell", "state", "") eq "Ja")\
{ JLhochfahren() }\
Log 3, "Jalousien wurden hochgefahren Hell";;\
}
Hardware FHEM:
Neue Fritzbox 7390 keine Labor von AVM
Konfigurationsadapter Lan
Funk-Schließerkontaktschnittstellen
Funk-Fenster/Türkontakt
Funk-Schaltaktoren UP ein und zweifach
Funk-Jalousieaktoren
Funk-Rauchmelder


krikan

Zitat(ReadingsVal("Wetter", "fc1_high_c", "20") le "19" || $hour ge "12")

Könnte es evtl. daran liegen, dass Du Zahlen mit http://de.wikibooks.org/wiki/Perl-Programmierung:_Operatoren#Stringvergleichende_Operatoren vergleichst, statt mit binären Operatoren?

Bennemannc

Hallo,

ich denke auch, das hier zwei unterschiedliche Probleme vorliegen. Im ersten Thread fehlen die Klammern um die Oder Bedingungen. Im zweiten Fall würde ich das auch mal mit >= oder  <= versuchen.

Gruß Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

AK-868

#5
Komisch ist nur das der code schonmal lief.

Wie dem auch sei.

So hat es nicht geklappt:
wenn "xx" = true && ( yy || zz =true )
ausführen()

So hat es geklappt "oder" zuerst:
wenn (( yy || zz =true ) && xx = true)
ausführen()

So läufts


define notify_Hell notify Hell:Ja {\
if ((ReadingsVal("Wetter", "fc1_high_c", "20") <= "19" || $hour >= "12") && ReadingsVal("Hell", "state", "") eq "Ja")\
{ JLhochfahren() }\
Log 3, "Jalousien wurden hochgefahren Hell";;\
}


@cerberus
Wenn das nicht tut änder das Value mal und lies das Reading mit zum Beispiel ReadingsVal("Alarmgruppe_Fenster_OG_aktiv_inaktiv", "state", "ersatzwert") eq "aktiv"
Du könntest dir auch zusenden lassen welches Fenster offen ist. Da müsstest du nur dein notify anpassen und ggf deine Sensoren umbennen. In die message dann einfach @

Bsp.
dein Fenstersensor z.B. : sensOG_Fenster1

define ntfy_Fenster_OG notify sensOG.*:open {\
if ((Value("Alarmgruppe_Fenster_OG_aktiv_inaktiv") eq "aktiv" || Value("Alarmgruppe_Fenster_OG_aktiv_inaktiv") eq "extern")  && Value("ANLAGE_STATUS") eq "scharf") {\
fhem("set ALARM_STATUS ALARM ;; set ALARM_Melder on");;\
DebianMail('xxx.xxx@@gmail.com', 'FHEM Zutrittsalarm', 'Fenster @ ausgelöst');;\
}\
}

Dein aktueller Code modifiziert. Probiers mal aus.

define act_on_extern_Fenster_OG notify Alle_Fenster_OG:offen {\
if ((Value("Alarmgruppe_Fenster_OG_aktiv_inaktiv") eq "aktiv" || Value("Alarmgruppe_Fenster_OG_aktiv_inaktiv") eq "extern")  && Value("ANLAGE_STATUS") eq "scharf") {\
fhem("set ALARM_STATUS ALARM ;; set ALARM_Melder on");;\
DebianMail('xxx.xxx@@gmail.com', 'FHEM Zutrittsalarm', 'Fenster OG ausgelöst');;\
}\
}


Edit meint ich soll mich noch bedanken.

Danke

Gruß Andre
Hardware FHEM:
Neue Fritzbox 7390 keine Labor von AVM
Konfigurationsadapter Lan
Funk-Schließerkontaktschnittstellen
Funk-Fenster/Türkontakt
Funk-Schaltaktoren UP ein und zweifach
Funk-Jalousieaktoren
Funk-Rauchmelder


Icinger

Zitatif ((ReadingsVal("Wetter", "fc1_high_c", "20") <= "19" || $hour >= "12") && ReadingsVal("Hell", "state", "") eq "Ja")\

In jeder anderen Programmiersprache würdest du immer noch Zahlen mit Strings vergleichen.....

Die Anführugszeichen vor und nach den Zahlen müssen nicht sein ("19" != 19)
Perl is da ja sehr kulant, aber verwirrend isses trotzdem
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

cerberus

Hallo, danke euch allen für die guten Tipps. Ich habe die Bedingungen welche mit oder verknüpft sind noch separat geklammert. So bekomme ich zumindest keine Alarmauslösung auch wenn die Anlage nicht unscharf ist. Weitere Tests kann ich erst nach meinen Urlaub machen, den meine Frau mag das gar nicht ;-).

Bis später und Grüße euch allen.
cerberus
Banana PI mit Bananian + Fhem 5.5, 2x SCC SlowRF/Homematic + RS485 LAN Gateway HMW-LGW-O-DR-GS-EU + RPI2 I2C to 1-Wire Host Adapter for Raspberry Pi

Bennemannc

Hallo,

wie kann das denn, dass Deine Frau das nicht mag ;D. Irgendwie scheint sich das bei den Meisten von uns so zu verhalten.
Bei meiner Frau kommen dann schon mal so Aussagen " und wie bekomme ich die Rollos bei Stromausfall hoch" - natürlich gar nicht, aber das ging auch vor fhem mit elektrischen Rollos schon nicht  ;)

Gruß Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF