Kalender Ferien, dummy notify - will nicht

Begonnen von masterpete23, 24 Dezember 2018, 12:30:16

Vorheriges Thema - Nächstes Thema

Otto123

#30
Hi,

um Dir vielleicht noch ein Erfolgserlebnis zu verschaffen,, wenn Du das mal in die FHEM Kommandozeile wirfst, was kommt da zurück?
get NI_Ferien events format:custom="$S" limit:from=1d,to=15d
oder
get NI_Ferien text next 15
Edit: Ups das war "alter Code" wird wohl noch unterstützt
get NI_Ferien events filter:field(summary)=~"Ferien" limit:count=1

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Steffen

Hallo!

Bei mir will der Code leider auch nicht:

defmod BW_FerienNotify notify BW_Ferien {fhem "set BW_Ferientag ".(ReadingsVal("BW_Ferien","modeStart","")=~"schulferien" ? 1: 0)}

der Dummy ergibt immer "0"

im Calendar ergibt ein get:

b0f3af6da4b34a9b9fd331ee691b4c67 start  04.10.2019 00:00-19.10.2019 00:00 Herbstferien


Mfg Steffen

Beta-User

Ungeprüft, aber vermutlich ist die Lösung hier zu finden:
Zitat von: Beta-User am 27 Dezember 2018, 08:08:40
Das Problem ist doch, dass der Event die UID enthält, und nicht die Beschreibung, in der "ferien" steht. Der "alte" code basierte noch auf einer Vorversion von calendar.

