[Homegear-Gateway] Ein Gateway / mehrere Geräte-Familien (BidCos, Zigbee)

Ich habe heute versucht, mein Zigbee-Gateway mit BidCos-Funktionalität zu erweitern. Leider ist mir das nicht gelungen. :frowning:

Während Zigbee konfiguriert war, hat das Gateway kein einziges BidCos-Paket geliefert. Es gab höchstens so etwas im Log:

04/28/20 18:38:59.374 Module HomeMatic BidCoS: HomeMatic Homegear Gateway "pi3-gateway": Info: Sending: 0B72A001FD00014B3154010E
04/28/20 18:38:59.381 Module HomeMatic BidCoS: HomeMatic Homegear Gateway "pi3-gateway": Error sending packet 0B72A001FD00014B3154010E: Invalid parameters.

Erst als ich die Zigbee-Konfiguration vollständig entfernt hatte (sowohl im Gateway als auch bei Homegear selbst) wurde wieder mit BidCos kommuniziert. (Alle Geräte waren wieder erreichbar.)

Ist das so geplant, dass jedes Gateway nur eine Familie beliefern kann?

Falls ja, wie sollte man dann auf einem RaspberryPi mehrere Gateway-Instanzen einrichten?
Falls nein, wie kann ich helfen, damit der Fehler behoben werden kann?

Das alles mit 0.8.0-2956, als es nicht sofort geklappt hat, habe die aktuellste Version installiert.

Hey @job,

homegear-gateway kann (derzeit) nur ein Protokoll pro Installation. Das ist meines Wissens auch so gewollt (gewesen) :wink:

Ich habe fuer unser kommerzielles Produkt in den letzten Wochen genau an dem “Problem” gearbeitet, und auch ab und an mal mit Sathya drueber gesprochen. Aktuell konnte ich es mit LXD loesen, und harre geduldig auf eine native Multiprotokoll-Homegeargateway-Version :wink:

– Micha

Oha. Dieses Wissen hätte mir eine Menge Zeit gespart. :wink:

Oja, ich auch!

@sathya, könnte man das auch mit einem weiteren systemd-service machen, der auf ein anderes Konfigurationsfile verweist? (Option -c, andere Ports etc.)

1 Like

Btw, hier mal meine Interpretation für ein Homegear-Gateway, wahlweise auch als Homegear-Basis einsetzbar:

Baue dafür auch grade noch ein Zigbee-Modul mit externer Antenne. Das für den RaspberryPi liegt schon in Einzelteilen vor mir auf dem Tisch.

4 Likes

Gesagt, getan. Aktuell laufen 2 Gateway-Services auf dem Pi.

