Was ist an diesem Notify falsch?

Begonnen von tomleitner, 24 Mai 2016, 19:34:13

Vorheriges Thema - Nächstes Thema

tomleitner


Hallo,

Ich will das yowsup Modul benutzen (klappt bisher ganz gut), und nun den Responder einrichten. Leider krieg ich die Syntax von diesem Notify nicht hin:

define TomHandyResponder notify TomHandy:message.* { \
if ($EVENT eq 'message: Markisen aus' ) \
{ \
   fhem "set TomHandy send Markisen sind nun eingefahren..."; \
} else { \
   fhem "set TomHandy send Wie bitte?" \
} \
}


Die Fehlermeldung ist immer: "Unknown command }, try help."

Meines Verständnisses nach würden die Backslashes alles zu einer Zeile zusammenfügen ... habe bereits alles probiert -- kein Erfolg.

Irgendwelche Ideen?

Thx // Tom

OiledAmoeba

Bin mir auf die Schnelle nicht sicher, aber ich glaub hinter Wie bitte?" fehlt ein Semikolon vorm Backslash

Gesendet von meinem SM-G900F mit Tapatalk

Gruß
Florian

Jail auf XigmaNAS (freeBSD); CCU2 mit CULv3, nanoCUL868 und JeeLink-Clone; div. FS20-Komponenten; andFHEM; div. hm- und hmip-Komponenten; div. IT+

kumue

versuch es mal, indem du die Befehle in Klammern setzt...

fhem ("set ...")

tomleitner

Danke Euch ... geht alles leider nicht. Habe nun das Kommando reduziert auf:

define TomHandyResponder notify TomHandy:message.* { fhem "set TomHandy send Wie bitte?"; }

oder

define TomHandyResponder notify TomHandy:message.* { fhem ("set TomHandy send Wie bitte?"); }


beides liefert:"Unknown command }, try help."

Weitere Ideen?

danke & ciao // Tom


kumue

define TomHandyResponder notify TomHandy:message.* ("set TomHandy send Wie bitte?")

tomleitner

Ja, danke ... aber was ich brauche ist ja eine Mischung aus Perl befehlen (wie "if ($EVENT)" ...) und fhem Befehlen ...

So wie Du es schreibst wären nur fhem Befehle möglich ....

der-Lolo

#6
Hier wäre es wahrscheinlich mit Kanonen auf Spatzen geschossen, aber am elegantesten wäre es eine eigene Sub in 99_ zu erstellen, dort kannst Du frei in perl hantieren. Die Sub dann aufrufen...

Versuch auch mal das ? wegzulassen...

OiledAmoeba

Vorsicht, dirty aus der DEF kopiert! (deswegen auch keine Backslash)

Bei mir schaut ein einfacher If so aus:if (Value($_) eq "disabled") {
fhem "attr $_ comment disabled"
} else {
fhem "attr $_ comment enabled"
}
Was fällt sofort auf? Da sind keine Semikolon, wenn nur ein einzeiliger Perl-Befehl kommt. Versuchs mal so. Vielleicht war es ein Gedankenfehler von mir vorhin...

Gesendet von meinem SM-G900F mit Tapatalk

Gruß
Florian

Jail auf XigmaNAS (freeBSD); CCU2 mit CULv3, nanoCUL868 und JeeLink-Clone; div. FS20-Komponenten; andFHEM; div. hm- und hmip-Komponenten; div. IT+

dev0

Zitat von: tomleitner am 24 Mai 2016, 19:34:13
Leider krieg ich die Syntax von diesem Notify nicht hin:

Benutz bitte den DEF Editor auf der Notify Detailseite und trag folgendes ein per copy/paste ein (FHEM kümmert sich dann ums escapen und Zeilenumbrüche):

TomHandy:message.* {
  if ($EVENT eq 'message: Markisen aus' ) {
    fhem("set TomHandy send Markisen sind nun eingefahren...");
  }
  else {
    fhem("set TomHandy send Wie bitte?");
  }
}

igami

Zwar nicht direkt eine Antwort auf die Frage aber trotzdem:
Ich habe das bei mir mit mehreren DOIF gelöst.
chatBot (vordefinierte Dialoge) für Telegram
Müsste den Thread zwar mal überarbeiten, aber vielleicht hilft es ja.

Grüße
igami
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

CoolTux

Wenn man mittels define über das Webinterface ein Notify mit Perlsyntax anlegen will, so ist das nicht möglich. Es gibt immer die Fehlermeldung "Unknown command }, try help."

Lösung


define TomHandyResponder notify TomHandy:message.* a b


Danach kann man in der Detailansicht des Notify auf DEF klicken und a und b löschen und den fehlenden Perlcode eintragen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Ach und bevor jemand fragt warum a b. Man kann auch schreiben "Im Himmel ist Jahrmarkt" Auf gut Deutsch es ist egal was man da schreibt, Hauptsache keine Perlsyntax.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Benni

Ich schreibe da immer {}, da ich in 99% der Fälle mit Perl im Notify weitermache (und wenn's nur der Aufruf einer sub aus der 99_myUtils ist  ;) ).

dev0

Zitat von: CoolTux am 25 Mai 2016, 08:04:19
Wenn man mittels define über das Webinterface ein Notify mit Perlsyntax anlegen will, so ist das nicht möglich. Es gibt immer die Fehlermeldung "Unknown command }, try help."

Sorry, aber das stimmt so nicht. Wenn die Perlsyntax i.O. ist, dann funktioniert das.
z.B.

define n notify xxx {fhem("set xxx on")}
define n1 notify xxx {}

tomleitner

Das ist nun die finale Syntax die funktioniert:

define TomHandyResponder notify TomHandy:message.*  {\
    if ($EVENT eq 'message: Markisen aus') {\
        fhem "set TomHandy send Markisen sind nun eingefahren..."\
    } elsif ($EVENT eq 'message: Gartenbrunnen aus') {\
        fhem "set GartenBrunnen off";;\
        fhem "set TomHandy send Gartenbrunnen ist nun aus ..."\
    } else {\
        fhem "set TomHandy send Wie bitte ..."\
    }\
}

Man beachte die doppelten Semikolon .... Habe das nun über die DEF Maske gemacht ....

Danke Euch & Ciao // Tom