Mein aktuelles notify sieht daher so aus (nachgebastelt aus der commandref, zu importieren über RAW (bzw. ohne die "\")):
defmod BW_Ferien.notify notify Familienkalender:changed:.* { \
    my $UID = $EVTPART1;;\
    my $cmd = $EVTPART2;;\
    my $MYACTOR = fhem('get Familienkalender events format:custom="$S" filter:uid=="'.$UID.'" limit:count=1') ;;\
    $cmd = '1'  if ($cmd eq 'start');;\
       $cmd = '0' if ($cmd eq 'end');;\
       fhem("set BW_Ferientag $cmd") if ($MYACTOR =~ /ferien/);;\
}

Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Steffen

Hallo!

Habe es genau so versucht und habe auch meine Kalender und Dummy so umbenannt wie im Notify angegeben aber leider da auch keine Veränderung oder Umstellung auf "1"?!

Erhalte aber auch keine Fehlermeldung im Log.

Mfg Steffen

Beta-User

Wenn ein notify nicht will, sollte man als erstes die Events prüfen. Gab es denn einen passenden? (Muß man uU. über einen reload am Calendar-Device wieder erzeugen).

Wenn ja: Bitte mal die Schritte "zu Fuß" gehen, also insbesondere nachsehen, ob die Informationen zueinander passen, die da kommen. Leider sind nämlich nicht alle Kalender gleich gestrickt... (Das "Schulferien" stammte mal aus einer bestimmten Quelle und war in der Beschreibung enthalten, nicht im Namen; mein Code testet auf Namen, dann erscheinen auch manuell nachgetragene (bewegliche) Ferientage).

Zu Fuß wäre also insbesondere "interessant":
get Familienkalender events format:custom="$S" filter:uid=="b0f3af6da4b34a9b9fd331ee691b4c67" limit:count=1
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Steffen

Zitat von: Beta-User am 15 Oktober 2019, 11:16:22
Zu Fuß wäre also insbesondere "interessant":
get Familienkalender events format:custom="$S" filter:uid=="b0f3af6da4b34a9b9fd331ee691b4c67" limit:count=1

Hallo!

ein get Familienkalender events format:custom="$S" filter:uid=="151ad4c5570b4043ad131ad6312d50c4" limit:count=1

ergibt "Herbstferien"

Mfg Steffen

Beta-User

Vorab war aber doch die Rückmeldung gefragt, OB ES EIN PASSENDES EVENT gibt... Hast du das übersehen, oder nur einfach nicht verstanden?

Wenn ja, gibt es jedenfalls jetzt auch keinen Grund mehr zur Annahme, dass der Code nicht will.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Steffen

Zitat von: Beta-User am 15 Oktober 2019, 11:34:54
Vorab war aber doch die Rückmeldung gefragt, OB ES EIN PASSENDES EVENT gibt... Hast du das übersehen, oder nur einfach nicht verstanden?

Wenn ja, gibt es jedenfalls jetzt auch keinen Grund mehr zur Annahme, dass der Code nicht will.

Sorry das hatte ich vergessen mit anzugeben, es kommen keine Events auch keine Einträge im Log...

2019-10-15 11:36:25 Calendar Familienkalender retrieved
2019-10-15 11:36:26 Calendar Familienkalender parsed
2019-10-15 11:36:26 Calendar Familienkalender lastUpdate: 2019-10-15 11:36:24
2019-10-15 11:36:26 Calendar Familienkalender nextUpdate: 2019-10-15 12:36:24
2019-10-15 11:36:26 Calendar Familienkalender modeUpcoming: dac380c8322347c0a69ab1c2fc1341ec
2019-10-15 11:36:26 Calendar Familienkalender modeAlarmOrStart: e893f9de8af14943a78f84c321544116
2019-10-15 11:36:26 Calendar Familienkalender modeStart: e893f9de8af14943a78f84c321544116
2019-10-15 11:36:26 Calendar Familienkalender modeEnd: 53fc1dbd07b444e89cc92a8e4acc006f;d0df1f1be48e4655af4bb70556da7203;b10e9f8d8fe54e61945ff10bd4b02f5e
2019-10-15 11:36:26 Calendar Familienkalender triggered
2019-10-15 11:36:26 Calendar Familienkalender nextWakeup: 2019-10-15 12:36:24

Otto123

Hallo Steffen,

mit deinem Code aus #31 jagst Du einen Geist der mit den Dinosauriern und dem Meteoriten untergegangen ist.

Und Du triggerst ein notify auf jeden Event des Calendar. Das wird mit dem Umweltverschmutzerpreis erster Klasse geahndet.

Also die dringende Bitte: Nicht irgendwelche uralten Beispiele im Internet verwenden! In der Doku zu Calendar steht alles drin.

Was willst Du eigentlich erreichen? Warum verwendest Du nicht den holiday Kalender?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Steffen

Zitat von: Otto123 am 15 Oktober 2019, 11:40:47

Was willst Du eigentlich erreichen? Warum verwendest Du nicht den holiday Kalender?

Gruß Otto

Ich möchte mit mit 3 Kalender(Urlaub:Frei/Feiertag/Ferien) verschiedene DOIF füttern, weil gerade der "Urlaub:Frei" Kalender sehr Flexible von uns geführt wird.

Mfg Steffen

Otto123

#40
Vielleicht hilft Dir dieses Beispiel bei der Überlegung und dem Umgang mit Calendar.

Vielleicht sparst Du dann das eine oder andere DOIF und lässt den Kalender direkt arbeiten. :)

Aus Deiner kurzen Beschreibung kann ich jetzt noch nicht erkenne welche Vorgehensweise ich empfehlen soll. Alles von einem Gerät ins Andere zu verfüttern ist meist nicht optimal.

Nachtrag:
Um zum Beispiel eine bestimmte Beschreibung der Events zu filtern geht so etwas:
get TestKalender events filter:field(summary)=~"(?i)schulferien"
Das (?i) macht die Groß- und Kleinschreibung des Termines egal. ;)

Bei einem etwas "wild" (also normal :) ) gepflegten Kalender wird man nicht umhinkommen die Auswertung in eine kleine Perlroutine zu packen. Halte ich für übersichtlicher...
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Steffen

#41
Zitat von: Otto123 am 15 Oktober 2019, 11:55:26
Vielleicht hilft Dir dieses Beispiel bei der Überlegung und dem Umgang mit Calendar.

Vielleicht sparst Du dann das eine oder andere DOIF und lässt den Kalender direkt arbeiten. :)

Aus Deiner kurzen Beschreibung kann ich jetzt noch nicht erkenne welche Vorgehensweise ich empfehlen soll. Alles von einem Gerät ins Andere zu verfüttern ist meist nicht optimal.

Nachtrag:
Um zum Beispiel eine bestimmte Beschreibung der Events zu filtern geht so etwas:
get TestKalender events filter:field(summary)=~"(?i)schulferien"
Das (?i) macht die Groß- und Kleinschreibung des Termines egal. ;)

