Neues Modul: 22_HOMEMODE.pm - grundlegende Automationen und mehr

Begonnen von DeeSPe, 07 Januar 2017, 15:59:43

Vorheriges Thema - Nächstes Thema

DeeSPe

Seit 20.12.2017 ist auch ein Wiki Eintrag für HOMEMODE verfügbar:
https://wiki.fhem.de/wiki/Modul_HOMEMODE

Hallo Gemeinschaft,

dieses Modul wurde neu von mir neu entwickelt und ich möchte es Euch hiermit vorstellen, zum Testen zur Verfügung stellen und weiter entwickeln.
Eventuell schafft es das Modul dann auch offiziell in FHEM aufgenommen zu werden. Ich gebe mir jedenfalls Mühe das zu erreichen, da ich von meiner Idee und dem Konzept überzeugt bin. Die Alpha-Tester können das sicher bestätigen. ;)

Meine Absicht mit diesem Modul ist es, dort einzusetzen wo das Modul RESIDENTS aufhört und eine  Übersicht (Readings) für alle nötigen/möglichen Dinge im Haus oder der Wohnung bereitzustellen und somit u.a. auch ein zentrales Device zur Anzeige in den verschiedenen GUIs (in meinem Fall HomeKit) und zur Konfiguration zu haben. Denn wer will schon alle Geräte durchschauen müssen um den Gesamtstatus des Zuhauses zu erfassen?

Vielen Dank an Loredo für das fantastische Modul RESIDENTS an welches ich mit diesem Modul anknüpfen möchte.
Ein ganz besonderer Dank geht an Andre (justme1968), der mir zwar nicht beim Programmieren, dafür aber mit seinen Tipps und Ratschlägen immer sehr gut weitergeholfen hat.

Das Modul stellt ein eigenständiges Device in FHEM zur Verfügung, ist aber im Prinzip nur ein Hilfsgerät, welches ohne ein vorhandenes RESIDENTS Device nicht definiert werden kann. Das ist also die Mindestvorraussetzung zur Benutzung dieses Moduls.

Das Modul soll so viel wie möglich automatisieren, aber auch alle nötigen manuellen Settings zu Verfügung stellen.
Ebenso sollte der Konfigurationsaufwand so gering wie möglich gehalten werden. Was automatisch gemacht werden kann, soll auch automatisch funktionieren. Dafür ist ja schließlich eine Hausautomation da.

Herausgekommen ist mit diesem Modul ein sehr mächtiges Tool wenn man es richtig einzusetzen weiß bzw. einsetzt.

Optional ermöglicht HOMEMODE, durch setzen von "attr <HOMEMODE> HomeAutoPresence 1", eine Verknüpfung der einzelnen ROOMMATE/GUEST Devices mit ihren zugehörigen Presence Device(s). Siehe "Konfiguration Presence Devices".

Des Weiteren soll dieses Modul auch eine zentrale Anlaufstelle für alle Events um eben diesen Haus Modus und seine überwachten Geräte sein.
D.h. im Klartext, dass innerhalb vom HOMEMODE Device für nahezu alle Events der von HOMEMODE überwachten Geräte entsprechende Befehlsattribute (HomeCMD) zur Verfügung stehen in die man FHEM Code und auch Perl Code schreiben kann (und sogar beides gemischt wie in der FHEM Eingabezeile).
Das Mischen von Perl und FHEM Code innerhalb eines HomeCMD Attributs sollte vermieden werden - es könnte nicht funktionieren!
Durch diese Befehlsattribute ist es möglich zu allen sinnvollen Events entsprechende Schaltaktionen vorzugeben.
Man kann sich damit das aufwändige Erstellen von notify(s)/DOIF(s) und allerlei Custom Funktionen in der 99_myUtils.pm die dazu nötig wären einsparen.
Dadurch wird die erste Konfiguration gerade für Anfänger wesentlich leichter! Aber auch für FHEM Profis, da man eben alles in einem Device (HOMEMODE) findet, was sonst wild verstreut in mehreren Dateien zu finden wäre.
Der administrative Aufwand zur Konfiguration wird m.E. durch dieses Modul massiv verringert und übersichtlicher gestaltet!

