[Patch 95_holiday.pm] Dateiname unabhängig vom Device Name

Begonnen von Loredo, 15 Mai 2017, 10:18:49

Vorheriges Thema - Nächstes Thema

Loredo

Hallo Rudi,


schon öfters hatte ich den Wunsch den Dateinamen einer .holiday-Datei unabhängig vom Gerätenamen und in einem beliebigen Verzeichnis anzugeben.
Beiliegender kleiner Patch erweitert 98_holiday um diese Funktion, indem man optional den Dateinamen relativ zu modpath/FHEM mit angeben kann.
Man kann dann recht einfach die vorhandenen .holiday-Dateien in ./contrib/ direkt verwenden und muss diese nicht extra kopieren/symlinken und umbenennen:



define PublicHoliday holiday ../contrib/by.holiday



Auch wenn ./contrib/ nicht über den Update Mechanismus aktuell gehalten wird, ist das eine ganz gute Hilfe denke ich.


Ich habe auch die CommandRef entsprechend überarbeitet. Dabei habe ich auch angegeben, dass ich gestern eine Holiday-Datei namens de-social.holiday nach ./contrib/ eingecheckt habe, welche als Ergänzung zu den offiziellen Feiertagen in den anderen Dateien weitere Festtage (nicht Feiertage!), an denen man aber nicht frei hat, sowie soziale Zeiträume (Faschingszeit, Fastenzeit/Starkbierzeit, Passionszeit, Karwoche, Osterzeit, Wiesnzeit, Halloweenzeit, Adventszeit, Jahreswechsel) anzeigt.


Oktoberfest und Wiesnzeit kann man noch genauer definieren, dazu ist mir noch keine Möglichkeit eingefallen, ohne dass man an der vorhandenen Logik von 95_holiday etwas erweitern müsste.
Beispielsweise geht das Oktoberfest bis zum 3.10., wenn der 1. oder 2. Oktober ein Sonntag ist. Auch weiß ich nicht, wie ich die  Zeit zwischen 4. Advent und Heiligabend (inkl.) richtig adressieren soll. Vielleicht hast du da eine Idee für?




Viele Grüße
Julian
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

betateilchen

Zitat von: Loredo am 15 Mai 2017, 10:18:49
Man kann dann recht einfach die vorhandenen .holiday-Dateien in ./contrib/ direkt verwenden und muss diese nicht extra kopieren und umbenennen:

Das kann man auch, wenn man die Dateien aus ./contrib einfach nach ./FHEM verlinkt.

Die Idee mit dem unabhängigen Namen hatte ich vor längerer Zeit auch schonmal, aber irgendwas hat dann nicht mehr richtig funktioniert. (müsste jetzt mal tief in mich gehen, um rauszufinden, was das war)

Also bitte Vorsicht beim Einchecken.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

JoWiemann

Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

betateilchen

#3
Und die Migration von fhem.cfg zur configDB funktionert mit dem vorgeschlagenen Patch auch nicht mehr.
Das war der Punkt, an dem ich damals den Patch zu individuellen Dateinamen abgebrochen hatte.

Dieses Problem ist lösbar, erfordert aber eine (entwicklungsseitige) Abstimmung und parallele Umsetzung im holiday-Modul und in der configDB.



-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Anmerkung: Ob man "Muttertag" wirklich in einem bundeslandspezifischen holiday-file braucht, wage ich zu bezweifeln. Ist mir grade beim Testen aufgefallen, als das Reading unter "yesterday" auftauchte.




Zum Thema Migration von fhem.cfg -> configDB.pm:

In holiday_Define() muss ein Internal namens "HOLIDAYFILE" angelegt werden, in dem der komplette Pfad/Dateiname einer individuellen .holiday Datei steht.

Dann kann die Migration dieses Internal auswerten und für die Migration verwenden. Falls das Internal nicht vorhanden ist, wird der Pfad/Dateiname nach der bisherigen Logik zusammengebaut und für die Migration verwendet. Somit ist größtmögliche Kompatibilität zu vorhandenen Installationen gegeben.

Diese Änderung ist eingecheckt und ab morgen per Update verfügbar.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Loredo

#5
Zitat von: JoWiemann am 15 Mai 2017, 16:38:29
Hm, es gibt Module die auf Holiday zugreifen:

z.B. https://forum.fhem.de/index.php/topic,35143.msg274593.html#msg274593


Ja, hauptsächlich wohl meine und HOMEMODE (soweit ich weiß). Aber das hat ja mit dem Device Namen nichts zu tun ;-)


Zitat von: betateilchen am 15 Mai 2017, 21:02:21
In holiday_Define() muss ein Internal namens "HOLIDAYFILE" angelegt werden, in dem der komplette Pfad/Dateiname einer individuellen .holiday Datei steht.


Ich habe den Patch oben entsprechend abgeändert, so dass ein INTERNAL für die Ablage des Pfades verwendet wird.
Es ist allerdings trotzdem ein relativer Pfad auf Basis von modpath. Wenn das anders sein muss, bitte bescheidgeben.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

betateilchen


  my @a = split(" ",$hash->{DEF});


gefällt mir nicht.


  my @a = split("[ \t]+", $def);


fände ich besser. Das entspricht dem Standard, der in den allermeisten Modulen verwendet wird.

(dann natürlich $a[2] als Dateiname auswerten)




Wie der Pfad aussieht, ist mir völlig wurscht, solange das Modul die Datei unter dem angegebenen Pfad/Datei findet.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Eigentlich bin ich dafür, das holiday-Modul so zu lassen, wie es ist.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Loredo

 ::)


Niemand mag Klugscheißer, die sich noch dazu nicht entscheiden können.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

betateilchen

#9
Und niemand mag Entwickler, die Änderungen an fremden Modulen vorschlagen,
ohne über den eigenen Anforderungshorizont hinauszuschauen und darüber nachzudenken,
ob die Änderung für alle Anwender problemlos funktioniert.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Hast Du eigentlich darüber nachgedacht, dass man .holiday Dateien nicht mehr per "Edit files" bearbeiten können wird, wenn sie kreuz und quer verstreut liegen?

Es gibt noch mehr Punkte, die gegen frei wählbare Ablageorte sprechen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Loredo

Zitat von: betateilchen am 15 Mai 2017, 22:56:07
Und niemand mag Entwickler, die Änderungen an fremden Modulen vorschlagen,
ohne über den eigenen Anforderungshorizont hinauszuschauen und darüber nachzudenken,
ob die Änderung für alle Anwender problemlos funktioniert.

Das ist ziemlich unfair, denn du kannst wohl kaum verlangen, dass jemand sämtliche Abhängigkeiten kennt. Dafür ist man eigentlich eine Entwickler Gemeinschaft und beratschlagt und verbessert Vorschläge zusammen. Du gehörst aber leider zu denen, die gerne stänkern und sich daran erfreuen, wenn sie trollgefüttert werden.

Letztlich gibt es einen Maintainer als Torhüter, der die Abhängigkeiten besser kennt und bewerten kann. Deshalb checken wir Änderungen nicht einfach selbst ein, remember?

Zitat von: betateilchen am 15 Mai 2017, 23:16:57
Hast Du eigentlich darüber nachgedacht, dass man .holiday Dateien nicht mehr per "Edit files" bearbeiten können wird, wenn sie kreuz und quer verstreut liegen?

Es bleibt ja alles wie bisher, niemand wird gezwungen Dateien anderswo abzulegen. Ich finde es wieder urkomisch, dass du nur für mehr Freiheit und gegen Bevormundung bist, wenn es deinem eigenen Anliegen dienlich ist.  ::)

Bisher haben wir auch noch keine andere Stimme gehört.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

betateilchen

Zitat von: Loredo am 15 Mai 2017, 23:28:27
Ich finde es wieder urkomisch, dass du nur für mehr Freiheit und gegen Bevormundung bist, wenn es deinem eigenen Anliegen dienlich ist.

Was ist denn bitte MEIN Anliegen in dieser Sache? Dass dafür gesorgt wird, dass DEIN Anliegen nicht sämtliche Mechanismen bricht, die bisher gut funktionieren.

Und daran finde ich überhaupt nichts Urkomisches, sondern ich finde die frei wählbaren Ablageorte einfach wenig sinnvoll, wenn man daran denkt, was alles mit daran hängt.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

Zitatschon öfters hatte ich den Wunsch den Dateinamen einer .holiday-Datei unabhängig vom Gerätenamen und in einem beliebigen Verzeichnis anzugeben.
Das hatten Andere auch schon, und ich habe bisher diesen Wunsch nicht erfuellt. Nicht, weil ich es nicht programmieren koennte, oder ich den Leuten Freiheiten wegnehmen will, sondern weil ich mag, wenn etwas einfach gebaut ist. Ich finde ein "cp contrib/he.holiday FHEM" nicht zu viel verlangt, dafuer gibt es weniger Probleme beim bearbeiten in FHEMWEB, backup, etc.

ZitatOb man "Muttertag" wirklich in einem bundeslandspezifischen holiday-file braucht, wage ich zu bezweifeln.
Darueber bin ich auch nicht gluecklich, insb. dass man dabei von anderen angelegte Dateien modifiziert hat.
Ich frage mich, wieso "Vatertag" vergessen wurde (siehe auch Gleichberechtigung), und wenn man konsequent ist, dann muesste man den Sysadmin-Tag und Tag des Borkenkaefers auch eintragen. Ich habe nix dagegen, sowas in dem neuen de-social zu speichern, aber ich bitte dich, die restlichen Dateien zurueckzuaendern.

Btw. de-social: das Mischen von Christilichen (Osterzeit, Passionszeit, Adventzeit) und Nicht-Christlichen Festen (Halloween, Wiesnzeit) koennte fuer Diskussion sorgen. Ich wusste z.Bsp. gar nicht, dass Halloween eine ganze Woche dauert. Und dass ab 27. Dezember Jahreswechsel ist.


betateilchen

Zitat von: rudolfkoenig am 17 Mai 2017, 13:16:42
Das hatten Andere auch schon, und ich habe bisher diesen Wunsch nicht erfuellt.

es gibt sogar Leute, die Dir dafür dankbar sind :)

Zitat von: rudolfkoenig am 17 Mai 2017, 13:16:42
insb. dass man dabei von anderen angelegte Dateien modifiziert hat.
...
Ich habe nix dagegen, sowas in dem neuen de-social zu speichern, aber ich bitte dich, die restlichen Dateien zurueckzuaendern.

*unterschreib*

Zitat von: rudolfkoenig am 17 Mai 2017, 13:16:42
Btw. de-social: das Mischen von Christilichen (Osterzeit, Passionszeit, Adventzeit) und Nicht-Christlichen Festen (Halloween, Wiesnzeit) koennte fuer Diskussion sorgen. Ich wusste z.Bsp. gar nicht, dass Halloween eine ganze Woche dauert. Und dass ab 27. Dezember Jahreswechsel ist.

Und was ist mit orthodoxen, islamischen und jüdischen Feiertagen?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!