HM-LAN-CFG: Muss ich einen rfKey setzen?

Hallo,

habe eine Frage zur Konfiguration von zwei HM-LAN-CFG Adaptern:
meine physicalinterfaces.conf sieht wie folgt aus:

[code]#######################################
############# HM-CFG-LAN #############
#######################################

The device family this interface is for

[HomeMaticBidCoS]

Specify an unique id here to identify this device in Homegear

id = HM-CFG-LAN-EG

When default is set to “true” Homegear will assign this device

to new peers.

#default = true

Options: cul, cc1100, coc, cuno, hmcfglan, hmlgw

deviceType = hmcfglan

IP address of your HM-CFG-LAN

host = 192.168.178.203

Port number your HM-CFG-LAN listens on. Normally 1000.

port = 1000

Put the AES key printed on your HM-CFG-LAN here

lanKey = HIER_STEHT_DER_LANKEY_VON_DER_GERÄTERÜCKSEITE

Specify a 16 byte (32 characters) long AES key here to protect your wireless communication

!!! IMPORTANT: Never ever lose this key. That would render your devices useless.

To remove the key from your devices, you need to factory reset them

#rfKey = 00112233445566778899AABBCCDDEEFF

With each key change currentRFKeyIndex needs to be

incremented by 1. Default value is 1.

#currentRFKeyIndex = 1

When you change rfKey, put the old key here. To

change the key Homegear needs to know the old and

the new one.

!!! Do not set oldRFKey when you set rfKey for the first time !!!

##oldRFKey = 00112233445566778899AABBCCDDEEFF

Default: responseDelay = 95

Should be “95” for CUL or COC, “100” for TI CC1101 and “60” for HM-CFG-LAN or HM-LGW

responseDelay = 60[/code]

Den rfKey möchte ich eigentlich nicht ändern. Ich weiß um die Sicherheit, jedoch finden sich genug Menschen im Homematic Forum, bei denen nach Änderungen am Key etwas schief ging und das gejammer dann groß ist.
Homegear schreibt aber in die log Datei:

06/07/15 08:55:57.591 Module HomeMatic BidCoS: LAN-Konfigurationsadapter "HM-CFG-LAN-EG": Info: Enabling AES encryption for communication with HM-CFG-LAN. 06/07/15 08:55:57.591 Module HomeMatic BidCoS: LAN-Konfigurationsadapter "HM-CFG-LAN-EG": Error: No RF AES key specified in physicalinterfaces.conf on your HM-CFG-LAN for communication with your BidCoS devices.
und scheint sich auch nicht zu verbinden.
Muss ich den rfKey anfassen?

Wenn ich einen zweiten LAN CFG Adapter einsetzen möchte: genügt es, diesen Konfig-Block einfach zu duplizieren?
Welche Auswirkung hat es, welchem Adapter ich default=true zuweise?

Zuletzt an sathya: großes Lob für Deine Arbeit. Bisher bin ich zwar erst bis zu diesem Punkt gekommen, aber bislang lief die Installation auf einem Raspi 2 gut.
Vielleicht solltest Du noch im Wiki erwähnen, dass der User pi keine Möglichkeit hat, die physicalinterfaces.conf zu editieren.
Und für die Log-Dateien musste ich mich als root anmelden, sondern wurde der Zugriff auf die Verzeichnisse verweigert.

Da es leider bislang keine Antwort auf die Frage gab, möchte ich wenigstens für alle anderen, die auf das gleiche Problem stoßen sollten, mitteilen, was ich bislang selbst herausgefunden hab:

Ohne rfkey geht es wohl nicht
offensichtlich akzeptiert homegear den LAN Config Adapter nicht, ohne den rfkey zu setzen.
Homegear startet das Device dann nicht.

Wenn der rfKey gesetzt wird, muss der oldrefkey Wert auskommentiert bleiben.

Mehrere LAN Config Adapter
Um mehrere Lan Config Adapter zu betreiben, reicht es, den entsprechenden Abschnitt in der config Datei zu kopieren und mit neuer IP etc anzupassen.
System neustart war erforderlich.

Offene Frage
Was ich noch nicht verstanden habe ist, wie sich das setzen von default=true bei einem Adapter auswirkt.

Hallo wbuh,

peinlich… Ich hatte auf diesen Post geantwortet, aber irgendwas ist beim Absenden offenbar schief gelaufen… :blush: Also dafür erst einmal Entschuldigung!

Genau. Wenn du jetzt den Schlüssel noch einmal ändern möchtest, brauchst du auch “oldRFKey”. Da kommt dann der aktuelle Schlüssel rein und in “rfKey” der neue. “currentRFKeyIndex” muss dann auf “2” gesetzt werden.

