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 🙂

Homematic: TTS mit Alexa

Dank einer Anleitung von Heupel’s Blog konnte ich heute auch erfolgreich eine TTS Ausgabe von Homematic auf meinen Alexa’s realisieren.

Da das Script etwas bescheidend eingefügt ist (Code-Formatierung), möchte ich das Script mal im RAW-Format veröffentlichen (Alle Rechte liegen bei Heupel).
Wenn man das Script so per Copy+Past Methode in nano reinkopiert, wird daraus ein Python-Technischer Alptraum.
Benötigt wird Pyhton 2.7

Weitere Voraussetzungen:
1) Alexa Remote Control – Script: Link
Hier die Plain Version herunterladen
2) Python Modul bottle: pip install bottle
3) speechconnector.py: Link
Bei dieser Datei muss noch das .txt entfernt werden

Ordnerstruktur:
Ich habe mir auf meinem Pi unter /root/ einen Ordner “alexa” angelegt,
/root/alexa
In dem alle Daten hierzu gespeichert sind, sprich:

alexa_daemon.sh
alexa_remote_control_plain.sh
speechconnector.py

Der alexa_daemon.sh ist recht unauffällig, da startet der Webserver speechconnector.py in einer screen session, das ganze in dann unter /etc/rc.local eingetragen, damit diese automatisch startet:
screen -dmS AlexaDaemon python /root/alexa/speechconnector.py

In der alexa_remote_control_plain.sh muss noch die eigene Amazon E-Mail Adresse und das Kennwort eingetragen werden, zusätzlich sollte man es einmal ausführen, damit die Device Liste und der Cookie angelegt wird.

Im Anschluss kann man die Datei mal aufrufen via:
python ./speechconnector.py
Die Terminalausgabe sollte dann wie folgt aussehen:

Kommen wir nun zum Homematic Script.
Es werden hier 2 Variablen benötigt:
1) Alexa.Function als Werteliste – ich habe hier “Speak” und “Silence” als Werte definiert
2) Alexa.Speak als Zeichenkette, hier wird später der Text eingegeben.

Bild in Groß

Zusätzlich muss noch ein Programm erstellt werden, welches getriggert wird, wenn die Systemvariable Alexa.Function auf Speak gesetzt wird.
Wir nennen dieses Programm mal – Alexa.Speak
Mit diesem Script wird die Variable Alexa.Speak ausgelesen und als Variable an den Aufruf von dem bottle Server gesendet.
Das sieht wie folgt aus:

Bild in Groß

Das dazugehörige Script findet ihr hier: Link

Soweit geschafft, nun hat man alle vorraussetzungen erfüllt, man kann nun in einem Programm (z.B.: Waschmaschine ist fertig) das ganze ausführen:
In meinem Fall sieht das so aus:

Bild in Groß

Wenn die Waschmaschine aus ist (via TP-Link HS110, Wert: Leistung < 5 Watt für 5 Minuten), dann soll das ganze via Alexa kommuniziert werden.

Wenn man verschiedene Alexa ansteuern möchte, kann man einfach die Datei speechconnector.py kopieren, neuen Daemon starten mit anderem Port (z.B.: 8081, 8082, usw…) und in der kopierten Datei das Device ändern, und das Programm in Homematic kopieren und dort dann auch den Port entsprechend abändern, geht villeicht auch schöner wenn man das Zielgerät als Variable an Python übergeben kann, aber dafür reichen meine Kenntnisse aktuell noch nicht aus 😉

Home Assistant vs. Homematic – Teil 2

Meine Umstellung von Home Assistant auf Homematic bzw. auf einen Raspberrymatic ist nun soweit abgeschlossen.
Ich habe weiterhin auch meine Geräte konsolidiert.

D.h.:
Statt Laptop mit 2 Externen Festplatten (1 x Daten, 1 x Datensicherung) und diversen VM’s läuft nun als Speicherherz eine Synology DS218j mit 2 x 3 TB Platten (Wird ggf. auf 2 x 6 TB erhöht, wenn jetzt beim PrimeDay mal was dabei ist).
Auf dieser NAS habe ich nun folgende Dienste laufen

  1. Nextcloud (Apache 2.4, PHP 7.2, MariaDB 10)
  2. openVPN
  3. Samba-Server (Dateifreigaben)
  4. Backup auf Externe (via Hyper Backup)
  5. Surveillance Station (mit aktuell 4 Kameras, Tendenz steigend)

