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

 

 

Neues Equipment

Bisher nutze ich als Stativ für meine Kamera ein billiges Noname-Teil. Dieses hatte den entscheidenden Nachteil, dass es mehr als wacklig konstruiert war. Vorallem bei Teleaufnamen und Langzeitbelichtungen fiel das negativ auf.

Deswegen habe ich mich nach einem neuen Stativ umgeschaut und bin schließlich fündig geworden:
2013-06-03 18.44.16

Ich habe mich für ein Manfrotto 190xPro entschieden, weil es in diversen Foren und Portalen sehr gute Bewertungen erhält. Als passenden Stativkopf habe ich mir den Triopo B2 ausgesucht. Dieser ist ein Kopf der Mittelklasse, für meine Zwecke aber vollkommen ausreichend und trotzdem sehr gut bewertet.

Natürlich habe ich das ganze gleich getestet, hier mal eine Teleaufname von Tobadill auf der anderen Talseite:
20130603-Dax-002