Feiertagssteuerung und Max

Begonnen von Sargon, 25 Januar 2015, 20:19:03

Vorheriges Thema - Nächstes Thema

Sargon

Hallo zusammen,

ich bin aktuell am Überlegen wie ich eine Feiertagssteuerung für meine Thermostate (Mietwohnung) realisieren kann.

Meine Idee ist für jedes Heizkörperthermostat einen Dummy einzurichten und in diesem das Wochenprofil des jeweiligen Thermostaten zu speichern. Wenn mir die $we Variable nun sagt es ist ein Feiertag (Holiday Liste ist eingebunden) aber es gleichzeitig ein Wochentag ist dann soll aus dem Dummy entsprechend ein Wochenende Profil Tag genommen werden und in das jeweilige Thermostat geschrieben werden.
- Wenn der Tag nach dem Feiertag ein Werktag ist dann soll der Sonntag genommen werden.
- Wenn der Tag nach dem Feiertag ein weiterer Feiertag oder ein Wochenende ist dann soll der Samstag genommen werden.
Zudem soll der Dummy verwendet werden um das Wochenprofil des Thermostates wieder auf das richtige Wochenprofil zurückzusetzen.

Hat jemand sowas für die Max Thermostate bereits realisiert oder eine andere Lösung umgesetzt?
Wie kann ich denn in einen Dummy das Wochenprofil eines Thermostates kopieren und wieder zurück? Wird der Dummy mit seinem Wochenprofil persistent (fhem.save) gespeichert? Wie kann ich ermitteln ob Morgen auch ein Feiertag ist, also $we manipulieren?

Gruß
Thomas

Unitymedia IPv6, Synology 212+, Cul, 4 Max Thermostate und 4 Fensterkontakte

der-Lolo

So ganz verstehe ich nicht was Du vorhast...
Aber ich würde versuchen einen Tag vorher - oder eben vor dem ersten schaltpunkt schauen ob ein Feiertag ansteht, dann würde ich diesen Tag einfach neu ins Wochenprofil schreiben - und nach ende des Tages wieder zurückschreiben.
Max hat eine eigene Uhr - du kannst also glaube ich nicht sagen "heute ist Mittwoch, aber Feiertag - also lass heute Sonntag sein"

Sargon

Hi,

ja da habe ich mich wohl etwas unglücklich ausgedrückt. Genau so ist es gedacht, ein "at" soll jede Nacht um 1 Uhr prüfen was aktuell für ein Tag ist und dementsprechend das Weekprofil der Thermostate updaten.
Hat sowas jemand bereits umgesetzt oder wie machen das andere?

Gruß
Thomas 
Unitymedia IPv6, Synology 212+, Cul, 4 Max Thermostate und 4 Fensterkontakte

Sargon

Hallo zusammen,

Inzwischen habe ich eine Funktion erstellt die mir mein aktuelles Weekprofile aus meinem Thermostat in einen Dummy schreibt.
Ich bin aktuell dabei mir einen At Befehl zusammen zubauen, der prüft ob heute ein Feiertag aber kein Samstag oder Sonntag ist und zudem prüfen soll ob gestern auch ein Feiertag war. Die Feiertags und nicht Samstag oder Sonntag Prüfung scheint zu funktionieren aber in der Prüfung ob gestern ein Feiertag war liegt mein Problem. In Fhem kann ich mit "get Hessen yesterday" direkt prüfen ob gestern ein Feiertag war, aber wie mache ich das in einem "at"?
Ich habe verschiedene Versionen versucht aber keine hat funktioniert:

if($we and ($wday ne 0 or $wday ne 6) and ((get Hessen yesterday) eq none)){...}

oder

if($we and ($wday ne 0 or $wday ne 6) and (fhem(get Hessen yesterday) eq none))){...}
   
oder

if($we and ($wday ne 0 or $wday ne 6) and (fhem(get Hessen yesterday)) eq none){...}

oder

if($we and ($wday ne 0 or $wday ne 6) and {fhem(get Hessen yesterday)} eq none){...}


Fehlermeldungen (für verschiedene Versuche):

2015.02.02 20:58:22 3: FeiertagsCheck: Bareword "yesterday" not allowed while "strict subs" in use at (eval 188) line 2.
Bareword "none" not allowed while "strict subs" in use at (eval 188) line 2.
2015.02.02 21:03:54 3: FeiertagsCheck: syntax error at (eval 193) line 2, at EOF

Die verschiedenen Varianten sind aus dem Gedächtnis, somit kann es auch etwas anders gewesen sein aber auf jeden Fall hat kein funktioniert. Wie kann ich die Funktion im if einbinden?

Kurz noch zur Erklärung: Wenn gestern ein Feiertag war, wurde auch das Profil entsprechend geändert und muss nun wieder entsprechend zurückgesetzt werden, deshalb benötige ich diese Abfrage.

Gruß und Danke
Thomas
Unitymedia IPv6, Synology 212+, Cul, 4 Max Thermostate und 4 Fensterkontakte

Sargon

Ich habe die richtige Klammerung der Funktion gefunden:

if((fhem("get Hessen yesterday") ne "None") and $we and ($wday ne 0 or $wday ne 6)) {...}
Unitymedia IPv6, Synology 212+, Cul, 4 Max Thermostate und 4 Fensterkontakte