Der “Heimweg”

Wie die Überschrift es schon beschreibt, habe ich nun folgendes in Homematic umgesetzt.
Dieses Thema, wollte ich schon etwas länger mal integrieren und zwar der “Heimweg”.

Wenn wir aktuell irgendwo unterwegs sind, kommen wir ein recht “kaltes” Haus, was würde da näher liegen, als ein Programm zu erstellen, dass man auf die schnelle ausführt, bevor man sich auf den Heimweg macht, welches dann je nach aktuellen Bedingungen, schonmal das Haus vorheizt.

Zuerst habe ich aufgrund der bekannten Limitierung eine Systemvariable Heimweg angelegt, welche durch das Programm auf Ja gestellt wird.

Im Anschluss das Programm

Dieses Programm wird später dafür verwendet, via Pocket Control Widget im Schnellzugriff ausgeführt zu werden.

Das eigentliche Programm sieht wie folgt aus

Hier kann man natürlich seinen Gedanken freien lauf lassen.
Je nach Uhrzeit wird entweder die Heizungen im Erdgeschoss angemacht (Täglich von 8 Uhr bis 21 Uhr) oder nach 21 Uhr die Heizung im Schlafzimmer.

Somit ist der jeweils passende Wohnbereich schon vorgewärmt, ich denke aber – da wird noch eine Ausnahme für Urlaub = Ja kommen.

Wenn irgendwann mal Alexa Auto nach Deutschland kommt, wird das wohl noch einfacher, solche Automatisierungen auszuführen, kann sich nur noch um Jahre handeln …

SmartHome bei Schichtarbeit

Meine Lebensgefährtin hat seid diesem Jahr eine neue Arbeitsstelle und dadurch bedingt auch andere Arbeitszeiten.
Für die Frühschicht, muss das SmartHome bereits um 4 Uhr Nachts bereit sein, zusätzlich gehen wir nun auch zu verschiedenen Zeiten schlafen.
Nun die Frage, wie bringt man dem SmartHome den “Schichtbetrieb” bei?
Im folgenden meine Lösungsansatz.

Zum einen habe ich in Homematic eine neue Systemvariable Namens Schicht angelegt, mit den jeweiligen Schichten als Werteliste.

Diese Variable wird von mir manuell geändert, je nach dem welche Schicht aktuell ist.

Mein nächster Schritt war, die relevanten Programme entsprechend zu kopieren und mit dieser Variable auszustatten, als Beispiel die automatische Einschaltung der Heizung.

Soweit so gut, dass war der Einfache teil, mehr Probleme hatte ich mit meinem Programm “Gute Nacht”, das via IOBroker an Alexa veröffentlich ist.
Das Programm in seiner Ursprünglichen Form.

Wie ich mal gelernt habe, gibt es eine Limitierung in Homematic, dass innerhalb eines Programms ohne Trigger, immer die erste Aktion ausgeführt wird.
Das wiederum bedeutet, ich brauche dafür einen Auslöser, sprich eine neue Systemvariable, “Gute Nacht” als Logikwert

Das Programm habe ich wie folgt abgeändert.

Zur Erklärung:
Das Programm welches von IOBroker ausgeführt wird, setzt die Systemvariable Gute Nacht auf Ja, dadurch wird das eigentliche Programm “Gute Nacht” ausgeführt.
Wenn der Wert Schicht auf Spätschicht steht ODER Urlaub auf Ja, dann werden alle Geräte ausgeschaltet, die Systemvariable Schlafen auf Ja und dadurch Folgeprogramme der Heizungssteuerung getriggert. Zusätzlich wird die Nachtischlampe eingeschaltet.

Für den Frühschicht – Fall, wird auch selbiges getan, bis auf die Ausnahme, dass die Nachtischlampe nicht eingeschaltet wird.

Getestet ist das ganze noch nicht, dass werden wir jetzt im laufenden Betrieb herausfinden, ob die Theorie so Funktioniert, wie Programmiert.

HomeMatic: Wetterstation – Basic

Ich bin seid geraumer Zeit stolzer Eigentümer einer Wetterstation von Homematic IP (HmIP-SWO-B).
Insgesammt liefert Sie folgende Werte:

