Schlagwort-Archive: CCU

Homematic CCU – Tuning

Die CCUs der Homematic kommunizieren mit ihren drahtlos angebundenen Sensoren und Aktoren über das 868MHz ISM Band. Hier ist die Sendeleistung und die Senderate klar definiert. So kommt es durchaus häufiger vor, dass bei vielen Geräten, die unterschiedlich weit von der Zentrale entfernt sind, auch Kommunikationsfehler auftreten. Einige diese Fehler sind dabei auf die Feldstärke an der CCU- Antenne zurückzuführen. Die Wellenlänge in Luft beträgt bei 868MHz in etwa 0,345m. Die Antenne in der CCU und in den Aktoren ist auf Lambda/4 ausgelegt. Das sind ca. 8,6cm, die als Unipol im Gehäuse liegen. Diese Antenne ist einfach und funktionell. Allerdings kann der Antennengewinn und somit die Reichweite der Homematic durch einbauen einer anderen Antenne einfach gesteigert werden.

CCU2 mit externe 868MHz Antenne

Es gibt zu diesem Thema im Netz schon einige Lösungen und Umbauten. Hier beschreibe ich meinen Umbau auf eine externe Antenne. Die Antenne soll extern befestigt werden. Eine SMA-Buchse ermöglicht das Anschließen unterschiedlicher Antennen. In diesem Beispiel habe ich mich für eine 868 MHz Helix Antenne mit Knickgelenk entschieden. Die SMA Buchse ist eine fertig konfektionierte MH113 50Ohm Buchse mit 1,13mm Koaxialleitung und MHF1 Stecker.

SMA Buchse mit Koaxkabel

Der MHF1 Stecker wird nicht benötigt und kann von der Koaxialleitung „abgeschnitten“ werden. Bei diesem, nun offenen, Kabelende muss der Innenleiter und Schirm zum Anlöten vorbereitet werden.

Offenes Ende des Koaxialkabels

Jetzt ist die CCU2 an der Reihe. Der Deckel ist schnell entfernt und die Platine freigelegt. Unten links im Bild ist das RF-Modul der Homematic mit dem Antennendraht zu erkennen. Zuerst wird die originale Antenne entfernt und ein wenig vom Lötstoplack der Masseplane entfernt. An dieser Stelle wird dann der Schirm des Koaxialkabels festgelötet.

Geöffnete CCU2

Das vorbereitete Stückchen Koaxialkabel mit dem SMA Stecker wird nun am RF-Modul angelötet. Hierbei kommt der Innenleiter an das RF-Pad mit dem vorher die Antenne verbunden war und das Schirmgeflecht an die freigekratzte Masseplane.

RF Modul mit entfernter Antenne
Koaxkabel am RF – Modul festgelötet

Die elektrische Verbindung ist somit hergestellt. Eine kleine Unstimmigkeit gibt es hier allerdings noch, bzw. habe ich mich hier noch nicht schlau gemacht: Die originale Antenne war ein einfacher Draht. Das würde bedeuten, es gibt eine Impedanz Anpassung am Ende des RF-Modul LNAs und des High-Z Drahtes. Die Koaxialleitung mit dem SMA Stecker hat allerding ebenfalls eine charakteristische Impedanz von 50 Ohm. Das würde bedeuten, es gäbe (oder gibt) hier eine Fehlanpassung. Das wiederum würde wieder Reflexionen an der Leitung und somit wiederum Leistungseinbußen hervorrufen. Im Gesamtsystem wird aber trotz vermutlicher Fehlanpassung eine Reichweitensteigerung erreicht. (Die wiederum könnte man aber mit einer korrekten Netzanpassung nochmals steigern… dazu müsste man sich das RF-Modul genauer ansehen) 

Montageloch im CCU2 – Deckel

Jetzt muss nur noch ein geeignetes Loch für den SMA – Stecker in den Gehäusedeckel gebohrt werden. Dann kann man den SMA Stecker festschrauben. Nach dem Zusammenbau der CCU ist nun nur mehr die Antenne aufzuschrauben und der Umbau ist erledigt.

