FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: masterpete23 am 24 Dezember 2018, 12:30:16

Titel: Kalender Ferien, dummy notify - will nicht
Beitrag von: masterpete23 am 24 Dezember 2018, 12:30:16
Hallo,

Ich möchte gerne, dass das Aquarium in den Ferien so schaltet als wäre WE.

Ich vermute, dass der dummy nicht korrekt gesetzt wird.
Leider habe ich bisher nur copy n paste gemacht uns es noch nicht komplett durchdrungen  - daher kann ich auch noch nicht den Fehler finden.
Bitte um Hilfe.


Einmal die Ferien:
Internals:
   DEF        ical url http://i.cal.to/ical/68/niedersachsen/ferien/URLgeändert.ics 86400
   NAME       NI_Ferien
   NOTIFYDEV  global
   NR         599
   NTFY_ORDER 50-NI_Ferien
   STATE      triggered
   TYPE       Calendar
   READINGS:
     2018-12-23 23:37:47   calname         Ferien - Niedersachsen
     2018-12-23 23:37:47   lastUpdate      2018-12-23 23:37:47
     2018-12-15 22:52:50   modeAlarm       
     2018-12-24 00:00:00   modeAlarmOrStart 58d02fd3cbe5168calovo
     2018-12-15 22:52:50   modeAlarmed     
     2018-12-24 00:00:00   modeChanged     58d02fd3cbe5168calovo
     2018-12-20 23:37:47   modeEnd         5a11890ecbd4d68calovo;56f2f2f5d6edc68calovo;56df05a5048d268calovo;58d02f9d52ef568calovo;5a54887ddfd7f68calovo;56f2f2c60c66b68calovo;56f2f31eac4f768calovo;5a1188a41423468calovo
     2018-12-15 22:52:50   modeEnded       
     2018-12-24 00:00:00   modeStart       58d02fd3cbe5168calovo
     2018-12-24 00:00:00   modeStarted     58d02fd3cbe5168calovo
     2018-12-24 00:00:00   modeUpcoming    58d036953e65468calovo;58d0360ff3b6668calovo;58d030dd4319268calovo;58d0365a4ac9d68calovo;58d0300d124c168calovo;58d035bcae78868calovo;56df05e2b487468calovo
     2018-12-23 23:37:47   nextUpdate      2018-12-24 23:37:47
     2018-12-24 00:00:00   nextWakeup      2018-12-24 23:37:47
     2018-12-24 00:00:00   state           triggered
Attributes:
   room       Kalender


Das notify:

Internals:
   DEF        NI_Ferien { \         fhem "set NI_Ferientag " . (ReadingsVal("NI_Ferien", "modeStart", "") =~ "ferien" ? 1: 0) }
   NAME       NI_Ferien.notify
   NOTIFYDEV  NI_Ferien
   NR         600
   NTFY_ORDER 50-NI_Ferien.notify
   REGEXP     NI_Ferien
   STATE      2018-12-24 00:00:00
   TRIGGERTIME 1545606000.12045
   TYPE       notify
   READINGS:
     2018-12-19 23:37:43   state           active
Attributes:



Der dummy
Internals:
   NAME       NI_Ferientag
   NR         601
   STATE      0
   TYPE       dummy
   READINGS:
     2018-12-24 00:00:00   state           0
Attributes:
   room       Dummy


Das DOIF vom Aquarium
Internals:
   DEF        ([07:00|8] and [NI_Ferien:modeStart] !~ "ferien" or [09:00|7] or [09:00] and [NI_Ferien:modeStart] =~ "ferien") (set Sonoff_Aquarium on) DOELSEIF ([20:00|8] and [NI_Ferien:modeStart] !~ "ferien" or [20:30|7] or [20:30] and [NI_Ferien:modeStart] =~ "ferien") (set Sonoff_Aquarium off)
   MODEL      FHEM
   NAME       dAquarium
   NR         534
   NTFY_ORDER 50-dAquarium
   STATE      cmd_1
   TYPE       DOIF
   READINGS:
     2018-12-24 00:00:00   Device          NI_Ferien
     2018-12-24 07:00:00   cmd             1
     2018-12-24 07:00:00   cmd_event       timer_1
     2018-12-24 07:00:00   cmd_nr          1
     2018-12-24 00:00:00   e_NI_Ferien_modeStart 58d02fd3cbe5168calovo
     2018-12-20 19:11:14   mode            enabled
     2018-12-24 07:00:00   state           cmd_1
     2018-12-24 07:00:00   timer_01_c01    25.12.2018 07:00:00|8
     2018-12-24 09:00:00   timer_02_c01    25.12.2018 09:00:00|7
     2018-12-24 09:00:00   timer_03_c01    25.12.2018 09:00:00
     2018-12-23 20:00:02   timer_04_c02    24.12.2018 20:00:00|8
     2018-12-23 20:30:03   timer_05_c02    24.12.2018 20:30:00|7
     2018-12-23 20:30:03   timer_06_c02    24.12.2018 20:30:00
   Regex:
   attr:
     cmdState:
     waitdel:
   condition:
     0          ::DOIF_time_once($hash,0,$wday,"8") and ::ReadingValDoIf($hash,'NI_Ferien','modeStart') !~ "ferien" or ::DOIF_time_once($hash,1,$wday,"7") or ::DOIF_time_once($hash,2,$wday) and ::ReadingValDoIf($hash,'NI_Ferien','modeStart') =~ "ferien"
     1          ::DOIF_time_once($hash,3,$wday,"8") and ::ReadingValDoIf($hash,'NI_Ferien','modeStart') !~ "ferien" or ::DOIF_time_once($hash,4,$wday,"7") or ::DOIF_time_once($hash,5,$wday) and ::ReadingValDoIf($hash,'NI_Ferien','modeStart') =~ "ferien"
   days:
     0          8
     1          7
     3          8
     4          7
   devices:
     0           NI_Ferien
     1           NI_Ferien
     all         NI_Ferien
   do:
     0:
       0          set Sonoff_Aquarium on
     1:
       0          set Sonoff_Aquarium off
     2:
   helper:
     event      timer_3
     globalinit 1
     last_timer 6
     sleeptimer -1
     timerdev   
     timerevent timer_1
     triggerDev
     DOIF_eventas:
       cmd_nr: 1
       cmd: 1
       cmd_event: timer_1
       state: cmd_1
     timerevents:
       timer_1
     timereventsState:
       nextWakeup: 2018-12-24 23:37:47
     triggerEvents:
       timer_3
     triggerEventsState:
       nextWakeup: 2018-12-24 23:37:47
   internals:
   interval:
   intervalfunc:
   itimer:
   localtime:
     0          1545717600
     1          1545724800
     2          1545724800
     3          1545678000
     4          1545679800
     5          1545679800
   readings:
     0           NI_Ferien:modeStart
     1           NI_Ferien:modeStart
     all         NI_Ferien:modeStart
   realtime:
     0          07:00:00
     1          09:00:00
     2          09:00:00
     3          20:00:00
     4          20:30:00
     5          20:30:00
   time:
     0          07:00:00
     1          09:00:00
     2          09:00:00
     3          20:00:00
     4          20:30:00
     5          20:30:00
   timeCond:
     0          0
     1          0
     2          0
     3          1
     4          1
     5          1
   timer:
     0          0
     1          0
     2          0
     3          0
     4          0
     5          0
   timers:
     0           0  1  2
     1           3  4  5
   trigger:
   triggertime:
     1545678000:
       localtime  1545678000
       hash:
     1545679800:
       localtime  1545679800
       hash:
     1545717600:
       localtime  1545717600
       hash:
     1545724800:
       localtime  1545724800
       hash:
   uiState:
   uiTable:
Attributes:
   do         always
   room       Logik,Timer
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: CoolTux am 24 Dezember 2018, 12:37:29

calendarBrbGermanyFeiertage:modeStart:.* { CommandSet(undef,'dummyBrbGermanyFeiertage ' . ($EVENT =~ /googlecom$|schulferien/ ? 1 : 0)); }


Schau es Dir bitte an und Versuche es zu verstehen.
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: masterpete23 am 24 Dezember 2018, 13:05:57
Bei eintreten jeden Events (.*) von calendarBrbGermanyFeiertage im Reading modestart wird der dummyBrbGermanyFeiertage gesetzt und zwar auf 1 wenn googlecom$ schulferien auftaucht? sonst auf 0.
Ist das korrekt interpretiert.
Müsste mein notify dann so lauten?

NI_Ferien:modeStart:.* { CommandSet(undef,'NI_Ferientag ' . ($EVENT =~ /calovo$|ferien/ ? 1 : 0)); }

Bin noch nicht ganz sicher mit dem calovo und ferien Teil

Zitat von: CoolTux am 24 Dezember 2018, 12:37:29

calendarBrbGermanyFeiertage:modeStart:.* { CommandSet(undef,'dummyBrbGermanyFeiertage ' . ($EVENT =~ /googlecom$|schulferien/ ? 1 : 0)); }


Schau es Dir bitte an und Versuche es zu verstehen.
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: CoolTux am 24 Dezember 2018, 13:45:05
Kommt drauf an wie dein Event aus schaut. Teste es doch. Rufe von hand den Kalender ab und schaue wie das Event aus schaut. Sofern ein Termin drin ist.
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: masterpete23 am 25 Dezember 2018, 17:13:13
Wir sind ja hier in "Anfängerfragen"  - wie geht das ?  ;D
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Ellert am 25 Dezember 2018, 17:35:13
Zitat von: masterpete23 am 25 Dezember 2018, 17:13:13
Wir sind ja hier in "Anfängerfragen"  - wie geht das ?  ;D
Kalender manuell abrufen set <name> reload  https://commandref.fhem.de/commandref.html#Calendar
Was ist ein Event? https://wiki.fhem.de/wiki/Event
Events ansehen https://wiki.fhem.de/wiki/Event_monitor

Das zu finden sollte auch für einen Anfänger nicht schwer sein  ;)
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Otto123 am 25 Dezember 2018, 21:17:01
Hi,

ich hätte noch meine Notiz, basiert letztlich auf einem Thread hier im Forum :) Ganz am Ende verlinkt.  Vielleicht hilft es.
https://heinz-otto.blogspot.com/2018/07/kalender-in-fhem-einbinden.html

Gruß Otto
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: masterpete23 am 26 Dezember 2018, 12:39:17
Danke.
Das habe ich geschafft.
Der Event Monitor spuckt dies aus:
2018-12-26 12:37:26 Calendar NI_Ferien reload
2018-12-26 12:37:26 dummy NI_Ferientag 0
2018-12-26 12:37:26 Calendar NI_Ferien retrieved
2018-12-26 12:37:26 dummy NI_Ferientag 0
2018-12-26 12:37:26 Calendar NI_Ferien parsed
2018-12-26 12:37:26 dummy NI_Ferientag 0
2018-12-26 12:37:26 dummy NI_Ferientag 0
2018-12-26 12:37:26 dummy NI_Ferientag 0
2018-12-26 12:37:26 Calendar NI_Ferien calname: Ferien - Niedersachsen
2018-12-26 12:37:26 Calendar NI_Ferien lastUpdate: 2018-12-26 12:37:26
2018-12-26 12:37:26 Calendar NI_Ferien nextUpdate: 2018-12-27 12:37:26
2018-12-26 12:37:26 dummy NI_Ferientag 0
2018-12-26 12:37:26 dummy NI_Ferientag 0
2018-12-26 12:37:26 Calendar NI_Ferien modeEnd: 5a11890ecbd4d68calovo;56df05a5048d268calovo;56f2f2f5d6edc68calovo;58d02f9d52ef568calovo;5a54887ddfd7f68calovo;56f2f2c60c66b68calovo;56f2f31eac4f768calovo;5a1188a41423468calovo
2018-12-26 12:37:26 Calendar NI_Ferien triggered
2018-12-26 12:37:26 dummy NI_Ferientag 0
2018-12-26 12:37:26 Calendar NI_Ferien nextWakeup: 2018-12-27 12:37:26

