Neue Erweiterung/Toolkit für Modulfamilie RESIDENTS, ROOMMATE, GUEST

Begonnen von Loredo, 11 März 2015, 15:39:12

Vorheriges Thema - Nächstes Thema

Loredo

Ich habe gerade eine Aktualisierung der Module RESIDENTS, ROOMMATE und GUEST eingecheckt, welche ab morgen per Update verfügbar sein wird.

Das RESIDENTS Toolkit hat den Zweck bestimmte Funktionen im Zusammenhang mit Bewohnern zu vereinfachen, indem z.B. vorkonfigurierte Dummy Devices angelegt werden. Auch können deren Funktionen dann über bestimmte Attribute gesteuert werden. Man spart sich dadurch ggf. hier und dort eine zu große Verkettung von Dummys, Notifies usw.
Bei mir selbst kam es immer wieder vor, dass der Code über viel zu viele Devices und die myUtils verstreut war und es sehr schwer wurde, den Code zu erweitern ohne dass es hier und da gleich wieder kracht. Daher wollte ich für mich persönlich diese Sachen in eine geordnete Form gießen und so entstand dann der Anfang für das RESIDENTS Toolkit.

Konkret ist als erstes ein Wecker implementiert (wakeuptimer). Hierbei werden ein Dummy-Device zusammen mit einem at-Device und notify-Device angelegt und mit einem RESIDENTS, ROOMMATE oder GUEST Device verknüpft. Das Notify-Device wird dabei als Makro verwendet und soll dann die vom Benutzer einzutragenden Befehle für die Weckautomation enthalten (damit der Code auch in mehreren Weckern wiederverwendet werden kann, natürlich kann man auch einfach eine selbst geschriebene Funktion aus der myUtils im Makro eintragen). Im Grunde wird das Dummy Device "versklavt" und um Funktionen speziell für RESIDENTS, ROOMMATE und GUEST erweitert.

Hier der Ausschnitt aus der Kommandoreferenz (die ja erst ab morgen zu verlinken geht):





RESIDENTS Toolkit

Mit dem set-Kommando create können zur Vereinfachung vorkonfigurierte Konfigurationen zu RESIDENTS, ROOMMATE oder GUEST Geräten hinzugefügt werden.
Die folgenden Kommandos sind momentan verfügbar:


wakeuptimer - fügt ein Dummy Gerät mit erweiterten Funktionen als Wecker hinzu, um darauf Weck-Automationen aufzubauen.

Ein notify Gerät wird als Makro erstellt, um die eigentliche Automation auszuführen. Das Makro wird durch ein normales at-Gerät ausgelöst und kann ebenfalls angepasst werden. Die Hauptfunktion wird dabei trotzdem von einer speziellen RESIDENTS Toolkit funktion gehandhabt.

Die Weckfunktion kann wie folgt über Attribute beinflusst werden:

wakeupAutosave - Löst das FHEM Kommando 'save' nach einer Änderung der Weckzeit aus (Standard 0=aus)
wakeupDays - Makro nur an bestimmten Tagen auslösen. Mon=1,Di=2,Mi=3,Do=4,Fr=5,Sa=6,So=0 (optional)
wakeupDefaultTime - Stellt die Weckzeit nach dem auslösen zurück auf diesen Standardwert (optional)
wakeupMacro - Name des notify Makro Gerätes (notwendig)
wakeupOffset - Wert in Minuten, die das Makro früher ausgelöst werden soll, z.B. bei komplexen Weckprogrammen über einen Zeitraum von 30 Minuten (Standard ist 0)
wakeupResetdays - sofern wakeupDefaultTime gesetzt ist, kann der Reset hier auf betimmte Tage begrenzt werden. Mon=1,Di=2,Mi=3,Do=4,Fr=5,Sa=6,So=0 (optional)
wakeupUserdevice - Backlink zum RESIDENTS, ROOMMATE oder GUEST Gerät, um dessen Status zu prüfen (notwendig)



Ich habe bei meinem eigenen ROOMMATE Device 3 Wecker auf diese Weise definiert: 1 für wochentags, 1 für Samstags und 1 für Sonntags.
Der für Samstags ist am nächsten an der durch das Toolkit erstellte Konfiguration dran. Da ich für wochentags und Sonntags allerdings auch Feiertage berücksichtigt haben möchte, nutzen diese Geräte nicht das Attribut wakeupDays, sondern haben eine kleine Schleife in ihren at-Devices mit drin, um auf die Umgebungsvariablen $we und $wday zu prüfen. Daran sieht man, dass das Toolkit mich dabei nur unterstützen möchte, mir aber weiterhin die größte Freiheit bei der Nutzung der diversen anderen FHEM Geräte lässt.

Ein Wecker ist sicherlich nix großes, aber mir gibt es ein warmes Gefühl das nun endlich geordnet und strukturiert zu haben  :D
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