FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Kurt77 am 01 Dezember 2016, 10:39:16

Titel: 2 identische notifies
Beitrag von: Kurt77 am 01 Dezember 2016, 10:39:16
Hallo,
ich habe 2 notifies mit fast gleichem Inhalt:

define n_Kueche_ndr2 notify
Sonos_Kueche:ButtonEvent:.(UD) {fhem("set Sonos_Kueche speak 40 de Es ist jetzt $hour Uhr $min")}   

das andere notify unterscheidet sich nur durch den raumnamen "Terrasse".
Terrasse funktioniert, Bei Kueche sehe ich im logfile den Fehler

2016.12.01 10:15:20 3: n_Kueche_ndr2 return value: Unknown command {fhem("set, try help.

Habe etliche Syntax-Varianten durchprobiert und komme nicht weiter.
Danke und Gruß,
Kurt
Titel: Antw:2 identische notifies
Beitrag von: kumue am 01 Dezember 2016, 10:44:55
fehlendes Leerzeichen zwischen zwischen fhem und (
....
Titel: Antw:2 identische notifies
Beitrag von: igami am 01 Dezember 2016, 10:48:00
Zitat von: kumue am 01 Dezember 2016, 10:44:55
fehlendes Leerzeichen zwischen zwischen fhem und (
....
Verwende ich immer so ohne Probleme.

Zitat von: Kurt77 am 01 Dezember 2016, 10:39:16
ich habe 2 notifies mit fast gleichem Inhalt:
Ein list von beiden wäre hilfreich
Titel: Antw:2 identische notifies
Beitrag von: KölnSolar am 01 Dezember 2016, 10:59:25
ich behaupte die abschließenden Anführungszeichen fehlen(oder doch eine der Klammern ?).
Aber ein list würde uns das raten ersparen.
Grüße Markus
Titel: Antw:2 identische notifies
Beitrag von: viegener am 01 Dezember 2016, 11:29:25
Noch eine Theorie: Könnten es "falsche" Anführungszeichen sein?
Hintergrund es gibt da leider Zeichen, die ganz ähnlich aussehen, aber aus perl-Sicht mitnichten einen String begrenzen:
"

Ja, auf jeden Fall würden die vollständigen Device definitionen (in code tags einschliessen) per copy&paste (also nicht abgeschrieben) helfen.
Titel: Antw:2 identische notifies
Beitrag von: abc2006 am 01 Dezember 2016, 11:33:10
Da würd ich mich mal einklinken... Ich habe gelegentlich auch Probleme, dass bei einem beginnenden Perl-Block (also { ) der nachfolgende Befehl nicht erkannt wird. Logik habe ich dort leider noch keine erkannt, wenns das nächste mal passiert, poste ich es hier...

Grüße
Stephan (der mal auf die Lösung gespannt ist)
Titel: Antw:2 identische notifies
Beitrag von: viegener am 01 Dezember 2016, 12:31:54
Ich kenne das problem bisher nur, wenn ich bei der Definition des Devices etwas falsch angegeben habe (Klammerung / Anführungszeichen). Bei mir ausserdem beliebt ist der Fehler einfache Semikolon zu verwenden...

@abc2006: Sagst Du derselbe define geht manchmal durch und manchmal nicht? also zum Beispiel unverändert in cfg, aber nach dem Neustart geht es nicht mehr?

Oder sagst Du manchmal gibt es dabei Fehler, ohne dass die Ursache klar ist, obwohl möglicherweise wirklich ein Fehler in der Definition steckt?

Ich denke in beiden Fällen wäre es gut, die Beispiele hier hereinzubringen, damit man entweder einen Fehler in FHEM fixen könnte oder alternativ Muster von Fehlbedienungen erkennen kann (und vielleicht auch besser dokumentieren)
Titel: Antw:2 identische notifies
Beitrag von: marvin78 am 01 Dezember 2016, 12:34:09
Man beugt den meisten solcher Fehler vor, in dem man die Config nicht direkt editiert, sondern das DEF mit Code-Editor verwendet.
Titel: Antw:2 identische notifies
Beitrag von: igami am 01 Dezember 2016, 12:35:50
ich mache es immer so:
1. In der Kommandozeile von FHEMWEB

define <name> notify <pattern> {}

2. über den DEF Editor meinen Code reinschreiben

Alternativ bei ähnlichen Sachen den FHEM Befehl copy verwenden und dann anpassen.
Titel: Antw:2 identische notifies
Beitrag von: abc2006 am 01 Dezember 2016, 12:59:49
Zitat von: marvin78 am 01 Dezember 2016, 12:34:09
Man beugt den meisten solcher Fehler vor, in dem man die Config nicht direkt editiert, sondern das DEF mit Code-Editor verwendet.

Danke für diese Erkenntnis, ohne das Wissen, ob das wirklich der Fall ist.
Ich für meinen teil editiere nur noch in der DEF... Aber wenn man dann den Inhalt der DEF hier postet, kommen Kommentare a la " das kann gar nicht funktionieren, da fehlt ja ... ;-)

@viegener:
Oftmals habe ich diese Probleme, wenn ich direkt in der Kommandozeile ein {...} Konstrukt teste, ob es das tut, was ich will. Gerade kann ich das nicht reproduzieren, aber ich schau zuhause mal danach.
Seltener kommt das auch in Notifies oder (ich mache in letzter Zeit viel mit DOIF) vor.

Ich versuchs heute abend zu reproduzieren!

Danke und Grüße
Stephan


Titel: Antw:2 identische notifies
Beitrag von: marvin78 am 01 Dezember 2016, 13:01:40
Zitat von: abc2006 am 01 Dezember 2016, 12:59:49
Danke für diese Erkenntnis, ohne das Wissen, ob das wirklich der Fall ist.
Ich für meinen teil editiere nur noch in der DEF... Aber wenn man dann den Inhalt der DEF hier postet, kommen Kommentare a la " das kann gar nicht funktionieren, da fehlt ja ... ;-)


Nicht von Leuten, die dir wirklich helfen können. ;) Am besten posten man aber ohnehin immer ein list vom Device denn da ist alles drin, was man benötigt um zu helfen!
Titel: Antw:2 identische notifies
Beitrag von: abc2006 am 01 Dezember 2016, 13:03:02
Zitat von: marvin78 am 01 Dezember 2016, 13:01:40
Nicht von Leuten, die dir wirklich helfen können. ;) Am besten posten man aber ohnehin immer ein list vom Device denn da ist alles drin, was man benötigt um zu helfen!

Alles klar, Gute Idee, werde ich in Zukunft beherzigen!

Grüße
Stephan
Titel: Antw:2 identische notifies
Beitrag von: abc2006 am 01 Dezember 2016, 21:47:25
Nur, damit ich mich nicht *nicht* melde: der erste, bei dem es aber an der eckigen Klammer zuviel (also an mir) lag :-[

Internals:
   DEF        ([RE_TEMP_FlurOG:temperature] or [D_TsollFlur] or [RE_TEMP_Schlafzimmer:temperature] or [D_TsollSchlafzimmer])
( {
if ([[RE_TEMP_FlurOG:temperature]] < [D_TsollFlur]){
fhem "set KNX20.O08_Aktor_PWM_BueroFlur value 100"
} elsif ([[RE_TEMP_Schlafzimmer:temperature] < [D_TsollSchlafzimmer]]-1 ){
fhem "set KNX20.O08_Aktor_PWM_BueroFlur value 50"
} else {
fhem "set KNX20.O08_Aktor_PWM_BueroFlur value 15"
}
})
   NAME       DF_HZG_Flur_Buero
   NR         614
   NTFY_ORDER 50-DF_HZG_Flur_Buero
   STATE      heizen
   TYPE       DOIF
   Readings:
     2016-12-01 21:02:18   Device          RE_TEMP_FlurOG
     2016-11-29 18:19:20   cmd             1
     2016-11-29 18:19:20   cmd_event       RE_TEMP_Schlafzimmer
     2016-11-29 18:19:20   cmd_nr          1
     2016-12-01 21:02:18   e_RE_TEMP_FlurOG_temperature 21.75
     2016-12-01 13:15:16   e_RE_TEMP_Schlafzimmer_temperature 19.75
     2016-11-29 18:19:20   error           { if ([[RE_TEMP_FlurOG:temperature]] < 21){ fhem "set KNX20.O08_Aktor_PWM_BueroFlur value 100" } elsif ([[RE_TEMP_Schlafzimmer:temperature] < [D_TsollSchlafzimmer]]-1 ){ fhem "set KNX20.O08_Aktor_PWM_BueroFlur value 50" } else { fhem "set KNX20.O08_Aktor_PWM_BueroFlur value 15" } }: syntax error at (eval 5139431) line 1, near "RE_TEMP_FlurOG:"

     2016-11-29 18:19:20   state           heizen
   Condition:
     0          ReadingValDoIf($hash,'RE_TEMP_FlurOG','temperature','','',AttrVal($hash->{NAME},'notexist',undef)) or InternalDoIf($hash,'D_TsollFlur','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) or ReadingValDoIf($hash,'RE_TEMP_Schlafzimmer','temperature','','',AttrVal($hash->{NAME},'notexist',undef)) or InternalDoIf($hash,'D_TsollSchlafzimmer','STATE','','',AttrVal($hash->{NAME},'notexist',undef))
   Devices:
     0           RE_TEMP_FlurOG D_TsollFlur RE_TEMP_Schlafzimmer D_TsollSchlafzimmer
     all         RE_TEMP_FlurOG D_TsollFlur RE_TEMP_Schlafzimmer D_TsollSchlafzimmer
   Do:
     0:
       0           { if ([[RE_TEMP_FlurOG:temperature]] < [D_TsollFlur]){ fhem "set KNX20.O08_Aktor_PWM_BueroFlur value 100" } elsif ([[RE_TEMP_Schlafzimmer:temperature] < [D_TsollSchlafzimmer]]-1 ){ fhem "set KNX20.O08_Aktor_PWM_BueroFlur value 50" } else { fhem "set KNX20.O08_Aktor_PWM_BueroFlur value 15" } }
   Helper:
     event      temperature: 21.75
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   RE_TEMP_FlurOG
     timerevent temperature: 21.75
     triggerDev RE_TEMP_FlurOG
     timerevents:
       temperature: 21.75
     timereventsState:
       temperature: 21.75
     triggerEvents:
       temperature: 21.75
     triggerEventsState:
       temperature: 21.75
   Internals:
     0           D_TsollFlur:STATE D_TsollSchlafzimmer:STATE
     all         D_TsollFlur:STATE D_TsollSchlafzimmer:STATE
   Itimer:
   Readings:
     0           RE_TEMP_FlurOG:temperature RE_TEMP_Schlafzimmer:temperature
     all         RE_TEMP_FlurOG:temperature RE_TEMP_Schlafzimmer:temperature
   Regexp:
     0:
     All:
   State:
   Trigger:
Attributes:
   group      ERR_FlurBuero
   room       Heizung_ERR,_doif
   userattr   Heizkreise Heizkreise_map structexclude
Titel: Antw:2 identische notifies
Beitrag von: abc2006 am 01 Dezember 2016, 21:51:37
dafür hab ich hier was:

{ Kalenderende("$EVENT"); }

funktioniert im notify einwandfrei:
Internals:
   DEF        CAL_Schichtplan_Stephan:end:.*googlecom.* { Kalenderende("$EVENT"); }
   NAME       N_CalEnde
   NOTIFYDEV  CAL_Schichtplan_Stephan
   NR         657
   NTFY_ORDER 50-N_CalEnde
   REGEXP     CAL_Schichtplan_Stephan:end:.*googlecom.*
   STATE      2016-12-01 15:00:00
   TYPE       notify
   Readings:
     2016-11-18 14:54:07   state           active
Attributes:
   room       Kalender,_notify



wenn ichs aber oben in der Leiste eingebe:

Unknown command {, try help.
Unknown command }, try help.


Warum? und ja, ich weiss, dass die Variable $EVENT leer ist, wenn ich es oben in der Leiste eingebe, aber da die Funktion bisher nur den Inhalt vergleicht und ausgibt, würde es funktionieren können...
Grüße
Stephan
Titel: Antw:2 identische notifies
Beitrag von: viegener am 01 Dezember 2016, 23:00:18
Das hat nichts mit $EVENT zu tun, sondern bei FHEM-Kommandos müssen die Semikolons doppelt geschrieben werden, damit klar ist, dass sie zu dem perl-Ausdruck gehören, sonst trennen Sie Kommandos:

http://fhem.de/commandref_DE.html#command (http://fhem.de/commandref_DE.html#command)

Aber ich gebe zu, einiges davon muss man sich einfach merken und das meinte ich damit, dass ich mit den Semikolons machmal durcheinander komme
Titel: Antw:2 identische notifies
Beitrag von: abc2006 am 02 Dezember 2016, 01:08:45
Hm.. Da steh ich jetzt auf dem Schlauch.. an welcher Stelle ist da ein FHEM-Kommando?


btw: ohne das Semikolon gehts, also
{ Kalenderende("$EVENT") }

edit:
Mit zwei Semikolon gehts auch, meintest du das?
{ Kalenderende("$EVENT");; }

Aber ja, ich tu mich zb da auch sehr schwer.. warum braucht man in der Kommandozeile entweder keins oder zwei, und im DEF-Editor genau eines?



Grüße
Stephan
Titel: Antw:2 identische notifies
Beitrag von: dev0 am 02 Dezember 2016, 05:31:43
Zitat von: abc2006 am 02 Dezember 2016, 01:08:45
Aber ja, ich tu mich zb da auch sehr schwer.. warum braucht man in der Kommandozeile entweder keins oder zwei, und im DEF-Editor genau eines?
Vor schließenden geschweifenten Klammern sind Semikola nicht nötig aber möglich.
Warum 2 nötig sind hat viegener bereits geschrieben.
Der DEF-Editor kümmert sich selbst um das Verdoppel/Escaping der Semikola und auch um den Backslash am Zeilenende bei einem Zeilenumbruch.
Titel: Antw:2 identische notifies
Beitrag von: marvin78 am 02 Dezember 2016, 07:15:25
Ich umschiffe das Problem (dass man es immer wieder vergisst) einfach, in dem ich "leere" Devices anlege und dann nur  noch den DEF Editor verwende

define NAME notify NAME2 {}

in die Kommandozeile. Nach Enter gelangt man automatisch in der Detailansicht und dann DEF verwenden. Das wurde hier aber auch schon beschrieben.
Titel: Antw:2 identische notifies
Beitrag von: viegener am 02 Dezember 2016, 22:14:37
Zitat von: abc2006 am 02 Dezember 2016, 01:08:45
Hm.. Da steh ich jetzt auf dem Schlauch.. an welcher Stelle ist da ein FHEM-Kommando?

Dazu hatte ich den Link angefügt ;)

Es gibt 3 Arten von Kommandos (oder Befehlstypen):

"fhem" Befehle (werden in diesem Dokument beschrieben), SHELL-Befehle (diese müssen von doppelten Anführungszeichen "" eingeschlossen werden) und PERL-Ausdrücken (von geschwungenen Klammern {} eingeschlossen).
Titel: Antw:2 identische notifies
Beitrag von: abc2006 am 02 Dezember 2016, 22:27:26
Den Link hab ich gelesen.. aber offensichtlich den Text nicht richtig interpretiert.

Also wird der Befehl
{ Kalenderende("$EVENT"); }
aufgetrennt in
a) { Kalenderende("$EVENT");
b) }

und dann kennt fhem die Kommandos natürlich nicht mehr, weil die schließende bzw. öffnende Klammer fehlt?


Titel: Antw:2 identische notifies
Beitrag von: viegener am 02 Dezember 2016, 22:40:35
Zitat von: abc2006 am 02 Dezember 2016, 22:27:26
Den Link hab ich gelesen.. aber offensichtlich den Text nicht richtig interpretiert.

Also wird der Befehl
{ Kalenderende("$EVENT"); }
aufgetrennt in
a) { Kalenderende("$EVENT");
b) }

und dann kennt fhem die Kommandos natürlich nicht mehr, weil die schließende bzw. öffnende Klammer fehlt?

Genau, denn damit ist weder der 1. noch der 2. Teil ein perl ausdruck weil die zugehörige andere Klammer fehlt
Titel: Antw:2 identische notifies
Beitrag von: kumue am 02 Dezember 2016, 22:45:20
...gibts schon was neues zu den notify's ?  ::) :D
Titel: Antw:2 identische notifies
Beitrag von: abc2006 am 03 Dezember 2016, 00:08:43
Ich würde sagen, wir warten auf die Antwort auf diesen Post:

Zitat von: igami am 01 Dezember 2016, 10:48:00
Ein list von beiden wäre hilfreich

Grüße
Stephan

PS: Danke, jetzt hab sogar ich es kapiert :-)