Nützliches Skript für die Optimierung der Antenne in Homematic-Systemen

, ,

Bei den funkbasierten Homematic-Modulen läuft die gesamte Kommunikation über Funk ab. Dementsprechend ist die Zuverlässigkeit des Sytemes maßgeblich von der Qualität der Funkverbindung zwischen der Zentrale (CCU, Rapberrymatic oder  piVCCU) abhängig. Gerade weil dies so ist, versteht man nicht, warum gerade in der CCU, gewissermaßen das Herz des Smarthomes, nur ein einfacher Lambda-Viertel-Drahstummel als Antenne seinen Dienst tut. Das ist vergleichbar mit einer teueren Hifi-Anlage die mit einfachsten Kleinstlautsprechern betrieben wird.

Die Problematik

Auf meiner Webseite wird bereits in mehreren Beiträgen die Problematik detailliert dargestellt und was man dagegen tun kann, um die Funkkommunikation zwischen der Zentrale und den vielen Modulen mit einer guten externen Antenne zu verbessern. Entscheidend sind dabei folgende Grundsätze für die Gestaltung der so wichtigen CCU-Antenne:

eine gute möglichst rundstrahlende externe Antenne verwenden
keine Antenne mit Richtwirkung (Gewinn) verwenden, wie sie im kommerziellen Funkbetrieb verwendet werden 
die Antenne möglichst räumlich von der CCU abgesetzt (Störnebel) aufstellen

Wenn man davon ausgeht, daß viele HM-Funkmodule im Haus verteilt sind, dann hat man je nach Platzierung und Ausrichtung der Funkzentrale/CCU zu manchen Modulen eine gute Verbindung und zu anderen eine weniger gute Verbindung. Für eine hohe Zuverlässigkeit der gesamten Anlage müssen alle Module möglichst eine passable Minestverbindung haben und selbst der schwächste Funkpartner muß noch einen Mindestwert an Empfangsqualität haben. Wir haben es also mit einer komplexeren Thematik zu tun,  weil nicht nur zwei sondern sehr viele Funkpartner aufeinander abgestimmt werden müssen. Wenn man wie beim Handynetz ein Funknetz mit hohen Funkleistungen (bis zu 2000mW) zur Verfügung hätte, dann wäre die Optimierung der Funkverbindung  gar kein Problem. Aber wir haben es beim Homematik-Funk mit Sendeleistungen unter 5mW zu tun und jeder Funkpartner im Netz darf die Funkfrequenz im zeitlichen Mittel nicht mehr als 1% der Zeit verwenden! Also ist das zuverlässige Funken im Homematic-Funknetz nicht einfach.

Die entscheidene Verbesserung wird dadurch erreicht, daß man in der CCU oder im Funk-Stick den Drahtstummel entfernt und eine externe Antenne verwendet. Eine Stabantenne möglichst mit einem 1 bis 3m langen Kabel von der CCU abgesetzt platziert ist dafür schon eine sehr preiswerte Lösung. Da man im Haus aber wegen der unvermeidlichen Reflexionen und Dämpfungen durch Wände und Gegenstände eine  sehr chaotische Wellenausbreitung hat, ist eine Doppelantenne möglichst mit verschiedenen Ausrichtungen/Polarisationsrichtungen ideal. Meine Dualbeam2-Antenne ist dafür ein gutes Beispiel. Entscheiden aber ist bei allen exterenen Antennen, die optimale Ausrichtung und Platzierung der Antenne.

Wie gut die Funkverbindung zwischen der CCU und den einzelnen Modulen ist, wird in der Homematic mit dem sog. RSSI-Wert sowohl in der Zentrale als auch in jedem Funkmodul ermittelt. Damit wird die Stärke des Funksignals im logarithmischen Maß dBm gekennzeichnet. Zu beachten ist, daß große negative Werte z.B. -90dBm schlecht sind und Werte größer -40dBm sehr gut sind. Dazwischen liegen üblicherweise die „normalen“ Wert in einem typischen System. Werte kleiner als 100dBm bedeuten meist, daß die Verbindung schlecht ist oder sogar das Funkmodul gar nicht erkannt wird.

