FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Markus Hermann am 28 April 2013, 10:35:41

Titel: notify & Value()
Beitrag von: Markus Hermann am 28 April 2013, 10:35:41
Hallo Forum,

ich habe mehrere HM-SEC-SC (sec_1 bis sec_7) und einen HM-SEC-MDIR (HM_PIRI) die per notify den Dummy-Schalter "Alarm" auf "on"
setzen soll, aber nur wenn ein weiterer Dummy "Alarm_sw" schon auf auf "on" steht.

Bei dem 1.) notify klappt das auch, aber beim 2. nicht. Was mache ich falsch?
Im Log steht leider nichts. Ich vermute mein Value("sec_.*) eq "open" ist nicht korrekt, oder?

1.)
define AlarmPIRI notify HM_PIRI.*:* {if (  Value("Alarm_sw") eq "on" && Value("HM_PIRI") eq "motion") {fhem("set Alarm on") }}

2.)
define AlarmSEC notify sec_.*:open  {if (  Value("Alarm_sw") eq "on" && Value("sec_.*")  eq "open")   {fhem("set Alarm on") }}

Gruß
Markus
Titel: Aw: notify & Value()
Beitrag von: justme1968 am 28 April 2013, 11:01:00
Value() funktioniert mit einem device namen nicht mit einem regulären ausdruck. du fragst damit den zustand von genau einem device ab. wenn du mehrere devices zusammen fassen möchtest kannst du das z.b. mit einer structure machen und dann den zusammen gefasten status der structure abfragen.

gruss
  andre
Titel: Aw: notify & Value()
Beitrag von: UliM am 28 April 2013, 11:02:53
Zitat von: Markus Hermann schrieb am So, 28 April 2013 10:35Ich vermute mein Value("sec_.*) eq "open" ist nicht korrekt, oder?
Hiho,
sehe ich auch so. Es soll der Value eines device geprüft werden, dessen Name "sec_.*" lautet.

M.E. musst Du die secs durch-loopen mit sowas wie
my $alarm=0;
my $dev="";
foreach (1..7) {
   $dev="sec_".$_;
   if (Value("$dev") eq "open") {
     $alarm=1;
   }
}
if ( Value("Alarm_sw") eq "on" && $alarm == 1) {
   fhem("set Alarm on") }
}


Ungetestet.

Viel Erfolg,
Uli
Titel: Aw: notify & Value()
Beitrag von: stromer-12 am 28 April 2013, 11:10:24
Hi,

Zitat von: Markus Hermann schrieb am So, 28 April 2013 10:35define AlarmSEC notify sec_.*:open  {if (  Value("Alarm_sw") eq "on" && Value("sec_.*")  eq "open")   {fhem("set Alarm on") }}

ich habe zwar kein HM aber es sollte mit:

define AlarmSEC notify sec_.*:open  {if (  Value("Alarm_sw") eq "on" && Value("$NAME")  eq "open")   {fhem("set Alarm on") }}

funktionieren.

Edit:
Bzw das notify löst ja bei "open" aus, also brauchst du ja nur auf "Alarm_sw" testen.
Titel: Aw: notify & Value()
Beitrag von: Zrrronggg! am 28 April 2013, 13:21:45
define AlarmSEC notify sec_.*:open ...


funktioniert defintiv. Benutze ich an diversen Stellen. Die Art des Devices ist unerheblich.


Vergleiche hierzu auch den Artikel Alarmanlage im Wiki
Titel: Aw: notify & Value()
Beitrag von: stromer-12 am 28 April 2013, 13:26:05
Ich meinte das er innerhalb des notify auf den Test "open" verzichten kann.

define AlarmSEC notify sec_.*:open {if ( Value("Alarm_sw") eq "on" ) {fhem("set Alarm on") }}
Titel: Aw: notify & Value()
Beitrag von: Markus Hermann am 28 April 2013, 20:22:06
ZitatIch meinte das er innerhalb des notify auf den Test "open" verzichten kann.

define AlarmSEC notify sec_.*:open {if ( Value("Alarm_sw") eq "on" ) {fhem("set Alarm on") }}


jupp, so geht es auch :-)

Danke an alle für die Tipps