Ich habe mich für die Version “Basic” entschieden, da ich eigentlich nur die Außentemperatur und Helligkeit benötige in meinem SmartHome.
Aktuelle Windgeschwindigkeit ist eher optional, da ich (noch) keine elektrischen Rollläden habe, kommt aber bestimmt noch.

Die Außentemperatur verwende ich zur Steuerung der Heizung, also ist heizen nötig, ja oder nein.
Da ich einige Heizungsprogramme habe die darauf basieren, habe ich den Heizungsstatus über eine Systemvariable gelöst.
Hintergrund ist, dass ich mir mit der Außentemperatur noch unsicher bin und bevor ich nun in 20 Programmen den Grenzwert ändern muss, ist es doch einfacher, ein zentrales Programm zu ändern.

Somit nimmt man nur noch die zentrale Systemvariable in seine Heizungsprogramme rein und brauch den Grenzwert nur noch an einer zentralen Stelle ändern, als Beispiel mein Programm, dass Abends die Heizung im Schlafzimmer an macht:

Alles in allem bin ich mit der Wetterstation sehr zufrieden und sieht optisch auch noch gut aus.

Mein Equipment – Was wird verwendet?

Heute möchte ich euch mal etwas aufschlüsseln, welche Komponenten ich in meinem SmartHome verwende, da hier sowohl Einträge von Home Assistant, als auch Homematic zu finden sind.

Fangen wir kurz mit einer kurzen Reise in die Vergangenheit an.
Angefangen hat mein Leidenschaft für das SmartHome vor etwa 3 Jahren in einer Mietwohnung.
Damals hatte ich mit Brennenstuhl und Intertechno 433Mhz-Geräten angefangen, die über das Brennenstuhl Gateway Netzwerktauglich gemacht wurde.
Als zentrale diente ein altes Tablet an der Wand mit der Android App “SteckerPro”.
Die nächste Steigerung war der Einsatz eines Raspberry Pi 3b mit HomeAssistant als SmartHome Software zum erstellen richtiger Automatisierungen,
auch für die 443Mhz Steckdosen hatte ich eine Lösung mit dem Gateway parat.
Kurz dahinter kam das MAX! Heizungssystem von eQ3 zusammen mit einer Alexa von Amazon, dass Tablet verschwand.

Das Home Assistant System ist dann sehr lange gelaufen, mehr oder weniger Stabil, es gab ein Fazit zwischen HomeAssistant und Homematic.

Dann kam das Eigenheim und wir kommen so langsam zum IST-Zustand.
Ein Eigenheim bietet ja natürlich wesentlich mehr Möglichkeiten, als es eine Mietwohnung tut, man kann sagen, es ist Eskaliert!

Kurz nach dem Einzug (in der ersten Woche) habe ich versucht, die Komponenten meines SmartHomes wieder einzubauen und habe schnell gemerkt, MAX! hat wieder sämtliche Thermostate vergessen (wie es in der Mietwohnung oft der Fall war), Birnen von Tradfri, Steckdosen, alles nicht beschriftet, Katastrophe!

Da kam wir dann an die Stelle, wo ich mir dachte, wenn schon alles neu machen, dann bitte richtig und mit Zukunft.
Bei einem Arbeitskollegen hatte ich dann Homematic bzw. die CCU3 zum ersten mal gesehen und dachte mir, dass will ich auch!

Ich habe mir dann einen Netzwerkschrank à la “Lackrack” gebaut, welches im Büro seine Arbeit leistet.

Die Bilder sind aktuell, ich erkläre mal von oben bis unten die Hardware:

  1. 16-Port Gigabit Switch von TP-Link (Passiv/Offline)
  2. Fritz!Box 6490 Kabel
  3. Netgear Green Ethernet 8-Port Gigabit Switch
  4. Raspberry Pi 4 (Nextcloud, Alexa Gateway, usw…) und daneben ein Raspberry Pi 3b für Monocle Cam
  5. Phillips Hue Gateway (Aktiv) Ikea Tradfri Gateway (Passiv/Offline/nur bei Bedarf)
  6. Steckdosenleiste
  7. Synology DS218j als Primär-Speicher
  8. Raspberrymatic CCU (Rechts am Tischbein)

Mein Netzwerkschrank verbraucht unterm Strich rund 50 Watt Strom, mir war es Wichtig, dass es sehr Energie-Effizient ist, deshalb ist der 15 Port Gigabit Switch von TP-Link auch aus.

