FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Thomas41587 am 04 Dezember 2019, 10:07:54

Titel: DOIF - Telegram Nachricht an definierten Peer versenden - Syntax?
Beitrag von: Thomas41587 am 04 Dezember 2019, 10:07:54
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.
Titel: Antw:DOIF - Telegram Nachricht an definierten Peer versenden - Syntax?
Beitrag von: Damian am 04 Dezember 2019, 10:36:25
in Perl wird @ in doppelten Anführungszeichen mit \@ maskiert.
Titel: Antw:DOIF - Telegram Nachricht an definierten Peer versenden - Syntax?
Beitrag von: Thomas41587 am 04 Dezember 2019, 10:51:17
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 ">"