FHEM Forum

FHEM => Sonstiges => Thema gestartet von: ahermann86 am 29 Juni 2021, 13:03:36

Titel: HTTPMOD und callmebot set Problem
Beitrag von: ahermann86 am 29 Juni 2021, 13:03:36
Hallo,

ich versuche über www.callmebot.com (http://www.callmebot.com) und HTTPMOD eine Nachricht an mich zu versenden (Als Alternative zu Pushnotifier..).

Grundsätzlich funktioniert das auch so:


defmod CallMeBotAxel HTTPMOD none 0
attr CallMeBotAxel room System
attr CallMeBotAxel set01Name Msg
attr CallMeBotAxel set01TextArg 1
attr CallMeBotAxel set01URL https://api.callmebot.com/signal/send.php?phone=+49MEINENUMMER&apikey=MEINKEY&text=$val


Allerdings mit nur einem Wort. Wenn ich das über den Browser mache, muss ich zwischen die Wörter %20 einfügen.
Wie bekomme ich das mit HTTPMOD hin? Mit Regex müsste das doch gehen...

So in der Art: attr CallMeBotAxel set01Expr $val =~ s/ /%20/

Wo liegt mein Denkfehler..?

Gruß
Axel
Titel: Antw:HTTPMOD und callmebot set Problem
Beitrag von: StefanStrobel am 30 Juni 2021, 19:45:57
Hallo Axel,

probier mal

attr CallMeBotAxel set01IExpr $val =~ s/\s/%20/g;; $val;


Die Option g ist wichtig, sonst wird nur ein Space ersetzt.
Das Ergebnis der Expression wir als Wert verwendet. Deshalb am Ende nochmal ;; $val.

Gruss
   Stefan
Titel: Antw:HTTPMOD und callmebot set Problem
Beitrag von: loescher am 19 Juli 2021, 20:30:43
Hallo Axel,

Habe gerade diesen Thread gefunden.
Einfach geniale Idee, das per HTTPMOD zu lösen!
Ich hab auch gleich noch eine Verbesserung für dich, damit nicht nur Leerzeichen korrekt codiert werden, sondern alles:

attr CallMeBotAxel set01IExpr $val = uri_escape($val);; $val;

LG,
Stephan.
Titel: Antw:HTTPMOD und callmebot set Problem
Beitrag von: ahermann86 am 21 Juli 2021, 12:54:45
Hallo Stephan,

gute Idee:

Es geht sogar noch einfacher:  8)
attr CallMeBotAxel set01IExpr uri_escape($val)

Allerdings hat deine Methode einen Haken:  :-\
set CMBotAxel Msg %E2%9D%97 Windalarm erkannt!!

geht nicht mehr, da die uri_escape Funktion das daraus macht:
%25E2%259D%2597%20Windalarm%20erkannt%21%21

Deswegen bleibt meine Lösung so:  ::)
attr CallMeBotAxel set01IExpr $val =~ s/\s/%20/g; $val


Gruß
Axel
Titel: Antw:HTTPMOD und callmebot set Problem
Beitrag von: loescher am 21 Juli 2021, 20:57:42
Hallo Axel,

Da hast du Recht, das hatte ich nicht bedacht, dass im Input auch schon Prozent-Escapes sein können.
Aber dadurch hast du mich auf eine Lösung gebracht, die alle Fälle abdeckt:

attr CallMeBotAxel set01IExpr uri_escape(uri_unescape($val))


8)

LG,
Stephan.