Leider kann ich es nicht ganz deuten ;/

Zitat von: Ellert am 25 Dezember 2018, 17:35:13
Kalender manuell abrufen set <name> reload  https://commandref.fhem.de/commandref.html#Calendar
Was ist ein Event? https://wiki.fhem.de/wiki/Event
Events ansehen https://wiki.fhem.de/wiki/Event_monitor

Das zu finden sollte auch für einen Anfänger nicht schwer sein  ;)
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Otto123 am 26 Dezember 2018, 12:58:59
Ich fange mal ganz vorne wieder an
ZitatIch vermute, dass der dummy nicht korrekt gesetzt wird.
Leider habe ich bisher nur copy n paste gemacht uns es noch nicht komplett durchdrungen  - daher kann ich auch noch nicht den Fehler finden.
Das größte Problem bei copy & paste ist, dass der Kopf selten eingeschaltet wird.  :o
Ändere mal die DEF von deinem notify:
{fhem "set NI_Ferientag " . (ReadingsVal("NI_Ferien", "modeStart", "") =~ "ferien" ? 1: 0) }

Der \ am Anfang ist sinnlos und eventuell störend. Ich finde das notify dann immer noch nicht glücklich aber vielleicht funktioniert es erstmal.

Gruß Otto
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: masterpete23 am 26 Dezember 2018, 13:28:17
Ja, dass copy und paste häufig den Kopf ausschaltet, stimmt leider.
Leider sind die Vorraussetzungen auch gerade nicht optimal WAF macht Druck :)
Notfiy geändert
DEF        NI_Ferien {fhem "set NI_Ferientag " . (ReadingsVal("NI_Ferien", "modeStart", "") =~ "ferien" ? 1: 0) }
Cal reload
Leider keine 1 hier
2018-12-26 13:25:22 dummy NI_Ferientag 0
2018-12-26 13:25:22 Calendar NI_Ferien reload
2018-12-26 13:25:22 dummy NI_Ferientag 0
2018-12-26 13:25:22 Calendar NI_Ferien retrieved
2018-12-26 13:25:22 dummy NI_Ferientag 0
2018-12-26 13:25:22 Calendar NI_Ferien parsed
2018-12-26 13:25:22 dummy NI_Ferientag 0
2018-12-26 13:25:22 dummy NI_Ferientag 0
2018-12-26 13:25:22 dummy NI_Ferientag 0
2018-12-26 13:25:22 Calendar NI_Ferien calname: Ferien - Niedersachsen
2018-12-26 13:25:22 Calendar NI_Ferien lastUpdate: 2018-12-26 13:25:22
2018-12-26 13:25:22 Calendar NI_Ferien nextUpdate: 2018-12-27 13:25:22
2018-12-26 13:25:22 dummy NI_Ferientag 0
2018-12-26 13:25:22 Calendar NI_Ferien triggered
2018-12-26 13:25:22 dummy NI_Ferientag 0


NACHTRAG: Ich habe noch nicht verstanden, was dieses hier bedeutet: "ferien"
Vllt liegt da ja der FEhler / das Problem  8)

Zitat von: Otto123 am 26 Dezember 2018, 12:58:59
Ich fange mal ganz vorne wieder anDas größte Problem bei copy & paste ist, dass der Kopf selten eingeschaltet wird.  :o
Ändere mal die DEF von deinem notify:
{fhem "set NI_Ferientag " . (ReadingsVal("NI_Ferien", "modeStart", "") =~ "ferien" ? 1: 0) }

Der \ am Anfang ist sinnlos und eventuell störend. Ich finde das notify dann immer noch nicht glücklich aber vielleicht funktioniert es erstmal.

Gruß Otto
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Otto123 am 26 Dezember 2018, 13:39:09
Naja dein modeStart ist mit 58d02fd3cbe5168calovo gefüllt.

