Hauptmenü

2 identische notifies

Begonnen von Kurt77, 01 Dezember 2016, 10:39:16

Vorheriges Thema - Nächstes Thema

Kurt77

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

kumue

fehlendes Leerzeichen zwischen zwischen fhem und (
....

igami

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
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

KölnSolar

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
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

viegener

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

abc2006

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)
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

viegener

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

marvin78

Man beugt den meisten solcher Fehler vor, in dem man die Config nicht direkt editiert, sondern das DEF mit Code-Editor verwendet.

igami

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.
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

abc2006

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


FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

marvin78

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!

abc2006

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
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

abc2006

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
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

abc2006

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
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

viegener

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

Aber ich gebe zu, einiges davon muss man sich einfach merken und das meinte ich damit, dass ich mit den Semikolons machmal durcheinander komme
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können