An Peripherie für das Homematic-System (Hauptsystem), sind folgende Komponenten im Einsatz:

  1. Schaltbare Steckdosen: TP-Link HS100 / HS110
    Integriert via CUxD: Link
  2. Heizungssteuerung: Homematic IP Set Heizen Easy Connect
  3. Wantthermostate: Homematic IP Wandthermostat mit Luftfeuchtigkeitssensor
  4. Rauchmelder: Homematic IP Rauchmelder
  5. Temperatur:
    An der Heizung (Vor -und Rücklauf): Homematic Differenz-Temperatur-Sensor
    Im Keller/Dachgeschoss: Homematic IP Temperatur- und Luftfeuchtigkeitssensor
  6. Sonstiges:
    6.1. Homematic Schlüsselanhänger
    6.2. Homematic 6-Fach Schalter
    6.3. Homematic 2-Fach Schalter
    6.3. Homematic Wetterstation – Basic

Für die Beleuchtung setzte ich auf Ikea Tradfri Birnen, angelegt an der Phillips Hue Bridge.

Die Steuerung erfolgt rein via Alexa.
Für die Kommunikation mit Alexa läuft auf dem Raspberry Pi 4 noch ein IOBroker.

HM IP Schlüsselbundfernbedienung

Wie in meinem letzten Blogposting erwähnt, funktioniert die automatische Anwesenheitserkennung in unserem SmartHome nicht mehr, seid dem Update auf 7.12.
Das Ticket wurde von Fritz!Box nun geschlossen, mit der Aussage, es liegt an dem AddOn und nicht an dem Update … nun gut – Deal with it!

Daraufhin habe ich mir alternativen überlegt und kam zuerst auf einen Lichtschalter im Flur zum aktivieren oder deaktivieren der Alarmanlage, macht aber weder vorne, noch hinten Sinn und an dieser Stelle ist mir wieder eingefallen, es hab doch einen Schlüsselanhänger von Homematic, würde doch passen!

Gedacht, Bestellt.
Der Schlüsselanhänger an sich ist relativ Schlank und nicht viel Größer als ein Autoschlüssel. In der Hosentasche merke ich den zusätzlichen Anhänger nicht wirklich, kommt aber wohl auf die Hose an …

Auf diesem Schlüsselanhänger habe ich nun die Alarmanlage eingerichtet (und noch das Licht).
Ich teste dass nun ein paar Tage, funktioniert aber wirklich sehr gut.
Das dazugehörige Programm ist recht unspektakulär.

Somit habe ich das Problem der automatischen Anwesenheitserkennung gelöst und hab dafür sogar noch ein kleines extra bekommen.
Eine Taste habe ich nun noch frei, keine Ahnung was ich mit der Anfange …

Wie Fritz!OS 7.12 mein SmatHome zerstörte

Die Überschrift etwas harsch gewählt, trifft es aber relativ gut.
Erst hatte ich mich über das recht überraschende Fritz!Box Update von 7.01 auf 7.12 von Vodafone Kabel gefreut, jedoch kam im Nachhinein die Ernüchterung.

