Kalender Ferien, dummy notify - will nicht

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

Vorheriges Thema - Nächstes Thema

masterpete23

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

CoolTux


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


Schau es Dir bitte an und Versuche es zu verstehen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

masterpete23

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.

CoolTux

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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

masterpete23

Wir sind ja hier in "Anfängerfragen"  - wie geht das ?  ;D

Ellert

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

Otto123

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

masterpete23

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

Otto123

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

masterpete23

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

Otto123

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

Ellert

#11
@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, 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 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]

Beta-User

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

Otto123

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

masterpete23

Danke.

Ich probiere weiter.

puhu. nicht leicht das Thema