Das notify testet auf ferien wenn ich das richtig verstehe. -> http://perldoc.perl.org/perlop.html#Binding-Operators
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Ellert am 26 Dezember 2018, 14:29:46
@masterpete23
Du solltest zuerst klären wie ein Kalenderevent aussieht, das modeStart setzt. Weiter solltest Du klären, wann der von Dir erwartete Wert nicht mehr in dem Reading steht, ob das tatsächlich erst am Ferienende der Fall ist.

Dazu könntest Du die Ferien testweise so legen, dass heute Beginn ist und reload durchführen, evtl. wird ein Event erzeugt. Wenn nicht, dann den Ferienbeginn auf morgen legen, den Eventmonitor loggen lassen, bis morgen, mit Filter auf den Kalender, damit das Log nicht zu müllt. Das Ende dann analog testen.

Wie hier bereits gesagt (https://forum.fhem.de/index.php/topic,94517.msg874458.html#msg874458), ich arbeite nicht mit einer Kalendersteuerung und weiss nicht, was der Kalender wann liefert.

Wenn Du mit DOIF weiter arbeiten willst, dann kannst Du Dir notify und Dummy sparen und DOIF_Readings (https://commandref.fhem.de/commandref_DE.html#DOIF_DOIF_Readings) verwenden.

Falls der bisher genannte Trigger funktioniert, dann so
attr dAquarium DOIF_Readings F_erien: [NI_Ferien:modeStart] =~ "ferien" ? 1: 0
im DOIF kann Du das Reading nutzen mit [$SELF:F_erien]
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag 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/);;\
}

Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Otto123 am 27 Dezember 2018, 10:58:45
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.
Er fragt aber nicht den Event ab sondern das Reading modeStart. Warum auch immer.  ;)
Wer sagt wieder das es alter Code ist?  ::)

Ich kenne die alte Version nicht, ich sehe nur seine Readings und seinen Code.  ;D

Gruß Otto
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: masterpete23 am 27 Dezember 2018, 11:18:01
Danke.

Ich probiere weiter.

puhu. nicht leicht das Thema
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Ellert am 27 Dezember 2018, 11:58:59
Zitat von: masterpete23 am 27 Dezember 2018, 11:18:01
Danke.

Ich probiere weiter.

puhu. nicht leicht das Thema
Die Verwendung eines o. mehrer holiday Geräte ist zusammen mit dem globalen Attribut holiday2we stärker in FHEM integriert als Calendar, es setzt die Variable $we, die dann in Bedingungen abgefragt wird.
Um bei DOIF zu bleiben, https://commandref.fhem.de/commandref_DE.html#DOIF_Wochentagsteuerung
Zitat[09:00|WE] triggert dann am Wochenende und Feiertags
[06:00|AT] triggert an Arbeitstagen (Mo-Fr), wenn nicht Feiertag ist,

https://commandref.fhem.de/commandref_DE.html#holiday für die Kalenderdatei gibt es einen Editor über den Menüpunkt Edit files.
https://commandref.fhem.de/commandref_DE.html#holiday2we
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: masterpete23 am 27 Dezember 2018, 14:32:53
Danke. So hatte ich mal meine Mülltonnen gemacht.
Ich habe gehofft, dass ich von der manuellen Tipperei wegkomme.
Glaube holiday ist einfacher als das was ich da mit meinen Kenntnissen hinbekomme.
Was meinst du mit dem Editor?
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Ellert am 27 Dezember 2018, 14:39:57
Zitat von: masterpete23 am 27 Dezember 2018, 14:32:53
Was meinst du mit dem Editor?
Den Button unter dem Menüpunkt Edit Files, der die holiday Datei öffnet oder in der Detailansicht des holiday Gerätes.
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: masterpete23 am 27 Dezember 2018, 15:26:51
habe es im holiday ordner und da steht was von readonly 1
kann es daran liegen?
aber kann es ja einfach mit winscp bearbeiten
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Ellert am 27 Dezember 2018, 15:47:28
Eher altes FHEM, meine Datei liegt in ./FHEM und nur fhem als Besitzer hat Schreibrecht.
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: masterpete23 am 27 Dezember 2018, 16:40:53
Was meinst du mit altes FHEM ?:)
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Ellert am 27 Dezember 2018, 17:00:04
alter Softwarestand
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Otto123 am 27 Dezember 2018, 18:31:13
Zitat von: masterpete23 am 27 Dezember 2018, 15:26:51
aber kann es ja einfach mit winscp bearbeiten
Keine gute Idee. Führt zu Berechtigungsproblemen und bestenfalls zu Dateien in Windows Codierung anstatt Linux Codierung. Beides führt getrennt und in Kombination zur Aussage: Geht nicht.  ;D