Ich habe mittlerweile sehr viel Freude mit diesem Modul und ich hoffe es wird euch genauso nützlich sein wie es für mich geworden ist.

Auf Feedback in jeglicher Form freue ich mich sehr. :)

Eine grundlegende Änderung gegenüber dem Alpha-Modul gibt es!
Beim Alpha-Modul mussten die zu kontrollierenden/überwachenden Devices vor disesem Device in der fhem.cfg stehen. Das ist nun bei diesem Modul nicht mehr nötig!

Was das Modul schon kann:

  • Bereistellung eines "Zuhause Modus" Device
  • automatische Anknüpfung an ein Master RESIDENTS Device
  • automatische Verknüpfung von PRESENCE Devices zu ihren RESIDENTS (es sind mehrere PRESENCE Devices pro ROOMMATE/GUEST möglich)
  • Bereistellung von CMD Attributen für mögliche Events rund um den "Zuhause Modus"
  • Bereistellung von Platzhaltern innerhalb der CMD Attribute, z.B. %MODE%, %SEASON% oder %PREVMODE% für die Werte der Readings mode, season und prevMode
  • Einbindung von Kontakt Sensoren, für z.B. Offen-Warnungen nach bestimmten Zeitraum oder Alarm Meldungen in bestimmten Alarm Modus - kann pro Kontakt Sensor konfiguriert werden
  • Einbindung von Bewegungs Sensoren, für z.B. automatische Licht Schaltungen oder Alarm Meldungen in bestimmten Alarm Modus - kann pro Bewegungs Sensor konfiguriert werden
  • Darstellungen und Auslösen von Sabotage Alarmen der eingebundenen Kontakt- und Bewegungssensoren
  • Einbindung von jeweils einem Temperatur und Luftfeuchtigkeitssensor
  • Einbindung eines lokalen Yahoo Wetter Devices zur Ermittlung und Ausgabe der lokalen Wetterdaten und Erzeugung der Wettervorhersage
  • Einbindung von Power und Energy Sensoren zur Ermittlung der Gesamtmengen
  • Einbindung von holiday Devices für spezielle im HOMEMODE Device verfügbar zu machende Events - ich habe mich primär für diese Kalenderform entschieden weil sie leicht innerhalb von FHEM erstellt und bearbeitet werden kann
  • von Uhrzeit abhängiger Anwesend-Modus (deaktivierbar)
  • Bewohner unabhängige Tageszeit-Modus
  • DND-Modus
  • DND-Modus für bestimmte Zeit (in Minuten)
  • Unterstützung der Jahreszeiten
  • Alarm-Modus
  • Alarm-Modus für bestimmte Zeit (in Minuten)
  • automatische Umschaltung der Alarmanlage je nach Modus von HOMEMODE (deaktivierbar) und manuell schaltbar
  • Unterstützung für location
  • Unterstützung für presence
  • Unterstützung für die Erstellung der benötigten Homebridge Mappings für das HOMEMODE Device
  • und noch mehr...

Einschränkungen:

  • Das Modul kann nur mit dem einem RESIDENTS Device umgehen, falls mehrere RESIDENTS Devices für HOMEMODE benutzt werden sollen, so ist pro RESIDENTS Device auch ein eigenes HOMEMODE Device nötig.

