PhilippEngler / eufy-security-hm

AddOn for HomeMatic CCU and compatible devices to interact with eufy security devices.
MIT License
13 stars 2 forks source link

Status lässt sich nicht ändern #2

Closed RealWinny closed 3 years ago

RealWinny commented 3 years ago

Hallo, ich habe gerade das Problem, das sich der Status meiner Homebase nicht ändern lässt. Das Sytsem scheint verbunden zu sein (Homebase und alle Geräte werden im AddOn angezeigt) und alle Variablen sind grün, also vorhanden.

Beim Ändern des Status auf bspw. abwesend kommt eine Fehlermeldung (siehe Screenshot), die sich auf einem iPad übrigens auch nicht lesen lässt, da sie von der Fußzeile verdeckt wird, siehe Screenshot.

9C4AE2D4-692B-4291-A233-834FEAD2D129

Die Logdatei für Fehler meldet: 2021-01-24 20:26:45 - ERROR: setGuardMode: Timeout on address: 192.168.2.32

Was könnte da falsch laufen? Die IP passt, neueste Version des AddOns (1.0.1) ist installiert.

PhilippEngler commented 3 years ago

Ich habe es eben bei mir ausprobiert, hier funktioniert es. An diesem Mechanismus wurde auch keine Änderung in der Version 1.0.1 vorgenommen.

Den Timeout hatte ich immer dann, wenn die Firewall der CCU nicht komplett offen war - aber da es ja bereits funktioniert hat, dürfte das nicht der Fall sein.

Funktioniert eine Statusänderung über die eufy App?

Eventuell etwas warten (nicht das gerade ein Firmwareupdate o.ä, eingespielt wird) und die Base mal neu starten.

RealWinny commented 3 years ago

Ok, stimmt, es liegt tatsächlich an der Firewall. Wenn ich die Firewall-Richtlinie auf „Ports offen“ stelle, geht alles.

Jetzt bin ich aber echt verblüfft. Ich habe einige Ports auch für andere AddOns freigegeben und da gibt es keine Probleme. Bin ich blind und habe ich hier vielleicht einen Schreibfehler drin?

3EA892F2-A751-4AD7-AFFE-53DE92AC3111

RealWinny commented 3 years ago

Die Richtlinie steht zugleich auf „Ports blockiert“.

PhilippEngler commented 3 years ago

Die Einstellungen sind schon richtig so. Damit ist die API freigeschaltet und kann genutzt werden.

Um den Statuswechsel nutzen zu können, kommuniziert das Addon mit der HomeBase direkt (also nicht über die eufy Cloud API) - aber nur, wenn es eine Verbindung zu dieser aufbauen kann. Der dazu notwendige Verbindungsaufbau benutzt verschiedene Ports - deswegen muss (zur Zeit) die Firewall deaktiviert werden. Es muss die Richtlinie "Ports offen" eingestellt werden, wenn der Statuswechsel genutzt werden soll.

Das ist in der Readme im Bereich Notes noch nicht ganz eindeutig. Das werde ich noch umformulieren.

Vielen Dank für die Unterstützung und vor allem für die Rückmeldungen.

RealWinny commented 3 years ago

Uff, damit ist das Scheunentor aber natürlich offen. Siehst du zumindest mittelfristig eine Lösung, dass das selektive Portfreischalten genügt?

PhilippEngler commented 3 years ago

Ich habe es auf dem Plan stehen, aber ich bin mir nicht sicher, ob es sich ohne Seiteneffekte umsetzten lässt.

Das "Problem" besteht darin, dass die Verbindung erst aufgebaut wird, wenn die Kommunikation mit der HomeBase stattfindet. Dazu wird ein beliebiger, zu diesem Zeitpunkt unbenutzter Port genutzt. Die Firewall auf der CCU lässt zwar die Nutzung des Ports für die Kommunikation nach außen zu, aber nicht wieder zurück.

Wird ein fester Port genutzt, könnte dieser unter Umständen in dem Moment des Verbindungsaufbaus von einem anderen Prozess genutzt werden.

RealWinny commented 3 years ago

....von einem anderen Prozess genutzt werden.

Ich bin da jetzt nicht sonderlich tief in der Materie drin, aber was kommt als "anderer Prozess" in Frage? Ein anderer Prozess des AddOns oder ein gänzlich anderer Prozess, der auf der CCU abläuft?

PhilippEngler commented 3 years ago

Ein anderer Prozess des AddOns oder ein gänzlich anderer Prozess, der auf der CCU abläuft

Es spielen auch andere AddOns, Skripte, etc eine Rolle. Im Prinzip kann jeder Prozess, der auf der CCU ausgeführt wird, einen oder mehrere Ports belegen.

RealWinny commented 3 years ago

Mmh, ok. Wäre es nur ein Prozess dieses AddOns gewesen, hätte mal vielleicht mit einem Delay abwarten können, bis alles andere abgearbeitet ist. Aber macht dann wohl keinen Sinn.

Hier können wir auf alle Fälle zu machen. Den temporären Workaround gibt es ja. Aber vielleicht wäre es ja eine Option, im Bereich Discussions o.ä. das Thema neu einzustellen. Vielleicht hat irgendjemand eine Idee, wie man das mit den Ports lösen könnte.

PhilippEngler commented 3 years ago

In der v1.0.2 kann auf der Einstellungseite die Option Verbindung zur HomeBase lokal über feste Ports aufbauen aktiviert werden. Diese Option ist standardmäßig deaktiviert und es sind die beiden Ports eingetragen, die bereits für die API als TCP genutzt werden und somit in der Firewall bereits freigegeben sind.

Die dort eingetragenen Ports werden der Reihe nach durchprobiert. Ist der jeweilige Port bereits durch eine andere Anwendung belegt, wird automatisch der nächste Port genutzt.

Diese Option ist frei konfigurierbar. Sollen weitere oder andere Ports genutzt werden, können diese eingetragen werden (und müssen dann in der Firewall zusätzlich freigegeben werden).

RealWinny commented 3 years ago

Top! Klasse! Wird zeitnah getestet!