Rollos & TV koppeln – ja es geht!

Hausautomation – ein nicht Enden wollendes Thema. Die Hausautomation soll ja – wie der Name schon sagt – Abläufe im Haus automatisieren. Man lässt also alltägliche Tätigkeiten vom Computer erledigen.

Ein solcher Vorgang ist mir vor kurzem aufgefallen: Jeden Abend schalte ich den Fernseher aus, gehe ins Schlafzimmer und lasse dort unsere Rollos herunter. Das sollte sich doch automatisieren lassen? Ja tut es!

Als erstes muss erwähnt werden dass ich schon lange den Lightmanager von jbmedia nutze. Dieses kleine Gerät verbindet Infrarot-Fernbedienungen mit Funk-Steckdosen. So kann ich mit meiner Harmony One bequem die Stromzufuhr der Hifi-Geräte unterbrechen. Seit kurzem beherrscht der Lightmanager auch das versenden von Netzwerkbefehlen über http get. Und da alle Homematic-Geräte auch über direkte Netzwerkbefehle gesteuert werden können passt das perfekt!

Zuerst habe ich einen neue Systemvariable „TV“ angelegt und dieser die Parameter „ein“ und „aus“ gegeben. Über die App HomeDroid habe ich diese Variable einmal an- und ausgeschaltet – danach können die entsprechenden Netzwerkbefehle unter Konfiguration – Automatisierung abgelesen werden:

20160725_homematic_TV_3

Diese Links nun habe ich als neue Befehle im Lightmanager hinterlegt und so eingestellt, dass beim Einschalten des TV die Variable auf „ein“ und beim Ausschalten auf „aus“ gesetzt wird. Jetzt weiß die Homematic schon mal ob der Fernseher ein oder aus ist.

20160725_homematic_TV

Zum Schluss habe ich noch ein Programm erstellt, welches beim Wechsel der Variable auf „aus“ die beiden Rollos herunter fährt. Damit das natürlich nur Nachts passiert habe ich als zusätzliche Voraussetzung die Zeit von 22:00 – 06.00 definiert.

20160725_homematic_TV_2

So schließen sich jetzt die Rollos im Schlafzimmer automatisch, sobald Abends der Fernseher ausgeschaltet wird.

Synology NAS als Datenspeicher & VPN-Server

Bisher wurden meine wichtigen Daten (vor allem Fotos & Dokumente) in einem externen Raid5-Gehäuse (Lian Li EX-50) an meinem PC gespeichert und zusätzlich online gesichert. Durch das Raid5 mit 5x1TB Festplatten besteht ein gewisser Ausfallschutz, aber leider ist das besagte Gehäuse nicht Netzwerkfähig und die Software ist auch schon etwas veraltet.
Deshalb habe ich das Gehäuse vor kurzem durch ein Synology DS1511+ NAS ersetzt, welches ich sehr günstig gebraucht erwerben konnte. Die Vorteile liegen auf der Hand:
– Netzwerkfähig, dh. ich konnte das NAS nun in meinem Serverschrank unterbringen
– Leistungsfähiger
– Up-to-Date (Synology bring regelmäßig neue Versionen für das Betriebssystem DSM heraus)

Der Umzug verlief problemlos, einzig das Zwischenspeichern der ca. 2 TB Daten (ich habe die alten 5x1TB Festplatten weiterverwendet, musste sie aber wegen dem neuen Raid5 formatieren) war eine kleine Herausforderung.

20160603_155302

VPN-Server

Bis jetzt habe ich einen Rasperry Pi als VPN-Server genutzt, um von unterwegs auf mein Heimnetzwerk (und damit auf die Haussteuerung) zugreifen zu können. Da das neue NAS eine VPN-Funktion integriert hat verwende ich nun dieses stattdessen. So habe ich ein Gerät weniger in Betrieb und der Rapsberry Pi kann bei Bedarf für andere Zwecke genutzt werden.
Zum Verwenden als VPN muss einfach im Packetzentrum der „VPN Server“ installiert und anschließend OpenVPN aktiviert werden. Der Rest ist eigentlich selbsterklärend – ich verlinke hier einfach mal auf ein externes Wiki. 

Windwächter: Erweiterte Programierung

Wie schon beschrieben habe ich einen externen Windsensor in mein Homematic-System eingebunden. In der Zwischenzeit habe ich die Programierung massiv erweitert und möchte sie hier vorstellen:

Vorher kurz zur gewünschten Situation:
Unsere Raffstores sind in der Nacht geschlossen und kippen sich am Tag automatisch auf. Wenn jetzt zu starker Wind auftritt (bei uns 10,5m/s) sollen die Raffstores automatisch hochfahren, und nach 15 Minuten (falls der Wind inzwischen die 10,5m/s nicht mehr überschritten hat) wieder herunterfahren. Passiert das am Tag sollen sich die Raffstores wieder aufkippen, in der Nacht natürlich nicht.

Voraussetzung für mein Programm ist ein Script, welches den Sonnenstand (Azimute und Elevation) berechnet. Hierzu verlinke ich einfach mal auf die Seite von der ich das Script habe.

Als nächstes legt man für jeden Raffstore ein neues Programm an. Hier als beispiel ein Raffstore in unserem Wohnzimmer.

20160604_homematic_Raffstore

Was macht das Programm? Wird die Behanghöhe von 1% erreicht, stellt sich der Raffstore auf 2% ein. Das ist genug um unsere Raffstores korrekt aufzukippen. Die passenden Werte hängen vom jeweiligen Raffstore-Modell ab und müssen ausprobiert werden.

Ist das für alle Raffstores erledigt kommt nun der eigentliche Windwächter:

20160604_homematic_Raffstore_2

Der erste Teil des Programms macht nun folgendes:

WENN die Windgeschwindigkeit (SV_Windspeed) größergleich 10,5m/s ist UND der Sonnenstand (SV_sonne_elevation) größer 1,5° beträgt (also Tag) DANN werden alle Raffstores geöffnet (100%) und nach 15 Minuten das Programm EG_Raff_Rueckstellung ausgelöst. Dieses stellt die Raffstores auf die zuvor ermittelten Werte (zb. Wohnzimmer auf 1%) und das Folgeprogramm oben stellt sie im Anschluss wieder auf 2% (sie kippen auf).

Der zweite Teil löst aus, WENN die Windgeschwindigkeit (SV_Windspeed) größergleich 10,5m/s ist UND der Sonnenstand (SV_sonne_elevation) kleinergleich 1,5° beträgt (also Nacht). Hier werden die Beschattungen nach 15 Minuten wieder heruntergefahren aber nicht mehr aufgekippt.
Fazit: Wie man sieht können mit Homematic auch sehr komplexe Programme realisiert werden. In unserem Fall hat der Windwächter bereits einwandfrei funktioniert und bei drohenden Sturmschäden die Raffstores geschützt.

Windwächter mit externem Windsensor realisieren

Ich möchte euch heute Vorstellen wie ich einen externen Windsensor in mein Homematic-System eingebunden habe. Kurz zur Vorgeschichte:
Bei unserem Neubau sind teilweise ziemlich große Raffstores verbaut (bis zu 2,50×3,00m). Um diese vor zu starkem Wind zu schützen war ich auf der Suche nach einem Windsensor. Natürlich habe ich mir zuerst den bekannten OC3-Kombi-Sensor angeschaut, mich aber aus folgenden Gründen dagegen entschieden:
– Viele negative Berichte im Internet, vor allem über die Messqualität des Windsensors
– Funkbetrieb (meine CCU steht im Keller, der Sensor soll aufs Dach)
– Batteriebetrieb (zum Batteriewechsel immer aufs Dach klettern…)

Nach langer Suche bin ich im Internet auf die tschechische Firma Papouch (http://www.papouch.com) gestoßen, welche diverse Sensoren für die Industrie herstellt und vertreibt. Unter anderem auch ein Anemometer mit Netzwerkanschluss und Webinterface. Da in meinem Homematic-System bereits die Heizungswerte von einem Webinterface ausgelesen werden wusste ich: Das kann funktionieren. Also hab ich den Sensor TX20ETH (mittlerweile wurde der Nachfolger WindETH vorgestellt) bestellt und eine Woche später am Dach montiert:

tx20eth-anemometer   20160430_150645 (Large)

Der Windsensor selbst ist wird per RJ11-Buchse angeschlossen, da ich bereits Leerrohre vom Technikraum aufs Dach habe war es kein Problem die Leitung dort zu verlegen, sie musste nur verlängert werden da am Sensor „nur“ 10 Meter Kabel vorhanden sind..
Nachdem noch die IP-Adresse an meine Netzwerkkonfiguration angepasst war zeigt sich folgendes Bild im Webinterface:

Screenshot_20160502-091339

Jetzt kam der schwierige Teil – die Einbindung ins Homematic-System. An dieser Stelle möchte ich mich gleich nochmal bei alchy aus dem Homematic-Forum bedanken. Er hat mir bereits bei meinen Heizungswerten geholfen und auch jetzt hat er es wieder geschafft, die Werte des Windsensors über ein Script in Homematic-Variablen zu speichern:

! Website xml auslesen Windmesser – for dax by Alchy v0.4
var url = „http://10.0.0.200/fresh.xml“;
dom.GetObject(„CUxD.CUX2801001:1.CMD_SETS“).State(„wget -q -O – ‚“#url#“‚“);
dom.GetObject(„CUxD.CUX2801001:1.CMD_QUERY_RET“).State(1);
string srueck = dom.GetObject(„CUxD.CUX2801001:1.CMD_RETS“).State();
string slist = „“;
var posValueStart = „vals=\““;
var posValueEnd = „\“ „;
var posValue = srueck.Find(posValueStart) + posValueStart.Length();
var s1tmp = srueck.Substr(posValue, 50).StrValueByIndex(posValueEnd, 0);
! was ist da los?
var s2tmp = srueck.StrValueByIndex(“ „,23);
var s3tmp = s2tmp.StrValueByIndex(„=“,1);
var s4tmp = 0.1*(s3tmp.Substr(1, 6).ToInteger());
! slist = „Der Wind kommt aus: „#s1tmp # “ mit “ #s4tmp.ToString(2) #“ m/s“ ;
! WriteLine(slist);
dom.GetObject(„SV_Windspeed“).State(s4tmp);
dom.GetObject(„SV_Windrichtung“).State(s1tmp);

 

Und was soll ich sagen außer: Es funktioniert! Über einen CUXD-Timer werden alle 10 Sekunden (muss noch testen, ev. wird das noch verkürzt) die Werte abgelesen und gespeichert. Ab 7,5m/s werden die großen Raffstores hochgefahren, ab 10,5m/s noch die kleinen. Zusätzlich wird in einer zweiten Variable die aktuelle Windrichtung gespeichert, und kann so zb. In DashUI angezeigt werden.

Fazit:
Klar ist es keine günstige Variante (kostet ca. gleich viel wie der OC-3 Sensor, kann aber eben nur Wind), aber die Vorteile (kein Batterie- und Funkbetrieb) haben mich voll überzeugt!

Homematic und CMI verbinden

Unsere Heizung wird von einer UVR1611 (Universalregelung) von Technische Alternative gesteuert bzw. hängt über ein C.M.I. (Control and Monitoring Interface) im Netzwerk. Mit Hilfe eines Scriptes können die Sensorwerte der Heizungssteuerung in Homematic übernommen & weiterverarbeitet werden:

Als erstes muss eine Seite im Online-Schema der Steuerung erstellt werden, welche die zu übernehmenden Werte beinhaltet:

Schema

Wichtig hierbei ist, dass in den Bezeichnungen keine Umlaute und Sonderzeichen vorkommen. Leerzeichen am Besten durch einen _ ersetzen. Bei mir ist das die Seite 3 des Schemas.
Anschließend werden in der Homematic-CCU die betreffenden Variablen als Zahlenwert angelegt, und zwar genau so wie sie im Online-Schema beschriftet sind:

Variable

Nun zum Script, welches die Werte vom Online-Schema abgreift und in die Variablen speichert. Damit das Script funktioniert muss CUXD und CUXD.exec installiert sein:

var url = „http://USER:PASSWORT@CMI-IP-ADRESSE/schematic_files/3.cgi“;
dom.GetObject(„CUxD.CUX2801001:1.CMD_SETS“).State(„wget -q –auth-no-challenge -O – ‚“#url#“‚“);
dom.GetObject(„CUxD.CUX2801001:1.CMD_QUERY_RET“).State(1);
string srueck = dom.GetObject(„CUxD.CUX2801001:1.CMD_RETS“).State();
string liste = „Aussentemperatur: \n|Raumtemperatur: \n|Sole-Vorlauf: \n|Solar-VL: \n|Solar-RL: \n|Puffer-VL: \n|Puffer-RL: \n|Strahlungssensor: \n|Aktuelle_Leistung: \n|Waermemenge: \n“;
string slist =““;
string i;
foreach(i, liste.Split(„|“))
{
var posValueStart = i;
var posValueEnd = „°C“;
var posValue = srueck.Find(posValueStart) + posValueStart.Length();
var stmp = srueck.Substr(posValue, 5).StrValueByIndex(posValueEnd, 0) ;
integer ikomma = stmp.Find(„,“);
string saus1 = stmp.Substr(0, ikomma);
string saus2 = saus1 + „.“ + stmp.Substr(ikomma + 1, 5);
var zaus = saus2.ToFloat();
var name = i.Substr(0, i.Length()-3);
dom.GetObject(„“#name#““).State(zaus);
! slist = slist #name #“ = “ #zaus #“\n“;
}
! WriteLine(slist);

Hier muss natürlich der Benutzer, das Login-Passwort sowie die IP-Adresse des CMI eingesetzt werden. Weiters muss die richtige *.cgi-Datei angegeben werden, in meinem Fall 3.cgi da es bei mir die 3. Seite war.

Schlussendlich muss das Script noch in ein Timer-Programm eingebaut werden, welches zb. alle 60 Sekunden ausgeführt wird. Von nun an können die Variablen weiterverwendet werden und zb. Aktoren abhängig von Raumtemperatur oder Sonnenstrahlung geschalten werden!

Mein besonderer Dank gilt dem User alchy von homematic-forum.de, der mir dieses Script erstellt hat.

An-/Abwesenheit durch Homematic überprüfen lassen

Um der Homematic-Zentrale mitzuteilen, ob man an- oder abwesend ist muss man eine Systemvariable anlegen und diese entsprechend setzen. Das kann zb. durch Bewegungsmelder automatisiert werden – es gibt aber auch einen eleganteren Weg:

Man kann die CCU regelmäßig prüfen lassen ob ein Netzwerkgerät (unser Smartphone) im Wlan angemeldet ist. Da wir das Smartphone immer dabei haben kann so relativ einfach die Anwesenheit im Haus geschaltet werden.

Als erstes muss dazu dem Smartphone eine feste IP-Adresse zugewiesen werden. Anschließend wird auf der CCU das Programm CUx-Deamon installiert, mit dem man virtuelle Geräte anlegen kann. Wie das funktioniert ist hier sehr gut beschrieben.

Wenn das Programm installiert und eingerichtet wurde muss noch ein Systemprogramm angelegt werden um die Systemvariable An-/Abwesend entsprechend zu schalten. Bei mir sieht das ganze so aus:

homematic_anwesend

Und wozu das ganze? Die Variable kann nun in weiteren Programmen verwendet werden und zb. das Licht bei Anwesenheit eingeschaltet werden.
Einen Haken hat das ganze aber: Sollte der Akku des Smartphones einmal leer sein wird die Variable natürlich auf Abwesend geschaltet…

Raspberry Pi als VPN-Server

Die Technik in unserem Haus ist sehr komplex, neben einer eigenen Heizungssteuerung verrichtet auch noch eine Homematic ihren Dienst.

EDV-Schrank

Die Homematic (zb. zum Öffnen der Raffstores) und die Heizungssteuerung (zum Ablesen der aktuellen Werte) ist in unserem LAN eingebunden, ich wollte das Ganze aber auch über das Internet erreichbar machen. Gelöst wurde das durch einen Raspberry Pi, der von nun an als VPN-Server dient.

Dazu bin ich nach einer wirklich guten Anleitung im Internet vorgegangen, welche auch recht Problemlos geklappt hat. Entgegen der Anleitung muss aber easy-rsa mit „sudo apt-get install easy-rsa“ am Anfang installiert werden, da es nicht mehr automatisch mit openvpn mitinstalliert wird.

Jetzt können wir unsere Heizungswerte weltweit ablesen:

Schema

Das Ende

Nun ist es also so weit – nach 4 Jahren der gemeinsamen Freuden muss ich mich von meinem Audi verabschieden.
Da ich nun mit einem Firmenwagen unterwegs bin und 2 Autos einfach zu viel Platz & Geld verbrauchen trenne ich mich schweren Herzens von ihm. Es war (und ist) ein tolles Auto und ich hoffe dass der neue Besitzer genau soviel Freude damit hat wie ich!

 

2014-03-26 09.34.34 HDR