Was ich evtl. noch in das Modul integrieren möchte:

  • neben Yahoo noch Unterstützung weiterer Wetter Device Typen (Wunderground?)
  • Unterstützung weiterer eigener Wetter Sensoren (Wind, Luftdruck, Niederschlag, ...)
  • Unterstützung für UWZ
  • Unterstützung weiterer Kalender Typen (iCal?) für zusätzliche Events
  • Unterstützung von Englisch und Deutsch innerhalb des Moduls (deutsche Fehlermeldungen und deutsche States des RESIDENTS Device)
  • Überwachung weiterer Geräte (z.B. Türklingel oder Kühlschränke/Tiefkühler) zum Auslösen bestimmter Befehle beim Türklingeln oder Überschreitung der Grenzwerttemperaturen
  • Überwachung von Batteriewerten und passendem HomeCMD Attribut
  • weitere Platzhalter?

Bekannte Probleme und mögliche Verbesserungen:

  • Nach einem Neustart von FHEM werden die Presence Devices der ROOMMATE/GUEST neu initialisiert. Dadurch ändert sich die Status dieser Devices kurzzeitig. Nach der Initialisierung wechseln die Status dann wieder auf den ursprünglichen Wert. Dadurch werden die Readings lastAbsentByPresenceDevice/lastPresentByPresenceDevice und lastActivityByPresenceDevice ebenfalls durch die zuletzt geprüften Presence Devices erneuert. Ich werde hierfür noch eine Lösung erarbeiten. Wurde im PRESENCE Modul gefixt!
  • Ich suche noch nach einer Lösung um auf die doppelten Semikolon im Perl Code in den HomeCMD Attributen verzichten zu können, denn diese haben sich auch bei mir beim Testen als größte Fehlerquelle herausgestellt!


Für weitere Informationen zur Konfiguration inklusive Beispielcode bitte ins Wiki schauen:
https://wiki.fhem.de/wiki/Modul_HOMEMODE


UPDATE v0.235 (31.1.2017)

  • doppelte Semikolon sind nun nicht mehr nötig im Perl Code, das hat allerdings den Nachteil dass man nun keinen Perl Code mehr mit FHEM Code innerhalb eines HomeCMD Attributs mischen kann/sollte
  • HomeSensorTemperature umbenannt in HomeSensorTemperatureOutside
  • HomeSensorHumidity umbenannt in HomeSensorHumidityOutside
  • HomeCMDcontactOpenRetrigger umbenannt in HomeCMDcontactOpenWarning1
  • HomeCMDcontactOpenRetrigger2 umbenannt in HomeCMDcontactOpenWarning2
  • neues Attribut HomeCMDcontactOpenWarningLast
  • HomeSensorsContactOpenTamperReadings umbenannt in HomeSensorsContactReadings
  • HomeSensorsContactOpenTamperVal umbenannt in HomeSensorsContactValues
  • HomeSensorsMotionOpenTamperReadings umbenannt in HomeSensorsMotionReadings
  • HomeSensorsMotionOpenTamperVal umbenannt in HomeSensorsMotionValues
  • userattr HomeOpenTamperReadings (in hinzugefügten Contact/Motion Sensoren) umbenannt in HomeReadings
  • userattr HomeOpenTamperVal (in hinzugefügten Contact/Motion Sensoren) umbenannt in HomeValues
  • Fehler beseitigt bei Kontakt Offen Warnungen
  • Prüfung integriert ob HomeSensorTemperatureOutside und HomeSensorHumidityOutside identisch sind
  • statt des Attributs comment wird nun das Reading HomeInfo für Informationen vom HOMEMODE Device benutzt
  • von allen Bewegungsmeldern wird nun auch ein durchschnittlicher Lichtwert (Reading luminance) berechnet, sofern vorhanden - der neue Platzhalter %LUMINANCE% ist dafür dazu gekommen - dazu kann in den Attributen HomeSensorsMotionReadings und/oder HomeReadings als dritter Wert das Reading für luminance angegeben werden
  • stündliche Ermittlung der Trends von temperature, humidity und luminance - entsprechende Readings werden erstellt und Platzhalter sind verfügbar
  • neues Attribut HomeTrendCalcAge für das maximale Alter der vorherigen Messung - für Trend Berechnung
  • ganze Kommentarzeilen im eigenen Perl Code sind nun zulässig, Kommentare hinter Perl Code am Ende einer Zeile sind weiterhin NICHT zulässig
  • Anfang von Übersetzungen in Deutsch, Hinweise und Fehlermeldungen sind bereits deutsch, Log Einträge bleiben englisch
  • manuelles Setzen von mode ist nun nur noch mit deaktiviertem HomeAutoDaytime möglich (attr <HOMEMODE> HomeAutoDaytime 0)
  • Ausführungsproblem von HomeCMDlocation-.... behoben
  • commandref aktualisiert