Es gibt 2 Probleme, die ich mit diesem Update habe, ich gehe auf diese jeweils ein.

  1. HTTPS Verbindung von intern auf freigegebenen Host:
    Klingt im ersten Moment verwirrend, ich versuche es zu erklären.
    Meine Nextcloud läuft intern auf einem Raspberrypi 4, dieser ist über Port 443 (HTTPS) im Internet veröffentlich und hat da einen DNS-Eintrag.
    D.h. ich greife von meinen internen Netzwerk über HTTPS auf die externe IP von mir zu.
    Genau da gab es mit Fritz!OS 7.10 eine “Sicherheitsoptimierung”.

    Mein Workaround, über meinen vorhandenen PiHole einen statischen DNS-Eintrag erstellt, der auf die LAN-IP der Nextcloud zielt.
    In der konstelation hat natürlich den DNS von IPv4 umzustellen nicht ausgereicht, mit Fritz!OS 7.12 wird natürlich IPv6 hochgehalten, d.h. das ganze musste ich auch in IPv6 machen.
  2. Anwesenheitserkennung via hm_pdetect:
    Da meine ganzen Automatisierungen auf der von hm_pdetect ermittelten Anwesenheit basieren, ist eine zuverlässige Meldung der Anwesenheit unserer Handy’s absolute Pflicht.
    Ich konnte bis dato noch nicht herausfinden, woran es liegt oder welche Änderung hier ausschlaggebend ist, jedoch war ich eben Einkaufen und lt. Anwesenheit in Homematic, die ganze Zeit zuhause.
    Super, das heißt, die Heizung ist gelaufen, die Alarmanlage war deaktiviert usw.
    Das Problem scheint aber nicht das AddOn zu sein, sondern eher in der Fritz!Box zu suchen.
    Nach einigen Tests, läuft hm_pdetect wohl einwandfrei, der im Mesh eingebundene Fritz!Repeater liefert keinen ordentlichen Status and die Fritz!Box.

    Mein Workaround wird wohl sein, einen Schalter neben die Haustür zu bauen, über den die Anwesenheit gesteuert werden (muss) und entsprechend mein Alarmanlagenprogramm anpassen, dass ich hier ein paar Sekunden Verzögerung einbaue, zwischen öffnen der Haustür und drücken des Schalters …

Unterm Strich, ich will wieder mein Fritz!OS 7.01 zurück, da hat alles sauber und ordentlich funktioniert.

Update zu Punkt 2:
AVM hat sich nun bei mir gemeldet, ich denke dass es sich hier um einen Bug handelt.
Ich habe eben mal die Log’s aktiviert, inkl. An und Abmeldungen im W-LAN.
Sowohl der Repeater:

als auch die Fritz!Box melden, mein iPhone ordnungsgemäß ab (IP: 10.9.40.36)

Aber in der Mesh-Übersicht wird das Gerät als Verbunden angezeigt.

Ja, die Bilder sind hintereinander entstanden.

Benachrichtigung Alarmanlage Auslöser

Ich habe heute noch eine kleine Optimierung bzw. Zusatz zu meiner Alarmanlage dazu programmiert.

Das ursprüngliche Script, welches ich hierzu abgewandelt habe, bezieht sich eigentlich auf die Rauchmelder um per Push den ausgelösten Rauchmelder als Information zu erhalten. Das Script habe ich wieder einmal im Homematic-Forum gefunden.

Schritt 1: Gewerk anlegen und überprüfen
Für das Script ist es nötig, alle zu prüfenden Fenster / Türkontakte in ein Gewerk zu packen, in meinem Fall Alarmanlage.

Mit folgendem Script (in der CCU -> Programme -> Skript testen), muss das Gewerk überprüft werden, als Ergebnis muss der Gewerkname ausgegeben werden.
Wenn das nicht der Fall ist muss das Gewerk gelöscht werden, die CCU neu starten, Gewerk wieder anlegen, Skript ausführen.
var sec = (dom.GetObject(ID_FUNCTIONS)).Get("Alarmanlage");
WriteLine(sec);

Schritt 2: Kontakte zuordnen
Natürlich müssen dem neuen Gewerk nun auch die Fenster -und Türkontakte zugewiesen werden, die der Alarmanlage zugeordnet sind, ggf. alle verfügbaren Kontakte.
Ich gehe hier aber nun nicht weiter darauf ein, wie das funktioniert 😉

Schritt 3: Systemvariablen
Es gibt eine Pflicht variable, die benötigt wird um später das Benachrichtigungsprogramm zu triggern, in meinem Fall als Variablentyp “Alarm” um das auch in der CCU entsprechend zu signalisieren.

Systemvariable “Alarmanlage ausgelöst” als Alarm

Wenn man das ganze noch per App abrufen möchte oder in der CCU anzeigen lassen möchte, kann man den Auslöser auch noch in eine Zeichenkette ausgeben lassen

Systemvariable “Alarmkontakt” als Zeichenkette

Schritt 4: Alarm-Programm
Nun wird ein neues Programm benötigt, mit dem die Alarm-Variable auf ausgelöst gesetzt wird, als Auslöser werden hier alle Fenster -und Türkontakte definiert.

Klicken zum vergrößern

Unten ist noch ein Script eingebettet, dass wie folgt aussieht:
dom.GetObject('Alarmkontakt').State("");
string list;
list="";