Bei der Nextcloud Instanz war ich mir anfangs nicht sicher, wie sich die Performance auf der Synology DS218j anfühlt aber für meine Zwecke (etwas Datenfreigeben, Bildersync usw.) ist es völlig okay, klar kann das nicht mit einem richtigen Server mithalten, aber es kommt immer drauf an, was man erwartet.

Als SmartHome-Herz läuft nun ein Raspberrymatic mit dem RPI-RF-MOD Modul für das Homematic bzw. auch Homematic IP Protokoll.
Darauf habe ich mir gleich den CuXD installiert, damit ich meine diversen TP-Link HS100 bzw. auch die HS110 einbinden kann.
Für die Alexa Anbindung habe ich einen zweiten Raspberry Pi installiert mit IOBroker und dem Homematic Adapter und dem Cloud-Adapter.

Eins noch, da ich dazu keine Lösung im Internet gefunden hatte, habe ich mir eine Lösung selbst gebaut.

Ich habe einen Samsung Smart-TV und diesen habe ich immer via samsungctl über Home Assistant gesteuert (Jugenschutz-Pin bzw. ausschalten).
Das ganze konnte ich auch in Homematic integrieren, dafür habe ich Python3 + samsungctl auf dem IOBroker Raspberry installiert, über ssh-copy-id eine Passwortlose Authentifizierung eingerichtet (auf dem Raspberrymatic muss dafür das Addon “SSH-keydir” installiert sein, damit der Key auch sicher gespeichert ist) und danach über CuXD bzw. Script die Ausführung von Samsungctl über den zweiten Pi Richtung Samsung-TV.
Für das Ein bzw. Ausschalten sieht das in der CuXD wie folgt aus:

Ausschalten:
SWITCH-FALSE CMD_SHORT(/usr/bin/ssh root@10.9.40.70 /root/homematic/Samsung_Off.sh)

Anschalten:
SWITCH-TRUE CMD_LONG(/usr/sbin/ether-wake 9C:8C:6E:52:F3:E6)

Auf dem IOBroker-Pi habe ich unter root einen Ordner angelegt “homematic” und da als Script jeweils die auszuführende Aktion, z.B.:

samsungctl --host 10.9.40.37 --port 8002 --method websocket KEY_RED
sleep 1
samsungctl --host 10.9.40.37 --port 8002 --method websocket KEY_POWER

der KEY_RED ist zum Verbindungsaufbau der Websocket connection, falls die mal nicht aufgebaut ist.

Home Assistant vs. Homematic – Teil 1

Mich umtreibt momentan folgende Frage:

Soll ich bei meinem aktuellen Setup mit Home Assistant bleiben oder soll ich das System zu Homematic migrieren?

Mein aktuelles Setup sieht wie folgt aus:
1 x alter Dell Laptop als Proxmox Host
Darauf laufen diverse VM’s, darunter:
1 x Home Assistant auf einer VM
1 x Zoneminder, PiHole Ad Blocker, Plex Media Server auf einer VM
1 x Nextcloud (migriert von meiner Internet VM, da kein Speicher mehr)

Ich habe die Bedienung von Homematic dass erste mal bei einem Kollegen gesehen, der sich eine CCU2 zugelegt hat.
So schlecht sah das eigentlich alles gar nicht aus und was ich gut finde, mann kann komplexe Automatisierungen programmieren, in einer Webübersicht, dass funktioniert in Home Assistant nicht so gut, auch wenn aktiv daran gearbeitet wird, hier die GUI zu verbessern.

Darauf hin habe ich mich mal etwas mit Homematic beschäftigt und habe gesehen, dass es auch möglich ist, über den CUx-Daemon weitere Geräte, die nicht von Homematic sind, in eine CCU einzurichten.
So auch die Anwesenheitserkennung über die Fritzbox, Ikea’s Tradfri-System, als auch die normalen Homematic Geräte, bzw. die IP Geräte.

Nachteil in meinem Fall, ich müsste meine 11 Heizungsthermostate austauschen, was schon ein Invest ist, denn das MAX!-System ist mit Homematic nicht kompatibel.

Aufjedenfall habe ich für den Raspi nun das Homematic-Funkmodul bestellt und werde mir mal einen Raspberrymatic aufbauen und schauen, was geht – und was nicht.
Die Ergebnisse werde ich dann hier veröffentlichen.