Genau, das lassen wir aus Sicherheitsgründen nicht zu. Der Standard-AES-Schlüssel ist einfach zu unsicher. Solange du dir den Schlüssel irgendwo sicher aufgeschrieben hast, wird es aber keine Probleme geben.

Das ist die Schnittstelle, welche Homegear beim Anlernen für das Gerät setzt. Im Anschluss kommuniziert das Gerät dann in der Standardeinstellung nur mit dieser Schnittstellle. Möchtest du das ändern, muss die RPC-Methode “setInterface” aufgerufen werden [1] oder der Konfigurationsparameter “ROAMING” auf “true” gesetzt werden (dann wird die Schnittstelle automatisch anhand der Empfangsfeldstärke ausgewählt). Für beides kann ich dir gerne auch ein Beispiel posten.

Liebe Grüße

Sathya

[1] https://www.homegear.eu/index.php/SetInterface

Hallo sathya,

danke für Deine Hilfe.
Und ich hatte mich schon gewundert, warum “ausgerechnet” dieser Post keine Antwort bekommen hat. :slight_smile:

Offtopic:
Ich habe vor, möglichst viele meiner Erfahrungen beim Umstieg von einer kaputten CCU1 (BidCosRF Einheit funktioniert nicht mehr zuverlässig) auf Homegear & openHAB hier im Forum zu posten, weil mir das, was ich bislang von Homegear und Openhab gesehen habe, wirklich sehr, sehr gut gefällt.
Und ich hoffe, dass andere davon auch profitieren.

Wenn es Deine Zeit zulässt, würde ich mich über jeweils ein Beispiel (Roaming und setInterface) freuen.
Denn in der CCU hatte ich einzelne Komponenten auf Roaming gesetzt, während andere einem festen Adpater zugewiesen waren (zu weit weg vom anderen Adapter für vernünftigen Empfang).

Wo genau in der physicalinterfaces.conf muss der Romaing Parameter bei zwei HM_LANCFG-Adaptern gesetzt werden?
In der Vorlage konnte ich leider keinen auskommentierten Wert finden?

Ein Beispiel für setInterface würde mir auch helfen, um generell den PHP Ansatz zu verstehen.
Ich komme aus der .NET Welt, habe aber leider nur geringe Erfahrungen mit php.
Was ich bislang aus der Doku verstanden habe:
-man kann eine php Datei schreiben (z.B. “befehl.php”)
-es gibt ein bestimmtes Verzeichnis, in das die Datei muss (editiert: /var/lib/homegear/scripts)
-das Skript kann als user pi gestartet werden mit "sudo homegear -e runscript befehl.php
-der Inhalt des Skripts wäre dann

try { $hg = new \Homegear\Homegear(); $hg->setInterface(17,"HM-CFG-LAN-EG"); } catch(\Homegear\HomegearException $e) { print "Exception catched. Code: ".$e->getCode().". Message: ".$e->getMessage(); }
Wobei 17 der ID des Aktors in der Devices-Liste von Homegear entspricht und “HM-CFG-LAN-EG” die ID des HM-LANCFG Adapters entspricht die in der Einstellungsdatei physicalinterfaces.conf festgelegt wurde.

Ist das so korrekt? Muss in der php Datei noch etwas hinzugefügt werden ? Irgendwelche Klammern oder PHP Ausdrücke, damit das Skript einwandfrei läuft?

Schon jetzt vielen Danke für jede Unterstützung!
wbuh

Hallo wbuh,

Das wäre total klasse!

“ROAMING” ist ein Konfigurationsparameter des Geräts. Hier mal dein Beispielskript angepasst zum Setzen von “ROAMING”:

try {
    $hg = new \Homegear\Homegear();
    $hg->putParamset(17, 0, "MASTER", array("ROAMING" => true));
} catch(\Homegear\HomegearException $e) {
    print "Exception catched. Code: ".$e->getCode().". Message: ".$e->getMessage();
}

[quote]Wobei 17 der ID des Aktors in der Devices-Liste von Homegear entspricht und “HM-CFG-LAN-EG” die ID des HM-LANCFG Adapters entspricht die in der Einstellungsdatei physicalinterfaces.conf festgelegt wurde.

Ist das so korrekt?[/quote]

Korrekt.

Nö, sieht gut aus.

Liebe Grüße

Sathya

try { $hg = new \Homegear\Homegear(); $hg->setInterface(6,"HM-CFG-LAN-DG"); } catch(\Homegear\HomegearException $e) { print "Exception catched. Code: ".$e->getCode().". Message: ".$e->getMessage(); }

