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
calendarBrbGermanyFeiertage:modeStart:.* { CommandSet(undef,'dummyBrbGermanyFeiertage ' . ($EVENT =~ /googlecom$|schulferien/ ? 1 : 0)); }
Schau es Dir bitte an und Versuche es zu verstehen.
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.
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.
Wir sind ja hier in "Anfängerfragen" - wie geht das ? ;D
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 ;)
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
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 ;)
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
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
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
@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]
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/);;\
}
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
Danke.
Ich probiere weiter.
puhu. nicht leicht das Thema
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
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?
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.
habe es im holiday ordner und da steht was von readonly 1
kann es daran liegen?
aber kann es ja einfach mit winscp bearbeiten
Eher altes FHEM, meine Datei liegt in ./FHEM und nur fhem als Besitzer hat Schreibrecht.
Was meinst du mit altes FHEM ?:)
alter Softwarestand
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
Zitat von: Ellert am 27 Dezember 2018, 17:00:04
alter Softwarestand
du verwirrst mich? Meinst du der holiday ordner an sich oder FHEM?
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
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.
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
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
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? ;)
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
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
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
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/);;\
}
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
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
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
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.
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
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
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
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...
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
@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...).
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
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.
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
@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
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
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
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