Schritt 5: Benachrichtigungsprogramm
Nun brauch man noch das Programm, welches die Benachrichtigung raushaut auf den Kanälen, die man haben möchte, in meinem Fall ist das pocketControl.

Klicken zum vergrößern

Script zu Erkennung, welcher Kontakt ausgelöst hat:
var sec = (dom.GetObject(ID_FUNCTIONS)).Get("Alarmanlage");
string i;
string list;
list="";
foreach(i,sec.EnumUsedIDs())
{
var item=dom.GetObject(i);
if(item.IsTypeOf(OT_CHANNEL))
{
var dev=dom.GetObject(item.Device());
if( (dev.HssType()=="HmIP-SWDM") || (dev.HssType()=="HM-Sec-SCo") || (dev.HssType()=="HMIP-SWDO") )
{
var state=item.DPByHssDP("STATE");
if(state.Value())
{
list=list+dev.Name();
}
if(state1.Value())
{
list=list+dev.Name();
}
}
}
}
dom.GetObject('Alarmkontakt').State(list);

Script für pocketControl-Push
string PushText = "Die Alarmanlage wurde durch "#list#" ausgelöst!";dom.GetObject('pocketControlPushMessage').State(PushText);

Natürlich kann man hier auch jede andere Benachrichtigungsart verwenden.
Die verschiedenen Arten sind m.M. nach sehr gut in der Anleitung für das ursprüngliche Script beschrieben.
Das Ergebnis sieht dann wie folgt aus:

Alarmanlage mit Homematic und Alexa

Da ich nun alle Fenster und Türen mit Fensterkontakten bzw. Türkontakten ausgestattet habe, kann ich das als Grundlage für den Bau für eine Alarmanlage nutzen.

Zuerst habe ich mir überlegt, wie ich den Alarmsignalton realisieren kann, da kam ich zuerst auf die Rauchmelder, da diese die Option für einen Einbruchsalarm haben.
Da dachte ich mir dann, ist eigentlich doof, da darunter die Batterielaufzeit leidet und die Dinger dafür zu teuer sind.
Die Homematic Alarmsirene ist mir auch zu teuer, da habe ich andere Prioritäten.
Dann kam ich auf die unnütz rumliegende Alexa.
Diese könnte man ja ins Schlafzimmer stellen, Mikrofon deaktivieren und dann hätte man etwas, um den Alarm auszugeben.
Diese Idee hatte mich dann überzeugt.

Nun habe ich das ganze wie folgt realisiert:
Ich habe einen weiteren bottle-Server gestartet, der die Routinen in Alexa ansteuert.
In Alexa habe ich eine Routine angelegt, die einfach nur mehrmals sagt “Alarm! Alarm! Alarm! Die Alarmanlage wurde ausgelöst”
Dann habe ich das mal getestet und die Zeit gemessen, wie lang die Routine brauch, um das Abzuarbeiten, da ich das min. 2 mal ausführen will, ich kam auf etwa 1 Minute 20.


(Bild in Groß)

Nun geht es an das Homematic-Programm, das sieht dann wie folgt aus:


(Bild in Groß)

Was tut das Programm?
Also in erster Linie sind die Fenster und Türkontakte der Auslöser des Programms.
Die Alexa soll als Sirene primär genutzt werden, funktioniert natürlich nur, wenn ich Online bin, deshalb habe ich via CUxD-Ping noch eine Abfrage drin, bin ich Online oder nicht?
Ich pinge hier die 8.8.8.8, denke mal es ist unwahrscheinlich dass dieser DNS-Server von Google mal tot ist .
Wenn also CUxD-Ping-Internet ein ist, soll die Alexa routine "alarmanlage" ausgelöst werden.
Als Backup für den Offline Fall (wie gestern Abend, Danke Vodafone) sollen dann doch die Rauchmelder ausgelöst werden.
Wenn wir abwesend sind, geht eine Push-Benachrichtigung an mein Handy.
Ich denke aber, dass ich mal noch versuche, hier einen Anruf über die Fritz!Box zu triggern, ist noch in Arbeit und wird ein eigener Blogeintrag, wenn das mal geschafft ist.

Ich denke, dass ist eine wunderbare Umsetzung der Alarmanlage.

