NEWS
HomematicRPC 1.8 + REGA 2.0 testen
-
Moin moin,
da sich mit den letzten CCU Firmware Updates einige Verbesserungen zum Thema Sicherheit ergeben haben, können hm-rpc und hm-rega nun über https mit eurer CCU kommunizieren. Hierzu in der jeweiligen Instanz auf den Tab "Zusätzliche Einstellungen" klicken und https aktivieren.
Ebenfalls ist es möglich die Authentifizierung an der CCU (Firmware 3.41.11) zu aktivieren. Dazu unter der HTTPS Checkbox einen gültigen Usernamen sowie das zugehörige Passwort für einen CCU-User eintragen. Sowohl PW als auch Username werden bei Rega und RPC verschlüsselt gespeichert!
Folgt hierzu den folgenden Schritten in der Weboberfläche der CCU:
! -> Einstellungen -> Systemsteuerung
! -> Menüpunkt "Sicherheit" anklicken
! -> "Authentifizierung" Checkbox aktivieren
! -> In den Einstellungen "Zentralenwartung" anklicken
! -> Neustart durchführen
Nun kann der Zugriff auf die API nur noch mit gültigen Nutzername und Passwort erfolgen. Somit kann keiner in eurem Netzwerk die API ohne die korrekten Credentials ansteuern und eure Smart Home Welt ist ein Stück sicherer geworden.
Die beiden Versionen sind erst mal zum Testen über GitHub erhältlich.
Zusätzliche Informationen:
! Falls ihr in der CCU Firewall Ports blockiert habt, müsst ihr evtl. die entsprechenden Ports freigeben, die der Adapter nutzt (siehe hierzu Einstellungen der jeweiligen Instanz z. B. 42001 für RFD)
! Rega Port: 48181
! –> CCU WebUI --> Einstellungen --> Systemsteuerung --> Firewall konfigurieren --> Port Freigabe ausfüllen --> Ok drücken --> Neustart der CCU durchführen
! BIN-RPC und somit CuxD können bei aktiver Authentifizierung nicht betrieben werden.Wers nicht hin bekommt:
https://www.youtube.com/watch?v=LaQtyf7dl9w&lc=z23jutrzkt2kcpiag04t1aokgmn3vuqyr2bgsglsq3fgrk0h00410
Ich freue mich auf euer Feedback.
beste Grüße
fox
-
Hi Fox,
also…update ueber git von beiden Adaptern verlief korrekt. Funktionierte auch sofort. Ausser dass ich den CuxD Port 8701 in der Raspberrymatic freigeben musste, nach dem letzten Update.
Nun habe ich mal die Auth angemacht, CCU neugestartet, HTTPS in den Instanzen eingeben....
REGA verbindet sich korrekt, gibt aber dauerhaft folgende Warnung aus:
hm-rega.1 2018-11-29 10:49:00.726 warn Got unexpected ID: hm-rega.1.1239 hm-rega.1 2018-11-29 10:49:00.553 warn Got unexpected ID: hm-rega.1.1238 hm-rega.1 2018-11-29 10:48:55.725 warn Got unexpected ID: hm-rega.1.1239 hm-rega.1 2018-11-29 10:48:55.552 warn Got unexpected ID: hm-rega.1.1238 hm-rega.1 2018-11-29 10:48:50.724 warn Got unexpected ID: hm-rega.1.1239 hm-rega.1 2018-11-29 10:48:50.553 warn Got unexpected ID: hm-rega.1.1238 hm-rega.1 2018-11-29 10:48:45.725 warn Got unexpected ID: hm-rega.1.1239 hm-rega.1 2018-11-29 10:48:45.553 warn Got unexpected ID: hm-rega.1.1238 hm-rega.1 2018-11-29 10:48:40.726 warn Got unexpected ID: hm-rega.1.1239 hm-rega.1 2018-11-29 10:48:40.552 warn Got unexpected ID: hm-rega.1.1238 hm-rega.1 2018-11-29 10:48:35.724 warn Got unexpected ID: hm-rega.1.1239 hm-rega.1 2018-11-29 10:48:35.552 warn Got unexpected ID: hm-rega.1.1238
der CuxD RPC bricht mit folgender Fehlermeldung den Anmeldeversuch ab:
host.ioBroker 2018-11-29 10:48:32.405 info Restart adapter system.adapter.hm-rpc.1 because enabled host.ioBroker 2018-11-29 10:48:32.405 error instance system.adapter.hm-rpc.1 terminated with code 0 (OK) Caught 2018-11-29 10:48:32.405 error by controller[0]: at Manager.ondata (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/manager.js:335:16) Caught 2018-11-29 10:48:32.405 error by controller[0]: at Decoder.add (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-parser/index.js:251:12) Caught 2018-11-29 10:48:32.405 error by controller[0]: at Decoder.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/component-emitter/index.js:133:20) Caught 2018-11-29 10:48:32.405 error by controller[0]: at Decoder. <anonymous>(/opt/iobroker/node_modules/component-bind/index.js:21:15) Caught 2018-11-29 10:48:32.405 error by controller[0]: at Manager.ondecoded (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/manager.js:345:8) Caught 2018-11-29 10:48:32.405 error by controller[0]: at Manager.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/component-emitter/index.js:133:20) Caught 2018-11-29 10:48:32.405 error by controller[0]: at Manager. <anonymous>(/opt/iobroker/node_modules/component-bind/index.js:21:15) Caught 2018-11-29 10:48:32.405 error by controller[0]: at Socket.onpacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:244:12) Caught 2018-11-29 10:48:32.405 error by controller[0]: at Socket.onack (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:319:9) Caught 2018-11-29 10:48:32.404 error by controller[0]: at Socket.adapter.getForeignObject (/opt/iobroker/node_modules/iobroker.hm-rpc/hm-rpc.js:1498:29) Caught 2018-11-29 10:48:32.404 error by controller[0]: TypeError: rpc.createSecureClient is not a function hm-rpc.1 2018-11-29 10:48:32.383 info terminating hm-rpc.1 2018-11-29 10:48:32.378 error at Manager.ondata (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/manager.js:335:16) hm-rpc.1 2018-11-29 10:48:32.378 error at Decoder.add (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-parser/index.js:251:12) hm-rpc.1 2018-11-29 10:48:32.378 error at Decoder.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/component-emitter/index.js:133:20) hm-rpc.1 2018-11-29 10:48:32.378 error at Decoder. <anonymous>(/opt/iobroker/node_modules/component-bind/index.js:21:15) hm-rpc.1 2018-11-29 10:48:32.378 error at Manager.ondecoded (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/manager.js:345:8) hm-rpc.1 2018-11-29 10:48:32.378 error at Manager.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/component-emitter/index.js:133:20) hm-rpc.1 2018-11-29 10:48:32.378 error at Manager. <anonymous>(/opt/iobroker/node_modules/component-bind/index.js:21:15) hm-rpc.1 2018-11-29 10:48:32.378 error at Socket.onpacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:244:12) hm-rpc.1 2018-11-29 10:48:32.378 error at Socket.onack (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:319:9) hm-rpc.1 2018-11-29 10:48:32.378 error at Socket.adapter.getForeignObject (/opt/iobroker/node_modules/iobroker.hm-rpc/hm-rpc.js:1498:29) hm-rpc.1 2018-11-29 10:48:32.378 error TypeError: rpc.createSecureClient is not a function hm-rpc.1 2018-11-29 10:48:32.378 error uncaught exception: rpc.createSecureClient is not a function hm-rpc.1 2018-11-29 10:48:32.370 info binrpc client is trying to connect to 192.168.1.3:48701/ with ["xmlrpc_bin://192.168.1.19:18701","hm-rpc.1"] hm-rpc.1 2018-11-29 10:48:32.370 info binrpc server is trying to listen on 192.168.1.19:18701</anonymous></anonymous></anonymous></anonymous>
HM und HMIP bringen garnichts und verbinden sich nicht.
nehme ich die Auth in der Raspberrymatic und den Instanzen raus, laeuft alles:
hm-rpc.3 2018-11-29 10:55:56.006 info new HmIP devices/channels after filter: 0 hm-rpc.3 2018-11-29 10:55:55.986 info xmlrpc <- newDevices 124 hm-rpc.3 2018-11-29 10:55:55.422 info xmlrpc -> 0 devices hm-rpc.3 2018-11-29 10:55:55.404 info xmlrpc <- listDevices ["hm-rpc.3"] hm-rpc.3 2018-11-29 10:55:55.386 info Connected hm-rpc.3 2018-11-29 10:55:55.347 info xmlrpc client is trying to connect to 192.168.1.3:2010/ with ["http://192.168.1.19:12010","hm-rpc.3"] hm-rpc.3 2018-11-29 10:55:55.346 info xmlrpc server is trying to listen on 192.168.1.19:12010 hm-rpc.3 2018-11-29 10:55:55.147 info starting. Version 1.8.0 in /opt/iobroker/node_modules/iobroker.hm-rpc, node: v8.13.0 hm-rpc.3 2018-11-29 10:55:55.004 info States connected to redis: 127.0.0.1:6379
kann ich Dir noch weiter helfen?
Gruss
-
Den Fehler bei CuxD kann ich nachvollziehen, da BIN RPC verwendet wird, und da gibts wohl 'createSecureServer' nicht. Werde mich drum kümmern.
UPDATE: Jens Maus zufolge, ist bei aktiver Auth BIN-RPC nur noch von localhost selbst möglich. Da sich die CuxD-Geräte allerdings nicht mittels XML-RPC steuern lassen, schaut es bei aktiver Authentifizierung schlecht aus. Ich habe mal angefragt, ob es hierfür ein Workaround gibt oder etwas in Planung ist. Falls nicht, werde ich es mindestens mit einer geeigneten Fehlermeldung abfangen.
Sind die Ports für die anderen Instanzen korrekt gewählt? Normalerweise sollten diese mit einer zusätzlichen 4 starten, ansonsten mit den alten Ports übereinstimmen.
Zu dem Rega Log, gibt es die entsprechenden Datenpunkte bei dir, die geloggt werden?
-
korrekt, sobald ich auf HTTPs Stelle, werden die Ports vorne fuehrend mit einer 4 ergaenzt.
Diese habe ich aber in der CCU Firewall nicht extra eingestellt, korrekt?
Leider kann ich Dir aktuell keinen Screenshot hochladen. Es ist absichtlich port 8701 fuer CUXD freigebene und unten die IP des ioBrokers hinzugefuegt.
-
korrekt, sobald ich auf HTTPs Stelle, werden die Ports vorne fuehrend mit einer 4 ergaenzt.
Diese habe ich aber in der CCU Firewall nicht extra eingestellt, korrekt?
Leider kann ich Dir aktuell keinen Screenshot hochladen. Es ist absichtlich port 8701 fuer CUXD freigebene und unten die IP des ioBrokers hinzugefuegt. `
Nein, musst du 'eigentlich' nichts extra einstellen. Zu CuxD siehe meine Änderung im vorherigen Post.
Wundern tuts mich nur, dass sich hm-rpc (bei mir läuft HM-IP und RFD) bei dir nicht verbindet. Bei inkorrekten Logindaten müsste zumindest eine Fehlermeldung zurück kommen. Also wäre das schon mal auszuschließen.
Hast du irgendwas spezielles in der HM-Firewall konfiguriert?
Grundsätzlich: Nach GitHub Installation Uploads der Adapter durchgeführt?
-
Grundsätzlich: Nach GitHub Installation Uploads der Adapter durchgeführt? `
natuerlich nicht. Mom
-
also nach upload sieht die Rega gleich aus:
hm-rega.1 2018-11-29 12:15:30.728 warn Got unexpected ID: hm-rega.1.1239 hm-rega.1 2018-11-29 12:15:30.552 warn Got unexpected ID: hm-rega.1.1238 hm-rega.1 2018-11-29 12:15:25.725 warn Got unexpected ID: hm-rega.1.1239 hm-rega.1 2018-11-29 12:15:25.559 warn Got unexpected ID: hm-rega.1.1238 hm-rega.1 2018-11-29 12:15:20.725 warn Got unexpected ID: hm-rega.1.1239 hm-rega.1 2018-11-29 12:15:20.553 warn Got unexpected ID: hm-rega.1.1238 hm-rega.1 2018-11-29 12:15:15.725 warn Got unexpected ID: hm-rega.1.1239 hm-rega.1 2018-11-29 12:15:15.552 warn Got unexpected ID: hm-rega.1.1238 hm-rega.1 2018-11-29 12:15:15.250 info ReGaHSS 192.168.1.3 up
das sind 2 Systemvariablen (Anwesenheit) die ich per ioBroker Script setze.
CuXD lass ich mal aus, bis Du Rueckmeldung von Uwe bekommst.
HM RPC verbindet sich nicht:
hm-rpc.2 2018-11-29 12:18:49.596 info xmlrpc client is trying to connect to 192.168.1.3:42001/ with ["http://192.168.1.19:12001","hm-rpc.2"] hm-rpc.2 2018-11-29 12:18:49.596 info xmlrpc server is trying to listen on 192.168.1.19:12001 hm-rpc.2 2018-11-29 12:18:49.321 info starting. Version 1.8.0 in /opt/iobroker/node_modules/iobroker.hm-rpc, node: v8.13.0 hm-rpc.2 2018-11-29 12:18:49.180 info States connected to redis: 127.0.0.1:6379
gleiche fuer HMIP
Edit…ah nun kam der Timeout:
hm-rpc.2 2018-11-29 12:21:29.970 error init error: Error: connect ETIMEDOUT 192.168.1.3:42001
Edit(h)2….in der Firewall hab ich oben den 8701 Port und unten mein gateway/router: 192.168.1.1 und den ioBroker 192.168.1.19 eingetragen.
-
Habe es parallel auf einem anderen System aufgesetzt und laufe auch in das Problem, also werde es mir heute anschauen.
Denke, die Logs von Rega kommen, da er Änderungen bekommt zu denen keine Instanz aktiv läuft.
-
wunderbar. dann stell ich mal wieder fix zurueck und warte auf Frohe Kundt von Dir
Danke nochmal, fuer Deinen Einsatz!
-
Es scheint irgendwie noch an den Sicherheitseinstellungen zu hapern:
Rufe ich die funktionale CCU auf unter:
https://<ip>:42001</ip>
kommt korrekterweise eine Abfrage der Credentials.
Bei der nicht funktionalen lädt er sich tot –> Timeout.
Funktionierende CCU:
# iptables -L -n | grep 2001 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:2001 state NEW ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:42001 state NEW
Nicht-funktionierende CCU:
# iptables -L -n | grep 2001 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:2001 state NEW
Über die UI sind sie identisch konfiguriert, intern anscheinend nicht.
-
hast Du eine CCU3 oder eine Raspberrymatic?
Evtl quatscht Du mal Jens an?
-
hast Du eine CCU3 oder eine Raspberrymatic?
Evtl quatscht Du mal Jens an? `
Problem schon gelöst, der Port muss anscheinend explizit in der Firewall freigegeben werden. Dann läuft es.
Bei meiner Ursprungsinstallation musste ich das nicht tun, allerdings hatte ich da auf die Version vom 24.11 und dann auf die vom 26.11 geupgradet, bei der anderen direkt 26.11 (könnte evtl zu den Inkonsistenzen zwischen den Systemen geführt haben).
Und kannst du bitte die CuxD Instanz ohne Authentifizierung konfigurieren und schauen ob dann alles läuft?
-
ich hab auch die Version vom 24.11. uebersprungen. Somit erklaerbar.
Das heisst ich muss 42001, 42010 und 48701 (sofern Du das mit CuXD hinbekommst) freigeben, wenn ich die Auth nutzen moechte?
Ich lass das nun aber erstmal auf normal, bis da was wegen CuXD rauskommt, da ich das schon gerne verwenden wuerde
-
ich hab auch die Version vom 24.11. uebersprungen. Somit erklaerbar.
Das heisst ich muss 42001, 42010 und 48701 (sofern Du das mit CuXD hinbekommst) freigeben, wenn ich die Auth nutzen moechte?
Ich lass das nun aber erstmal auf normal, bis da was wegen CuXD rauskommt, da ich das schon gerne verwenden wuerde `
Kannst du bitte die CuxD Instanz ohne Authentifizierung konfigurieren und schauen ob dann alles läuft? Also einfach den Haken bei Https weg in der CuxD Instanz.
Und für CuxD wird es dann weiterhin 8701 sein.
-
ok, funktioniert erstmal.
Alle Adapter sind gruen.
Habe gerade HMIP, HM und CUXD geschalten ausm ioBroker. Geht.
Bekam aber die Fehlermeldung der REGA:
hm-rega.1 2018-11-29 13:53:55.954 error CCU 192.168.1.3 unreachable hm-rega.1 2018-11-29 13:53:55.954 error post request error: connect ETIMEDOUT 192.168.1.3:48181
was soll denn auf 48181 laufen?
und ich bekomme weiterhin:
hm-rega.1 2018-11-29 13:52:45.725 warn Got unexpected ID: hm-rega.1.1239 hm-rega.1 2018-11-29 13:52:45.551 warn Got unexpected ID: hm-rega.1.1238
durch meine Scripte. Script aus = keine Meldung mehr.
Magst Du mal ein Script anlegen bei Dir, das eine CCU Systemvariable beschreibt und schauen, ob Du dann auch die Meldung bekommst?
-
Also 48181 ist der SSL Port der Rega selbst.
Ich habe Skripte laufen, allerdings habe ich keine hm-rpc CuxD Instanz.
Werde später weiter drüber schauen und auch im Frontend automatisch https unchecken und disablen wenn jemand auf bin-rpc umschaltet.
-
CUXD sollte allerdings beim direkten setzen von Systemvariablen gar nicht beteiligt sein?
OK, das heisst ich nehme den 48181 mal mit in die Firewall Regel auf…so langsam mach ich mir das System wieder auf
-
Naja der Port ist dann zugänglich, scheint allerdings so als wäre er das auch so. Trotzallem muss sich an der API authentifiziert werden.
Konnte es auf der anderen Installation nachstellen, lag wohl doch wieder daran dass der Rega Port auch in die CCU Firewall muss.
-
Frontend sollte nun bei bin-rpc automatisch HTTPS deaktivieren.
-
btw, nach dem 48181 Port in die Firewall bekomme ich auch kein WARN mehr durch die Systemvariable.
Was nun noch bei mir ist, dass in der Instanzeinstellung die Textboxen ueber den Ueberschriften liegen und erst mit einem Klick, die Ueberschrift dann ueber die Textbox wandert.