868 MHZ Helixantenne mit 50Ohm SMA Stecker

Einen Funktionstest, bzw. einen Nachweis der Steigerung der Empfangs- Sendeleistung kann man überprüfen, indem man die RSSI-Pegel der angelernten Sensoren und Aktoren vor und nach dem Umbau vergleicht. Hier hilft „devconfig“, ein kleines Tool in der Homematic Software, das mittels SSH freigeschaltet werden kann:

 
echo CP_DEVCONFIG=1 >> /etc/config/tweaks

 

Ortsradioaktivität mit Homematic

sfws.lfrz.atMein Interesse an Strahlungsmessung im Allgemeinen und das Interesse am Eigenbau von Messgeräten lässt mich oft, vor allem bei langweiligem Fernsehprogramm, im Web recherchieren. Auf der Suche nach dem Begriff Geigerzähler findet man ja unheimlich viele Ergebnisse. Nach einer Unterhaltung mit einem Kollegen, wie es zu Zeiten von Tschernobyl hier mit der Strahlungsbelastung aussah, suchte ich auch nach einer Karte mit der aktuellen Strahlungsverteilung in Österreich und wurde auch fündig. Es gibt ein ganzes Netzwerk an Messgeräten in ganz Österreich verteilt, das stündlich die Radioaktivität misst und aufzeichnet. Über diese Website kann man sich anhand einer Karte mit unterschiedlich (entsprechend der Intensität der Strahlung) eingefärbten Punkten informieren. Klickt man einen Messpunkt an, so erhält man die Detailwerte der Messungen angegeben in nSievert/h dargestellt als Diagramm oder auch in Tabellenform. Die Website nennt sich: https://sfws.lfrz.at.

Toll dachte ich beim Betrachten der Messdaten. Noch toller wäre es, selber so eine Messstation aufzubauen und in mein bestehendes Homematic-System mit aufzunehmen. Oder für´s erste könnte man ja versuchen, die Daten der Website in die Homematic zu integrieren. … und dann beispielsweise bei Überschreitung eines Messwertes eine Nachricht oder einen Alarm zu generieren.

Also habe ich mir die Website genauer angesehen und die java- und php-scripten analysiert, die hier aufgerufen werden. Schlussendlich lässt sich über die Seite https://sfws.lfrz.at/json.php ein gutes Interface erreichen, dass mit den entsprechenden Kommandos bedienen kann. Für meinen Fall hole ich mit https://sfws.lfrz.at/json.php?command=getstationdata&stationcode=AT0408&a=&b= die Messdaten für eine nahe Messstation ab.

Der webresponse sieht dann in etwa so aus:

{"v":[{"d":1457276400,"v":90.1,"c":32768}, {"d":1457272800,"v":88.9,"c":32771}, {"d":1457269200,"v":85.8,"c":32781}, {"d":1457265600,"v":83.1,"c":32790}, {"d":1457262000,"v":83.7,"c":32788}, {"d":1457258400,"v":86.6,"c":32778}, {"d":1457254800,"v":88.2,"c":32773}, {"d":1457251200,"v":83.1,"c":32790}, {"d":1457247600,"v":84.2,"c":32786}, {"d":1457244000,"v":85.1,"c":32783}, {"d":1457240400,"v":89.7,"c":32768}, {"d":1457236800,"v":99.1,"c":38656}, {"d":1457233200,"v":101,"c":39680}, {"d":1457229600,"v":90.8,"c":33280}, {"d":1457226000,"v":92,"c":34048}, {"d":1457222400,"v":112,"c":46848}, {"d":1457218800,"v":115,"c":48896}, {"d":1457215200,"v":109,"c":45056}, {"d":1457211600,"v":104,"c":41728}, {"d":1457208000,"v":91.5,"c":33536}, {"d":1457204400,"v":89.7,"c":32768}, {"d":1457200800,"v":84.9,"c":32784}, {"d":1457197200,"v":84.4,"c":32785}, {"d":1457193600,"v":83.5,"c":32788}], "a":"1457190947","b":"1457277347"}

Also perfekte Rohdaten um damit was anfangen zu können 🙂 Im Datensatz ist der Zeitstempel (im Unix-Zeitcode Format), der Messwert in nS/h, sowie ein RGB Farbcode für die Darstellung der Farbe in der Webkarte angegeben. Also beginnen wir, die Messdaten über die Homematic CCU2 Zentrale abzurufen und nach der Datenaufbereitung in Systemvariablen zu speichern.

Als erstes legen wir zwei neue Systemvariablen an:Systemvariable_StrahlungswertDie erste Variable soll „Strahlungswert“ heissen und vom Datentyp „Zahl“ sein. Als Maßeinheit gebe ich nS/h (nanoSivert pro Stunde) an.

Systemvariable_MesszeitpunktDie zweite Variable benennen wir „Messzeitpunkt“ mit dem Datentyp „Zeichenkette“. Wenn alles mit OK bestätigt ist, dann legen wir unter Programme und Verknüpfungen ein neues Programm an:

neuesProgrammDas Programm habe ich „strahlungswerte über web“ genannt und als Trigger ein periodisches Zeitevent definiert. Das Programm soll alle 60 Minuten ausgeführt werden um die Daten vom Web abzuholen und in die Systemvariablen zu schreiben.

Zeiteinstellung

Nachdem der Auslöser definiert ist, muss eine Aktivität bestimmt werden. Wir wählen hier keinen Aktor, sondern die Option „Skript“:

neuesProgrammDanach klicken wir auf die Script-Zeile und öffnen den Scripteditor:

scripteingebenDie nachfolgenden Zeilen sind am besten per copy und paste in den Scripteditor einzufügen und per OK zu bestätigen.

 

!script zum importieren der webdaten von der landeswarnzentrale radioaktivität
!by ingmar b.03/2016
string stderr;
string stdout;
string answer;
!Website angeben - die Antwort kommt als string
    string url="https://sfws.lfrz.at/json.php?command=getstationdata&stationcode=AT0408&a=&b=";

!mit wget den Inhalt der Antwort in stdout schreiben    
!wget commando bei CCU2
!system.Exec("wget -q -O - "#url, &stdout, &stderr);

!Änderung: Ein Blogleser hat mich daraug aufmerksam gemacht, dass der Aufruf von gwet bei der ccu3 nicht wie oben angegeben funktioniert. Darum bei ccu3 Geräten wie folgt:
!wget commande bei CCU3
system.Exec("wget -q -O - '" # url # "'", &stdout, &stderr);
!stdout in die variable answer schreiben
answer = stdout;
!stringlänge des Inhalts von answer ermitteln
integer length = answer.Length(); 
!foreach(summand, summanden.Split(","))
!answer=answer.Split("},{"));
var rad;
var zeitst;
var radiation;
var zeitstempel;
!Antwort Radiation  in index 1,4,7,10,13...70
!Antwort Zeitcode in index 0,3,6,9,12...69
rad=(answer.StrValueByIndex(",", 1)); 
zeitst=(answer.StrValueByIndex(",",0));
!WriteLine(rad); nur zum debuggen
!WriteLine(zeitst); nur zum debuggen
radiation=rad.Substr(4,4);             !String an pos4 substituiern und 4 Stellen ausgeben
zeitstempel=zeitst.Substr(11,10);   !String an pos11 substituiern und 10 Stellen ausgeben
zeitst=zeitstempel.ToInteger();
zeitst=zeitst.ToTime();
rad=radiation.ToFloat();
dom.GetObject("Messzeitpunkt").State(zeitst); !Systemvariable muss definiert sein
dom.GetObject("Strahlungswert").State(rad); !Auch die Systemvariable 'Strahlungswert' vorher anlegen

 

Zum Schluss noch per Fehlerprüfung nachsehen ob der code ein Problem hat und dann OK und mit OK speichern. Hat alles geklappt sollte man jetzt die Systemvariablen ansehen können und es sollten auch gültige Werte zu sehen sein:

Systemvariablen