Klappt leider nicht. Kommandozeile schreibt:

Aber das Interface ändert sich nicht.
Kontrolliere die Interfacedaten über homegearlib.NET.
Kann man die irgendwie auch über die Konsole ansehen?

Im Log steht

06/14/15 09:29:49.042 Info: CLI connection accepted. Client number: 40 06/14/15 09:30:05.101 Script output: try { $hg = new \Homegear\Homegear(); $hg->setInterface(6,"HM-CFG-LAN-DG"); } catch(\Homegear\HomegearException $e) { print "Exception catched. Code: ".$e->getCode().". Message: ".$e->getMessage(); }
Sieht für mich als Laie eher danach aus, als wäre das Script gar nicht interpretiert worden?

Wird’s auch nicht. Füge am Anfang des Skripts ein “<?php" und am Ende ein "?>” ein, dann geht’s :wink:.

LG Sathya

[quote=“sathya”]
Wird’s auch nicht. Füge am Anfang des Skripts ein “<?php" und am Ende ein "?>” ein, dann geht’s :wink:.
LG Sathya[/quote]

Auch schon probiert.
Aber mit

<?php try { $hg = new \Homegear\Homegear(); $hg->setInterface(5,"HM-CFG-LAN-DG"); } catch(\Homegear\HomegearException $e) { print "Exception catched. Code: ".$e->getCode().". Message: ".$e->getMessage(); } ?>
ist der Exit code dann 1 und Errorlog sagt

[code]06/14/15 12:31:34.404 Error compiling script “/var/lib/homegear/scripts/setInterface2.php”: 3 Warning: Namespace support is disabled in the current release of the PH7(2.1.4) engine
5 Error: Catch: Unexpected token ‘(’,excpecting class name
5 Error: Unexpected token ‘$’

06/14/15 12:31:34.411 Error compiling script “/var/lib/homegear/scripts/setInterface2.php”: 3 Warning: Namespace support is disabled in the current release of the PH7(2.1.4) engine
5 Error: Catch: Unexpected token ‘(’,excpecting class name
5 Error: Unexpected token ‘$’[/code]

Hey,

ich bin wegen deines Beispiels davon ausgegangen, dass du Homegear 0.6 installiert hast. Objektorientiert funktioniert das nicht mit Version 0.5. Ich würde dir empfehlen, Version 0.6 zu installieren, dann funktioniert es auch :wink:.

Liebe Grüße

Sathya

Puh, einfacher gesagt als getan. Meiner-Einer ist aus der Windows-Welt und da sind die ganzen apt-get-trallala die sprichwörtlichen Bäume im Wald. :confused:
Also Ärmel hochgekrempelt und mal für alle, denen es auch so geht, hier der Weg wie es geklappt hat (Raspberry Pi2, zuletzt Version 0.5.25):

sudo -s
wget http://homegear.eu/packages/Release.key
apt-key add Release.key
rm Release.key
apt-get update
apt-get dist-upgrade -y
apt-get install libsqlite3-0 libreadline6 libgcrypt11 libgnutlsxx27 unzip p7zip-full libxml2-utils patch perl -y
# relink g++
cd /usr/bin
sudo rm gcc
sudo ln -s g++-4.7 g++
sudo ln -s gcc-4.7 gcc
wget http://homegear.eu/downloads/nightlies/homegear_current_raspbian_wheezy_armhf.deb
dpkg -i homegear_current_raspbian_wheezy_armhf.deb
ln -s /usr/lib/php5/libphp5.so /usr/lib/libphp5.so
apt-get upgrade libphp5-embed
apt-get -f install  libphp5-embed
reboot

Anschließend meldet sich Homegear wie folgt



Das Update scheint also geklappt zu haben. Jetzt gleich mal das Skript testen…

Und siehe da: nach Aufruf von

[code]
sudo homegear -r

rs setInterface2.php
Script executed successfully.[/code]

hat’s geklappt!



Besten Dank für Deine Hilfe sathya! :wink:

Super, dass es jetzt klappt :smiley: !!!

Das Erzeugen des Links bei deiner Installation wäre nicht nötig gewesen. Die libphp5-embed liegt in Debian wheezy an einem anderen Ort. Nach einem “apt-get update && apt-get upgrade” wäre die neue Version am korrekten Ort installiert worden. Ich habe das Wiki mal um das “apt-get upgrade && apt-get upgrade” ergänzt :wink:.

Liebe Grüße

Sathya

Offtopic:
Aha!
Um ehrlich zu sein, hab ich mir die Befehlsreihenfolge hier aus dem Forum zusammengeklaut und mit ein bisschen Halbwissen ergänzt.
Da hätte auch stehen können apt-get einViertelLitermilch && zweiEier :sunglasses:
Der Windows-User in mir nimmt jeden Linux Befehl, den er in die Hände bekommt, freut sich aber umso mehr, wenn’s klappt! :slight_smile:

Mit Hilfe der kleinen Anwendung oben und einem parametrisierten Script auf dem Raspi lassen sich die Interfaces (und ein paar Dinge mehr) jetzt mit einem Mausklick einstellen.
Stelle die Anwendung gerne in Kürze vor (wahrscheinlich am Wochenende).

Wenn du irgendwelche Linux-Fragen hast, frag :wink:.

Da freue ich mich schon drauf :slight_smile:.

Ich wollte die 0.6 er Version installieren. Wie in einigen Kommentaren zuvor.

Ich kam bis:

wget http://homegear.eu/packages/Release.key
apt-key add Release.key
rm Release.key
apt-get update
apt-get dist-upgrade -y
apt-get install libsqlite3-0 libreadline6 libgcrypt11 libgnutlsxx27 unzip p7zip-full libxml2-utils patch perl -y

Und bekomme folgende Meldung:

Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
Package libgnutlsxx27 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

Package libgcrypt11 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'libgcrypt11' has no installation candidate

Da ich auch einer dieser Windwos User bin: Kann ich die auf einfache Art und weise hinzufügen?

ICh habe mal geprüft was passiert wenn ich weitermache

cd /usr/bin
sudo rm gcc
sudo ln -s g++-4.7 g++
sudo ln -s gcc-4.7 gcc
wget http://homegear.eu/downloads/nightlies/homegear_current_raspbian_wheezy_armhf.deb

g++ fehlt wohl bei mir

und wenn ich dpkg -i homegear_current_raspbian_wheezy_armhf.deb aufrufe bekomme ich

root@smarthome:/usr/bin# dpkg -i homegear_current_raspbian_wheezy_armhf.deb
(Lese Datenbank ... 37604 Dateien und Verzeichnisse sind derzeit installiert.)
Vorbereitung zum Entpacken von homegear_current_raspbian_wheezy_armhf.deb ...
Entpacken von homegear (0.6.0-1269) über (0.6.0-1269) ...
dpkg: Abhängigkeitsprobleme verhindern Konfiguration von homegear:
 homegear hängt ab von libgcrypt11 (>= 1.4.5); aber:
  Paket libgcrypt11 ist nicht installiert.
 homegear hängt ab von libgnutls26 (>= 2.12.17-0); aber:
  Paket libgnutls26 ist nicht installiert.
 homegear hängt ab von libhomegear-base (= 0.6.0-1269); aber:
  Paket libhomegear-base ist nicht installiert.
 homegear hängt ab von libgnutlsxx27; aber:
  Paket libgnutlsxx27 ist nicht installiert.

dpkg: Fehler beim Bearbeiten des Paketes homegear (--install):
 Abhängigkeitsprobleme - verbleibt unkonfiguriert
Trigger für systemd (215-17+deb8u3) werden verarbeitet ...
Fehler traten auf beim Bearbeiten von:
 homegear

Das sollte aber denke ich mal ein Folgeproblem sein.

NACHTRAG:
Ich habe einen Raspberry PI mit Raspbian Jessie am laufen.

Hallo Vanillebaer,

“libgnutlsxx27” gibt es nicht mehr unter Jessie.

cd /usr/bin sudo rm gcc sudo ln -s g++-4.7 g++ sudo ln -s gcc-4.7 gcc

Damit hast du dein gcc zerschossen. Erstelle die Links zu deiner g+± und gcc-Version (4.9?) erneut. Z. B.:

cd /usr/bin sudo rm gcc sudo rm g++ sudo ln -s g++-4.9 g++ sudo ln -s gcc-4.9 gcc

“homegear_current_raspbian_wheezy_armhf.deb” ist das falsche Paket unter Jessie. Lade dir homegear_current_raspbian_jessie_armhf.deb runter.

Zum Installieren folge dieser Anleitung: https://doc.homegear.eu/data/homegear/en-US/html-single/#sect-Homegear-Homegear_0.6_Documentation-Manually_Install_Debian_Raspbian_Ubuntu_Package

Fehlende Abhängigkeiten werden mit “apt-get -f install” automatisch nachinstalliert.

Ich würde dir aber empfehlen, einfach das aktuelle Raspbian-Image zu verwenden, da ist Version 0.6 drin :wink:.

Viele Grüße

Sathya