den $e - Hash um $e->{name}, $e->{done} erweitern (Plug-In)

Begonnen von DS_Starter, 01 November 2017, 20:35:47

Vorheriges Thema - Nächstes Thema

DS_Starter

Guten Abend Boris,

ich bin gerade dabei im Calendar-Modul die Plug-Ins zu nutzen. Super Sache ... vielen Dank dafür  :)
Wäre es möglich die $e-Referenz um den Namen des Calendar-Moduls, also $e->{name},  zu erweitern ?

Hintergrund:  Ich habe mir eine Sub in 99_myUtils geschrieben, die ich im Calendar-Modul in Attr onCreateEvent hinterlege.


onCreateEvent   {main::appointToHoliday($e)}


Über diese Routine filtere ich nach dem Calendar-Reload z.B. alle Urlaubstermine heraus um sie dann automatisch im richtigen Format in eine holiday-Datei einzufügen. Dazu benötige ich eine Information wenn das Calendar-Modul die Datenverarbeitung abgeschlossen hat und keine weiteren (Urlaubs)-Daten mehr geliefert werden. Dazu benutze ich die Auswertung des state-Readings.
Bei Verwendung nur eines Calendar-Devices kann ich einfach über ein

$hash = $defs{$name};

auf den Calendar-Hash und damit auf state zugreifen. Nur wenn ich meine Routine von verschiedenen Calendars aus aufrufe, wäre es hilfreich über
$e->{name} den Namen des aufrufenden Calendars übermttelt zu bekommen und damit auf den jeweiligen Calendar-Hash (state) zugreifen  zu können bzw. über $e->{done} ein Endesignal zu bekommen.

Vielleicht könntest du eine solche Erweiterung, oder ähnliche,  mit vorsehen.

LG
Heiko



ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Dr. Boris Neubert

Hallo Heiko,

der Kode zu onCreateEvent sitzt im Package ICal::Entry. Dort habe ich weder den Namen des ICalendar noch des FHEM-Calendar-Geräts. Es wäre eine ziehmlich aufwendige Änderung, diesen Namen bis in die allertiefsten Tiefen des Kodes durchzureichen.

Da Du onCreateEvent als Attribut am Calendar hast, könntest Du doch den Namen direkt mitgeben:

onCreateEvent   {main::appointToHoliday("Urlaubskalender", $e)}

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

DS_Starter

Hallo Boris,

also Schande über mich  ;) ... ich war so sehr auf die Verwendung des $e Hash fixiert, dass ich den Wald vor lauter Bäumen nicht sah.
Danke für den Tipp und das sehr schöne Kalendermodul !

LG,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter