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.

Das Leistungsschutzrecht

Ich musste grad mit einem Schmunzeln im Gesicht, einen Beitrag auf Netzpolitik.org lesen, in welchem es um das von Frankreich eingeführte Leistungsschutzrecht geht.
Frankreich ist das erste Land, dass die Richtlinie in nationales Recht umgewandelt hat und nun hat Google darauf reagiert, wie man es von einem Unternehmen erwartet: In französischen Suchergebnissen wird nun nur noch die Webseite angezeigt, kein Vorschau text, keine Bilder.

Hiermit möchte Google sich die Lizenzkosten sparen, die eigentlich an die Presseverleger abgeführt werden müssten um die Vorschau texte einblenden zu dürfen.

Jetzt mal ernsthaft liebe Presseverleger?
Google hält sich doch an nationales Recht (und auch an die Richtlinie).
Da keine Lizenz vorhanden ist, werden die “Snippets” nicht mehr angezeigt. (Punkt ende aus).
Das ist doch das, was ihr gewollt habt mit eurer Lobby-Arbeit und ihr erwartet nun ernsthaft, dass sich Google von euch erpressen lässt und brav Lizenzkosten zahlt, damit ihr dadurch Werbeeinnahmen generieren könnt + die Google Steuer on Top?

Ich finde es hier richtig und wichtig wie Google reagiert.
Google sollte sich an der Stelle nicht verunsichern und erpressen lassen, sondern sich einfach auf die Art und Weise an geltendes Recht halten.
Es wurde so gewollt und Sie haben es so bekommen.

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.

Passwörter verwalten mit KeePass

Ich hatte in Vergangenheit meine ganzen Kennwörter in Google Chrome mit einem Syncpass gesichert und Synchron gehalten.
In jüngster Vergangenheit habe ich aber festgestellt, dass die Synchronisierung nicht mehr so wirklich funktioniert hat und einige Kennwörter, die ich auf PC A geändert hatte, nicht auf PC B synchronisiert wurden.

In diesem Kontext habe ich mich mal mit einer Alternative beschäftigt, um auch die Passwortverwaltung in die eigene Nextcloud zu verschieben um einfach die Kontrolle zu behalten, man kennt ja Google.

Hier habe ich mich dann für eine KeePass Datenbank entschieden, da es zum einem Plattformunabhängig ist und zweitens, es eine Integration in Nextcloud gibt, dazu aber später mehr.

Ich habe nun also eine KeePass Datenbank auf meiner Nextcloud Instanz angelegt und diese via WebDAV in das KeeWeb-Plugin von Nextcloud integriert.
Hierfür ist noch ein kleiner Kunstgriff in Nextcloud nötig, damit die Datei einfach per Klick in dem Web-Plugin geladen werden kann:
sudo nano /var/www/html/nextcloud/config/mimetypemapping.json
mit folgendem Inhalt:
{
"kdbx": ["application/x-kdbx"]
}
Ich Anschluss muss zwingend ein Filescan angestoßen werden, da ansonsten die Änderung nicht wirksam ist!
sudo -u www-data php /var/www/html/nextcloud/occ files:scan --all

Wenn der File-Scan durchgelaufen ist, können die kdbx Dateien von KeePass einfach per Klick in Nextcloud geöffnet werden.

Um nun Geräteunabhängig auf diese Datenbanken zugreifen zu können, habe ich mich in Primärerer Weise nach Programmen umgeschaut, die eine WebDAV.
Folgende Programme verwende ich:

iOS: Strongbox (WebDAV Unterstützung)
Windows: KeePass (Offizielle Programm, WebDAV Unterstützung)
MacOSX: MacPass (WebDAV Unterstützung)
Chrome Browser: KeePass Tusk (WebDAV Unterstützung)

Im Anschluss bin ich mal auf beiden Hauptgeräten (Mac und Windows) die Passwortliste durchgegangen, da hier Abweichungen durch den oben genannten Synchronisationsaufall entstanden sind.

Mannomann was sich da an Zugangsdaten über die Zeit ansammelt ist wunderbar (NICHT!).
Beim durchgehen und übertragen in KeePass habe ich in erster Linie einmal alle Kennwörter geändert und in zweiter Linie, Accounts gelöscht bzw. löschen lassen, die ich eigentlich gar nicht mehr benutze.

Alles in allem, erkenne ich jetzt keinen großen Nachteil durch die Konstellation.
Durch das Chrome Plugin und WebDAV habe ich auf allen Geräten immer die neuste Datenbank-Datei und Kann die Kennwörter auch jederzeit überall ändern wie ich es brauche.

UPDATE:
Mit der iOS App Strongbox ist mir noch aufgefallen, dass man den Standart Passwortspeicher in den iOS Einstellungen umändern kann.
Finde ich mittlerweile sehr nützlich.
Hierfür unter iOS in die Einstellungen -> Passwörter & Accounts -> Automatisch ausfüllen und hier einfach die von iCloud-Schlüsselbund auf Strongbox ändern.

Der Rasperry-Pi 4

Heute ist mein Raspberry Pi 4 angekommen und ich musste ihn natürlich gleich aufbauen und testen.

Bestellt habe ich ihn bei Amazon in der 2 GB Variante (Konnte die 4 GB Variante irgendwie nicht vorrätig finden?).
Dazu ein Gehäuse + Netzteil: Link
Das Gehäuse war sehr interessant beim Zusammenbau aber es ging.
Ich habe mich für das Gehäuse entschieden, da hier Kühlkörper + externen Lüfter enthalten waren und ich vorab im Internet gelesen habe, dass hier eine definitive Empfehlung zu einem externen Lüfter geht.

Auf dem kleinen läuft nun ein Debian Buster und aktuell folgende Dienste:

Plex Media Server
Nextcloud (Apache 2.4 / PHP7.3)
PiHole

Meine Datenbank der Nextcloud habe ich auf meiner Synology gelassen, kann da ja ruhig drauf bleiben.

Zum Thema Nextcloud:
Nextcloud ist so installiert, dass sowohl das “data” Verzeichnis als auch die MariaDB SQL auf der Synology liegt.
Mit der Datenbank Verbindung hatte ich keine Probleme, hier habe ich auf der Synology einfach einen Remote Account angelegt, mit Vollzugriff auf die Nextcloud Datenbank, wie man es eben kennt.

CREATE USER 'nextcloud'@'10.9.40.70';
GRANT ALL PRIVILEGES ON cloud.* To 'nextcloud'@'10.9.40.70' IDENTIFIED BY 'PASSWORD';
FLUSH PRIVILEGES;

Mit dem Datenverzeichnis hatte ich da schon mehr Probleme.
Das Problem bei NFS, hier werden die Verzeichnisberechtigungen per UID bzw. GUID definiert, d.h. wenn mein “www-data” Account auf dem Pi die UID 25 hat und die Gruppe die GUID 26, über ls -l jedoch als Berechtigte UID bzw. GUID wie folgt aus sieht: 1024 / 1025 – bekommt der www-data Account keine Berechtigung auf dem Verzeichnis.
Einfachste Lösung hierfür war:
Remappen der UID bzw. GUID der www-data:

usermod -u 1024 www-data
groupmod -g 1025 www-data


Danach ging auch der Schreibzugriff auf das Cloud-Daten Verzeichnisses.

Zum Thema Performance brauch sich der Pi 4 hier nicht Verstecken.
Auf meiner Instanz sind aktuell 5 Users Aktiv (Familie) und ich muss sagen, sowohl der Seitenaufbau über den Browser, als auch der automatische Kamera-Upload funktionieren wesentlich schneller, als auf der Synology Box, ich kann hier nur einen minimalen Unterschied feststellen, zu der Geschwindigkeit, als die Instanz noch auf meinem vServer gelaufen ist, also die Ladezeit kann hier meiner Meinung nach mit dem virtuellen Server im Internet locker mithalten.

Zum Thema Plex:
Das funktioniert natürlich auch wunderbar, ich habe meine Mediathek mal komplett auf *.MP4-Dateien konvertiert, da diese zum Direct Play geeignet sind und kein Transcoding stattfindet, von daher kann ich zur Transcoding-Performance keine Aussage treffen.

Zum Thema Temperatur:
Wie am Anfang schon geschrieben, hat der Raspberry Pi 4 wohl bei höherer Auslastung auch entsprechend eine höhere CPU Temperatur, mit dem Externen Lüftern und den Kühlkörpern des Gehäuses, dass ich mir dazu gekauft habe, scheint das aber kein Thema zu sein.
Ich habe das während der Installation mal Beobachtet und die höchste von mir gemessene CPU Temp waren 55,0° – also Lauwarm.
Jetzt wo er fertig ist und nur noch Rumdümpelt, liegt die Temp bei 49,0°

~# sudo vcgencmd measure_temp
temp=49.0'C

Also alles in allem, ist der Pi 4 eine deutliche Verbesserung zum 3er Model und die Anschaffung kann sich durchaus lohnen.

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 🙂

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.