Auf mehrfachen Kundenwunsch gibt es nun das N4HBUS und N4HMODULE Modul in der offiziellen fhem-Distribution und steht mit einem Update zur Verfügung. Es dient der Anbindung des kabelgebundenen Systems von net4home an den Rest der Welt. Ich habe die Module inzwischen 1,5 Jahre im Einsatz und somit einem Dauertest in verschiedenen Umgebungen unterzogen. Bei uns im Büro ist es kein Problem ein Bus mit mehr als 150 Modulen über einen RasPi zu überwachen.
Ziel des Moduls war es am Anfang eine Möglichkeit zu schaffen fehlende Module zu emulieren. Bei mir war es konkret ein Bewegungsmelder im Treppenhaus zum Keller. Ein Buskabel an die beste Position anzubringen war fast unmöglich und ein Kanal auf der Wand ein absolutes NoGo. Also musste ein Homematic-Bewegungsmelder an die Wand. Aus vielen Kundenprojekten kamen auch immer wieder Wüsche Steckdosen im Haus nachträglich schaltbar zu machen.
Die Module sind seit 23.10.2016 offiziell über das FHEM Update zu beziehen.Voraussetzungen
- Damit der fhem-Server auf den net4home Bus zugreifen kann, muss eine Busconnector im Netzwerk erreichbar sein. Derzeit habe ich nur IPv4 im Einsatz. IPv6 habe ich in dieser Konstellation noch nicht probiert, steht aber auf der ToDo.
- Es wird in der Regel ein HS-Gateway (Raspi3) genutzt. Dort ist die notwendige Anbindung an den Bus entsprechend über eine Zusatzplatine vorhanden. Alternativ kann man aber auch ein Busconnector auf einem Windows-PC genutzt werden. Dazu braucht man ein UP-PC-Connect und den Busconnector-Service. Dieser Busconnector muss als Server konfiguriert sein.
Zunächst wird über das Modul N4HBUS eine neues Device angelegt. Dies kümmert sich um die Kommunikation zwischen fhem und dem Busconnector. Über dieses Device werden die fhem-Befehle in das net4home Busprotokoll und umgekehrt übersetzt. Grundsätzlich wird die komplette Buskommunikation dem fhem signalisiert. Werden Module über N4HMODULE definiert, werden entsprechende Befehle an die entsprechenden Objekte weitergegeben.
Die Definition erfolgt mit Angabe von IP-Adresse und Port:
define n4h N4HBUS 192.168.1.69:3478
Die IP-Adresse ist die Adresse des net4home Busconnectors. Dabei kann der Connector auch auf dem gleichen System installiert sein. Der Standardport ist die 3478.
Hat man die Verbindung erfolgreich definiert, so werden dem Device noch zwei weitere Werte in Form eines Attributes zugewiesen. Die MI (default:65281) und die OBJADR (default:32700) werden als Attribute automatisch angelegt und können nach Bedarf geändert werden. Sie dienen dazu das fhem-Modul auf dem Bus eindeutig identifizieren zu können. Innerhalb der net4home-Welt können Befehle ja abhängig vom Sender interpretiert werden.
Es können auch mehrere Bus-Devices angelegt werden, wenn man z.B. verschiedene Gebäude oder Gebäudeteile getrennt busseitig hat, aber per LAN erreichen kann.
Nun kann man verschiedenste Objekte definieren und Informationen auf den Bus schicken oder empfangen. Dabei muss dem Objekt immer der Typ mitgegeben werden, damit auch im Busprotokoll entsprechende Parameter mitgegeben werden können. Leider kann dies nicht automatisch erfolgen und muss jedem Objekt bereits bei der Definition mitgeteilt werden.
Derzeit werden folgende Typen unterstützt:
Messwerte
- 24 - Messwert,Temperatur
- 25 - Messwert,Helligkeit
- 26 - Messwert,Feuchte
- 240 - Messwert,Wind
- 242 - Messwert,Luftdruck
- 245 - Messwert,Regenmenge
Möchte man nun die Temperatur von einer Wetterstation (z.B. netatmo) auf den Bus senden, so definiert man ein Objekt mit der Angabe
Messwert, Temperatur und der entsprechenden Objektadresse im net4home-Bus.
define n4h_28204 N4HMODULE n4h 24 28204
Damit wird das Objekt mit dem Namen
n4h_28204 und der Objektadresse
28204 definiert. Der Typ 24 gibt an, dass die Daten in Form einer Temperatur auf den Bus gesendet werden. Handelt es sich um einen der oben angegebenen Messwerte, so wird zusätzlich das Attribut
Interval mit dem Standardwert 300 Sekunden angelegt. Damit wird angegeben, in welchem Abstand die Werte auf den Bus gesendet werden sollen. Über einen
set Befehl kann man nun den Wert (hier Temperatur) setzen. Das Intervall kann jederzeit angepasst werden. In den meisten Fällen reicht eine Aktualisierung von 5 Minute aber aus.
Beispiel:
set n4h_28204 20
Macht ja noch nicht so richtig Spaß! Deshalb sollte die Temperatur ja von einer anderen Quelle ganz automatisch kommen. So kann man zum Beispiel die Außentemperatur einer netatmo-Wetterstation auf den Bus senden. Dazu wird ein notify der netatmo Station definiert, die den entsprechenden Befehl an das Temperatur-Objekt sendet.
Beispiel:
define netatmo_Tempn4h notify netatmo_M02_00_22_00_4a_56:temperature:.* {{fhem("set n4h_28204 $EVTPART1")} }
Bekommt die Temperatur der netatmo-Station einen neuen Wert zugewiesen, so wird das sofort auch dem Objekt
n4h_2804 zugewiesen und auf den Bus weitergeleitet. Gibt es keine Änderung der Temperatur in Form eines notify, so wird trotzdem im angegebenen Intervall der letzte Wert auf den Bus gesendet.
28.10.2016
- (N4HMODULE) - Abfrage, ob es sich beim Paket um ein "IP"-Paket handelt
- (N4HMODULE) - Update nur, wenn auch ein $value vorhanden ist
- (N4HMODULE) - RemoveInternalTimer beim UnDef hinzugefügt
- (N4HMODULE) - OT: aus der Attr-Liste entfernt
- (N4HBUS) - Commandref erweitert
- (N4HMODULE) - automatisch den Raum "net4home" vorbelegt
- (N4HMODULE) - stateformat wird beim Erstellen direkt angelegt
- (N4HMODULE) - Status bei Aktoren wird nun bei on/off/toggle richtig gesetzt
Das war erst einmal Teil I der Beschreibung. Ich werde das die Tage (soweit es die Zeit zulässt) weiter ergänzen. Wichtig sind ja auch die verschiedenen Aktoren, welche man Schalten möchte. Gleichzeitig werde ich es auch in der commandref erweitern.
Oliver