UPDATE v0.237 (8.2.2017)

  • Prüfung ob beim Definieren übergebenes RESIDENTS Device existiert
  • einige Ausbesserungen in der commandref


UPDATE v0.239 (19.2.2017)

  • Falls die GetUpdate Funktion stehen bleiben sollte, wird diese nun automatisch wieder gestartet


UPDATE v0.242 (23.2.2017)

  • einige kleine Fehlerkorrekturen
  • HomeSensorsContactValues/HomeValues korrigiert (Dank an Schlimbo)
  • RegEx für HomeSensorsContactValues/HomeValues wird nun exakt ausgewertet
  • HomeAutoArrival funktioniert nun auch wenn man nicht die automatische Presence Verknüpfung mit "HomeAutoPresence 1" aktiviert hat (Dank an Schlimbo)
  • Berichtigung des Readings lastGotoleepByResident nach lastGotosleepByResident (Dank an Schlimbo)
  • seit dem FHEM 5.8 Update müssen auch die Platzhalter die eine Zahl darstellen im Perl Code in Anführungszeichen gesetzt werden (früher ging: %ICE%, nun muss: "%ICE%")


UPDATE v0.244 (25.2.2017)

  • Absturz behoben der ausgelöst wurde durch den gleichzeitigen Statuswechsel von mind. zwei RESIDENTS
  • erweiterte holiday Unterstützung, es werden nun alle Typen (1,2,3,4,5) von holiday Events unterstützt - auch Event Texte mit Leerzeichen können nun benutzt werden (Leerzeichen werden beim Erstellen der HomeCMD Attribute durch Bindestriche (-) ersetzt)
  • Bekanntes Problem: Beim gleichzeitigen Statuswechsel von mind. zwei RESIDENTS werden die Platzhalter nicht richtig ersetzt - eine mögliche Lösung habe ich bereits erarbeitet, diese zu implementieren dauert allerdings noch ein Weilchen


UPDATE v0.247 (28.2.2017)

  • beim gleichzeitigen Statuswechsel von mind. zwei RESIDENTS werden nun die Platzhalter richtig ersetzt
  • Problem mit arrival der RESIDENTS behoben
  • HomeSensorsMotion repariert


