FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: tomleitner am 24 Mai 2016, 19:34:13

Titel: Was ist an diesem Notify falsch?
Beitrag von: tomleitner am 24 Mai 2016, 19:34:13

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
Titel: Antw:Was ist an diesem Notify falsch?
Beitrag von: OiledAmoeba am 24 Mai 2016, 19:54:13
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

Titel: Antw:Was ist an diesem Notify falsch?
Beitrag von: kumue am 24 Mai 2016, 19:56:05
versuch es mal, indem du die Befehle in Klammern setzt...

fhem ("set ...")
Titel: Antw:Was ist an diesem Notify falsch?
Beitrag von: tomleitner am 24 Mai 2016, 20:22:06
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

Titel: Antw:Was ist an diesem Notify falsch?
Beitrag von: kumue am 24 Mai 2016, 20:40:51
define TomHandyResponder notify TomHandy:message.* ("set TomHandy send Wie bitte?")
Titel: Antw:Was ist an diesem Notify falsch?
Beitrag von: tomleitner am 24 Mai 2016, 21:19:04
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 ....
Titel: Antw:Was ist an diesem Notify falsch?
Beitrag von: der-Lolo am 24 Mai 2016, 21:28:21
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...
Titel: Antw:Was ist an diesem Notify falsch?
Beitrag von: OiledAmoeba am 24 Mai 2016, 21:42:13
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

Titel: Antw:Was ist an diesem Notify falsch?
Beitrag von: dev0 am 25 Mai 2016, 06:54:21
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?");
  }
}
Titel: Antw:Was ist an diesem Notify falsch?
Beitrag von: igami am 25 Mai 2016, 07:04:40
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 (https://forum.fhem.de/index.php/topic,51425.0.html)
Müsste den Thread zwar mal überarbeiten, aber vielleicht hilft es ja.

Grüße
igami
Titel: Antw:Was ist an diesem Notify falsch?
Beitrag 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."

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.
Titel: Antw:Was ist an diesem Notify falsch?
Beitrag von: CoolTux am 25 Mai 2016, 08:05:36
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.
Titel: Antw:Was ist an diesem Notify falsch?
Beitrag von: Benni am 25 Mai 2016, 08:14:46
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  ;) ).
Titel: Antw:Was ist an diesem Notify falsch?
Beitrag von: dev0 am 25 Mai 2016, 08:19:22
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 {}
Titel: Antw:Was ist an diesem Notify falsch?
Beitrag von: tomleitner am 25 Mai 2016, 08:37:28
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
Titel: Antw:Was ist an diesem Notify falsch?
Beitrag von: CoolTux am 25 Mai 2016, 08:39:13
Interessant. Selbst wenn ich die 2 runden Klammern weg lasse geht es. Dann kann es einzig am Semikolon liegen bei


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


Wird ja auch bei einem Einzeiler nicht benötigt.

Ich ziehe also meine Behauptung zurück   :-X
Titel: Antw:Was ist an diesem Notify falsch?
Beitrag von: CoolTux am 25 Mai 2016, 08:40:57
Wenn Du das über die DEF Maske gemacht hast, wozu dann die Backslash am Ende jeder Zeile? Das ist niocht nötig. Und die doppelten Semikolons kannst Du auch weg lassen, das sollte definitiv ohne doppelte gehen.
Titel: Antw:Was ist an diesem Notify falsch?
Beitrag von: dev0 am 25 Mai 2016, 08:53:57
Er hat es über den DEF Editor eingegeben, aber das Gezeigte ist das gespeicherte Ergebnis aus der fhem.cfg.
Die fhem.cfg sollte ab dem nächsten Release binär gespeichert werden, dann gibt es diese Verwirrungen nicht mehr ;)
Titel: Antw:Was ist an diesem Notify falsch?
Beitrag von: Wernieman am 25 Mai 2016, 09:05:10
Mal so als Frage:
Es gibt doch auch das FHEM-Modul "IF", warum sollte man für so etwas überhaupt zu perl runtersteigen?
Titel: Antw:Was ist an diesem Notify falsch?
Beitrag von: igami am 25 Mai 2016, 09:13:25
Oder wenn man es mag auch mit DOIF
Titel: Antw:Was ist an diesem Notify falsch?
Beitrag von: dev0 am 25 Mai 2016, 09:16:13
- weil man perl lernen möchte
- weil es mächtiger ist
- aus Gewohnheit
- weil man in einer IF/DOIF freien Zone lebt ;)
Titel: Antw:Was ist an diesem Notify falsch?
Beitrag von: CoolTux am 25 Mai 2016, 09:39:00
Stimme den Punkten 1-3 zu   ;D
Titel: Antw:Was ist an diesem Notify falsch?
Beitrag von: Wernieman am 25 Mai 2016, 09:42:10
 .... nur manchmal sollte man "keep it simple" machen ..

Hatte es früher auch per perl, bis mir auffiel "wie mächtig" FHEM auch ohne perl schon ist. Und eben viele dieser hier besprochenen "Quota"-Probleme damit einfach und simple umgangen werden kann!