Mein link führt doch zu leicht nachvollziehbaren Beispielen mit Calendar - für Dich nicht nachvollziehbar?

Die Suche nach dem Event führt dich nicht zum Ziel...

Gruß Otto
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: masterpete23 am 28 Dezember 2018, 07:51:33
Zitat von: Ellert am 27 Dezember 2018, 17:00:04
alter Softwarestand
du verwirrst mich? Meinst du der holiday ordner an sich oder  FHEM?
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: masterpete23 am 28 Dezember 2018, 07:53:52
Danke für den Hinweis.
Bisher war es für mich noch nicht leicht nachvollzierbar, daher habe ich erstmal die holiday Lösung im Test.
Aber deins werde ich auch noch versuchen zu verstehen- DANKE!
Zitat von: Otto123 am 27 Dezember 2018, 18:31:13
Keine gute Idee. Führt zu Berechtigungsproblemen und bestenfalls zu Dateien in Windows Codierung anstatt Linux Codierung. Beides führt getrennt und in Kombination zur Aussage: Geht nicht.  ;D

Mein link führt doch zu leicht nachvollziehbaren Beispielen mit Calendar - für Dich nicht nachvollziehbar?

Die Suche nach dem Event führt dich nicht zum Ziel...

Gruß Otto
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Beta-User am 28 Dezember 2018, 08:05:47
Moin,
wenn du die holiday-Datei automatisiert erstellt haben möchtest: Code ist hier (https://forum.fhem.de/index.php/topic,85759.0.html) zu finden.
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: masterpete23 am 28 Dezember 2018, 08:12:02
Zitat von: Beta-User am 28 Dezember 2018, 08:05:47
Moin,
wenn du die holiday-Datei automatisiert erstellt haben möchtest: Code ist hier (https://forum.fhem.de/index.php/topic,85759.0.html) zu finden.
Notiert auf der Todo Liste - danke
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Otto123 am 28 Dezember 2018, 09:23:50
Zitat von: masterpete23 am 28 Dezember 2018, 07:51:33
du verwirrst mich? Meinst du der holiday ordner an sich oder  FHEM?
https://commandref.fhem.de/commandref_DE.html#holiday

Früher wurden die holiday Dateien anders ausgeliefert -> https://forum.fhem.de/index.php/topic,30861.msg680245.html#msg680245

Gruß Otto
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Ellert am 28 Dezember 2018, 20:18:24
Zitat von: masterpete23 am 28 Dezember 2018, 07:51:33
du verwirrst mich? Meinst du der holiday ordner an sich oder  FHEM?
Was meinst Du? Warum habe ich wohl FHEM geschrieben?  ;)
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: masterpete23 am 28 Dezember 2018, 21:14:42
Zitat von: Ellert am 28 Dezember 2018, 20:18:24
Was meinst Du? Warum habe ich wohl FHEM geschrieben?  ;)
viele mögliche Gründe haben das kann junger Padawan 8) ;D
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Otto123 am 28 Dezember 2018, 22:07:15
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
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Steffen am 15 Oktober 2019, 09:07:26
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
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Beta-User am 15 Oktober 2019, 09:22:07
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/);;\
}

Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Steffen am 15 Oktober 2019, 11:06:45
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
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Beta-User am 15 Oktober 2019, 11:16:22
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
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Steffen am 15 Oktober 2019, 11:30:25
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
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag 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.
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Steffen am 15 Oktober 2019, 11:39:14
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
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Otto123 am 15 Oktober 2019, 11:40:47
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
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Steffen am 15 Oktober 2019, 11:46:28
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
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Otto123 am 15 Oktober 2019, 11:55:26
Vielleicht hilft Dir dieses Beispiel  (https://heinz-otto.blogspot.com/2019/01/kalender-in-fhem-auf-bestimmte-termine.html)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...
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Steffen am 15 Oktober 2019, 15:02:37
Zitat von: Otto123 am 15 Oktober 2019, 11:55:26
Vielleicht hilft Dir dieses Beispiel  (https://heinz-otto.blogspot.com/2019/01/kalender-in-fhem-auf-bestimmte-termine.html)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
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Beta-User am 15 Oktober 2019, 16:10:18
@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...).
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Steffen am 15 Oktober 2019, 16:35:07
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
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Beta-User am 15 Oktober 2019, 16:49:56
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.
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Steffen am 15 Oktober 2019, 18:11:06
Asc hatte ich mir auch schon angesehen, aber muss sagen durch einen Sensor der als Xiaomi-Bodensensor meine Daten für Lux holt, war dann DOIF für mich die Bessere Wahl.

Ich nutze jetzt DOIF schon sehr lange und konnte bis jetzt alles damit umsetzten was für mich zu Steuern war, damit Steuer ich Alexa,Anwesenheit,Gartenbewässerung,Heizung,Licht und jetzt sind auch Rollos dazu gekommen und da war jetzt der Haken denn da konnte ich auch Lichtverhältnisse und Zeiten sowie Fenster/Türen offen umsetzten, aber ist jetzt ist mir in den Ferien aufgefallen das das Rolle auch in der Zeit aufgeht, was in meinem Komplexen DOIF dann einfach gegen zu steuern wäre mit nur einer Abfrage zu einen Dummy der den Wert hätte Ferien "ja/nein".

Ferien "ja" habe ich ja nun schon, jetzt muss ich sehen wie ich ein "nein" zaubern kann, aber irgendwie werde ich schon was finden.

trotzdem danke für eure Geduld und Hilfe schon mal...

Mfg Steffen
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Otto123 am 15 Oktober 2019, 19:51:09
@Beta-User: Jeder Termin im Kalender wirft 9 Events  - es macht keinen Sinn auf alle 9 zu reagieren wenn einer oder zwei reichen. :)
                       Und ich wollte natürlich auch ein wenig sticheln :) :)
Vorschlag (getestet, damit  end funktioniert muss from etwas "früher" anfangen):
Familienkalender:changed:.*(start|end) { fhem("set BB_Ferien $EVTPART2") if defined fhem('get '.$NAME.' events filter:uid=="'.$EVTPART1.'",field(summary)=~"(?i)Herbstferien" limit:count=1,from=-2',1) }
Und im Dummy setzt Du einfach
attr BB_Ferien eventMap start:ja end:nein

Aber wenn das funktioniert sollte man die Sache einfacher gestalten. :)
z.B.: Du setzt Readings einfach im Kalender Device
Familienkalender:changed:.*(start|end) { fhem("setreading $NAME Ferien $EVTPART2") if defined fhem('get '.$NAME.' events filter:uid=="'.$EVTPART1.'",field(summary)=~"(?i)ferien" limit:count=1,from=-2',1) }

Gruß Otto
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Steffen am 15 Oktober 2019, 22:42:57
Zitat von: Otto123 am 15 Oktober 2019, 19:51:09
@Beta-User: Jeder Termin im Kalender wirft 9 Events  - es macht keinen Sinn auf alle 9 zu reagieren wenn einer oder zwei reichen. :)
                       Und ich wollte natürlich auch ein wenig sticheln :) :)
Vorschlag (getestet, damit  end funktioniert muss from etwas "früher" anfangen):
Familienkalender:changed:.*(start|end) { fhem("set BB_Ferien $EVTPART2") if defined fhem('get '.$NAME.' events filter:uid=="'.$EVTPART1.'",field(summary)=~"(?i)Herbstferien" limit:count=1,from=-2',1) }
Und im Dummy setzt Du einfach
attr BB_Ferien eventMap start:ja end:nein

