Hallo zusammen,
mit Hinweis auf die inzwischen etablierte Modulfamilie für Bewohner (https://forum.fhem.de/index.php/topic,19040.0.html) startet nun die Preview-Phase für die komplementäre Modulfamilie für das Zuhause:
00_HOMESTATE01_ZONESTATE02_ROOMSTATE(00_HOMESTATE wurde ja auch bereits schonmal vorangekündigt ;) )
Auch hier werden die Module wieder hierarchisch aufeinander aufbauen und entsprechend ihrer Bezeichnung einzelne Räume, Flure und Wohneinheiten repräsentieren. Außerdem ist eine enge Verzahnung mit den vorhandenen Funktionen der Module RESIDENTS, ROOMMATE, PET und GUEST (sowie deren Unterfunktionen wie z.B. dem Wakeuptimer) gegeben.
Alle Module sind Multi-Language und können sowohl in Englisch als auch gleichzeitig in Deutsch verwendet werden (weitere Sprachen können einfach hinzugefügt werden, sofern sich Übersetzer finden).
Den Anfang macht 00_HOMESTATE, welches in einer ersten Ausbaustufe im Anhang dieses Beitrags herunterladbar ist.
Gesucht sind nun Freiwillige zwecks ausprobieren und Feedback.Nachdem die Datei ins FHEM Verzeichnis nach /opt/fhem/FHEM kopiert wurde, wird das Gerät wie folgt in FHEM definiert:
define Home HOMESTATE
Wichtig: Voraussetzung ist eine FHEM Installation, die auf dem aktuellsten Stand sein muss, da große Teile des Moduls in einer zentralen Datei gespeichert sind, die sich alle Module teilen.Sofern vorhanden, wird ein RESIDENTS, ROOMMATE oder PET Device direkt verknüpft und auch dessen Spracheinstellung übernommen (ansonsten wird ein neues RESIDENTS Gerät angelegt). Sofern eine globale Spracheinstellung gewählt wurde, wird diese verwendet.
Sind mehrere RESIDENTS, ROOMMATE, PET oder GUEST Geräte vorhanden, kann man dies über das Attribut "ResidentsDevices" ändern und auch weitere hinzufügen, sofern ein anderes Gerät oder auch mehrere berücksichtigt werden sollen.
Außerdem setzt das Modul auf die Attribute altitude, longitude und holiday2we des global-Devices, welche man optimalerweise zuvor bereits konfiguriert hatte (Beschreibung siehe Commandref (https://fhem.de/commandref.html)).
Die konfigurierbaren Attribute am HOMESTATE Device sind übersichtlich:
- DebugDate: setzt den Gerätestatus auf ein bestimmtes Datum und eine feste Uhrzeit, um zu überprüfen, wie sich das Gerät zu diesem Zeitpunkt verhält.
Beispiele:
05-09
05-09 13:00
05-09 13:00:30
2017-05-09
2017-05-09 13:00
2017-05-09 13:00:30 - HolidayDevices: kann eine Liste von Geräten des Typs "holiday" enthalten, welche als Urlaubstage gewertet werden sollen. Diese sind ergänzend zu der Definition des Attributs "holiday2we" beim global-Device zu sehen.
- Lang: setzt explizit eine Spracheinstellung, unabhängig des Attributs "language" am global-Device
- ResidentsDevices: gibt an, welche RESIDENTS, ROOMMATE, PET und GUEST Devices für den Aktivitäts- und Anwesenheitsstatus verwendet werden. Achtung: Es ist nicht notwendig ROOMMATE, PET oder GUEST Geräte hier mit anzugeben, die bereits einem RESIDENTS Gerät zugeordnet sind, welches man bereits hier mit angibt. Ansonsten wird deren Status doppelt gewertet. Derzeit ist noch kein Schutz eingebaut, der doppelt zugewiesene Geräte erkennt und verhindert.
ReadingsDas HOMESTATE Gerät stellt direkt eine Vielzahl von Readings bereit:
- autoMode: erlaubt es den Hausmodus unabhängig der Tageszeit zu setzen
- cal[Tod|Tom]: Datum in langer Schreibweise
- cal[Tod|Tom]S: Datum in kurzer Schreibweise
- cal[Tod|Tom]DaytimeStageLn: Länge eines Tageszeitabschnitts
- cal[Tod|Tom]DaytimeT: Gesamtlänge des lichten Tages zwischen Sonnenauf- und Sonnenuntergang
- cal[Tod|Tom]Desc: Beschreibung zum Tag
- cal[Tod|Tom]DST: gibt an, ob die Uhr auf Sommerzeit oder Normalzeit gestellt ist
- cal[Tod|Tom]Holiday: ist 1, wenn der Tag ein Feier- oder Urlaubtstag ist
- cal[Tod|Tom]Leapyear: ist 1, wenn das Jahr ein Schaltjahr ist
- cal[Tod|Tom]TodWeekend: ist 1, wenn der Tag ein Wochenendtag ist
- cal[Tod|Tom]Monthday: Tag des Monats
- cal[Tod|Tom]MonthdayRem: verbleibende Tage bis zum Monatswechsel
- cal[Tod|Tom]MonthN: Monat als Zahl
- cal[Tod|Tom]Month: Monat in langer Schreibweise
- cal[Tod|Tom]MonthS: Monat in kurzer Schreibweise
- cal[Tod|Tom]Rel: Bezeichnung des Tages relativ zu heute
- cal[Tod|Tom]SAstroChng: ist 2, wenn am Folgetag ein Wechsel der astronomischen Jahreszeit stattfindet. 1 bedeutet, dass es der erste Tag der neuen Jahreszeit ist
- cal[Tod|Tom]SAstro: astronomische Jahreszeit
- cal[Tod|Tom]SMeteoChng: ist 2, wenn am Folgetag ein Wechsel der meteorologischen Jahreszeit stattfindet. 1 bedeutet, dass es der erste Tag der neuen Jahreszeit ist
- cal[Tod|Tom]SMeteo: meteorologische Jahreszeit
- cal[Tod|Tom]SPheno: (noch nicht enthalten) - phenologische (https://de.wikipedia.org/wiki/Ph%C3%A4nologie#Ph.C3.A4nologischer_Kalender) Jahreszeit, berechnet basierend auf einer Mischung aus astronomischer und meteorologischer Jahreszeit. Frühlungs- und Herbstanfang wird dynamisch für den eigenen Standort über die Bezugspunkte Süd-West Portugal (Frühling) sowie Helsinki (Herbst) berechnet.
- cal[Tod|Tom]Sunrise: Uhrzeit des Sonnenaufgangs (nutzt 99_SUNRISE_EL in Standardeinstellung HORIZON=CIVIL; kann derzeit noch nicht angepasst werden)
- cal[Tod|Tom]Sunset: Uhrzeit des Sonnenuntergangs (nutzt 99_SUNRISE_EL in Standardeinstellung HORIZON=CIVIL; kann derzeit noch nicht angepasst werden)
- cal[Tod|Tom]WeekdayN: Wochentag als Zahl in ISO Format (1=Mo, 2=Di, 3=Mi, 4=Do, 5=Fr, 6=Sa, 7=So)
- cal[Tod|Tom]Weekday: Wochentag in langer Schreibweise
- cal[Tod|Tom]WeekdayS: Wochentag in kurzer Schreibweise
- cal[Tod|Tom]Week: Woche des Jahres
- cal[Tod|Tom]Yearday: Tag des Jahres
- cal[Tod|Tom]YeardayRem: Verbleibende Tage des Jahres
- cal[Tod|Tom]Year: Jahr
- daytime: aktuelle Tageszeit, berechnet aus dem aktuellen Tageszeitabschnitt
- daytimeStage: der aktuelle Tageszeitabschnitt. 0 bedeutet Nacht.
- daytimeStages: Gesamtzahl der Tageszeitabschnitte, in die der lichte Tag eingeteilt wird. Ist fest auf 12 Abschnitte eingestellt. Siehe auch Temporale Stunden (https://de.wikipedia.org/wiki/Temporale_Stunden) bei Wikipedia.
- mode: aktueller Hausmodus; wird automatisch mit daytime synchronisiert, wenn autoMode=on gesetzt ist. Zu einem späteren Modus kann manuell oder durch Fremdmodule gesteuert vorzeitig gewechselt werden. Ein Wechsel in die Vergangenheit ist nicht möglich = die Tageszeit in daytime gibt den Mindestmodus an.
- security: Sicherheitsstatus, abgeleitet vom aktuellen Status der Bewohner aus dem Attribut ResidentsDevices
- state: kombinierter Status aus mode und security, abhängig vom Status der Bewohner aus dem Attribut ResidentsDevices. Der homealoneSubtype aus den ResidentsDevices wird als Präfix übernommen.
set BefehleDen Gerätestatus kann man über die folgenden set Befehle beeinflussen:
- autoMode: gibt an, ob die fortschreitende Tageszeit automatisch den Mindeststatus für den Hausmodus bestimmen soll.
- mode: setzt den Hausmodus vorab auf einen zukünftigen Modus bevor die Tageszeit erreicht wurde. Wenn autoMode=off steht, kann jede Tageszeit gewählt werden und wird durch die fortschreitende Tageszeit nicht beeinflusst.
- toggle: wechselt zum nächsten Hausmodus
get Befehle
- schedule: Zeigt den Event Zeitplan für den aktuellen Tag an. Darin kann man sehen, wann welcher Tageszeitabschnitt beginnt und bei welchem Tageszeitabschnitt sich die Tageszeit (daytime) mit verändern wird. Optional kann man ein bestimmtes Datum sowie Uhrzeit angeben, um den berechneten Zeitplan für einen anderen Zeitpunkt anzusehen. Das nächste anstehende Event kann man außerdem immer im INTERNAL "NEXT_EVENT" sehen, welches die Uhrzeit und Beschreibung aus dem Event Zeitplan enthält.
Beispiele:
05-09
05-09 13:00
05-09 13:00:30
2017-05-09
2017-05-09 13:00
2017-05-09 13:00:30
Für den heutigen Tag wurde für meinen Standort beispielsweise folgender Zeitplan errechnet:
1494194400:
DESC Begin night time and new calendar day
TIME 2017-05-08 00:00:00
1494212975:
DESC Begin morning time and daytime stage 1
TIME 2017-05-08 05:09:35
1494217791:
DESC Begin daytime stage 2
TIME 2017-05-08 06:29:51
1494222607:
DESC Begin daytime stage 3
TIME 2017-05-08 07:50:07
1494227422:
DESC Begin midmorning time and daytime stage 4
TIME 2017-05-08 09:10:22
1494232238:
DESC Begin daytime stage 5
TIME 2017-05-08 10:30:38
1494237054:
DESC Begin noon time and daytime stage 6
TIME 2017-05-08 11:50:54
1494241870:
DESC Begin daytime stage 7
TIME 2017-05-08 13:11:10
1494246686:
DESC Begin afternoon time and daytime stage 8
TIME 2017-05-08 14:31:26
1494251502:
DESC Begin daytime stage 9
TIME 2017-05-08 15:51:42
1494256317:
DESC Begin daytime stage 10
TIME 2017-05-08 17:11:57
1494261133:
DESC Begin daytime stage 11
TIME 2017-05-08 18:32:13
1494265949:
DESC Begin evening time and daytime stage 12
TIME 2017-05-08 19:52:29
1494270765:
DESC End of daytime
TIME 2017-05-08 21:12:45
1494280800:
DESC End calendar day and begin night time
TIME 2017-05-08 24:00:00
Wie man sieht, ist bestimmten Tageszeitabschnitten eine bestimmte Tageszeit zugeordnet. Diese Verbindung zwischen Tageszeitabschnitt (daytimeStage) und der Tageszeit (daytime) ist derzeit noch fest hinterlegt. Es ist geplant diese konfigurierbar zu haben. Es gibt unterschiedliche Zuordnungen je nach Jahreszeit und Normal-/Sommerzeit, um die unterschiedliche Länge des lichten Tages zu berücksichtigen. Über den get-Befehl "schedule" kann man sehr gut vorab überprüfen, wie die Tageszeitabschnitte sich verteilen.
Wichtig ist zu betonen, dass die Tageszeit natürlich fortlaufend weiterberechnet wird und dass diese quasi den "Mindest-Modus" für den Hausmodus angibt. Man kann aber jederzeit einen Modus weiter in der Zukunft anwählen (während des Tages bis maximal zur Nacht, während der Nacht bis maximal zum Nachmittag).
Wenn man also beispielsweise über einen Helligkeitssensor, dem Twilight Modul oder einfach einer festen Uhrzeit früher in den Abendmodus springen möchte, kann man das unbehelligt über ein Notify/DOIF tun.
Liste der Tageszeiten / Hausmodies werden 7 Hausmodi im Reading "mode" unterschieden:
- Morgen (morning)
- Vormittag (midmorning)
- Mittag (noon)
- Nachmittag (afternoon)
- Vorabend (evening)
- Abend (midevening)
- Nacht (night)
Liste der SicherheitsmodiEs werden folgende Sicherheitsmodi im Reading "security" unterschieden:
- unverriegelt (unlocked) - bei Anwesenheit der Bewohner in den Hausmodi Morgen, Vormittag, Mittag, Nachmittag und Vorabend
- verriegelt (locked) - bei Anwesenheit der Bewohner in den Hausmodi Abend und Nacht
- geschützt (protected) - während die Bewohner schlafen ODER wenn ein Haustier alleine zuhause ist
- gesichert (secured) - während vorübergehender Abwesenheit der Bewohner
- überwacht (guarded) - während längerer Abwesenheit der Bewohner
Sobald 00_HOMESTATE weitestgehend Feature-complete ist, werden die Sub-Module 01_ZONESTATE und 02_ROOMSTATE entsprechend angegangen.
Viele Grüße
Julian
danke!
ich hab's mal runtergeladen und werde testen. Bis jetzt funktioniert alles wie gewünscht.
Da ich auch Dan's Modul HOMEMODE verwende bin ich mal gespannt ob die sich irgendwann in die quere kommen ;)
Gruß Michael
Sieht gut aus, werde mir das auch nachher mal anschauen.
Vor allem die Einteilung in die daytimeStages gefällt mir ganz gut, das könnte nützlich sein. :)
Hallo Julian,
Modul ist im Einsatz und hat das erste Sonnenstatus-Dummy abgelöst.
Grüble gerade über use cases für phenologische Jahreszeiten und temporale Stunden.
Viel Erfolg beim entwicklen
Ralf
Moin,
sobald ich mein Holiday-Device per attr sys.homestate HolidayDevices sys.holiday.mv einfügen will stürzt mir FHEM ab.
Hilfreiche Informationen für den Entwickler findest Du im FHEM Logfile.
Diese Infos bitte hier in Codetags posten.
Grüße
das FHEM abstürzt kann ich auch bestätigen.
viel mehr als:
Undefined subroutine &main::AttVal called at FHEM/HOMESTATEtk.pm line 1094.
sagt das log auch nicht.
ich würde sagen klassischer Tippfehler ;-)
Gruß Michael
Jepp, danke, ist korrigiert und kommt morgen per Update über HOMESTATEtk.pm.
Mein Haus hat heute nicht auf "evening" geschaltet, sondern ist auf "afternoon" in DaytimeStage 11 stehen geblieben. Laut Schedule hätte gegen 20:39 auf Stage 12 gewechselt werden sollen. Das Umschalten auf "midevening" um 22:05 hingegen hat funktioniert. Eine Idee, warum er die eine Stage ausgelassen hat?
Internals:
CHANGED
NAME Haus
NEXT_EVENT 2017-05-19 22:05:44 - Begin midevening time
NOTIFYDEV global,Haus,rgr_Bewohner
NR 178
NTFY_ORDER 50-Haus
READY 1
RESIDENTS rgr_Bewohner
STATE secured
TYPE HOMESTATE
Readings:
2017-05-19 00:00:00 calTod Friday, May 19
2017-05-09 08:07:42 calTodDST daylight
2017-05-19 00:00:00 calTodDaytimeStageLn 01:26:05
2017-05-19 00:00:00 calTodDaytimeT 17:13:09
2017-05-19 00:00:00 calTodDesc Holland
2017-05-19 00:00:00 calTodHoliday 1
2017-05-09 08:07:42 calTodLeapyear 0
2017-05-09 08:07:42 calTodMonth May
2017-05-09 08:07:42 calTodMonthN 5
2017-05-09 08:07:42 calTodMonthS May
2017-05-19 00:00:00 calTodMonthday 19
2017-05-19 00:00:00 calTodMonthdayRem 12
2017-05-09 08:07:42 calTodRel today
2017-05-19 00:00:00 calTodS May 19
2017-05-09 08:07:42 calTodSAstro Spring
2017-05-09 08:07:42 calTodSAstroChng 0
2017-05-09 08:07:42 calTodSMeteo Spring
2017-05-09 08:07:42 calTodSMeteoChng 0
2017-05-19 00:00:00 calTodSunrise 04:52:35
2017-05-19 00:00:00 calTodSunset 22:05:44
2017-05-19 00:00:00 calTodTodWeekend 2
2017-05-15 00:00:00 calTodWeek 20
2017-05-19 00:00:00 calTodWeekday Friday
2017-05-19 00:00:00 calTodWeekdayN 5
2017-05-19 00:00:00 calTodWeekdayS Fri
2017-05-09 08:07:42 calTodYear 2017
2017-05-19 00:00:00 calTodYearday 138
2017-05-19 00:00:00 calTodYeardayRem 227
2017-05-19 00:00:00 calTom Saturday, May 20
2017-05-09 08:07:42 calTomDST daylight
2017-05-18 00:00:00 calTomDesc Holland
2017-05-18 00:00:00 calTomHoliday 1
2017-05-09 08:07:42 calTomMonth May
2017-05-09 08:07:42 calTomMonthN 5
2017-05-09 08:07:42 calTomMonthS May
2017-05-19 00:00:00 calTomMonthday 20
2017-05-19 00:00:00 calTomMonthdayRem 11
2017-05-09 08:07:42 calTomRel tomorrow
2017-05-19 00:00:00 calTomS May 20
2017-05-14 00:00:01 calTomWeek 20
2017-05-19 00:00:00 calTomWeekday Saturday
2017-05-19 00:00:00 calTomWeekdayN 6
2017-05-19 00:00:00 calTomWeekdayS Sat
2017-05-19 00:00:00 calTomWeekend 3
2017-05-09 08:07:42 calTomYear 2017
2017-05-19 00:00:00 calTomYearday 139
2017-05-19 00:00:00 calTomYeardayRem 226
2017-05-19 16:21:21 daytime afternoon
2017-05-19 19:13:33 daytimeStage 11
2017-05-09 08:07:42 daytimeStages 12
2017-05-19 16:21:21 lastMode noon
2017-05-19 11:16:11 lastSecurity unlocked
2017-05-19 11:16:11 lastState midmorning
2017-05-19 16:21:21 mode afternoon
2017-05-19 11:16:11 security secured
2017-05-19 11:16:11 state secured
Attributes:
ResidentsDevices rgr_Bewohner
alias Mode
devStateIcon {(HOMESTATEtk_devStateIcon($name),"toggle")}
group Home State
icon control_building_control
room Residents
webCmd mode
Da scheint bei mir öfter vorzukommen.
Laut Schedule müsste ich in Stage 5 sein.
DESC Begin daytime stage 5
TIME 2017-05-20 10:36:27
Jedoch aktuell steht in DaytimeStage eine 4. (Uhrzeit gerade 11:21)
Guter Ansatz, hier ein erstes Feedback:
Ein paar kleine Fehler: Zeile 362 im Toolkit macht eine Fehlermeldung, wenn keine Residents definiert sind. Die deutsche Übersetzung "Flurstatus" sollte wohl eher "Geschossstatus/Etagenstatus" sein.
Die wichtigste Ergänzung wäre die zeitliche Konfigurierbarkeit der einzelnen Stufen - weil es doch z.B. sehr unterschiedlich ist, wann "midevening time" anfängt.
Wenn die Benennung so bleiben soll, tritt dasselbe Problem wie schon bei RESIDENTS auf: Eine Familie von Modulen, die sehr eng zusammenarbeiten - aber an ganz unterschiedlichen Stellen in der CommandRef stehen, und deren Zusammengehörigkeit nicht ohne Weiteres erkennbar ist. Ich plädiere dafür, sich einen generischen Namen auszudenken. Sagen wir HOMESTATE (oder etwas Kürzeres, sagen wir HS) und das zum Anfang des Modulnamens auch bei den Untermodulen zu machen. Also HSMAIN, HSFLOOR, HSROOM oder so.
LG
pah
Mir fehlt gerade wieder eine DaytimeStage.
Hier die Schedule für heute:
1495317600.02332:
DESC Begin night time and new calendar day, holiday: Holland
TIME 2017-05-21 00:00:00
1495334966:
DESC Begin morning time and daytime stage 1
TIME 2017-05-21 04:49:26
1495340164:
DESC Begin daytime stage 2
TIME 2017-05-21 06:16:04
1495345362:
DESC Begin daytime stage 3
TIME 2017-05-21 07:42:42
1495350561:
DESC Begin midmorning time and daytime stage 4
TIME 2017-05-21 09:09:21
1495355759:
DESC Begin daytime stage 5
TIME 2017-05-21 10:35:59
1495360957:
DESC Begin noon time and daytime stage 6
TIME 2017-05-21 12:02:37
1495366155:
DESC Begin daytime stage 7
TIME 2017-05-21 13:29:15
1495371353:
DESC Begin afternoon time and daytime stage 8
TIME 2017-05-21 14:55:53
1495376551:
DESC Begin daytime stage 9
TIME 2017-05-21 16:22:31
1495381750:
DESC Begin daytime stage 10
TIME 2017-05-21 17:49:10
1495386948:
DESC Begin daytime stage 11
TIME 2017-05-21 19:15:48
1495392146:
DESC Begin evening time and daytime stage 12
TIME 2017-05-21 20:42:26
1495397344:
DESC Begin midevening time
TIME 2017-05-21 22:09:04
1495404000.02332:
DESC End calendar day and begin night time, holiday: Urlaub
TIME 2017-05-22 24:00:00
Aktuell ist es 08:43, demnach müsste ich in Stage 3 sein. Das Device steht aber in Stage 2:
Internals:
NAME Haus
NEXT_EVENT 2017-05-21 09:09:21 - Begin midmorning time and daytime stage 4
NOTIFYDEV global,Haus,rgr_Bewohner
NR 178
NTFY_ORDER 50-Haus
READY 1
RESIDENTS rgr_Bewohner
STATE guarded
TYPE HOMESTATE
Readings:
2017-05-21 00:00:00 calTod Sunday, May 21
2017-05-09 08:07:42 calTodDST daylight
2017-05-21 00:00:00 calTodDaytimeStageLn 01:26:38
2017-05-21 00:00:00 calTodDaytimeT 17:19:38
2017-05-19 00:00:00 calTodDesc Holland
2017-05-19 00:00:00 calTodHoliday 1
2017-05-09 08:07:42 calTodLeapyear 0
2017-05-09 08:07:42 calTodMonth May
2017-05-09 08:07:42 calTodMonthN 5
2017-05-09 08:07:42 calTodMonthS May
2017-05-21 00:00:00 calTodMonthday 21
2017-05-21 00:00:00 calTodMonthdayRem 10
2017-05-09 08:07:42 calTodRel today
2017-05-21 00:00:00 calTodS May 21
2017-05-09 08:07:42 calTodSAstro Spring
2017-05-09 08:07:42 calTodSAstroChng 0
2017-05-09 08:07:42 calTodSMeteo Spring
2017-05-09 08:07:42 calTodSMeteoChng 0
2017-05-21 00:00:00 calTodSunrise 04:49:26
2017-05-21 00:00:00 calTodSunset 22:09:04
2017-05-20 00:00:00 calTodTodWeekend 3
2017-05-15 00:00:00 calTodWeek 20
2017-05-21 00:00:00 calTodWeekday Sunday
2017-05-21 00:00:00 calTodWeekdayN 7
2017-05-21 00:00:00 calTodWeekdayS Sun
2017-05-09 08:07:42 calTodYear 2017
2017-05-21 00:00:00 calTodYearday 140
2017-05-21 00:00:00 calTodYeardayRem 225
2017-05-21 00:00:00 calTom Monday, May 22
2017-05-09 08:07:42 calTomDST daylight
2017-05-21 00:00:00 calTomDesc Urlaub
2017-05-18 00:00:00 calTomHoliday 1
2017-05-09 08:07:42 calTomMonth May
2017-05-09 08:07:42 calTomMonthN 5
2017-05-09 08:07:42 calTomMonthS May
2017-05-21 00:00:00 calTomMonthday 22
2017-05-21 00:00:00 calTomMonthdayRem 9
2017-05-09 08:07:42 calTomRel tomorrow
2017-05-21 00:00:00 calTomS May 22
2017-05-21 00:00:00 calTomWeek 21
2017-05-21 00:00:00 calTomWeekday Monday
2017-05-21 00:00:00 calTomWeekdayN 1
2017-05-21 00:00:00 calTomWeekdayS Mon
2017-05-21 00:00:00 calTomWeekend 2
2017-05-09 08:07:42 calTomYear 2017
2017-05-21 00:00:00 calTomYearday 141
2017-05-21 00:00:00 calTomYeardayRem 224
2017-05-21 04:49:26 daytime morning
2017-05-21 07:42:42 daytimeStage 2
2017-05-09 08:07:42 daytimeStages 12
2017-05-21 04:49:26 lastMode night
2017-05-20 03:16:10 lastSecurity secured
2017-05-20 03:16:10 lastState secured
2017-05-21 04:49:26 mode morning
2017-05-20 03:16:10 security guarded
2017-05-20 03:16:10 state guarded
Attributes:
ResidentsDevices rgr_Bewohner
alias Mode
devStateIcon {(HOMESTATEtk_devStateIcon($name),"toggle")}
group Home State
icon control_building_control
room Residents
webCmd mode
Zitat von: Phiolin am 19 Mai 2017, 22:07:45
Mein Haus hat heute nicht auf "evening" geschaltet, sondern ist auf "afternoon" in DaytimeStage 11 stehen geblieben. Laut Schedule hätte gegen 20:39 auf Stage 12 gewechselt werden sollen. Das Umschalten auf "midevening" um 22:05 hingegen hat funktioniert. Eine Idee, warum er die eine Stage ausgelassen hat?
Danke, das Log war hilfreich. Tatsächlich hat es da nichts ausgelassen, aber die Neuberechnung erfolgt zur exakten Sekunde, in der auch das neue Ergebnis dann herauskommt. Es kann aber aufgrund von Nachkommastellen vorkommen, dass eine leichte Abweichung beim Ergebnis da ist, welches dann noch für den Bruchteil einer Sekunde den alten Tageszeitabschnitt als Ergebnis liefert.
Das habe ich jetzt gefixt denke ich. Ein Update gibt es morgen zusammen mit dem normalen FHEM Update.
Zitat von: Prof. Dr. Peter Henning am 21 Mai 2017, 03:19:33
Ein paar kleine Fehler: Zeile 362 im Toolkit macht eine Fehlermeldung, wenn keine Residents definiert sind.
Danke dir, das habe ich gerade gleich mit korrigiert.
Zitat von: Prof. Dr. Peter Henning am 21 Mai 2017, 03:19:33
Die deutsche Übersetzung "Flurstatus" sollte wohl eher "Geschossstatus" sein.
Eigentlich ist Flur nicht nur als Geschoss gemeint, sondern auch als Abschnitt/Bereich (ein Geschoss sollte man auch in mehrere Abschnitte unterteilen können; für einige fängt sprachlich gesehen je nach Kontext auch nach jeder Abbiegung ein neuer "Flur" an). Dafür aber wieder einen eigenen TYPE zu definieren erschien mir nicht lohnenswert. Ich habe das Modul intern schonmal auf SECTIONSTATE (resp. "Bereichstatus" bzw "Section State") umbenannt, vielleicht ist das allgemeingültiger.
Zitat von: Prof. Dr. Peter Henning am 21 Mai 2017, 03:19:33
Wenn die Benennung so bleiben soll, tritt dasselbe Problem wie schon bei RESIDENTS auf: Eine Familie von Modulen, die sehr eng zusammenarbeiten - aber an ganz unterschiedlichen Stellen in der CommandRef stehen, und deren Zusammengehörigkeit nicht ohne Weiteres erkennbar ist. Ich plädiere dafür, sich einen generischen Namen auszudenken. Sagen wir HOMESTATE (oder etwas Kürzeres, sagen wir HS) und das zum Anfang des Modulnamens auch bei den Untermodulen zu machen. Also HSMAIN, HSFLOOR, HSROOM oder so.
Das ist ein guter Punkt, über den ich mal nachdenken muss. Generische Ausdrücke finde ich eher nicht so gut, da man die Abkürzung erstmal kennen muss um zu verstehen, wofür das Modul in etwa da ist. Das ist bei ganz vielen Modulen inzwischen so, dass man aus dem kryptischen Namen nicht mehr immer unbedingt etwas ableiten kann, ohne die Kurzbeschreibung zu lesen (und zu verstehen).
Vielleicht dreht man das ganze einfach um und nennt es dann STATEHOME, STATESECTION, STATEROOM. Ist sprachlich nicht so geschickt, lässt aber mehr Rückschlüsse auf die Funktion zu.
Bitte mal wg. Namensgebung das hier ansehen https://forum.fhem.de/index.php/topic,72259.0.html
LG
pah
Moin,
so richtig scheint der Wechsel auch nach dem Update nicht zu funktionieren:
Danke für die Rückmeldung.Ich habe derzeit leider keine Zeit mir das genauer anzusehen oder über den Tag verteilt real das Verhalten zu beobachten.
Ich habe mir gerade nen FileLog für Homestate erstellt und lasse dieses Mal nen Tag mit .* mitlaufen.
Morgen Abend stelle ich das dann mal hier rein (wenn es denn weiterhilft).
Super Idee, vielen Dank!
Moin,
anbei das Log der letzten 23 Stunden (Security-Events der Übersichtlichkeit halber entfernt):
2017-05-23_00:00:00 sys.homestate calTod: Tuesday, May 23
2017-05-23_00:00:00 sys.homestate calTom: Wednesday, May 24
2017-05-23_00:00:00 sys.homestate calTodS: May 23
2017-05-23_00:00:00 sys.homestate calTomS: May 24
2017-05-23_00:00:00 sys.homestate calTodDaytimeStageLn: 01:30:16
2017-05-23_00:00:00 sys.homestate calTodDaytimeT: 18:03:13
2017-05-23_00:00:00 sys.homestate daytime: night
2017-05-23_00:00:00 sys.homestate calTodMonthday: 23
2017-05-23_00:00:00 sys.homestate calTomMonthday: 24
2017-05-23_00:00:00 sys.homestate calTodMonthdayRem: 8
2017-05-23_00:00:00 sys.homestate calTomMonthdayRem: 7
2017-05-23_00:00:00 sys.homestate calTodSunrise: 04:06:13
2017-05-23_00:00:00 sys.homestate calTodSunset: 22:09:26
2017-05-23_00:00:00 sys.homestate calTodWeekday: Tuesday
2017-05-23_00:00:00 sys.homestate calTomWeekday: Wednesday
2017-05-23_00:00:00 sys.homestate calTodWeekdayS: Tue
2017-05-23_00:00:00 sys.homestate calTomWeekdayS: Wed
2017-05-23_00:00:00 sys.homestate calTodWeekdayN: 2
2017-05-23_00:00:00 sys.homestate calTomWeekdayN: 3
2017-05-23_00:00:00 sys.homestate calTodYearday: 142
2017-05-23_00:00:00 sys.homestate calTomYearday: 143
2017-05-23_00:00:00 sys.homestate calTodYeardayRem: 223
2017-05-23_00:00:00 sys.homestate calTomYeardayRem: 222
2017-05-23_00:00:00 sys.homestate calTod_DE: Dienstag, 23. Mai
2017-05-23_00:00:00 sys.homestate calTom_DE: Mittwoch, 24. Mai
2017-05-23_00:00:00 sys.homestate calTodS_DE: 23. Mai
2017-05-23_00:00:00 sys.homestate calTomS_DE: 24. Mai
2017-05-23_00:00:00 sys.homestate daytime_DE: Nacht
2017-05-23_00:00:00 sys.homestate calTodWeekday_DE: Dienstag
2017-05-23_00:00:00 sys.homestate calTomWeekday_DE: Mittwoch
2017-05-23_00:00:00 sys.homestate calTodWeekdayS_DE: Di
2017-05-23_00:00:00 sys.homestate calTomWeekdayS_DE: Mi
2017-05-23_04:06:13 sys.homestate daytimeStage: 1
2017-05-23_04:06:13 sys.homestate daytime: morning
2017-05-23_04:06:13 sys.homestate daytime_DE: Morgen
2017-05-23_04:06:13 sys.homestate lastMode: night
2017-05-23_04:06:13 sys.homestate mode: morning
2017-05-23_04:06:13 sys.homestate lastMode_DE: Nacht
2017-05-23_04:06:13 sys.homestate mode_DE: Morgen
2017-05-23_05:29:44 sys.homestate morning
2017-05-23_05:29:44 sys.homestate lastState_DE: geschützt
2017-05-23_05:29:44 sys.homestate state_DE: Morgen
2017-05-23_05:36:30 sys.homestate daytimeStage: 2
2017-05-23_06:11:44 sys.homestate lastState: morning
2017-05-23_06:11:44 sys.homestate lastState_DE: Morgen
2017-05-23_07:06:46 sys.homestate daytimeStage: 3
2017-05-23_08:37:01 sys.homestate daytimeStage: 4
2017-05-23_08:37:01 sys.homestate daytime: midmorning
2017-05-23_08:37:01 sys.homestate daytime_DE: Vormittag
2017-05-23_08:37:01 sys.homestate lastMode: morning
2017-05-23_08:37:01 sys.homestate mode: midmorning
2017-05-23_08:37:01 sys.homestate lastMode_DE: Morgen
2017-05-23_08:37:01 sys.homestate mode_DE: Vormittag
2017-05-23_10:07:17 sys.homestate daytimeStage: 5
2017-05-23_10:45:15 sys.homestate midmorning
2017-05-23_10:45:15 sys.homestate state_DE: Vormittag
2017-05-23_11:37:33 sys.homestate daytimeStage: 6
2017-05-23_11:37:33 sys.homestate daytime: noon
2017-05-23_11:37:33 sys.homestate daytime_DE: Mittag
2017-05-23_11:37:33 sys.homestate lastMode: midmorning
2017-05-23_11:37:33 sys.homestate mode: noon
2017-05-23_11:37:33 sys.homestate lastMode_DE: Vormittag
2017-05-23_11:37:33 sys.homestate mode_DE: Mittag
2017-05-23_11:37:33 sys.homestate lastState: midmorning
2017-05-23_11:37:33 sys.homestate noon
2017-05-23_11:37:33 sys.homestate lastState_DE: Vormittag
2017-05-23_11:37:33 sys.homestate state_DE: Mittag
2017-05-23_13:07:50 sys.homestate daytimeStage: 7
2017-05-23_14:38:06 sys.homestate daytimeStage: 8
2017-05-23_14:38:06 sys.homestate daytime: afternoon
2017-05-23_14:38:06 sys.homestate daytime_DE: Nachmittag
2017-05-23_14:38:06 sys.homestate lastMode: noon
2017-05-23_14:38:06 sys.homestate mode: afternoon
2017-05-23_14:38:06 sys.homestate lastMode_DE: Mittag
2017-05-23_14:38:06 sys.homestate mode_DE: Nachmittag
2017-05-23_14:38:06 sys.homestate lastState: noon
2017-05-23_14:38:06 sys.homestate afternoon
2017-05-23_14:38:06 sys.homestate lastState_DE: Mittag
2017-05-23_14:38:06 sys.homestate state_DE: Nachmittag
2017-05-23_16:02:31 sys.homestate lastState: afternoon
2017-05-23_16:02:31 sys.homestate lastState_DE: Nachmittag
2017-05-23_16:08:23 sys.homestate daytimeStage: 9
2017-05-23_16:20:33 sys.homestate afternoon
2017-05-23_16:20:33 sys.homestate state_DE: Nachmittag
2017-05-23_17:38:39 sys.homestate daytimeStage: 10
2017-05-23_19:08:54 sys.homestate daytimeStage: 11
2017-05-23_20:39:10 sys.homestate daytimeStage: 12
2017-05-23_20:39:10 sys.homestate daytime: evening
2017-05-23_20:39:10 sys.homestate daytime_DE: Vorabend
2017-05-23_20:39:10 sys.homestate lastMode: afternoon
2017-05-23_20:39:10 sys.homestate mode: evening
2017-05-23_20:39:10 sys.homestate lastMode_DE: Nachmittag
2017-05-23_20:39:10 sys.homestate mode_DE: Vorabend
2017-05-23_20:39:10 sys.homestate lastState: afternoon
2017-05-23_20:39:10 sys.homestate evening
2017-05-23_20:39:10 sys.homestate lastState_DE: Nachmittag
2017-05-23_20:39:10 sys.homestate state_DE: Vorabend
2017-05-23_22:09:26 sys.homestate daytimeStage: 0
2017-05-23_22:09:26 sys.homestate daytime: midevening
2017-05-23_22:09:26 sys.homestate daytime_DE: Abend
2017-05-23_22:09:26 sys.homestate lastMode: evening
2017-05-23_22:09:26 sys.homestate mode: midevening
2017-05-23_22:09:26 sys.homestate lastMode_DE: Vorabend
2017-05-23_22:09:26 sys.homestate mode_DE: Abend
2017-05-23_22:09:26 sys.homestate lastState: evening
2017-05-23_22:09:26 sys.homestate midevening
2017-05-23_22:09:26 sys.homestate lastState_DE: Vorabend
2017-05-23_22:09:26 sys.homestate state_DE: Abend
Mir fällt dazu folgendes ein:
mode: afternoon besser bei daytimeStage 7 beginnen,
mode: evening besser bei daytimeStage 11 beginnen.
Zitat von: ComputerZOO am 23 Mai 2017, 23:07:48
anbei das Log der letzten 23 Stunden (Security-Events der Übersichtlichkeit halber entfernt)
Danke dir! Sofern ich nichts übersehen habe, kann ich da jetzt erstmal nicht sehen, dass etwas gefehlt hätte.
Zitat von: ComputerZOO am 23 Mai 2017, 23:07:48
Mir fällt dazu folgendes ein:
mode: afternoon besser bei daytimeStage 7 beginnen,
mode: evening besser bei daytimeStage 11 beginnen.
Jaein, bitte folgendes bedenken:
1. Wir orientieren uns hier am lichten Tag. Das bedeutet beispielsweise, dass Mittag und Nachmittag dann ist, wenn die Sonne entsprechend steht - nicht wenn wir um 11:30 in die Kantine gehen ;-) Will heißen: Dein Lebensrhythmus kann und darf davon abweichen, weshalb du entweder manuell oder auch durch Sensoren oder per Zeitschaltung (Notify, DOIF, Watchdog) bereits früher in den nächsten Modus schalten kannst (der toggle Setter hilft dabei). Das ist die präferierte Methode, obgleich auch noch vorgesehen ist die Modus-Zuordnung zu den Tageszeitabschnitten selbst konfigurierbar zu machen. Durch die starken Schwankungen zwischen den Jahreszeiten bzw. Normal- und Sommerzeit wird es immer dazu kommen können, dass der Lebensrhythmus nicht exakt dem der Natur entspricht. Die Idee des Wertes daytime ist hier vor allem, dass sich das Haus bei seinen Automationen (Licht, Klima, Beschattung) an der Natur orientieren kann. Für wen also mittags immer exakt 12:00 Uhr ist, der muss das entsprechend einprogrammieren.
2. Da die 12 Tageszeitabschnitte sich exakt zwischen Sonnenauf- und Sonnenuntergang befinden, ist rechnerisch der höchste Sonnenstand (und somit der eigentliche Mittag) am Ende des 6. bzw. bei Beginn des 7. Zeitabschnittes. Es ist also sinnvoll einen Zeitraum drum herum als Mittagszeit zu bezeichnen, weshalb wir dann auf die Zeitabschnitte 6+7 kommen. In der Sommerzeit kommt hinzu, dass man dadurch automatisch eine recht gut passende Zeitspanne erhält, zu der man besonders vorsichtig sein sollte, um in die senkende Sonne zu gehen.
Diese Zuordnung kann man IMHO ganz gut unabhängig von Normal-/Sommerzeit und der Jahreszeit machen, weshalb die Vorbelegung aktuell auch für alle Tage des Jahres so ist.
3. Durch die Sommerzeit ist die Mittagszeit um eine Stunde zeitversetzt (also später als eigentlich normal).
4. Ähnlich wie bei der Mittagszeit ist es auch beim Beginn des Vorabends bzw. der Abendzeit. Sommertage sind naturgemäß bereits sehr lang und durch die Sommerzeitumstellung sind sie auf der Uhr noch viel länger. Ich vermute, dass die wenigsten fest um 19:00 Uhr ihr Haus verrammeln, nur weil es 19:00 ist. Die meisten werden sich eher daran orientieren, ob es draußen noch hell ist oder nicht. Wenn es also erst gegen 20:30 anfängt dunkel zu werden, ist das der natürliche Verlauf der Dinge ;-)
Auch hier kann man ja manuell jederzeit übersteuern und bereits zum nächsten Modus vorwechseln (beispielsweise für ein Kinderzimmer, wenn das Modul ROOMSTATE verfügbar sein wird).
Kurz zusammengefasst: Der Hausmodus im Automatikbetrieb orientiert sich vornehmlich an der Umwelt, nicht am Lebensstil der Bewohner. Gleichwohl wird versucht das in einem sinnvollen Verhältnis in Einklang zu bringen, indem man insbesondere beim Übergang in den Abend individuell und per externer Sensorik Einfluss nehmen kann.
Hallo Julian,
als Feature Request werfe ich mal eine kalkulierte Tageslichtintensität als Reading im HOMESTATE in den Raum.
zum Beispiel:
morning 0.5 ; midmorning 0.9 ; noon 1 ; afternoon 0.9 ; evening 0.5 ; midevening 0.3 ; night 0
Per daytimeStage die Beleuchtung/Bewässerung zu steuern ist etwas unhandlich.
... nur falls du noch Features suchst
Gruß Ralf
ich will kurz fragen welchen Sinn diese Modulfamilie hat. Aus dem Einleitungspost und folgenden geht dieser, für mich, nicht ganz hervor bzw. über diesen wird gar kein Wort verloren.
Ich verstehe es so das HOMESTATE mir nichts weiter sagt als das es Morgens, Mittags oder Abends ist korrekt? Das setzen des Modus per Hand stellt dann eigentlich keine Modi ein sondern setz nur den State manuell oder (ich finde hier wird zu oft Mode und State verwechselt bzw hätte ich vom Modulnahmen ehr eine konsequentere Namensgebung in Richtung state erwartet und wenn meine Annahme über das Modul richtig ist stellt es auch nur den vorlaufenden Status des Tages dar)
Welchen Sinn haben FLOORSTATE/ROOMSTATE? Ist das so zu sehen das es im Home(state) schon Mittag sein kann aber auf bestimmten Etagen/Räumen schon Nachmittag oder Morgens, verwirrt?!
Hi, habe gerade RESIDENT und ROOMMATE in Betrieb genommen und bin dabei auf dieses Thema gestossen.
In diesem Thema wurde seit 120 Tagen nichts mehr geschrieben.
Ist dies kein Thema mehr? Wird das Modul nicht weiter verfolgt?
Gruss, Hubi
Hat noch jemand das "Problem", das HOMESTATE aktuell in der Schedule keine Daytime "Evening" mehr generiert?
Meine Schedule für heute sieht so aus:
1512082800.84119:
DESC Begin of night time and new calendar day, holiday: Urlaub
TIME 2017-12-01 00:00:00
TYPE dayshift
VALUE 1
1512110164:
DESC Begin of morning time and daytime stage 1
TIME 2017-12-01 07:36:04
TYPE daytime
VALUE morning
1512113012:
DESC Begin of daytime stage 2
TIME 2017-12-01 08:23:32
TYPE daytimeStage
VALUE 2
1512115860:
DESC Begin of midmorning time and daytime stage 3
TIME 2017-12-01 09:11:00
TYPE daytime
VALUE midmorning
1512118708:
DESC Begin of daytime stage 4
TIME 2017-12-01 09:58:28
TYPE daytimeStage
VALUE 4
1512121556:
DESC Begin of daytime stage 5
TIME 2017-12-01 10:45:56
TYPE daytimeStage
VALUE 5
1512124403:
DESC Begin of noon time and daytime stage 6
TIME 2017-12-01 11:33:23
TYPE daytime
VALUE noon
1512127251:
DESC Begin of daytime stage 7
TIME 2017-12-01 12:20:51
TYPE daytimeStage
VALUE 7
1512130099:
DESC Begin of afternoon time and daytime stage 8
TIME 2017-12-01 13:08:19
TYPE daytime
VALUE afternoon
1512132947:
DESC Begin of daytime stage 9
TIME 2017-12-01 13:55:47
TYPE daytimeStage
VALUE 9
1512135795:
DESC Begin of daytime stage 10
TIME 2017-12-01 14:43:15
TYPE daytimeStage
VALUE 10
1512138643:
DESC Begin of daytime stage 11
TIME 2017-12-01 15:30:43
TYPE daytimeStage
VALUE 11
1512141491:
DESC Begin of daytime stage 12
TIME 2017-12-01 16:18:11
TYPE daytimeStage
VALUE 12
1512144339:
DESC End of daytime
TIME 2017-12-01 17:05:39
TYPE daytime
VALUE midevening
1512169200.84119:
DESC End of calendar day and begin night time
TIME 2017-12-01 24:00:00
TYPE dayshift
Wir steigen also offenbar direkt mit "midevening" ein. Ich meine aber, dass sonst auch immer vorher noch ein "Evening" generiert wurde. Dies kann ich aktuell dann nur manuell setzen.
Hier noch ein List, falls es hilft:
Internals:
CHANGED
NAME Haus
NEXT_EVENT 2017-12-01 16:18:11 - Begin of daytime stage 12
NOTIFYDEV global,Haus,rgr_Bewohner
NR 155
NTFY_ORDER 50-Haus
READY 1
RESIDENTS rgr_Bewohner
STATE afternoon
TYPE HOMESTATE
READINGS:
2017-09-15 10:03:33 autoMode on
2017-12-01 00:00:00 calTod Friday, December 1
2017-10-29 05:44:53 calTodDST standard
2017-12-01 00:00:00 calTodDaytimeStageLn 00:47:27
2017-12-01 00:00:00 calTodDaytimeT 09:29:35
2017-12-01 00:00:00 calTodDesc Urlaub
2017-12-01 00:00:00 calTodHoliday 1
2017-05-09 08:07:42 calTodLeapyear 0
2017-12-01 00:00:00 calTodMonth December
2017-12-01 00:00:00 calTodMonthN 12
2017-12-01 00:00:00 calTodMonthS Dec
2017-12-01 00:00:00 calTodMonthday 1
2017-12-01 00:00:00 calTodMonthdayRem 30
2017-05-09 08:07:42 calTodRel today
2017-12-01 00:00:00 calTodS December 1
2017-09-23 00:00:00 calTodSAstro Autumn
2017-09-24 00:00:00 calTodSAstroChng 0
2017-12-01 00:00:00 calTodSMeteo Winter
2017-12-01 00:00:00 calTodSMeteoChng 1
2017-12-01 00:00:00 calTodSunrise 07:36:03
2017-12-01 00:00:00 calTodSunset 17:05:38
2017-12-01 00:00:00 calTodTodWeekend 2
2017-11-27 00:00:00 calTodWeek 48
2017-12-01 00:00:00 calTodWeekday Friday
2017-12-01 00:00:00 calTodWeekdayN 5
2017-12-01 00:00:00 calTodWeekdayS Fri
2017-05-09 08:07:42 calTodYear 2017
2017-12-01 00:00:00 calTodYearday 334
2017-12-01 00:00:00 calTodYeardayRem 31
2017-12-01 00:00:00 calTom Saturday, December 2
2017-10-28 07:43:14 calTomDST standard
2017-12-01 00:00:00 calTomDesc weekend
2017-05-18 00:00:00 calTomHoliday 1
2017-11-30 00:00:00 calTomMonth December
2017-11-30 00:00:00 calTomMonthN 12
2017-11-30 00:00:00 calTomMonthS Dec
2017-12-01 00:00:00 calTomMonthday 2
2017-12-01 00:00:00 calTomMonthdayRem 29
2017-05-09 08:07:42 calTomRel tomorrow
2017-12-01 00:00:00 calTomS December 2
2017-06-22 00:00:00 calTomSAstroChng 1
2017-05-31 00:00:00 calTomSMeteoChng 1
2017-11-26 00:00:00 calTomWeek 48
2017-12-01 00:00:00 calTomWeekday Saturday
2017-12-01 00:00:00 calTomWeekdayN 6
2017-12-01 00:00:00 calTomWeekdayS Sat
2017-12-01 00:00:00 calTomWeekend 1
2017-05-09 08:07:42 calTomYear 2017
2017-12-01 00:00:00 calTomYearday 335
2017-12-01 00:00:00 calTomYeardayRem 30
2017-12-01 13:08:18 daytime afternoon
2017-12-01 15:30:42 daytimeStage 11
2017-05-09 08:07:42 daytimeStages 12
2017-12-01 13:08:18 lastMode noon
2017-12-01 13:09:58 lastSecurity secured
2017-12-01 13:09:58 lastState secured
2017-12-01 13:08:18 mode afternoon
2017-12-01 13:09:58 security unlocked
2017-12-01 13:09:58 state afternoon
Attributes:
ResidentsDevices rgr_Bewohner
alias Mode
devStateIcon {(HOMESTATEtk_devStateIcon($name),"toggle")}
group Home State
icon control_building_control
room Residents
webCmd mode
Dazu kommt, jetzt wo es etwas später ist, hat er auf "midevening" geschaltet, wie es auch in der Schedule oben steht. Dafür steht jetzt aber die daytimeStage auf 0, was ja so auch nicht sein sollte, da von "dunkel" bis Mitternacht die daytimeStage ja eigentlich 12 ist?
List:
Internals:
NAME Haus
NEXT_EVENT 2017-12-01 24:00:00 - End of calendar day and begin night time
NOTIFYDEV global,Haus,rgr_Bewohner
NR 155
NTFY_ORDER 50-Haus
READY 1
RESIDENTS rgr_Bewohner
STATE midevening
TYPE HOMESTATE
READINGS:
2017-09-15 10:03:33 autoMode on
2017-12-01 00:00:00 calTod Friday, December 1
2017-10-29 05:44:53 calTodDST standard
2017-12-01 00:00:00 calTodDaytimeStageLn 00:47:27
2017-12-01 00:00:00 calTodDaytimeT 09:29:35
2017-12-01 00:00:00 calTodDesc Urlaub
2017-12-01 00:00:00 calTodHoliday 1
2017-05-09 08:07:42 calTodLeapyear 0
2017-12-01 00:00:00 calTodMonth December
2017-12-01 00:00:00 calTodMonthN 12
2017-12-01 00:00:00 calTodMonthS Dec
2017-12-01 00:00:00 calTodMonthday 1
2017-12-01 00:00:00 calTodMonthdayRem 30
2017-05-09 08:07:42 calTodRel today
2017-12-01 00:00:00 calTodS December 1
2017-09-23 00:00:00 calTodSAstro Autumn
2017-09-24 00:00:00 calTodSAstroChng 0
2017-12-01 00:00:00 calTodSMeteo Winter
2017-12-01 00:00:00 calTodSMeteoChng 1
2017-12-01 00:00:00 calTodSunrise 07:36:03
2017-12-01 00:00:00 calTodSunset 17:05:38
2017-12-01 00:00:00 calTodTodWeekend 2
2017-11-27 00:00:00 calTodWeek 48
2017-12-01 00:00:00 calTodWeekday Friday
2017-12-01 00:00:00 calTodWeekdayN 5
2017-12-01 00:00:00 calTodWeekdayS Fri
2017-05-09 08:07:42 calTodYear 2017
2017-12-01 00:00:00 calTodYearday 334
2017-12-01 00:00:00 calTodYeardayRem 31
2017-12-01 00:00:00 calTom Saturday, December 2
2017-10-28 07:43:14 calTomDST standard
2017-12-01 00:00:00 calTomDesc weekend
2017-05-18 00:00:00 calTomHoliday 1
2017-11-30 00:00:00 calTomMonth December
2017-11-30 00:00:00 calTomMonthN 12
2017-11-30 00:00:00 calTomMonthS Dec
2017-12-01 00:00:00 calTomMonthday 2
2017-12-01 00:00:00 calTomMonthdayRem 29
2017-05-09 08:07:42 calTomRel tomorrow
2017-12-01 00:00:00 calTomS December 2
2017-06-22 00:00:00 calTomSAstroChng 1
2017-05-31 00:00:00 calTomSMeteoChng 1
2017-11-26 00:00:00 calTomWeek 48
2017-12-01 00:00:00 calTomWeekday Saturday
2017-12-01 00:00:00 calTomWeekdayN 6
2017-12-01 00:00:00 calTomWeekdayS Sat
2017-12-01 00:00:00 calTomWeekend 1
2017-05-09 08:07:42 calTomYear 2017
2017-12-01 00:00:00 calTomYearday 335
2017-12-01 00:00:00 calTomYeardayRem 30
2017-12-01 17:05:39 daytime midevening
2017-12-01 17:05:39 daytimeStage 0
2017-05-09 08:07:42 daytimeStages 12
2017-12-01 17:05:39 lastMode afternoon
2017-12-01 17:05:39 lastSecurity unlocked
2017-12-01 17:05:39 lastState afternoon
2017-12-01 17:05:39 mode midevening
2017-12-01 17:05:39 security locked
2017-12-01 17:05:39 state midevening
Attributes:
ResidentsDevices rgr_Bewohner
alias Mode
devStateIcon {(HOMESTATEtk_devStateIcon($name),"toggle")}
group Home State
icon control_building_control
room Residents
webCmd mode
Das fehlende "Evening" Problem hab ich schon mal selbst gefunden.
In UConv.pm ist die Generierung von Evening im Winter auskommentiert.
# WINTER SEASON
3 => {
# DST = no
0 => {
1 => 0,
3 => 1,
6 => 2,
8 => 3,
# 12 => 4,
},
},
Wenn man die Zeile 12 => 4 wieder reinnimmt, wird zur DaytimeStage 12 auch wieder die Daytime auf evening gesetzt.
Ich weiß nicht mehr genau, warum ich das auskommentiert hatte. Bis mir das wieder einfällt, kommentiere ich das mal wieder ein ;-)
Danke :)
Mir fällt neuerdings auf, dass mein HOMESTATE Device nach einem FHEM restart immer im Status "guarded" startet, obwohl Residents Devices present sind. Aktualisieren tut sich das dann erst, wenn ich die Residents einmal absent/home toggle.
Gemerkt habe ich das erstmals vor 2-3 Wochen denke ich. Ist das neu?
Hm, das kann ich bei mir hier nicht nachvollziehen.
Hast du vielleicht FHEM nicht normal heruntergefahren? Dann wird der aktuelle Status nicht weggespeichert.
Ich habe jetzt gerade in HOMESTATEtk die Unterstützung für die homealone Funktion aus RESIDENTS eingebaut.
Damit wird nun im status Reading ein Präfix mit dem subType angezeigt, der gerade allein zuhause ist.
Ich habe nun auch die phänologische Jahreszeit (https://de.wikipedia.org/wiki/Ph%C3%A4nologie#Ph%C3%A4nologische_Jahreszeiten_Mitteleuropas) hinzugefügt.
Sie eignet sich aufgrund ihrer besseren Differenzierung zumeist sehr viel besser für Steuerungen als die meteorologische oder astronomische Jahreszeit.
Bevor es jetzt mit der Entwicklung von HOMESTATE/ZONESTATE/ROOMSTATE/OUTDOORSTATE weitergeht, habe ich einige der zentralen Funktionen in ein eigenes Modul namens DaySchedule ausgelagert. HOMESTATE und Co werden später mit diesem Modul eng zusammenarbeiten:
https://forum.fhem.de/index.php/topic,101942.0.html (https://forum.fhem.de/index.php/topic,101942.0.html)
Anmerkung dazu:
Homestate hat seit Beginn der Winterzeit bei mir ordentlich Probleme.
Aktuell ist laut Modul noch "Sommer", dayTime bleibt hartnäckig auf "night", Schedules werden wohl auch nicht korrekt generiert.
Das hat allerlei andere Nebeneffekte, wie z.B. das der "security" state auch permanent auf "protected" bleibt, weil ja "Nacht" ist.
Ein schneller Blick in den Code hat mich leider bei der Fehlersuche nicht weitergebracht.
Aktuell bin ich dabei, möglichst viele meiner Funktionen umzubauen und mich nicht mehr auf Homestate zu verlassen. Das ist allerdings ordentlich Arbeit...
Im angehängten "list" wurde der Haus Mode manuell auf "morning" gesetzt um das größte Chaos im Haus zu beseitigen. ;)
Internals:
FUUID 5c45a0bd-f33f-8c0c-bbdb-41f48616b1da0ff2
NAME Haus
NEXT_EVENT 2019-10-28 08:33:28 - Begin of daytime stage 3
NOTIFYDEV global,Haus,rgr_Bewohner
NR 146
NTFY_ORDER 50-Haus
READY 1
RESIDENTS rgr_Bewohner
STATE morning
TYPE HOMESTATE
READINGS:
2019-10-28 00:00:01 calTod Monday, October 28
2019-10-27 05:40:46 calTodDST standard
2019-10-28 00:00:01 calTodDaytimeStageLn 00:55:31
2019-10-28 00:00:01 calTodDaytimeT 11:06:20
2019-10-28 00:00:01 calTodDesc 0
2019-07-01 00:00:00 calTodHoliday 1
2019-05-14 11:26:44 calTodLeapyear 0
2019-10-01 00:00:00 calTodMonth October
2019-10-01 00:00:00 calTodMonthN 10
2019-10-01 00:00:00 calTodMonthS Oct
2019-10-28 00:00:01 calTodMonthday 28
2019-10-28 00:00:01 calTodMonthdayRem 3
2019-05-14 11:26:44 calTodRel today
2019-10-28 00:00:01 calTodS October 28
2019-06-23 00:00:00 calTodSAstro Summer
2019-06-24 00:00:00 calTodSAstroChng 0
2019-06-01 00:00:00 calTodSMeteo Summer
2019-06-02 00:00:00 calTodSMeteoChng 0
2019-07-01 00:00:00 calTodSPheno Midsummer
2019-07-02 00:00:00 calTodSPhenoChng 0
2019-10-28 00:00:01 calTodSunrise 06:42:25
2019-10-28 00:00:01 calTodSunset 17:48:45
2019-05-14 11:26:44 calTodTodWeekend 2
2019-10-28 00:00:01 calTodWeek 44
2019-10-28 00:00:01 calTodWeekday Monday
2019-10-28 00:00:01 calTodWeekdayN 1
2019-10-28 00:00:01 calTodWeekdayS Mon
2019-10-28 00:00:01 calTodWeekend 2
2019-05-14 11:26:44 calTodYear 2019
2019-10-28 00:00:01 calTodYearday 300
2019-10-28 00:00:01 calTodYeardayRem 65
2019-10-28 00:00:01 calTom Tuesday, October 29
2019-10-26 07:05:00 calTomDST standard
2019-10-27 01:00:01 calTomDesc 0
2019-06-30 00:00:00 calTomHoliday 1
2019-05-22 08:36:11 calTomLeapyear 0
2019-09-30 00:00:00 calTomMonth October
2019-09-30 00:00:00 calTomMonthN 10
2019-09-30 00:00:00 calTomMonthS Oct
2019-10-28 00:00:01 calTomMonthday 29
2019-10-28 00:00:01 calTomMonthdayRem 2
2019-05-14 11:26:44 calTomRel tomorrow
2019-10-28 00:00:01 calTomS October 29
2019-06-22 00:00:00 calTomSAstro Summer
2019-06-23 00:00:00 calTomSAstroChng 0
2019-05-31 00:00:00 calTomSMeteo Summer
2019-06-01 00:00:00 calTomSMeteoChng 0
2019-06-30 00:00:00 calTomSPheno Midsummer
2019-07-01 00:00:00 calTomSPhenoChng 0
2019-10-27 01:00:01 calTomWeek 44
2019-10-28 00:00:01 calTomWeekday Tuesday
2019-10-28 00:00:01 calTomWeekdayN 2
2019-10-28 00:00:01 calTomWeekdayS Tue
2019-10-27 01:00:01 calTomWeekend 2
2019-05-14 11:26:44 calTomYear 2019
2019-10-28 00:00:01 calTomYearday 301
2019-10-28 00:00:01 calTomYeardayRem 64
2019-10-28 00:00:01 daytime night
2019-10-28 07:37:57 daytimeStage 2
2019-05-14 11:26:44 daytimeStages 12
2019-10-28 07:29:00 lastMode night
2019-10-28 07:29:00 lastSecurity locked
2019-10-28 07:29:00 lastState night
2019-10-28 07:29:00 mode morning
2019-10-28 07:29:00 security unlocked
2019-10-28 07:29:00 state morning
Attributes:
ResidentsDevices rgr_Bewohner
alias Mode
devStateIcon {(HOMESTATEtk_devStateIcon($name),"toggle")}
group Home State
icon control_building_control
room Residents
webCmd mode
Hier noch die Schedule für heute. Wie man sieht, wird als einziges dayTime Event "midevening" generiert. Von Morning, Afternoon etc ist nichts zu sehen.
1572217200.01321:
DESC Begin of night time and new calendar day, holiday: 0
TIME 2019-10-28 00:00:00
TYPE dayshift
1572241345:
DESC Begin of daytime stage 1
TIME 2019-10-28 06:42:25
TYPE daytimeStage
VALUE 1
1572244677:
DESC Begin of daytime stage 2
TIME 2019-10-28 07:37:57
TYPE daytimeStage
VALUE 2
1572248008:
DESC Begin of daytime stage 3
TIME 2019-10-28 08:33:28
TYPE daytimeStage
VALUE 3
1572251340:
DESC Begin of daytime stage 4
TIME 2019-10-28 09:29:00
TYPE daytimeStage
VALUE 4
1572254672:
DESC Begin of daytime stage 5
TIME 2019-10-28 10:24:32
TYPE daytimeStage
VALUE 5
1572258003:
DESC Begin of daytime stage 6
TIME 2019-10-28 11:20:03
TYPE daytimeStage
VALUE 6
1572261335:
DESC Begin of daytime stage 7
TIME 2019-10-28 12:15:35
TYPE daytimeStage
VALUE 7
1572264667:
DESC Begin of daytime stage 8
TIME 2019-10-28 13:11:07
TYPE daytimeStage
VALUE 8
1572267998:
DESC Begin of daytime stage 9
TIME 2019-10-28 14:06:38
TYPE daytimeStage
VALUE 9
1572271330:
DESC Begin of daytime stage 10
TIME 2019-10-28 15:02:10
TYPE daytimeStage
VALUE 10
1572274662:
DESC Begin of daytime stage 11
TIME 2019-10-28 15:57:42
TYPE daytimeStage
VALUE 11
1572277993:
DESC Begin of daytime stage 12
TIME 2019-10-28 16:53:13
TYPE daytimeStage
VALUE 12
1572281325:
DESC End of daytime
TIME 2019-10-28 17:48:45
TYPE daytime
VALUE midevening
1572303600.01321:
DESC End of calendar day and begin night time, holiday: 0
TIME 2019-10-28 24:00:00
TYPE dayshift
Viele der Kalendar relevanten Infos sind in das DaySchedule (https://forum.fhem.de/index.php/topic,101942.0.html) Modul gewandert und werden über Kurz oder Lang aus HOMESTATE verschwinden.
DaySchedule ist aber noch nicht released, ich kann nicht sagen, wann das sein wird.
Ja, habe ich mir schon gedacht.
Habe mir das DaySchedule Modul aus dem entsprechenden Thema auch bereits installiert und bis auf ein paar Kleinigkeiten (siehe Kommentar zu recomputeAt im anderen Thema), funktioniert das aktuell wohl schon ganz gut.
Hierzu aber noch eine Anmerkung.
Im Juli gab es in UConv.pm eine größere Aufräumarbeit als Vorbereitung zum Aufräumen von HOMESTATEtk.
Aus meiner Sicht hätte das niemals eingecheckt werden dürfen. Damit wurden viele Funktionen in HOMESTATE quasi geschrottet, ohne die User ausreichend darauf hinzuweisen. Zumindest habe ich nirgendwo gelesen, dass man HOMESTATE jetzt besser nicht mehr benutzen sollte. Immerhin ist es noch Teil des offiziellen Repositories.
Ich hab jetzt sicherlich 3 Stunden mit dem Quellcode verbracht, um herauszufinden wo plötzlich die ganzen Probleme herkommen und nur durch Zufall jetzt gesehen, dass es durch das Update von UConv.pm im Juli passiert ist, nachdem ich mich vorher ewig gefragt habe, wo wohl die Jahreszeiten-Berechnung im Code versteckt ist... Klarer Fall: Seit dem Juli-Update ist diese Berechnung im Code nicht mehr enthalten.
Also wenn schon Änderungen eingecheckt werden, dann doch bitte "komplett" und nicht die eine Datei aufgeräumt und die andere nicht... das verursacht allerlei Inkonsistenzen die wie in meinem Fall nicht unbedingt sofort sichtbar sind. >:(
Immerhin handelt es sich hier um Module im "offiziellen" Repository. Da sollte man schon erwarten können, dass genau sowas nicht passiert.
Ich habe mir jetzt die UConv.pm aus Revision 19757 wiederhergestellt und natürlich funktioniert jetzt alles wieder. Das hätte man allerdings auch einfacher haben können.
HOMESTATE ist kein offizielles Modul, es befand/befindet sich im Entwicklungsstadium und ist bisher nie für den produktiven Einsatz vorgesehen gewesen, sondern zum ausprobieren und Feedback geben. Man konnte HOMESTATE bisher nie ohne das herunterladen einer Datei hier aus dem Forum in Betrieb nehmen. Dass Bibliotheken in FHEM genutzt werden und diese Änderungen unterlegen, ist zweitrangig, denn die offiziellen Module aus dem Repository sind entsprechend gepflegt.
Stimmt, du hast recht. Das Homestate nicht offiziell war ist mir entgangen, sorry.
Ein Hinweis auf die UConv Änderungen hier im Thema wäre aber trotzdem schön gewesen. Selbst wenn man den nicht sofort gesehen hätte, schaue ich meistens vor der Fehlersuche ins Forum und dann wäre es zumindest aufgefallen.
Gibt es hier eigentlich zufällig etwas neues? Bin gerade bei mir einiges am Umbauen und fände sowas wie echte Räume (sprich mit Eigenschaften und nicht als Filterfunktion) sehr praktisch und eventuell könnte das 02_ROOMSTATE in die Richtung gehen. Bevor ich mir da jetzt was selber zusammenbastele, ... ;)
No time.