Telegram String innerhalb {} notify

Begonnen von rohlande, 27 Dezember 2016, 23:16:40

Vorheriges Thema - Nächstes Thema

rohlande

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
HostSystem: Synology DS918 | FHEM im Docker Version: 6.0-s22528_v2.2.4 (dedizierte IP Adresse) | MQTT_Broker auf DS918 NAS | MQTT_FHEM | TASMOTA_DEVICE | SSChatBot | SSCam | LaMetric | FBAHAHTTP | CUL | SONOS | HUEBridge (deCONZ) Zigbee | FB_CALLMONITOR | InfluxDBLogger

dev0

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?

rohlande

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
HostSystem: Synology DS918 | FHEM im Docker Version: 6.0-s22528_v2.2.4 (dedizierte IP Adresse) | MQTT_Broker auf DS918 NAS | MQTT_FHEM | TASMOTA_DEVICE | SSChatBot | SSCam | LaMetric | FBAHAHTTP | CUL | SONOS | HUEBridge (deCONZ) Zigbee | FB_CALLMONITOR | InfluxDBLogger

dev0

Versuch mal das @ zu escapen: entweder mit einem \ oder einem weiteren @ davor.

rohlande

Hallo ,

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

Gruss Denny
HostSystem: Synology DS918 | FHEM im Docker Version: 6.0-s22528_v2.2.4 (dedizierte IP Adresse) | MQTT_Broker auf DS918 NAS | MQTT_FHEM | TASMOTA_DEVICE | SSChatBot | SSCam | LaMetric | FBAHAHTTP | CUL | SONOS | HUEBridge (deCONZ) Zigbee | FB_CALLMONITOR | InfluxDBLogger

ramses

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

viegener

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)
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können