Hallo zusammen,
da ich die Haustüröffnung gerne über FHEM überwachen möchte, habe ich mir ein entsprechendes DOIF im Perl-Modus gebastelt:
test {
if([S7_DRead_aussenbereich_eingangstuer_tk:state] eq "off"){
fhem("get IPCAM_aussenbereich_hof image; set TelegramBot message @@T***7 Eingangstuer wurde geoeffnet; sleep 5; set TelegramBot sendPhoto @@T***7 /opt/fhem/www/snapshots/IPCAM_aussenbereich_hof_snapshot.jpg");
Log3 doif_aussenbereich_tuer_warnung, 3, "doif_aussenbereich_tuer_warnung: Haustuer geöffnet";
}
else{
Log3 doif_aussenbereich_tuer_warnung, 3, "doif_aussenbereich_tuer_warnung: Haustuer geschlossen";
}
}
Aber irgendwie bekomme ich die Telegramm-Nachricht einfach nicht versendet :( Hatte es auch testweise mit @T***7 sowie \@@T***7 probiert, aber das klappt ebenfalls nicht.
Wie lautet hier die richtige Syntax? Über die Suche finde ich leider nur Threads, in denen an den default-peer versendet wird (und somit kein @ in der definition steht).
Das Fehlerbild ist übrigens folgendes:
condition c01: Global symbol "@T***7" requires explicit package name (did you forget to declare "my @T***7"?) at (eval 12259467) line 3.
Global symbol "@T***7" requires explicit package name (did you forget to declare "my @T***7"?) at (eval 12259467) line 3.
in Perl wird @ in doppelten Anführungszeichen mit \@ maskiert.
Jetzt hat es Klick gemacht, ich muss natürlich beide @'s escapen.... ::) Danke für den Hinweis
Jetzt wird das doif zumindest ausgeführt:
defmod doif_aussenbereich_tuer_warnung DOIF test {\
if([buetest:state] eq "off"){\
fhem("get IPCAM_aussenbereich_hof image;; set TelegramBot message \@\@T***7 Eingangstuer wurde geoeffnet;; sleep 5;; set TelegramBot sendPhoto \@\@T***7 /opt/fhem/www/snapshots/IPCAM_aussenbereich_hof_snapshot.jpg");;\
Log3 3, "doif_aussenbereich_tuer_warnung: Haustuer geöffnet";;\
}\
else{\
Log3 3, "doif_aussenbereich_tuer_warnung: Haustuer geschlossen";;\
}\
}
Allerdings wirft es mir noch Warnungen aus, die ich nicht wirklich deuten kann:
condition c01: Use of uninitialized value $text in concatenation (.) or string at fhem.pl line 979.
Und im Log:
2019.12.04 10:45:55.958 1: PERL WARNING: Argument "doif_aussenbereich_tuer_warnung: Haustuer geöffnet" isn't numeric in numeric gt (>) at fhem.pl line 963.
2019.12.04 10:45:55.959 3: eval: doif_aussenbereich_tuer_warnung: warning in condition c01
2019.12.04 10:45:55.959 doif_aussenbereich_tuer_warnung: Haustuer geöffnet:
2019.12.04 10:46:15.407 1: PERL WARNING: Argument "doif_aussenbereich_tuer_warnung: Haustuer geschlossen" isn't numeric in numeric gt (>) at fhem.pl line 963.
2019.12.04 10:46:15.407 3: eval: doif_aussenbereich_tuer_warnung: warning in condition c01
2019.12.04 10:46:15.407 doif_aussenbereich_tuer_warnung: Haustuer geschlossen:
Ich nutze weder eine $text Variable noch ein "gt" bzw ">"