Die RSSI-Werte der beteiligten Funkmodule kann man in der Homematic auslesen mit dem Tool „devconfig“ in der Systemsteuerung. Die Datenausgabe sieht dann etwa so aus wie auf dem Beispiel in folgendem Bild. Es werden meistens zwei  RSSI-Werte je Modul ausgegeben, weil es ja auch zwei Empfangsrichtungen gibt: von der CCU zum Modul und das Quittungssignal vom Modul zur Zentrale. Bei manchen Modulen wie Temperatursensoren wird nur eine Richtung erfasst; weil es keinen Quittungskanal gibt.

Wegen der chaotischen und manchmal auch wechselnden Funkbedingungen im Haus kann der einzelne RSSI-Wert u.U. stark schwanken. Eine Optimierung der Antenne bzw. Ausrichtung der Funkpartner ist so kaum möglich Je nach Antennenlage wird der RSSI-Wert bei dem einen Modul besser beim anderen schlechter. Es ist schwierig, mit dem devconfig-Werkzeug eine zielgerichtete Optimierung des Gesamtsystems vorzunehmen.

Die Lösung

Hilfreich wäre es, wenn man zusätzlich die Güte der gesamten Funk-Installation als Kennzahl messen kann, um …

  • die Antennen der CCU und der Module bezüglich Position und Ausrichtung einfacher zu optimieren
  • verschiedene externe Antennen zu vergleichen und auszuwählen
  • Änderungen im System z.B. durch Funkstörer frühzeitig zu erkennen und zu beseitigen

Anstelle von devconfig kann man besser die einzelnen RSSI-Werte mit einem HM-Skript abrufen und mit einem HM-Skript den Mittelwert aller verfügbaren „gültigen“ RSSI-Werte als Kennzahl berechnen. Gültig sind Werte größer -120dBm (meine eigene Definition!) , denn bei diesen Werten ist eigentlich keine stabile Kommunikation zwischen CCU und Funkmodul mehr möglich.

Hier das HM-Skript, für das ich ein bereits vorhandenes im Homematic-Forum veröffentlichtes Skript von User etofi verwendet und verändert habe:

!dieses Skript von etofi >> https://homematic-forum.de/forum/viewtopic.php?=19&t=76523&p=742344&hilit=iRSSID#p742139
!wurde hier erweitert bzw. geaendert:
!auf der CCU folgende Systemvariablen anlegen:
!"rssi_avg" vom Typ Zahl mit Dimension dBm
!"rssi_min" vom Typ Zahl mit Dimension dBm
!"rssi_max" vom Typ Zahl mit Dimension dBm
!"rssi_min"_dev vom Typ Zeichenkette

object devobj;
string item;
string devname;
string devname_min;
string devtype; 
string chName;
integer iRSSID;
integer iRSSIP;
integer sRSSID;
integer sRSSIP;
integer iRSSIDObjekte;
integer iRSSIPDObjekte;
integer rssi_min = 0;
integer rssi_max = -120;
object rCH = dom.GetObject(ID_CHANNELS);

foreach (item, (dom.GetObject(ID_DEVICES)).EnumUsedIDs()) { ! Schleife über alle Objekte
! --- Geräte-Infos holen (Name, Typ, Schnittstelle)
devobj = dom.GetObject(item); ! Objekt der ID
devname = devobj.Name();
devtype = devobj.HssType();
chName = devname # ":0"; 
if ( rCH.Get(chName).DPByHssDP("RSSI_DEVICE") ) 
 {iRSSID = rCH.Get(chName).DPByHssDP("RSSI_DEVICE").State()-256;
  if (iRSSID>-120) {iRSSIDObjekte = iRSSIDObjekte + 1; 
                    sRSSID = sRSSID + iRSSID; 
                    if(iRSSID < rssi_min) {rssi_min = iRSSID; devname_min =devname;}
                    if(iRSSID > rssi_max) {rssi_max = iRSSID;}
                   }
 }
if ( rCH.Get(chName).DPByHssDP("RSSI_PEER") ) 
 {iRSSIP = rCH.Get(chName).DPByHssDP("RSSI_PEER").State()-256;
  if (iRSSIP>-120) {iRSSIPDObjekte = iRSSIPDObjekte + 1; 
                    sRSSIP = sRSSIP + iRSSIP; 
                    if(iRSSIP < rssi_min) {rssi_min = iRSSIP; devname_min =devname; }
                    if(iRSSIP > rssi_max) {rssi_max = iRSSIP;}
                   }
 }
WriteLine(devname # " (" # devtype # ") " # iRSSID # " (" # iRSSIDObjekte # ") " # iRSSIP # " (" # iRSSIPDObjekte # ")");
}
integer totalObjekte = iRSSIDObjekte + iRSSIPDObjekte;
integer totalrssi = sRSSID + sRSSIP;
real avg_rssi = (1.0 * totalrssi) /totalObjekte;

dom.GetObject("rssi_avg").State(avg_rssi);
dom.GetObject("rssi_max").State(rssi_max);
dom.GetObject("rssi_min").State(rssi_min);
dom.GetObject("rssi_min_dev").State(rssi_min # " dBm " # devname_min # " (" # totalObjekte # ")" );

WriteLine("");
WriteLine("rssi_avg:" # avg_rssi);
Write("rssi_min:" # rssi_min);
WriteLine(" " # devname_min);
WriteLine("rssi_max:" # rssi_max);

Vorher sind insgesamt 4 Systemvariablen auf der CCU anzulegen:

  • rssi_avg“ vom Typ Zahl mit Dimension dBm
  • rssi_min“ vom Typ Zahl mit Dimension dBm
  • rssi_max“ vom Typ Zahl mit Dimension dBm
  • rssi_min_dev“ vom Typ Zeichenkette

und mit einem einfachen WebUI-Programm wird das Skript alle 2 Minuten aufgerufen. Man sollte möglichst nicht kürzere Intervalle nehmen, um die CCU nicht unnötig zu belasten!

Der Mittelwert alle gültigen RSSI-Werte wird mit der Systemvariablen  rssi_avg abgebildet. Mit dem Wert rssi_min kann man erkennen, welche Funkqualität das schwächste Modul im System noch hat. Mit rssi-min_dev kann man zusätzlich  sehen, welches Modul das schwächste ist und von wieviel Funkwerten der Mittelwert rssi_avg ermittelt wurde. Ich lasse mir diese Werte in der Benutzerverwaltung auf der Startseite der Homematic mit anderen wichtigen Kennwerten immer wie auf folgendem Bild  anzeigen:

Vergleich verschiedener Antennen

Um mit verschiedenen Antennen brauchbare Vergleichsergebnisse zu bekommen, wurden alle Vergleichskandidaten an der gleichen Stelle platziert. Dazu wurde an der CCU ein 3m langes RG174-Verlängerungskabel angeschlossen und die jeweilige Testantenne dann am Messort angeschlossen. Als Messort habe ich eine Kommodenauflage in meinem Wohnzimmer gewählt, weil dieser Ort ziemlich mittig in meinem Haus liegt. Das folgende Bild zeigt die 3 verwendeten  Antennen.

der normale  8,6cm-Drahtstummel                                                   die Stabantenne                                                                             die DualBeam2

Die Messung mit dem Skript  muß über einen längeren Zeitraum erfolgen, so daß mit hoher Wahrscheinlichkeit nahezu alle Funkmodule im Smarthome irgendwann mal aktiviert wurden. Denn nur bei Aktivierung wird in den meisten Fällen der RSSI-Wert im Modul und in der CCU aktualisiert. Also Kurzzeitmessungen bringen recht wenig bei der Optimierung z.B. der Antennenposition und Ausrichtung. Die im folgenden Bild dargestellten Messergebnisse wurde über 2 Tage ermittelt (siehe x-Achse). Die Empfangsstärke in dBm ist auf der y-Achse aufgetragen.

Diese Ergebnisse haben mich doch sehr überrascht. Die Verbesserungen gegenüber dem originalen Drahtstummel sind mit 4dB bei meiner Stabantenne und sagenhafte 7,2dB bei meiner DualBeam2 Antenne doch erheblich. Das was ich über Jahre nur subjektiv feststellen konnte, ist jetzt mit konkreten Messergebnissen bestätigt.

Mit geringem Aufwand ist mit einer geeigneten Antenne  das ganze „Theater“ mit Repeatern etc. meistens gar nicht notwendig! Die Antenne macht’s wirklich!

Optimale Aufstellung der Antenne 

Eigentlich nachvollziehbar, aber der Aufstellungsort und die Ausrichtung der Antenne ist extrem wichtig. Man sollte sich im Haus umsehen und möglichst einen  Aufstellort für die Antenne suchen, der zu allen installierten Modulen eine möglichst gute Funkverbindung schafft. Meistens ist es besser, die Antenne und die CCU möglichst räumlich (>1m) voneinander getrennt aufzustellen, um den möglichen digitalen Störnebel der CCU nicht mit einzufangen. Ein Anschlußkabel ermöglicht auch viel einfacher eine Optimierung des Antennenstandortes. Also bei jeder externen Antenne möglichst ein Verlängerungskabel mitkaufen!

Mit der im Skript zusätzlich ermittelten Kenngröße „rssi_min_dev“ kann man sehr schön erkennen, welches Modul evtl eine zu schwache Verbindung zur Zentrale hat. Auch das muß bei der Wahl des Aufstellortes für die Antenne berücksichtigt werden. 

Mit Logik, Geduld und etwas Geschick kann man dann in seinem Smarthome die optimale Antennenposition finden.

Ist ein guter RSSI-Wert allein für die Kommunikationssicherheit relevant?

Ist damit nun gewährleistet, daß man mit einer externen Antenne in jedem Fall eine sichere Funktion seines Smarthomes hat? 

Die Antwort ist Jein!
Gute RSSI-Werte sind sicher die entscheidende Voraussetzung für den sicheren Betrieb, aber wenn im Umfeld Störquellen ebenfalls auf der Homematic-Frequenz von 868,3Mhz senden, dann kann die Kommunikation trotz guter RSSI-Werte unsicher werden. Der sog. Signal-Störabstand wird dann kleiner und führt im Extremfall zur Blockade der Kommunikation. Aber in der Regel sollten keine Störer auf der Homematic-Frequenz uns das Leben schwer machen. Man sollte das Thema nur im Hinterkopf behalten, wenn trotz guter Antenne die Kommunikation im System mal versagt. Ursachen sind sehr oft defekte Schalt-Netzteile oder manchmal auch defekte HM-Module. 

Die meisten Nachbauer bzw. Verwender meiner Antennen sind überrascht, wieviel mehr an System-Zuverlässigkeit das Ganze gebracht hat.

Die in diesem Vergleich verwendete Stabantene  und die DualBeam2-Antenne gibt’s in meinem Webshop.

Haftungs- und Sicherheitshinweise

Nur HM-Module mit Spannungsversorgung aus Batterie oder galvanisch getrennten schutzisolierten externen Netzteilen umrüsten. Keinesfalls HM-Module mit internem/integriertem Netzteil  oder 230V Netzspannung modifizieren, da über die  Antennenverbindungen gefährliche Berührungsspannungen entstehen können. 

Beim Nachbau müssen natürlich alle wichtigen einschlägigen Sicherheitsvorschriften für den Umgang mit gefährlichen Spannungen  eingehalten werden. Fundierte theoretische und praktische Fachkenntnisse der Elektrotechnik und für den Umgang mit gefährlichen Spannungen sind unverzichtbar!! Durch eine unsachgemäße Installation gefährden Sie ihr Leben und das Leben ihrer Mitmenschen! Darüberhinaus riskieren Sie erhebliche Sachschäden , welche durch Brand etc. hervorgerufen werden können ! Für alle Personen- und Sachschäden durch falsche Installation etc. ist nicht der Hersteller sondern nur der Betreiber verantwortlich. Ich hafte für keinerlei Schäden im Zusammenhang mit den beschriebenen technischen Lösungen. Ich verweise hier unbedingt auf  die  „Sicherheitshinweise und Haftungsausschluss„-Seite dieses Blogs.

 

Viel Erfolg beim Nachmachen

Fähigkeiten

Gepostet am

24. November 2024