UPDATE v0.251 (9.3.2017)

  • doppelt definierte Funktionen entfernt
  • neu: "get publicIP" um die öffentliche IP Adresse zu beziehen (http://icanhazip.com) und im Reading publicIP abzulegen
  • neu: Attribut HomeCMDpublic-ip-change für CMDs die ausgeführt werden sollen wenn eine neue IP Adresse festgestellt wurde
  • neu: Attribut HomePublicIpCheckInterval für das Interval in Minuten nach der wieder ein publicIP Check ausgeführt werden soll
  • neu: Platzhalter %IP% für das Reading publicIP
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

DeeSPe

#1

Für weitere Informationen zur Konfiguration inklusive Beispielcode bitte ins Wiki schauen:
https://wiki.fhem.de/wiki/Modul_HOMEMODE




Die folgenden Platzhalter können nur innerhalb der HomeTextWeatherForecast Attribute verwendet werden!

%CONDITION%
Wetterbedingung(en) des jeweiligen Tages

%DAY%
Tag der Wettervorhersage (heute, morgen, übermorgen, in xx Tagen)

%HIGH%
maximale vorhergesagte Temperatur

%LOW%
minimale vorhergesagte Temperatur

Die folgenden Platzhalter können nur innerhalb der HomeCMDcontact und HomeCMDmotion Attribute verwendet werden!

%ALIAS%
Alias des zuletzt ausgelösten Kontakt-/Bewegungs-Sensors

%SENSOR%
Name des zuletzt ausgelösten Kontakt-/Bewegungs-Sensors

%STATE%
Status des zuletzt ausgelösten Kontakt-/Bewegungs-Sensors (open/tilted/closed)

Die folgenden Platzhalter können nur innerhalb der HomeCMDevent Attribute verwendet werden!

%CALENDAR%
Name des Kalenders

%EVENT%
Event des Kalenders

%PREVEVENT%
vorheriges Event des Kalenders
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

betateilchen

Vielleicht könntest Du zu den seasons noch die Adventszeit hinzufügen. Also ausrechnen, wann erster Advent ist und dann die season entsprechend festlegen. Vielleicht mit einem entsprechenden Attribut, ob man die Adventszeit bis zum 24.12. / 31.12. / 06.01. bezeichnet (je nach Region und Glaubensrichtung unterschiedlich)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

DeeSPe

Zitat von: betateilchen am 07 Januar 2017, 16:33:37
Vielleicht könntest Du zu den seasons noch die Adventszeit hinzufügen. Also ausrechnen, wann erster Advent ist und dann die season entsprechend festlegen. Vielleicht mit einem entsprechenden Attribut, ob man die Adventszeit bis zum 24.12. / 31.12. / 06.01. bezeichnet (je nach Region und Glaubensrichtung unterschiedlich)

Das geht über holiday Kalender:
Zitat von: Code für FEST.holiday
# Intervall: 4 <MM-DD> <MM-D> <Text>
4 04-14 04-17 Ostern
4 11-27 12-24 Advent
4 12-25 12-26 Weihnachtsfest
und
Zitat von: Code für FEIERTAG.holiday
# Intervall: 4 <MM-DD> <MM-D> <Text>
4 01-01 01-01 Neujahr
4 11-27 11-27 Advent1
4 12-04 12-04 Advent2
4 12-11 12-11 Advent3
4 12-18 12-18 Advent4
4 12-24 12-24 Heilig-Abend
4 12-31 12-31 Silvester

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Spezialtrick

Danke Daniel! :) Ich gucke es mir später mal an!

Udo's Vorschlag teile ich aber auch jetzt schon, wie auch in letzten Betrag. :P
FHEM - Debmatic - Zigbee2MQTT - Homekit

Christian Uhlmann

Wow, Geil!!!
Gleich heute Abend mal testen, sowas wollte ich schon selber mal bauen. Vielen Dank dafür. Werde gerne Tester wenn du noch welche brauchst.
Host: Debian Buster als VM / XCP-NG
Gateways: DuoFern Stick, CUL433 Revolt, CUL MAX, HMLan, HM-USB 2, LaCrosseGateway
Devices: 12x Rademacher Rollos, 6x TX 29 DT-HT, 10x HM-CC-RT-DN, 14x MAX Fensterkontakte, Diverse HM Aktoren für Licht, Klingel, Gong, Eingangstür, ESPEasy, Sonoff mit Tasmota

Icinger

Schließe mich dem Wunsch nach der Adventszeit auch gleich mal an.

lg, Stefan
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

EnderPhilipp

Sehr interessant  8)
Werde ich die Tage mal testen.

Mfg
Philipp ;D
¡¡¡ANFÄNGERALARM!!!
Raspberry Pi 3 (Hauptsystem)
Raspberry Pi B+ (Kellersonde)
Homematic,Philips Hue, LD382, nanoCul 433/868mhz, MPD, Intertechno, FIRMATA, EspEasy, SSCAM, STV, HDMI-CEC, EchoDot

Chris8888

Hallo,

krass! Gleich mal installiert. :-)
Lief völlig problemlos - Anleitung ist super.