Bei einem etwas "wild" (also normal :) ) gepflegten Kalender wird man nicht umhinkommen die Auswertung in eine kleine Perlroutine zu packen. Halte ich für übersichtlicher...

Hallo!

Diesen Ansatz finde ich gut aber ich würde damit gerne einen Dummy füttern, weil ich mehre Doif habe die Rolladen steuern und diese könnten dann auf den Wert eines Dummy reagieren.

Ich habe diesen Code versucht und dieser war erfolgreich, aber wie bekomme ich es hin, danach wieder auf "nein" zu setzten?

Familienkalender:.* { fhem("set BB_Ferien Ja") if defined fhem('get '.$NAME.' events filter:uid=="'.$EVTPART1.'",field(summary)=~"(?i)Herbstferien" limit:count=1,from=0',1) }


Mfg Steffen

Beta-User

@Steffen:  :o Du versuchst aber schon mitzudenken, oder?

Du mußt das Event mit auswerten... (Aber das war vorher schon Thema, wir drehen uns im Kreis. Es ist übrigens auch ziemlich egal, ob man "events filter:field(summary)" schreibt oder "events format:custom="$S"").

Bin jedenfalls raus...

@Otto: Ob es eine "Umweltverschmutzung" ersten Grades ist, auf "alles" zu reagieren, hängt doch vor allem davon ab, wie viele Events ein Calendar wirft. Der "übliche" Ferien-ical ist da recht sparsam, und auch mein "Familienkalender" enthält daneben nur noch den Müll und wenige andere Termine ;D .

Insgesamt gebe ich dir aber recht: Wenn man den Ferien-/Urlaubs-Calendar v.a. dazu benötigt, $we festzulegen (und die Logik auch so effektiv paßt, nicht jeder hat an Ferien ja auch wirklich frei ;D ...), macht man besser ein echtes holiday-file daraus und bindet das dann mit h2we ein (Code ist hier ebenfalls verlinkt und funktioniert seit längeren völlig stressfrei...).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Steffen

Ja das versuche ich schon und ich setzte mich auch nicht hier hin und warte auf die Lösung, denn ich versuche immer lange einen eigenen Weg zu finden.

Doch bin ich beim Notify so langsam ganz schön raus, denn für meine Sachen habe ich fast alles mit DOIF gelöst und bin deswegen bei Notify nicht mehr ganz so firm drin wie Ihr.

Ich habe wie gesagt sehr viele DOIF, so für jedes Zimmer eins was die Rolladen nach Licht,Zeit und Anwesenheit und weitere Vorgaben steuert und da wollte ich eigentlich nur noch Urlaub und Ferien zufügen und da scheiterte es ebend...

Ich kann ebend in diesem Fall nur auf eure Hilfe setzten, da wie gesagt ich mich zu wenig auskenne.

Mfg Steffen

Beta-User

Das mit dem notify ist doch im Prinzip ganz einfach, was du brauchst, ist eben ein passendes EVENT. Das kommt auch ziemlich sicher, und auch DOIF benötigt (afaik) in der Regel sinnvolle Events... (Mir ist das zu kompliziert, dieses Modul verstehe ich einfach nicht, daher habe ich die paar DOIF, die ich irgendwann mal hatte, auch alle durch irgendwas anderes ersetzt...)

Was Rollladensteuerung angeht, nutze ich AutoShuttersControl und käme nie wieder auf den Gedanken, da DOIF einzusetzen (das hatte ich davor irgendwann mal im Einsatz, war aber dann sehr froh, also ich es auf einfache WeekdayTimer umgestellt hatte, aber ASC war dann dafür (v.a. wg. der Beschattungssteuerung) zu verlockend, um das so zu belassen)...
Aber ganz grundsätzlich: Ich nutze die Ferien- und Urlaubs-Geschichten eigentlich v.a. dazu, $we zu setzen, aber eigentlich ist das auch schon "doppelt gemoppelt", denn letztlich spiegelt sich das auch einfach im Bewohnerstatus wieder. Jedenfalls für ASC wäre der für sich genommen schon ausreichend.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors