Abfrage ob heute/morgen Ferientag/Feiertag mit CALVIEW

Begonnen von Adimarantis, 15 Februar 2024, 09:22:35

Vorheriges Thema - Nächstes Thema

Adimarantis

Hallo,

Zur Steuerung von Heizung und Rollos wäre es sinnvoll zu wissen, ob heute (Rollos später hoch, Heizung später an) und morgen (Heizung länger an) ein freier Tag ist.
Dazu habe ich mittels CALVIEW und Calender Devices entsprechende Ferien- und Feiertagskalender eingebunden.
Insbesondere bei den Ferien (mehrtägige Events) ist es allerdings nicht trivial rauszufinden ob heute (oder morgen) ein Ferientag ist.
Die Readings c-today und c-tomorrow liefern hier keine brauchbaren Werte (ich finde jetzt auf Anhieb aber auch gar nicht, wofür die genau gedacht sind).

Aktuell behelfe ich mich mit einer myUtils Routine, aber der Anwendungsfall sollte doch eigentlich recht gängig sein.
Gibt es das eventuell schon? Oder könnte man CALVIEW so erweitern, dass in einem Reading ein Flag steht für "heute gilt ein ganztägiges oder mehrtägiges Ereignis" und das selbe auch für morgen?

Jörg
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Beta-User

Zitat von: Adimarantis am 15 Februar 2024, 09:22:35Hallo,

Zur Steuerung von Heizung und Rollos wäre es sinnvoll zu wissen, ob heute (Rollos später hoch, Heizung später an) und morgen (Heizung länger an) ein freier Tag ist.
Dazu habe ich mittels CALVIEW und Calender Devices entsprechende Ferien- und Feiertagskalender eingebunden.
Insbesondere bei den Ferien (mehrtägige Events) ist es allerdings nicht trivial rauszufinden ob heute (oder morgen) ein Ferientag ist.
Die Readings c-today und c-tomorrow liefern hier keine brauchbaren Werte (ich finde jetzt auf Anhieb aber auch gar nicht, wofür die genau gedacht sind).

Aktuell behelfe ich mich mit einer myUtils Routine, aber der Anwendungsfall sollte doch eigentlich recht gängig sein.
Gibt es das eventuell schon? Oder könnte man CALVIEW so erweitern, dass in einem Reading ein Flag steht für "heute gilt ein ganztägiges oder mehrtägiges Ereignis" und das selbe auch für morgen?

Jörg

Ich löse das über eine calendar2holiday-Konvertierung (ohne calview). Sollte bei Interesse unter diesem Stichwort zu finden sein.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Adimarantis

Ok, ich hatte mich da jetzt etwas zu sehr auf CALVIEW versteif (den ich aber trotzdem wegen Anzeige auf FTUI brauche).
Calendar bietet indirekt Optionen. Ein Reading wär mir zwar lieber, aber mit einem relativ einfachen DOIF definier ich mir zwei Dummys.
Um rauszufinden ob morgen frei ist, kombiniere ich Wochenende, Feiertag und Ferien - scheint zumindest gerade (Winterferien) zu klappen.
{
 if ("[Feiertage_Bayern:tomorrow]" eq "none" and (fhem("get Ferien events limit:when=tomorrow") eq "") and $wday<5) {
   fhem("set Ferientag_Morgen 0");
 } else {
   fhem("set Ferientag_Morgen 1");
 }
 if ("[Feiertage_Bayern:today]" eq "none" and (fhem("get Ferien events limit:when=today") eq "") and $we==0) {
   fhem("set Ferientag_Heute 0");
 } else {
   fhem("set Ferientag_Heute 1");
 }
}

Muss ich erstmal beobachten, ob es sonst auch tut, bevor ich es produktiv verwende.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Beta-User

Zitat von: Adimarantis am 15 Februar 2024, 13:15:14Ok, ich hatte mich da jetzt etwas zu sehr auf CALVIEW versteif (den ich aber trotzdem wegen Anzeige auf FTUI brauche).
Calendar bietet indirekt Optionen. Ein Reading wär mir zwar lieber, aber mit einem relativ einfachen DOIF definier ich mir zwei Dummys.
Um rauszufinden ob morgen frei ist, kombiniere ich Wochenende, Feiertag und Ferien - scheint zumindest gerade (Winterferien) zu klappen.
{
 if ("[Feiertage_Bayern:tomorrow]" eq "none" and (fhem("get Ferien events limit:when=tomorrow") eq "") and $wday<5) {
   fhem("set Ferientag_Morgen 0");
 } else {
   fhem("set Ferientag_Morgen 1");
 }
 if ("[Feiertage_Bayern:today]" eq "none" and (fhem("get Ferien events limit:when=today") eq "") and $we==0) {
   fhem("set Ferientag_Heute 0");
 } else {
   fhem("set Ferientag_Heute 1");
 }
}

Muss ich erstmal beobachten, ob es sonst auch tut, bevor ich es produktiv verwende.

Hier bei uns ist halt noch "holiday2we" im Einsatz, und damit ist es - je nachdem, welche holiday-Devices definiert sind - eben hilfreich, das ganze mit
{IsWe("tomorrow")}abfragen zu können. Gilt dann halt systemweit und wird z.B. auch von AutoShuttersControl direkt mit beachtet. Geht natürlich auch, wenn man entsprechende Readings z.B. an einem dummy füllt.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Dr. Boris Neubert

Zitat von: Adimarantis am 15 Februar 2024, 09:22:35Zur Steuerung von Heizung und Rollos wäre es sinnvoll zu wissen, ob heute (Rollos später hoch, Heizung später an) und morgen (Heizung länger an) ein freier Tag ist.

Ich hatte so etwas vor ein paar Jahren am Laufen, finde aber den Code nicht mehr.

Für Ferientag heute lässt es sich leicht lösen, wenn man auf die Events start und stop ein Notify legt (Beispiel in der CommandRef) und damit einen Dummy "FerienHeute" schaltet. Für Ferientag morgen könntest Du per Plug-in einen Alarm einen Tag vor Ende des Termins an den Termin dranfummeln und eine zweiten Dummy "FerienMorgen" abschalten, wenn das Event alarm kommt.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

D3ltorohd

#5
Hallo zusammen. Ich hatte mich glaub letztes Jahr auch durchgekämpft und auch hinbekommen, das die Rollos in den Ferien, später fahren. In diesem Jahr wars das natürlich, weil denke ich mal, die URLS zu den Tagen nicht aktuell waren. Diese hab ich nun angepasst. Aber wo kann ich jetzt nachprüfen oder sehen, ob die Rollos morgen später fahren. Müsste die Uhrzeit dann bei den Rollos auf 8 Uhr stehen, das ist die WE Time Up ?

Denn dann hab ich noch irgendwo nen Fehler drin. Ich weiß auch gar nicht mehr richtig wie ich das damals hinbekommen habe. ::)  :P

Kann aber auch sein, das ich das über die URL's nicht hinbekommen habe. Aber was ich mit der Datei gemacht hab, weiß ich auch nicht mehr.

So sieht es momentan aus.

Du darfst diesen Dateianhang nicht ansehen.

Du darfst diesen Dateianhang nicht ansehen.

Du darfst diesen Dateianhang nicht ansehen.

Hm wenn ich die Datei bw.holiday bearbeite und dort folgendes Eintrage, geht es sofort.  4 03-24 04-05 Osterferien. Die Rollos fahren morgen später bei den Kids.

Aber wie kann ich das mit den Urls über die Kalender automatisieren ? Das ich das nicht händisch eintragen muss ? Oder geht das mit den Calender Devices nicht ?

Grüße,
D3ltoro 
Base : Intel NUC Debian 9, FHEM aktuell || Zigbee (Coordinator FW Z-Stack 1.2 default Koenkk) || MaxCUL (culfw V 1.67 nanoCUL868) || SIGNALduino 433MHz (V 3.3.2.1-rc8 ) || Shelly s1