Programierfehler?!?!

Begonnen von JochenSi, 29 Juli 2017, 17:06:13

Vorheriges Thema - Nächstes Thema

JochenSi

Guten Abend,

Wenn ich meine Wohnungstür öffne soll über die "FHEM App" eine Push Meldung an mein Handy gehen.

Mit folgendem Code in einem notify geht das auch:

FL_SW_Wohnungstuer:open set pushmsg message 'Wohnungstür offen'


Nun möchte ich das wenn die Tür aufgeht und irgendein Fenster noch offen ist das die Meldung 'Wohnungstür und Fenster offen' kommt. Dafür habe ich das notify um folgenden Code erweitert. Leider Klappt das nicht. Ich nehme an, das ich irgendwas an der Syntax falsch gesetzt habe. Wenn ich nur einen dummy statt "set pushmsg message 'Wohnungstür und Fenster offen'" setze und nur 0 bzw. 1 setze klappt das. Also scheint die ODER-Logik zu funktionieren. Nur das ausführen der Pushmessage ist wohl falsch.

FL_SW_Wohnungstuer:open {
my $r1 = Value("d_test1");;
my $r2 = Value("d_test2");;
my $r3 = Value("d_test3");;
if ($r1 eq "on" || $r2 eq "on" || $r3 eq "on") {
  fhem "set pushmsg message 'Wohnungstür und Fenster offen'"
} else {
  fhem "set pushmsg message 'Wohnungstür offen'"
}
}


Grüße Jochen

Devender

Hi,

Wenn es dir grundsätzlich egal ist wie du es umsetzten kannst wäre folgende Loesung besser.
Ich lese die Statis der Fensterkontakte aus, die mit FK* beginnen.



sub statusFensterOffen() {

my @monitored=devspec2array("(FK.*):FILTER=STATE!=closed");
my $cnt_devs=@monitored;
my $i = 0;
        my $msgtext = "";
foreach(@monitored) {
$msgtext .= AttrVal($_,"alias",$_);
if ($i < $cnt_devs - 2) {
  $msgtext .= ", ";
}
if ($i == $cnt_devs - 2) {
  $msgtext .= " und ";
}
$i++;
}
fhem("set TTSystem tts $msgtext noch geöffnet");
return $msgtext if ($cnt_devs > 0);
       fhem("set TTSystem tts $msgtext noch geöffnet");
}



Das sollte wenn möglich in die myUtils und dann triggerst du ebenfalls mit einem Notify auf deine Haustür und rufst die Sub im notify auf.
Statt set TTSystem tts blablavla kannst du na pushmessage etc verwenden.
Den Code hatte ich auch hier aus dem Forum genommen und bissel angepasst fuer meine Zwecke damals.

Gruesse,
Dirk
FHEM 5.8 auf RasPi mit Jessy - CUL868, JeeLink Lacrosse
Komponenten: HM, IT, ELV, FB7390, FritzPL543,Sonos Play3
Mehrere Wandtablets sowie einen Smart Mirror
https://wiki.fhem.de/wiki/Anwesenheitserkennung#PRESENCE-Modul

Damian

Oder

Auszug aus der Commandref:

Zitatdefine di_Fenster DOIF (["^Window:open"])
(push "Fenster $DEVICE wurde geöffnet. Es sind folgende Fenster offen: [@"^Window":state:"open"]")
DOELSEIF ([#"^Window:closed":state:"open"] == 0)
(push "alle Fenster geschlossen")
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF