Einstellungen für RedMatic Homekit ccu Node in RaspberryMatic Docker gesucht

Node-RED als CCU3/RaspberryMatic Addon, WebApp, HomeKit, ...

Moderator: Co-Administratoren

Antworten
TheRiddler1982
Beiträge: 20
Registriert: 01.02.2021, 15:24
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 1 Mal

Einstellungen für RedMatic Homekit ccu Node in RaspberryMatic Docker gesucht

Beitrag von TheRiddler1982 » 02.10.2021, 11:03

Hi zusammen,

bis jetzt hatte ich RaspberryMatic als Standalone auf einem RaspberryPi 4 mit GPIO Funkmodul betrieben. Um meine Homematic IP Geräte in Apple Homekit zu integrieren, habe ich das RedMatic Plugin verwendet, was wunderbar funktioniert.

Da ich mit dem RaspberryPi noch mehr machen möchte (DNS Server, VPN, Nextcloud), habe ich nun RaspberryMatic als Docker Container aufgesetzt. Als Host nutzt ich den offiziellen Debian Port für RaspberryPi. Die Einrichtung hat wunderbar geklappt -> das Funkmodul wird erkannt, ich kann über die Weboberfläche die Geräte steuern. Danach habe ich das Redmatic-Plugin installiert und meine Flows aus dem Backup eingespielt.

Das Deployment des Flows hat wunderbar geklappt, jedoch werden die Geräte nicht in Homekit erkannt. Die beiden relevanten Ports für Homekit (5353, 51826) habe ich schon mit Docker exposed:

Code: Alles auswählen

docker run -d -ti --privileged --volume ccu_data:/usr/local:rw --volume /lib/modules:/lib/modules:ro --hostname ccu --name ccu -p 2222:22 -p 8080:80 -p 8443:443 -p 2001:2001 -p 2010:2010 -p 8181:8181 -p 9292:9292 -p 5353:5353 -p 51826:51826 -p 49000:49000 -p 49443:49443 -p 2048:2048 -p 2049:2049 --stop-timeout 30 --restart always  ghcr.io/jens-maus/raspberrymatic:latest
Da dies auch keine Abhilfe schaffte, habe ich ein bisschen gegoogelt und folgenden Link gefunden:

https://flows.nodered.org/node/node-red-contrib-ccu

Dort werden verschiedene Use Cases mit Docker und den Einstellung des ccu Knotens durchgespielt, jedoch ist meiner nicht mit dabei.

Meine Einstellungen seht ihr im Bild "ccu Connection Node.png".

Aus Sicht des Containers sind ja die ccu und redmatic auf dem selben Host (localhost). Was muss ich ändern, damit die Kommunikation aus dem Container klappt?

Wie ihr an dem Screenshot erkennen könnt, habe ich auch FRITZ-Komponenten integriert (Steckdose zum Schalten). Ich kann aus Redmatic im Container aus meine Fritzbox im 192.168.178 Netz (/24) erreichen und die Steckdose ansteuern. Das klappt.

Danke euch und viele Grüße,
Sven
Dateianhänge
ccu Connection Node.png

ptweety
Beiträge: 522
Registriert: 07.01.2017, 16:48
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 48 Mal
Danksagung erhalten: 66 Mal

Re: Einstellungen für RedMatic Homekit ccu Node in RaspberryMatic Docker gesucht

Beitrag von ptweety » 02.10.2021, 19:34

Hallo Sven,

da passt wohl was nicht mit dem mDNS. Wahrscheinlich läuft in deinem Container kein avahi oder der kann nicht richtig von außen gesehen werden.

Ich kann dir zur Analyse die App Discovery empfehlen. Darin solltest du alle im lokalen Netz bekannten Services sehen. Irgendwo solltest du deine nodered-bridge dann unter _hap._tcp. finden.

Wenn nicht, dann kannst du ggfs. von deinem host aus den service per avahi bekannt machen. Eine entsprechende Datei habe ich mir damals nach dem Muster hier zusammengebaut.

TheRiddler1982
Beiträge: 20
Registriert: 01.02.2021, 15:24
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 1 Mal

Re: Einstellungen für RedMatic Homekit ccu Node in RaspberryMatic Docker gesucht

Beitrag von TheRiddler1982 » 03.10.2021, 01:20

Hi,

vielen Dank für die Antwort. Ich habe Discovery installiert.

Code: Alles auswählen

_hap._tcp
gibt es bei mir, aber nicht von node-red sondern von velux (habe noch deren Gateway im Netzwerk. Am Container/Image kann ich selbst nichts schrauben, ohne es neu zu bauen. Das wird ja von Jens Maus bereitgestellt und da möchte ich nicht irgendwas anfassen. Daher muss ich vom Host aus was machen.

Leider hast du mich total abgehängt mit avahi. Das sagt mir nichts und ich kann auch nichts mit den Skripten aus dem Github-Repo adhoc was anfangen. Kannst du mir kurz erklären, was ich fachlich machen muss, damit ich das technisch besser umsetzen kann?

Heißt es, dass am Node selbst in RedMatic alle Einstellungen (IP Adressen, etc) korrekt sind?

ptweety
Beiträge: 522
Registriert: 07.01.2017, 16:48
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 48 Mal
Danksagung erhalten: 66 Mal

Re: Einstellungen für RedMatic Homekit ccu Node in RaspberryMatic Docker gesucht

Beitrag von ptweety » 03.10.2021, 09:40

Hi Sven,

ich vermute mal, dass deine Einstellungen korrekt sind, weil die Vorgaben von Redmatic ja in jeder anderen CCU auch passen.

Insbesondere kommuniziert RedMatic mit der CCU mit dem Node aus node-red-contrib-ccu über localhost. Sollte also innerhalb des Containers passen.

Deine anderen Nodes können auch nach außen kommunizieren und von dort erreicht werden, weil du ja das normale unicast Routing von docker in dein Netzwerk verwendest.

Bei Homekit (und anderen Services, die per Multicast im lokalen Netz bekannt gemacht werden) ist das anders. Diese Pakete kommen nicht aus dem Netzwerk, in dem dein Container läuft, hinaus.

Im Prinzip ist dieser ganze mDNS-Kram für lokale Netze ähnlich zu DNS, aber ohne einen zentralen Server. Also bekommt jeder Teilnehmer im lokalen Netz von jedem anderen Teilnehmer erzählt, unter welcher IP / Port welcher Service zur Verfügung steht.

Alavi ist eine Implementierung von mDNS, die unter fast jedem Linux vorinstalliert ist und mit der Distribution ausgeliefert wird. Und diesem avahi service (welcher auf deinem Host läuft) kannst du jetzt eine Konfiguration-Datei unterschieben, damit der für deinen Container einen beliebigen Dienst für dein lokales Netz bekannt macht.

Das sieht dann so aus:

Code: Alles auswählen

$ cat /etc/avahi/services/NodeRedBridge.service 
<service-group>
  <!-- Bridge Name aus der HomeKit Bridge -->
  <name>__your_Bridge_Name__</name>
  <service>
    <type>_hap._tcp</type>
    <!-- Hostname vom Host einsetzen -->
    <host-name>__your_hostname__.local</host-name>
    <port>51826</port>

    <!-- friendly name -->
    <txt-record>md=__your_Bridge_Name__</txt-record>

    <!-- HAP version -->
    <txt-record>pv=1.0</txt-record>
    <!-- MAC -->
    <!-- Bridge MAC aus der HomeKit Bridge -->
    <txt-record>id=__Bridge_MAC__</txt-record>
    <!-- Current configuration number -->
    <txt-record>c#=5</txt-record>

    <!-- accessory category -->
    <txt-record>ci=1</txt-record>

    <!-- accessory state
          This must have a value of 1 -->
    <txt-record>s#=1</txt-record>
    <!-- Pairing Feature Flags
         nothing to configure -->
    <txt-record>ff=0</txt-record>
    <!-- Status flags
         0=not paired, 1=paired -->
    <txt-record>sf=0</txt-record>
    <!-- setup hash (used for pairing).
         Required to support enhanced setup payload information (but not defined in the spec) -->
    <txt-record>sh=__your_generated_hash__</txt-record>
  </service>
</service-group>
Schwierig ist hier eigentlich nur der Setup hash ganz am Ende zu ermitteln. Diese wird wie folgt erstellt:

Code: Alles auswählen

echo -n ${setup_id}${mac_address} | openssl dgst -binary -sha512 | head -c 4 | base64
Die mac_address ist deine Bridge MAC und diese setupID ist in der AccessoryInfo.*.json der HomeKit Bridge zu finden. Ich glaube aber, dass du im config Node der HomeKit Bridge nachschauen kannst. Dort ganz unten unter dem QR-Code ist dieser String mit X-HM://...
Wenn du von diesem String die letzten 4 Zeichen als setupID verwendest, dann sollte es passen.

...

TheRiddler1982
Beiträge: 20
Registriert: 01.02.2021, 15:24
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 1 Mal

Re: Einstellungen für RedMatic Homekit ccu Node in RaspberryMatic Docker gesucht

Beitrag von TheRiddler1982 » 03.10.2021, 11:11

Wow, einfach nur wow!

Vielen Dank! Ohne deine Erklärung, das Service-Template sowie die Berechnung des Hash-Keys hätte ich das niemals hinbekommen!

Es läuft. Alle Geräte werden erkannt und können gesteuert werden.

Eigentlich müsste das irgendwo öffentlich dokumentiert werden, z.B. im Wiki bei Redmatic? Ich bin ja nicht der einzige mit diesem Use Case und ich habe mit eigener Recherche (aber mit begrenztem Netwerkarchitekturwissen) nichts herausbekommen.

Antworten

Zurück zu „RedMatic“