Home Assistant vs. Homematic – Das Fazit

Es ist nun etwas länger als einen Monat her, dass ich mit meinem Smart Home System von Home Assistant auf Homematic (Raspberrymatic) umgestiegen bin und ich kann abschließend nur festhalten, Homematic ist meiner Meinung nach Home Assistant meilenweit voraus was Stabilität und Verwendung angeht.

Folgende Punkte, sind hier für mich ausschlaggebend:

1) Erstellung von Programmen / Automatisierungen
Bei Home Assistant ist das nur über die Command Line in Form von *.YAML-Dateien möglich, klar arbeiten die Entwickler / Community von Home Assistant aktuell daran, volle Funktionalität auch in die GUI reinzubringen, ist auch schon teilweise gelungen ABER, da kommen wir an dieser Stelle schon zu Punkt 2.
2) Updatehäufigkeit / Änderungen
Da Home Assistant sich extrem entwickelt und so vielseitig ist, gibt es hier sehr häufig Updates und Breaking Changes, d.h. man ist laufend am Updaten, Programmen und Integrationen anpassen usw…, dass man eigentlich garnicht so wirklich dazu kommt, das System einfach nur zu “genießen”.
3) Stabilität
Ich hatte bei Home Assistant nie das Gefühl, dass es wirklich stabil oder zuverlässig ist.
Ich hatte diverse Automatisierungen, die mal ausgeführt wurden, oder eben auch mal nicht, wobei das mal “nicht” öfters der Fall war.
Das ist mir in dem Monat Homematic kein einziges Mal aufgefallen.

Mein Fazit:
Der Umstieg auf Homematic hat sich für mich absolut gelohnt, auch wenn die Komponenten Teurer sind bzw. man sich bei der Auswahl der zu verwendenden Komponenten einschränkt.

Homematic: Alexa Ausgabe ob Fenster geöffnet ist beim Gehen

Ich habe nun über Homematic folgendes realisiert.
Nachdem ich in meinem letzten Beitrag erklärt habe, wie man dem Homematic-System das sprechen beibringt, kam ich auf folgende Idee:

Wir sagen Alexa immer, dass wir gehen damit das Smart Home sämtliche Geräte ausschaltet.
Dafür habe ich ein Script in einem Programm (das Script habe ich über google gefunden, keine Ahnung woher das nun genau ist), dass alle Geräte innerhalb eines Gewerks ausgeschaltet werden, dieses Programm habe ich über ioBroker an Alexa veröffentlicht.

Nun haben wir viele Räume und vor allem Fenster und diese später im Winter vor dem gehen alle manuell zu kontrollieren, ist sehr nervig.
Deshalb bin ich dabei, alle Fenster und auch Heizungshermostate mit dem Homematic IP easy connect-Set auszurüsten.
Darüber habe ich dann auch die Erkennung, ob irgendwelche Fenster geöffnet sind.

Soweit, so gut

Nun kam ich auf die Idee, Innerhalb des Programms Gehen, könnte ja auch geprüft werden, ob alle Fenster geschlossen sind und das via TTS an Alexa auszugeben.
Dafür habe ich bei Homematic-Guru eine Anleitung + Script gefunden, die eine sehr gute Grundlage hierfür ist.
Ich habe dann also erstmal alles so angelegt, wie das auf der oben verlinkten Seite beschrieben ist.
Anschließend habe ich auch noch eine neue Variable angelegt Namens Anwesenheit Alexa als Logikwert, die über das an Alexa veröffentlichte Programm auf Abwesend geändert wird.
Auf Anwesend wird der Status der Variable geändert, wenn wir über die Fritzbox-Anwesenheitserkennung Anwesend sind (separates Programm).

So sieht nun mein Programm aus:

Bild in Groß

Das heißt, wenn wir Alexa sagen das wir gehen, wird die Variable Alexa Anwesenheit auf Abwesend gesetzt, dieser Status triggert dann das Programm, prüft ob die Variable Ueberwachung Fensterkontakte auf Min. 1 Fenster offen oder Min. 1 Fenster offen 15 Minuten steht, wenn ja, sagt uns das Alexa im Anschluss, dann kann man immer noch in der App nachschauen, welches und das zu machen, im Sommer ist es ja nicht ganz so schlimm 🙂