HM-CFG-USB USB Konfigurations-Adapter: Unterschied zwischen den Versionen

Aus FHEMWiki
(→‎Einrichtung unter Linux: update init script)
 
(45 dazwischenliegende Versionen von 21 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Der [[HomeMatic]] '''USB Konfigurations-Adapter''' ist ein USB-Stick, der außer zur Konfiguration von HomeMatic Komponenten auch als [[Interface]] zwischen Fhem und HomeMatic Geräten benutzt werden kann.
{{Infobox Hardware
|Bild=HM-CFG-USB-2.jpg
|Bildbeschreibung=HomeMatic USB Konfigurationsadapter (Version 2)
|HWProtocol=HomeMatic
|HWType=Interface/Gateway
|HWCategory=HomeMatic
|HWComm=868,3 MHz
|HWChannels=
|HWVoltage=5 V
|HWPowerConsumption=
|HWPoweredBy=USB-Bus
|HWSize=V1: 40 x 90 x 25 mm<br />V2: 28 x 84 x 11,5 mm
|HWDeviceFHEM=[http://fhem.de/commandref.html#CUL_HM CUL_HM]
<!-- |ModOwner=  -->
|HWManufacturer=eQ-3
}}
Der [[HomeMatic]] '''USB Konfigurations-Adapter''' ist ein USB-Stick, der außer zur Konfiguration von HomeMatic-Komponenten auch als [[Interface]] zwischen FHEM und HomeMatic-Geräten benutzt werden kann. Er existiert in zwei Versionen: der älteren HM-CFG-USB und der neueren HM-CFG-USB2. Die folgenden Beschreibungen gelten für beide Versionen, es sei denn, es ist ausdrücklich eine spezifische Version genannt.


== Einbindung in FHEM ==
== Einbindung in FHEM ==
Im Fhem-Forum wird das Thema diskutiert unter dem Titel  [http://forum.fhem.de/index.php/topic,13071.msg86075.html#msg86075 HomeMatic USB Konfigurations-Adapter (HM-CFG-USB) in Fhem nutzen]. Teile der Informationen sind hier zusammengefasst.
Im FHEM-Forum wird die Einbindung als Interface in diesem {{Link2Forum|Topic=13071}} beschrieben und diskutiert. Im {{Link2Forum|Topic=13071|Message=79872|LinkText=Eröffnungsbeitrag}} wird eine gut funktionierende HMLAN-Emulationssoftware [https://git.zerfleddert.de/cgi-bin/gitweb.cgi/hmcfgusb hmland] von ihrem Entwickler vorgestellt, um den HM-CFG-USB in FHEM zu integrieren. Die HMLAN-Emulationssoftware muss zunächst kompiliert und installiert werden. Anschließend wird der HM-CFG-USB (üblicherweise auf localhost) genau wie [[HM-CFG-LAN LAN Konfigurations-Adapter|HMLAN]] in FHEM eingebunden.  


=== Einrichtung unter Linux ===
=== Einrichtung unter Linux ===
Es gibt einen gut funktionierenden Daemon um den USB Stick mit Fhem zum laufen zu bekommen. Dabei wird zuerst der [https://git.zerfleddert.de/cgi-bin/gitweb.cgi/hmcfgusb hmland] installiert und danach das Gerät (üblicherweise auf localhost) genau wie [[HM-CFG-LAN LAN Konfigurations-Adapter|HMLAN]] in Fhem eingebunden.
Die Schritte zur Kompilierung und Installation hat der hmland-Entwickler sowohl auf der [https://git.zerfleddert.de/cgi-bin/gitweb.cgi/hmcfgusb hmland-Internetseite] in Englisch (kurz) als auch im oben genannten {{Link2Forum|Topic=13071|Message=79872|LinkText=Eröffnungsbeitrag}} in Deutsch (ausführlich) dargestellt. Die dort gemachten Angaben werden auch bei Bedarf aktualisiert und sind deshalb der beste Anlaufpunkt für Kompilierung und Installation.  


Zunächst muss der Daemon "gebaut" werden. Analog zu [https://git.zerfleddert.de/cgi-bin/gitweb.cgihmcfgusb dieser Beschreibung] ist die Vorgehensweise die folgende (in Debian/Ubuntu/Raspbian):
{{Randnotiz|RNTyp=Info|RNText='''Skript zur Kompletteinrichtung unter Linux'''
Dieser {{Link2Forum|Topic=13071|Message=190887|LinkText=Bericht}} im Forum stellt ein Script vor, das ''hmland'' herunterlädt, übersetzt (kompiliert), installiert sowie ein init-Script anlegt, so dass fast keine manuellen Eingriffe mehr notwendig sind.}}
Die nachfolgenden Angaben in diesem Abschnitt sind rein zu Informationszwecken (noch) enthalten:
 
Zunächst muss die HMLAN-Emulationssoftware kompiliert werden. Analog zu [https://git.zerfleddert.de/cgi-bin/gitweb.cgi/hmcfgusb dieser Beschreibung] ist die Vorgehensweise die folgende (in Debian/Ubuntu/Raspbian):
<syntaxhighlight lang="bash">
  cd /opt/
  cd /opt/
  apt-get install build-essentials libusb-1.0-0-dev make gcc git-core
  apt-get install build-essential libusb-1.0-0-dev make gcc git
  git clone git://git.zerfleddert.de/hmcfgusb
  git clone git://git.zerfleddert.de/hmcfgusb
  cd hmcfgusb
  cd hmcfgusb
  make
  make
</syntaxhighlight>
Danach kann der Dienst (zu Testzwecken sind Debugging-Ausgaben mit <code>-D</code> aktiviert) gestartet werden:
:<code> /opt/hmcfgusb/hmland -p 1000 -D</code>
==== Start als Daemon ====
Um ''hmland'' automatisch als Daemon bei '''init.d Systemen''' zu starten, kann ein init-Script genutzt werden. Die Quellen von ''hmland'' enthalten ein solches Script im <code>debian/</code> Unterverzeichnis:
<syntaxhighlight lang="bash">
cp /opt/hmcfgusb/debian/hmland.init /etc/init.d/hmland
cp /opt/hmcfgusb/debian/hmland.default /etc/default/hmland
</syntaxhighlight>
Einstellungen, beispielsweise der Port, auf dem ''hmland'' hört, können (und sollten) in der Datei <code>/etc/default/hmland</code> vorgenommen werden. Wichtig: Wenn diese Anleitung befolgt wurde, muss in der Datei <code>/etc/init.d/hmland</code> die folgende Zeile wie folgt angepasst werden (<code>/hm</code> aus dem Pfad entfernen), damit der automatische Start des Daemon klappt:
<syntaxhighlight lang="bash">
DAEMON=/opt/hmcfgusb/$NAME # Introduce the server's location here
</syntaxhighlight>
Die kopierte Datei mit <code>chmod 755 /etc/init.d/hmland</code> ausführbar machen, anschließend kann ''hmland'' mit folgendem Befehl gestartet werden:
:<code>/etc/init.d/hmland start</code>
==== Start mit systemd ====
Bei Distributionen, die '''systemd''' einsetzen (z.B. Debian Stretch) kann folgende Konfigurationsdatei verwendet werden:
<syntaxhighlight lang="bash">
[Unit]
Description=Homematic LAN Adapter service
After=network.target
[Service]
ExecStart=/opt/hmcfgusb/hmland -p 1000
[Install]
WantedBy=multi-user.target
</syntaxhighlight>
Dabei muss dann natürlich der Port (1000) an die eigene Konfiguration angepasst werden und auch der Pfad wo sich der <Code> hmland</Code> befindet, wenn man sich an oben stehendem Beispiel orientiert wäre das dann <Code>/opt/hmcfgusb/</Code>
Diese Datei muss dann als <Code>hmland.service</Code> unter <syntaxhighlight lang="bash">/etc/systemd/system</syntaxhighlight> abgelegt werden.
Nun muss einmalig der Befehl
<syntaxhighlight lang="bash">systemctl daemon-reload</syntaxhighlight> ausgeführt werden damit die neuen Dateien eingelesen werden.
Mit dem Befehl <syntaxhighlight lang="bash">systemctl enable hmland</syntaxhighlight> wird dafür gesorgt, dass bei einem Systemstart hmland automatisch gestartet wird
Mit  <syntaxhighlight lang="bash">systemctl status hmland </syntaxhighlight> kann dann noch geprüft werden ob der Service läuft
==== Start mit upstart ====
Bei Distributionen, die '''Upstart''' einsetzen (z.B. xbian) kann folgende Konfigurationsdatei verwendet werden:
<syntaxhighlight lang="bash">
# HMLAND
description    "hmland"
start on starting fhem
stop on stopped fhem
respawn
expect fork


Danach kann der Dienst zu Testzwecken gestartet werden (in /opt/hmcfgusb):
chdir /opt/hmcfgusb
:<code>./hmland -p 1234 -D</code>
exec /opt/hmcfgusb/hmland -d -l 127.0.0.1 -p 1000
</syntaxhighlight>


Um den Deamon permanent laufen zu lassen, kann ein init script wie das Folgende verwendet werden:
Die Datei sollte als <code>/etc/init/hmland.conf</code> angelegt werden. Mit dem Befehl
<pre>
:<code>initctl reload-configuration </code>
# simple init for hmland
wird Upstart angewiesen, seine Konfiguration erneut einzulesen. Danach kann der Dienst ''hmland'' mit
:<code>service hmland start </code>
pidfile=/var/run/hmland.pid
gestartet werden. <code>hmland</code> wird jetzt immer vor FHEM gestartet und nach FHEM beendet.
port=1234
 
==== Start über FHEM Startskript ====
case "$1" in
{{Randnotiz|RNText=Bei Systemen mit systemd (ab debian stretch) gibt es dieses Script nicht mehr. Siehe auch den Wiki Artikel [[Fhem.service (systemd unit file)]] dort mit ExecStartPre einbinden. Oder als extra Service wie im Abschnitt systemd weiter oben}}
  start|"")
Ausprobiert auf einem BBB mit Debian, eigentlich ist das alles von Betateilchen:
chrt 50 /opt/hmcfgusb/hmland -r 03:30 -d -P -l 127.0.0.1 -p $port 2>&1 | perl -ne '$|=1; print localtime . ": [hmland] $_"' >> /var/log/hmland.log &
 
;;
Zunächst hmland kompilieren wie oben beschrieben, bis zum make. Das muss erfolgreich durchgelaufen sein.
  restart|reload|force-reload)
 
echo "Error: argument '$1' not supported" >&2
Dann geht es weiter:
exit 3
:<code>sudo cp hmcfgusb.rules /etc/udev/rules.d/ </code>
;;
 
  stop)
Jetzt das FHEM Startskript anpassen (in den Blöcken 'start' und 'stop' muss quasi nur jeweils 1 Zeile eingefügt werden:
killall hmland
 
;;
Damit editiert man das FHEM Startskript:
  status)
:<code>sudo nano /etc/init.d/fhem </code>
if [ ! -e $pidfile ]; then
 
echo "No pid"
Und so sollten die Blöcke anschließend aussehen (bitte nur jeweils die Zeile mit hmland einfügen)
exit 1
<syntaxhighlight lang="bash">
fi
'start')
pid=`cat $pidfile`
        echo "Starting fhem..."
if kill -0 $pid &>1 > /dev/null; then
        /opt/hmcfgusb/hmland -d -p 1000
echo "Running"
        perl fhem.pl fhem.cfg
exit 0
        RETVAL=$?
else
        ;;
rm $pidfile
 
echo "Not running"
'stop')
exit 1
        echo "Stopping fhem..."
fi
        perl fhem.pl $port "shutdown"
        RETVAL=$?
;;
        pkill hmland
  *)
</syntaxhighlight>
echo "Usage: hmland [start|stop|status]" >&2
 
exit 3
So wird hmland vor FHEM gestartet und nach FHEM beendet. Letztlich erspart es Probleme mit den diversen Startskripten und ihren Rechten.
;;
 
esac
Es dauert nach dem Start von FHEM noch einige Sekunden, bis hmland fertig geladen ist. In dieser Zeit kann es zu fehlerhaften Einträgen im Logfile kommen.
</pre>
 
=== Einrichtung auf Synology DiskStations ===
Packages für DSM5.2 finden sich hier:
https://github.com/mkunzmann/spksrc/releases/tag/0.101-3
 
Welches Package für welche DS kann man hier sehen:
https://github.com/SynoCommunity/spksrc/wiki/Architecture-per-Synology-model
 
Einfach das passende Package installieren und dann kann man den hmland über den Synology Package-Manager starten und stoppen. Während der Installation kann man den Port für hmland festlegen. Bitte einen Port > 1024 wählen, da der hmland nicht als root läuft. Außerdem kann ein Logfile angegeben werden. Hier am besten eine Datei auf einem USB Stick angeben die für jedermann schreibbar sein muss. Damit sollten die Platten nach wie vor in den Standby gehen.
 
=== Einrichtung unter Mac OS X ===
Wie unter Linux braucht man die HMLAN-Emulationssoftware hmland, die man aus Quelltexten erstellen muss. Dazu muss man die Bibliothek libusb installieren, entweder mit einem der Paketmanager wie Fink, MacPorts oder Homebrew oder direkt aus den Quellentexten (Beispiel: "fink install libusb1-shlibs libusb1"). Hat man wie bei Linux das Quelltextarchiv für hmland heruntergeladen und ausgepackt, müssen die Dateien Makefile und hmcfgusb.c angepasst werden.
 
Im Makefile muss man den Pfad zur libusb anpassen. Hat man libusb mit fink installiert, muss man, "/opt/local/" durch "/sw/" bei den CFLAGS und den LDFLAGS ersetzen und
das "-lrt" aus den LDLIBS entfernen. Die Library librt gibt es bei Mac OS X nicht und wird anscheinend auch nicht gebraucht. (Stimmt das eigentlich?)
 
In der Datei hmcfgusb.c muss man die Zeilen 130-134 mit dem Aufruf libusb_detach_kernel_driver auskommentieren oder löschen. Der geht nicht auf Mac OS X.
 
Nach den Änderungen in den zwei Dateien, kann man wie bei Linux den Dämon hmland mit dem Kommando "make" erzeugen und mit "./hmland" ausführen. Automatisches Starten beim Booten mit launchd ist noch nicht probiert.
 
Beim Start von hmland sollte man folgende Fehlermeldung in einer Endlos-Schleife erhalten:
<syntaxhighlight lang="text">
Datum Zeit: Client 127.0.0.1 connected!
Can't claim interface: Access denied (insufficient permissions)
Can't find/open hmcfgusb!
Datum Zeit: Connection to 127.0.0.1 closed!
</syntaxhighlight>
 
Auch ein Start von hmland mit Superuser-Rechten ändert daran nichts. Damit das claim interface klappt, muss man eine codeless kext in den Ordner /Library/Extensions legen. Ich habe dieses (http://mspdebug.sourceforge.net/misc/ex430rf2500-kext.zip) herunter geladen. Damit es funktioniert, muss man aber in der Datei Info.plist des Bundle die Properties idProduct und idVendor ändern, entweder mit dem Property List Editor oder einem anderen Texteditor. Die beiden Properties sind etwas versteckt bei Information Property List → IOKitPersonalities → ComIntf. Bei DebugIntf und DeviceDriver scheint man es nicht ändern zu müssen, aber schaden kann es nicht.
 
<syntaxhighlight lang="text">
idProduct: 49167
idVendor: 6943
</syntaxhighlight>
 
Die Rechte des kext-Bundles müssen auch noch gesetzt werden:
<syntaxhighlight lang="bash">
  chmod -R 755 ex430rf2500.kext
  chown -R root:wheel ex430rf2500.kext
</syntaxhighlight>
 
Danach die Datei ex430rf2500.kext in den Ordner /Library/Extensions legen und hmland sollte dann funktionieren.
 
Es kann sein, dass ab Mac OS X 10.9 der Trick mit dem codeless kext nicht mehr funktioniert, aber noch ist das nicht getestet oder bestätigt. Langfristig kann man vielleicht auch eine kext mit einem Treiber für den HM-CFG-USB USB erstellen


=== Einrichtung unter Windows ===
=== Einrichtung unter Windows ===
< Todo >
Bei der Einrichtung und vermutlich auch dem Betrieb unter Windows 8.1 sind wegen der erweiterten Energieverwaltungsfunktionen die von eQ-3 [http://www.eq-3.de/Downloads/eq3/pdf_FAQ/Funk-Konfigurationsdapter-USB_Windos_8.1.pdf zusammengestellten Tipps] zu befolgen.
 
=== Definition(en) in der FHEM-Konfiguration ===
In der FHEM [[Konfiguration]] muss noch, sofern/sobald der ''hmland'' läuft, das Device eingerichtet werden mit den folgenden Anweisungen:
:<code>define '''hmusb''' HMLAN 127.0.0.1:1000 </code>
wobei '''hmusb''' der frei wählbare Devicename ist. Anschließend sollte bzw. muss noch mit
:<code>attr '''hmusb''' hmId <'''hmId'''> </code>
eine '''hmId''' zugeordnet werden (dabei bitte auch die Hinweise und Regeln beachten, die im Zusammenhang mit der [[Virtueller Controller VCCU|VCCU]] beschrieben sind!
 
== Firmware Update ==
Der Firmware Update (unter Linux) ist ebenfalls auf der [https://git.zerfleddert.de/cgi-bin/gitweb.cgi/hmcfgusb hmland-Internetseite] beschrieben. Auch die letzte bekannte Firmware-Version (0.967) steht dort zur Verfügung.


== Bekannte Probleme ==
== Bekannte Probleme ==
< Todo >
=== Verbindung zu neueren hmland-Versionen nicht stabil ===
Seit Version 0.100 meldet sich die HMLAN-Emulationssoftware als USB-Interface bei FHEM. Ältere FHEM-Versionen (vor dem 19.6.2015) brechen deshalb die Verbindung ab, da sie nur ein LAN-Interface erwarten.
 
Lösung: Kommandozeilenparameter <code>-I</code> dem hmland-Aufruf hinzufügen, dann meldet sich dieser wieder als LAN-Interface.
 
=== Stick nicht (mehr) ansprechbar ===
Zitat aus dem {{Link2Forum|Topic=32502|Message=249122|LinkText=FHEM-Forum}}:
:''... befürchte ich, dass dein Stick das Zeitliche gesegnet hat. Machen die Dinger leider sehr gerne... Ganz besonders beim Modus-Wechsel vom 10k- in den 100k-Modus, wenn man bei irgendeinem Device ein Firmwareupdate durchführt. <br />Die gute Nachricht ist, dass der Fehler bei sämtlichen Händlern bekannt ist und anstandslos getauscht wird.''
 
=== Raspberry Pi ===
Der USB-Stack am Raspberry Pi ist für viele Probleme verantwortlich. Daher sieht man öfter Fehlermeldungen:
:<code>usb-transfer took more than 100ms (1039ms), this may lead to timing problems!</code>
 
Da das Timing bei HomeMatic wichtig ist führt das zu vielen Retransmits und zu unzuverlässigen Aktoren. Als Workaround kann man den USB-Stack auf die deutlich langsamere Version 1.1 stellen. Dazu fügt man folgenden Text am Anfang der Datei /boot/cmdline.txt ein:
:<code>dwc_otg.speed=1</code>


== Weitergehende Informationen ==
== Weitergehende Informationen ==
Es sind zwei Versionen des HM-CFG-USB im Umlauf:
Es sind zwei Versionen des HM-CFG-USB im Umlauf:
* HM-CFG-USB-2: die aktuelle Version; Dokumentation derzeit (12/2013) nicht über die ELV-Artikelseite verfügbar, alternativ jedoch bei [http://files.voelkner.de/625000-649999/640558-an-01-ml-USB_FUNK_KONFIGURATIONSADAPTER_de_en.pdf Völkner]; Kennzeichen dieser Version:  
{{Randnotiz|RNTyp=r|RNText=Stand März 2016 ist allem Anschein nach kein HM-CFG-USB mehr im ELV Programm enthalten!}}
* HM-CFG-USB-2: die aktuelle Version; Kennzeichen dieser Version:  
** Größe: 28 x 84 x 11,5&nbsp;mm
** Größe: 28 x 84 x 11,5&nbsp;mm
** Gewicht: 18&nbsp;g
** Gewicht: 18&nbsp;g
Zeile 77: Zeile 222:


== Links ==
== Links ==
* [http://forum.fhem.de/index.php/topic,13071.msg86075.html#msg86075 FHEM Forum: HomeMatic USB Konfigurations-Adapter (HM-CFG-USB) in Fhem nutzen]
* Bedienungsanleitung [http://www.eq-3.de/Downloads/eq3/pdf_produkte/HM-CFG-USB-2_-UM-eQ-3-150129-web.pdf HM-CFG-USB-2, PDF]
* [http://www.elv.de/homematic-usb-konfigurations-adapter-1.html ELV- / Herstellerinformationen] zum HM-CFG-USB
* FHEM-Forums {{Link2Forum|Topic=13071}}: HomeMatic USB Konfigurations-Adapter (HM-CFG-USB) in FHEM nutzen
* [http://www.eq-3.de/produkt-detail-zentralen-und-gateways/items/homematic-funk-konfigurationsadapter-usb.html eQ-3 Produktseite] zum "HomeMatic Funk-Konfigurationsadapter USB"; Downloads, technische Daten, etc.


[[Kategorie:HomeMatic Components]]
[[Kategorie:HomeMatic Components]]
[[Kategorie:Interfaces]]
[[Kategorie:Interfaces]]
[[Kategorie:OSX]]
[[Kategorie:868MHz]]

Aktuelle Version vom 16. Dezember 2020, 14:19 Uhr

HM-CFG-USB USB Konfigurations-Adapter
HomeMatic USB Konfigurationsadapter (Version 2)
Allgemein
Protokoll HomeMatic
Typ Interface/Gateway
Kategorie HomeMatic
Technische Details
Kommunikation 868,3 MHz
Kanäle
Betriebsspannung 5 V
Leistungsaufnahme
Versorgung USB-Bus
Abmessungen V1: 40 x 90 x 25 mm
V2: 28 x 84 x 11,5 mm
Sonstiges
Modulname CUL_HM
Hersteller eQ-3

Der HomeMatic USB Konfigurations-Adapter ist ein USB-Stick, der außer zur Konfiguration von HomeMatic-Komponenten auch als Interface zwischen FHEM und HomeMatic-Geräten benutzt werden kann. Er existiert in zwei Versionen: der älteren HM-CFG-USB und der neueren HM-CFG-USB2. Die folgenden Beschreibungen gelten für beide Versionen, es sei denn, es ist ausdrücklich eine spezifische Version genannt.

Einbindung in FHEM

Im FHEM-Forum wird die Einbindung als Interface in diesem Thema beschrieben und diskutiert. Im Eröffnungsbeitrag wird eine gut funktionierende HMLAN-Emulationssoftware hmland von ihrem Entwickler vorgestellt, um den HM-CFG-USB in FHEM zu integrieren. Die HMLAN-Emulationssoftware muss zunächst kompiliert und installiert werden. Anschließend wird der HM-CFG-USB (üblicherweise auf localhost) genau wie HMLAN in FHEM eingebunden.

Einrichtung unter Linux

Die Schritte zur Kompilierung und Installation hat der hmland-Entwickler sowohl auf der hmland-Internetseite in Englisch (kurz) als auch im oben genannten Eröffnungsbeitrag in Deutsch (ausführlich) dargestellt. Die dort gemachten Angaben werden auch bei Bedarf aktualisiert und sind deshalb der beste Anlaufpunkt für Kompilierung und Installation.

Info green.pngSkript zur Kompletteinrichtung unter Linux Dieser Bericht im Forum stellt ein Script vor, das hmland herunterlädt, übersetzt (kompiliert), installiert sowie ein init-Script anlegt, so dass fast keine manuellen Eingriffe mehr notwendig sind.

Die nachfolgenden Angaben in diesem Abschnitt sind rein zu Informationszwecken (noch) enthalten:

Zunächst muss die HMLAN-Emulationssoftware kompiliert werden. Analog zu dieser Beschreibung ist die Vorgehensweise die folgende (in Debian/Ubuntu/Raspbian):

 cd /opt/
 apt-get install build-essential libusb-1.0-0-dev make gcc git
 git clone git://git.zerfleddert.de/hmcfgusb
 cd hmcfgusb
 make

Danach kann der Dienst (zu Testzwecken sind Debugging-Ausgaben mit -D aktiviert) gestartet werden:

/opt/hmcfgusb/hmland -p 1000 -D

Start als Daemon

Um hmland automatisch als Daemon bei init.d Systemen zu starten, kann ein init-Script genutzt werden. Die Quellen von hmland enthalten ein solches Script im debian/ Unterverzeichnis:

cp /opt/hmcfgusb/debian/hmland.init /etc/init.d/hmland
cp /opt/hmcfgusb/debian/hmland.default /etc/default/hmland

Einstellungen, beispielsweise der Port, auf dem hmland hört, können (und sollten) in der Datei /etc/default/hmland vorgenommen werden. Wichtig: Wenn diese Anleitung befolgt wurde, muss in der Datei /etc/init.d/hmland die folgende Zeile wie folgt angepasst werden (/hm aus dem Pfad entfernen), damit der automatische Start des Daemon klappt:

DAEMON=/opt/hmcfgusb/$NAME # Introduce the server's location here

Die kopierte Datei mit chmod 755 /etc/init.d/hmland ausführbar machen, anschließend kann hmland mit folgendem Befehl gestartet werden:

/etc/init.d/hmland start

Start mit systemd

Bei Distributionen, die systemd einsetzen (z.B. Debian Stretch) kann folgende Konfigurationsdatei verwendet werden:

[Unit]
Description=Homematic LAN Adapter service
After=network.target

[Service]
ExecStart=/opt/hmcfgusb/hmland -p 1000

[Install]
WantedBy=multi-user.target

Dabei muss dann natürlich der Port (1000) an die eigene Konfiguration angepasst werden und auch der Pfad wo sich der hmland befindet, wenn man sich an oben stehendem Beispiel orientiert wäre das dann /opt/hmcfgusb/

Diese Datei muss dann als hmland.service unter

/etc/systemd/system

abgelegt werden.

Nun muss einmalig der Befehl

systemctl daemon-reload

ausgeführt werden damit die neuen Dateien eingelesen werden. Mit dem Befehl

systemctl enable hmland

wird dafür gesorgt, dass bei einem Systemstart hmland automatisch gestartet wird Mit

systemctl status hmland

kann dann noch geprüft werden ob der Service läuft

Start mit upstart

Bei Distributionen, die Upstart einsetzen (z.B. xbian) kann folgende Konfigurationsdatei verwendet werden:

# HMLAND

description     "hmland"

start on starting fhem
stop on stopped fhem

respawn
expect fork

chdir /opt/hmcfgusb
exec /opt/hmcfgusb/hmland -d -l 127.0.0.1 -p 1000

Die Datei sollte als /etc/init/hmland.conf angelegt werden. Mit dem Befehl

initctl reload-configuration

wird Upstart angewiesen, seine Konfiguration erneut einzulesen. Danach kann der Dienst hmland mit

service hmland start

gestartet werden. hmland wird jetzt immer vor FHEM gestartet und nach FHEM beendet.

Start über FHEM Startskript

Info green.pngBei Systemen mit systemd (ab debian stretch) gibt es dieses Script nicht mehr. Siehe auch den Wiki Artikel Fhem.service (systemd unit file) dort mit ExecStartPre einbinden. Oder als extra Service wie im Abschnitt systemd weiter oben

Ausprobiert auf einem BBB mit Debian, eigentlich ist das alles von Betateilchen:

Zunächst hmland kompilieren wie oben beschrieben, bis zum make. Das muss erfolgreich durchgelaufen sein.

Dann geht es weiter:

sudo cp hmcfgusb.rules /etc/udev/rules.d/

Jetzt das FHEM Startskript anpassen (in den Blöcken 'start' und 'stop' muss quasi nur jeweils 1 Zeile eingefügt werden:

Damit editiert man das FHEM Startskript:

sudo nano /etc/init.d/fhem

Und so sollten die Blöcke anschließend aussehen (bitte nur jeweils die Zeile mit hmland einfügen)

 'start')
        echo "Starting fhem..."
        /opt/hmcfgusb/hmland -d -p 1000
        perl fhem.pl fhem.cfg
        RETVAL=$?
        ;;

 'stop')
        echo "Stopping fhem..."
        perl fhem.pl $port "shutdown"
        RETVAL=$?
        pkill hmland

So wird hmland vor FHEM gestartet und nach FHEM beendet. Letztlich erspart es Probleme mit den diversen Startskripten und ihren Rechten.

Es dauert nach dem Start von FHEM noch einige Sekunden, bis hmland fertig geladen ist. In dieser Zeit kann es zu fehlerhaften Einträgen im Logfile kommen.

Einrichtung auf Synology DiskStations

Packages für DSM5.2 finden sich hier: https://github.com/mkunzmann/spksrc/releases/tag/0.101-3

Welches Package für welche DS kann man hier sehen: https://github.com/SynoCommunity/spksrc/wiki/Architecture-per-Synology-model

Einfach das passende Package installieren und dann kann man den hmland über den Synology Package-Manager starten und stoppen. Während der Installation kann man den Port für hmland festlegen. Bitte einen Port > 1024 wählen, da der hmland nicht als root läuft. Außerdem kann ein Logfile angegeben werden. Hier am besten eine Datei auf einem USB Stick angeben die für jedermann schreibbar sein muss. Damit sollten die Platten nach wie vor in den Standby gehen.

Einrichtung unter Mac OS X

Wie unter Linux braucht man die HMLAN-Emulationssoftware hmland, die man aus Quelltexten erstellen muss. Dazu muss man die Bibliothek libusb installieren, entweder mit einem der Paketmanager wie Fink, MacPorts oder Homebrew oder direkt aus den Quellentexten (Beispiel: "fink install libusb1-shlibs libusb1"). Hat man wie bei Linux das Quelltextarchiv für hmland heruntergeladen und ausgepackt, müssen die Dateien Makefile und hmcfgusb.c angepasst werden.

Im Makefile muss man den Pfad zur libusb anpassen. Hat man libusb mit fink installiert, muss man, "/opt/local/" durch "/sw/" bei den CFLAGS und den LDFLAGS ersetzen und das "-lrt" aus den LDLIBS entfernen. Die Library librt gibt es bei Mac OS X nicht und wird anscheinend auch nicht gebraucht. (Stimmt das eigentlich?)

In der Datei hmcfgusb.c muss man die Zeilen 130-134 mit dem Aufruf libusb_detach_kernel_driver auskommentieren oder löschen. Der geht nicht auf Mac OS X.

Nach den Änderungen in den zwei Dateien, kann man wie bei Linux den Dämon hmland mit dem Kommando "make" erzeugen und mit "./hmland" ausführen. Automatisches Starten beim Booten mit launchd ist noch nicht probiert.

Beim Start von hmland sollte man folgende Fehlermeldung in einer Endlos-Schleife erhalten:

Datum Zeit: Client 127.0.0.1 connected!
Can't claim interface: Access denied (insufficient permissions)
Can't find/open hmcfgusb!
Datum Zeit: Connection to 127.0.0.1 closed!

Auch ein Start von hmland mit Superuser-Rechten ändert daran nichts. Damit das claim interface klappt, muss man eine codeless kext in den Ordner /Library/Extensions legen. Ich habe dieses (http://mspdebug.sourceforge.net/misc/ex430rf2500-kext.zip) herunter geladen. Damit es funktioniert, muss man aber in der Datei Info.plist des Bundle die Properties idProduct und idVendor ändern, entweder mit dem Property List Editor oder einem anderen Texteditor. Die beiden Properties sind etwas versteckt bei Information Property List → IOKitPersonalities → ComIntf. Bei DebugIntf und DeviceDriver scheint man es nicht ändern zu müssen, aber schaden kann es nicht.

idProduct: 49167
idVendor: 6943

Die Rechte des kext-Bundles müssen auch noch gesetzt werden:

  chmod -R 755 ex430rf2500.kext
  chown -R root:wheel ex430rf2500.kext

Danach die Datei ex430rf2500.kext in den Ordner /Library/Extensions legen und hmland sollte dann funktionieren.

Es kann sein, dass ab Mac OS X 10.9 der Trick mit dem codeless kext nicht mehr funktioniert, aber noch ist das nicht getestet oder bestätigt. Langfristig kann man vielleicht auch eine kext mit einem Treiber für den HM-CFG-USB USB erstellen

Einrichtung unter Windows

Bei der Einrichtung und vermutlich auch dem Betrieb unter Windows 8.1 sind wegen der erweiterten Energieverwaltungsfunktionen die von eQ-3 zusammengestellten Tipps zu befolgen.

Definition(en) in der FHEM-Konfiguration

In der FHEM Konfiguration muss noch, sofern/sobald der hmland läuft, das Device eingerichtet werden mit den folgenden Anweisungen:

define hmusb HMLAN 127.0.0.1:1000

wobei hmusb der frei wählbare Devicename ist. Anschließend sollte bzw. muss noch mit

attr hmusb hmId <hmId>

eine hmId zugeordnet werden (dabei bitte auch die Hinweise und Regeln beachten, die im Zusammenhang mit der VCCU beschrieben sind!

Firmware Update

Der Firmware Update (unter Linux) ist ebenfalls auf der hmland-Internetseite beschrieben. Auch die letzte bekannte Firmware-Version (0.967) steht dort zur Verfügung.

Bekannte Probleme

Verbindung zu neueren hmland-Versionen nicht stabil

Seit Version 0.100 meldet sich die HMLAN-Emulationssoftware als USB-Interface bei FHEM. Ältere FHEM-Versionen (vor dem 19.6.2015) brechen deshalb die Verbindung ab, da sie nur ein LAN-Interface erwarten.

Lösung: Kommandozeilenparameter -I dem hmland-Aufruf hinzufügen, dann meldet sich dieser wieder als LAN-Interface.

Stick nicht (mehr) ansprechbar

Zitat aus dem FHEM-Forum:

... befürchte ich, dass dein Stick das Zeitliche gesegnet hat. Machen die Dinger leider sehr gerne... Ganz besonders beim Modus-Wechsel vom 10k- in den 100k-Modus, wenn man bei irgendeinem Device ein Firmwareupdate durchführt.
Die gute Nachricht ist, dass der Fehler bei sämtlichen Händlern bekannt ist und anstandslos getauscht wird.

Raspberry Pi

Der USB-Stack am Raspberry Pi ist für viele Probleme verantwortlich. Daher sieht man öfter Fehlermeldungen:

usb-transfer took more than 100ms (1039ms), this may lead to timing problems!

Da das Timing bei HomeMatic wichtig ist führt das zu vielen Retransmits und zu unzuverlässigen Aktoren. Als Workaround kann man den USB-Stack auf die deutlich langsamere Version 1.1 stellen. Dazu fügt man folgenden Text am Anfang der Datei /boot/cmdline.txt ein:

dwc_otg.speed=1

Weitergehende Informationen

Es sind zwei Versionen des HM-CFG-USB im Umlauf:

X mark.svgStand März 2016 ist allem Anschein nach kein HM-CFG-USB mehr im ELV Programm enthalten!
  • HM-CFG-USB-2: die aktuelle Version; Kennzeichen dieser Version:
    • Größe: 28 x 84 x 11,5 mm
    • Gewicht: 18 g
    • Antenne innenliegend
  • HM-CFG-USB: Vorgängerversion; Stand 12/2013 noch Restbestände im Handel verfügbar. Dokumentation (Völkner); Kennzeichen:
    • Anschluss per separatem USB-Kabel
    • abstehende Stabantenne
    • Größe: 40 x 90 x 25 mm
    • Gewicht: 45 g

Links

  • Bedienungsanleitung HM-CFG-USB-2, PDF
  • FHEM-Forums Thema: HomeMatic USB Konfigurations-Adapter (HM-CFG-USB) in FHEM nutzen
  • eQ-3 Produktseite zum "HomeMatic Funk-Konfigurationsadapter USB"; Downloads, technische Daten, etc.