root@pi3:/etc# systemctl status homegear-gateway*
● homegear-gateway.service - Homegear Gateway
   Loaded: loaded (/lib/systemd/system/homegear-gateway.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2020-04-28 23:01:55 CEST; 1 day 17h ago
 Main PID: 5819 (homegear-gatewa)
    Tasks: 5
   Memory: 2.4M
   CGroup: /system.slice/homegear-gateway.service
           └─5819 /usr/bin/homegear-gateway -u homegear -g homegear -p /var/run/homegear/homegear-gateway.pid

● homegear-gateway-zigbee.service - Homegear Gateway (Zigbee)
   Loaded: loaded (/lib/systemd/system/homegear-gateway-zigbee.service; disabled; vendor preset: enabled)
   Active: active (running) since Thu 2020-04-30 16:49:34 CEST; 8min ago
 Main PID: 28829 (homegear-gatewa)
    Tasks: 5
   Memory: 876.0K
   CGroup: /system.slice/homegear-gateway-zigbee.service
           └─28829 /usr/bin/homegear-gateway -u homegear -g homegear -c /etc/homegear-zigbee -p /var/run/homegear/homegear-gateway-zigbee.pid

So, sieht erstmal gut aus. Ob es wirklich funktioniert ist was Anderes. :slight_smile:

Das normale Gateway arbeitet mit Homematic BidCos, das zweite logischerweise mit Zigbee. Die Ports habe ich um 100 verschoben… 2017 -> 2117 und 2018 ->2118.

Das Doofe an der ganzen Sache ist natürlich, dass sich Homegear nicht mit dem Zigbee-Gateway verbinden möchte. Irgendwas ist da falsch, ich bin aber blind, ich finde nichtmal die entsprechende Code-Zeile auf Github. Zeit für 'ne Pause. :smiley:

04/30/20 17:27:36.258 Module Zigbee: Zigbee serial module "pi3-gateway-zigbee": Warning: Gateway: Connection to device closed. Trying to reconnect...
04/30/20 17:27:37.260 Module Zigbee: Zigbee serial module "pi3-gateway-zigbee": Error in file PhysicalInterfaces/GatewayImpl.cpp line 190 in function void Zigbee::GatewayImpl::listen(): Could not connect to server 10.10.10.10 on port 2117. Poll failed with error code: 1.

Ich bin mir grad nicht so sicher ob es evtl. daran liegt, dass Homeger immer versucht sich ueber Port 2017 (oder war’s 2018?) zu verbinden :thinking:

Davon ab … wenn dem so ist und man das aendern koennte … mega … haette mir 1 Woche Arbeit erspart :joy:

– Micha

Hi @sathya,

hattest du mal Zeit, dir das anzuschauen?

Viele Grüße

Hallo,

sorry für die späte Antwort. Ich habe gerade mal reingeschaut. Der Port ist sowohl in Homegear als auch im Gatewaydienst frei konfigurierbar. An die Funktion configureGateway kann der Gatewayport mit übergeben werden.

https://ref.homegear.eu/php.html#HomegearconfigureGateway

Das Ganze sollte also funktionieren. Vermutlich geht sogar die SSDP-Suche. Was gibt

homegear -e rc '$devices=$hg->ssdpSearch("urn:schemas-upnp-org:device:basic:1", 5000);foreach($devices as $device){if(!array_key_exists("additionalFields", $device) || !array_key_exists("hg-family-id", $device["additionalFields"]) || !array_key_exists("hg-gateway-configured", $device["additionalFields"])) continue; if($device["additionalFields"]["hg-family-id"] != "15" || $device["additionalFields"]["hg-gateway-configured"] != "0") continue; print($device["ip"].PHP_EOL);}'

zurück?

Viele Grüße

Sathya

Korrigiert mich wenn ich falsch liege, aber nutzt SSDP normalerweise™ nicht immer Port 1900 UDP?

Also solange man ssdpSearch nicht sagen kann, dass ein Port != 1900 verwendet werden soll wird das nicht funktionieren … IIRC hatte ich das gleiche Problem, als ich meine Loesung gebaut hatte … :thinking:

– Micha

Hallo @Micha,

beide Dienste lauschen auf Port 1900 parallel. Das geht auch, solange das Hostsystem das gleiche ist. Beide Dienste können entsprechend auch auf SSDP-Anfragen unabhängig voneinander antworten.

Viele Grüße

Sathya

Hey @sathya,

das hat bei mir so nicht funktioniert (Armbian Buster). Deswegen musste ich ja das Gehampel machen, und beide Gateways je auf eigene IPs packen :wink:

– Micha

Hmm, die SSDP-Suche hatte nicht funktioniert? Weißt du noch, was der Fehler war?

Hey @sathya,

die SSDP-Suche an sich hat funktioniert, ich hab aber immer nur ein Result bekommen :wink:

– Micha

Kannst du dich erinnern, ob beide Gateway-Dienste auf Port 1900 gelauscht haben?

Micha und ich haben gerade diesbezüglich telefoniert. Ergebnis: Es könnte gehen. @Micha testet es die Tage noch einmal.

2 Likes

Hallo zusammen,

ich hab es tatsaechlich hinbekommen: auf meinem Gateway (OPi Zero) laufen zwei homegear-gateway Instanzen mit nur einer Installation auf unterschiedlichen Ports und antworten jeweils getrennt auf die ssdp-Suche.

Folgende Dinge sind zu beachten:

  • Jede Konfigurationsdatei (gateway.conf) muss in einem eigenen Pfad liegen, damit man homegear-gateway mit dem Parameter -c starten kann (eg. homegear-gateway -c /gateway-data/etc/zigbee/).
  • Jede Instanz benoetigt einen eigenen logfilePath und dataPath. Ansonsten kann die 2. Instanz die Logs nicht oeffnen, bzw. die Zertifikate werden einfach ueberschrieben.
  • Die Einstellungen port bzw. portUnconfigured muessen natuerlich je Instanz unterschiedlich konfiguriert werden.
  • Die uPnPUDN muss natuerlich auch je Instanz eindeutig sein!

So funktionierts hier bei mir. Ich hab auch testweise mal ein Zigbee-Device an meine Zigbee-Instanz angelernt um die Kommunikation zu testen. Funktioniert wie gewuenscht. Ein Hinzufuegen von Gateways mit nicht-standard Ports ueber die AdminUI ist ab dem naechsten nightly auch moeglich, die Aenderungen hab ich eben gepushed.

– Micha

3 Likes