Aber wenn das funktioniert sollte man die Sache einfacher gestalten. :)
z.B.: Du setzt Readings einfach im Kalender Device
Familienkalender:changed:.*(start|end) { fhem("setreading $NAME Ferien $EVTPART2") if defined fhem('get '.$NAME.' events filter:uid=="'.$EVTPART1.'",field(summary)=~"(?i)ferien" limit:count=1,from=-2',1) }

Gruß Otto

Das wäre ja Perfekt aber leider bekomme ich bei beiden kein Ergebnis egal bei welchen von den beiden Versionen.

Ich versuche das Morgen früh nochmal durch zuspielen, wo der Fehler liegt, denn gerade geht mein Akku zu neige...

Mfg Steffen
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: riker1 am 17 März 2020, 13:00:00
Hallo,

wollte das mal nachbauen.

Habe aber folgenden Fehler:

2020.03.17 00:00:05.283 1: ERROR evaluating my $NAME='RLP_Ferientag';my $TYPE='dummy';my $EVENT='0';my $EVTPART0='0';my $SELF='N_RLP_Ferien1';{
fhem("set  RLP_Ferien_dummy 1") if defined fhem('get '.$NAME.' events filter:uid=="'.$EVTPART1.'",field(SUMMARY)=~"(?i)ferien" limit:count=1,from=0',1);
fhem("set  RLP_Ferientag 1") if defined fhem('get '.$NAME.' events filter:uid=="'.$EVTPART1.'",field(SUMMARY)=~"(?i)ferien" limit:count=1,from=0',1)
}: Global symbol "$EVTPART1" requires explicit package name (did you forget to declare "my $EVTPART1"?) at (eval 181226) line 2.
Global symbol "$EVTPART1" requires explicit package name (did you forget to declare "my $EVTPART1"?) at (eval 181226) line 3.

2020.03.17 00:00:05.283 3: N_RLP_Ferien1 return value: Global symbol "$EVTPART1" requires explicit package name (did you forget to declare "my $EVTPART1"?) at (eval 181226) line 2.
Global symbol "$EVTPART1" requires explicit package name (did you forget to declare "my $EVTPART1"?) at (eval 181226) line 3.



defmod N_RLP_Ferien1 notify RLP_Ferien.* {\
fhem("set  RLP_Ferien_dummy 1") if defined fhem('get '.$NAME.' events filter:uid=="'.$EVTPART1.'",field(SUMMARY)=~"(?i)ferien" limit:count=1,from=0',1);;\
fhem("set  RLP_Ferientag 1") if defined fhem('get '.$NAME.' events filter:uid=="'.$EVTPART1.'",field(SUMMARY)=~"(?i)ferien" limit:count=1,from=0',1)\
}


Was mache ich denn falsch?

Danke VG T
Titel: Antw:Kalender Ferien, dummy notify - will nicht
Beitrag von: Otto123 am 17 März 2020, 13:57:50
Hallo riker1,

ich denke der hier ist falsch: RLP_Ferien.*
Was ist RLP_Ferien? Ein Calendar Device? Das notify reagiert mit .* auf viel zu viele Events!
Hier hast Du ein Beispiel  (https://heinz-otto.blogspot.com/search?q=calendar)dafür.

Wenn Du das nachbauen willst was Steffen wollte, warum hast Du dann den Trigger nicht analog gesetzt? RLP_Ferien:changed:.*(start|end)

Der Fehler sagt:"Global symbol "$EVTPART1" requires explicit package name" es gibt keinen $EVTPART1 - also besteht der Event auf den reagiert wurde nur aus einem Element.

Gruß Otto