FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: rohlande am 27 Dezember 2016, 23:16:40

Titel: Telegram String innerhalb {} notify
Beitrag von: rohlande am 27 Dezember 2016, 23:16:40
Hallo Experten,

ich versuche seit einiger Zeit meinen Telegramm Bot zum senden innerhalb einer if Anweisung zu bekommen.
Leider klappt das nicht.
Es wäre schön wenn Ihr mir meinen Fehler aufzeigen könntet.
hier der Teil aus der DEV:

Spritpreis {
    if (Value("spritpreis_change") eq "nein") {
        fhem("set teleBot msg @XXXXXX 'Aktueller Spritpreis' '$EVENT'");
        fhem("set spritpreis_change ja");
        fhem("define status_spritpreis at +4:00:00 set spritpreis_change nein");
    }
}


Es handelt sich hierbei um einen Filter, welcher das ständige senden alle 5 min unterdrückt. Leider bringt das httpmod so mit sich.

Gruss Denny
Titel: Antw:Telegram String innerhalb {} notify
Beitrag von: dev0 am 28 Dezember 2016, 07:57:50
Zitat von: rohlande am 27 Dezember 2016, 23:16:40
Leider klappt das nicht.
Das ist nicht sehr aussagekräftig.
Was klappt nicht?
Fehler im FHEM log?
Titel: Antw:Telegram String innerhalb {} notify
Beitrag von: rohlande am 28 Dezember 2016, 09:28:44
Hallo,

Oh Entschuldigung, ja das wird natürlich benötigt. Ich kenne mich mit Perl nicht aus von daher denke ich das ich die Syntax falsch aufgebaut habe.
hier der LOG:

2016.12.28 09:26:05 1: PERL WARNING: Possible unintended interpolation of @XXXXX in string at (eval 2456) line 3.

2016.12.28 09:26:05 3: OUT.n_spritpreis_change return value: Global symbol "@XXXXX" requires explicit package name at (eval 2456) line 3.


Gruss Denny
Titel: Antw:Telegram String innerhalb {} notify
Beitrag von: dev0 am 28 Dezember 2016, 09:50:49
Versuch mal das @ zu escapen: entweder mit einem \ oder einem weiteren @ davor.
Titel: Antw:Telegram String innerhalb {} notify
Beitrag von: rohlande am 29 Dezember 2016, 10:50:46
Hallo ,

Vielen Vielen Dank.
Funktioniert jetzt auch innerhalb der "sub".

Gruss Denny
Titel: Antw:Telegram String innerhalb {} notify
Beitrag von: ramses am 01 Mai 2017, 09:11:02
Hi,

es wäre gut, wenn jemand die Wiki und cmdref ergänzen würde, da diese Fälle, wo man aus notify's DEFs Nachrichten schicken möchte, leider nicht ausreichend dokumentiert ist. @ escapen mit einem 2ten @ funkt leider nicht und führt zu den Fehler weiter oben.

Also der richtige Ausdruck, wenn jemand kein default peer definiert hat, bzw. an mehrere Empfänger, lautet (Auszug aus der Waschmaschine Benachrichtigung):

WaschmaschineBetrieb:standby {fhem("set TelegrammBot message \@UserName1 \@UserName2 Waschmaschine fertig!")}

ich schreibe deshalb, weil ich viel gesucht habe bis ich die richtige Weise gefunden habe, wie man @ escaped
Titel: Antw:Telegram String innerhalb {} notify
Beitrag von: viegener am 01 Mai 2017, 10:50:32
Zur Erklärung, das hat nichts mit TelegramBot oder FHEM zu tun, das hat einfach mit perl zu tun.
Innerhalb von Perl ist @ (genausowie $ und %) ein spezielles Zeichen, dass man escapen muss, wenn es in einem String mit doppelten Anführungszeichen steht. Es muss nicht escaped werden, wenn es in einfachen Anführungszeichen (') steht.

Wenn Du es gerne im wiki hättest, gute Idee schreib es doch rein - Mitmachen ist notwendig und tut nicht weh  ;)
(Das ist ernst gemeint)