Werde jetzt mal ein wenig rumspielen und ein paar Sachen probieren.

Meinen Respekt!

Viele Grüße
Christian

PS: Gleich mal eine Frage: Wie kann man bei den DEVs Geräte ausblenden? Ich will zB nicht alle Energiezähler in der Liste haben.
FHEM 6.0 auf einem PI4 mit div. Homematic-Komponenten, Alexa, Tablet-UI und Homebridge...und läuft einfach. Erweitert mit CCU3 und Homematic-IP...und läuft immer noch.

DeeSPe

Zitat von: Chris8888 am 07 Januar 2017, 18:11:25
PS: Gleich mal eine Frage: Wie kann man bei den DEVs Geräte ausblenden? Ich will zB nicht alle Energiezähler in der Liste haben.

Einfach nur die Zähler im Devspec angeben die Du haben möchtest! ;)

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

DeeSPe

Zitat von: Icinger am 07 Januar 2017, 17:32:22
Schließe mich dem Wunsch nach der Adventszeit auch gleich mal an.

Wie schon beschrieben, Du kannst Dir über die holiday Kalender völlig frei HomeCMDevent Attribute erzeugen.
Ich empfehle einen Kalender für Events mit mehreren Tagen und einen für Eintagesevents (wg. Überschneidungen und so... ;) ).

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Chris8888

Hi,

2 kleine Probleme:
Im Log taucht das auf:
PERL WARNING: Argument "ss_civil" isn't numeric in numeric ne (!=) at ./FHEM/22_HOMEMODE.pm line 2093.
2017.01.07 18:01:25 1: PERL WARNING: Argument "ss_naut" isn't numeric in numeric ne (!=) at ./FHEM/22_HOMEMODE.pm line 2093

Über Homebridge wird "Bewegung entdeckt" mit JA angezeigt. Alle Bewegungsmelder (3) zeigen aber "noMotion".

Danke für einen ersten Ansatzpunkt!

VG
Christian
FHEM 6.0 auf einem PI4 mit div. Homematic-Komponenten, Alexa, Tablet-UI und Homebridge...und läuft einfach. Erweitert mit CCU3 und Homematic-IP...und läuft immer noch.

DeeSPe

Zitat von: Chris8888 am 07 Januar 2017, 18:22:21
PERL WARNING: Argument "ss_civil" isn't numeric in numeric ne (!=) at ./FHEM/22_HOMEMODE.pm line 2093.
2017.01.07 18:01:25 1: PERL WARNING: Argument "ss_naut" isn't numeric in numeric ne (!=) at ./FHEM/22_HOMEMODE.pm line 2093

Ups, ist berichtigt! Danke.  8)

Zitat von: Chris8888 am 07 Januar 2017, 18:22:21
Über Homebridge wird "Bewegung entdeckt" mit JA angezeigt. Alle Bewegungsmelder (3) zeigen aber "noMotion".

Werden denn sonst die Bewegungen richtig erkannt? Evtl. werden falsche Readings (HomeSensorsMotionOpenTamperReadings) benutzt?

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Benni

Wow! Ganz schön umfangreich!  8)
Werde ich mir zu Gemüte führen, sobald meine andere (physikalische) Baustelle abgeschlossen ist ;D

EnderPhilipp

Habe eine Frage zu HomeAutoAwoken bzw. HomeAutoAsleep:

Du sprichst bei den ROOMATES von awoken und  asleep, bei mir gibt es diese States aber im Dropdown-Menu nicht, muss ich die erst hinzufügen, wenn ja wie geht das?

Mfg
Philipp ;D
¡¡¡ANFÄNGERALARM!!!
Raspberry Pi 3 (Hauptsystem)
Raspberry Pi B+ (Kellersonde)
Homematic,Philips Hue, LD382, nanoCul 433/868mhz, MPD, Intertechno, FIRMATA, EspEasy, SSCAM, STV, HDMI-CEC, EchoDot