Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Dazu müsstest Du definieren, was realisieren heißt. Du hast halt kein DNS oder DHCP, wenn du keinen entsprechenden Lieferanten (Fritzbox, Pi, NAS,...) in dem jeweiligen VLAN hast. Aber für VLANs reichen switche alleine..
OFFTOPIC - mache wenn nötig gerne einen eigenen Thread auf.
Einfamilienhaus mit FritzBox 7590 (DNS & DHCP), 2x UniFiSwitche mit POE, 1x UAP AC Pro (reicht aktuell, haben eine recht offene Bauweise).
Vlans würde ich nutzen (wollen), um zB die 3x POE Außenkameras in ein eigenes Netz zu packen.
Hab noch meine Schwierigkeiten mit Git. (Hab zu viel CVS und SVN im Blut). Daher gibts noch keinen PR in den offiziellen Develop-Zweig.
EDIT: Hab doch nen Weg gefunden. PR 245.
Was geht:
- Items für Präsenz, IP und Hostname von Geräten (Präsenz OK, der Rest ist nur kopiert von AVM, Sinn hab ich nicht verstanden)
- Präsenzerkennung des Geräts an einem bestimmten AP (Wenn ich im Garten bin, ist mein Handy im Garten, dann kann die Heizung im Büro aus)
- Auslesen des Port-Profils eines Switches (Mehr fürs debuggen)
- Mapping von zwei Port-Profilen eines Switches auf Zustand an und aus. (Lesen und Setzen, Wenn Haustür abgeschlossen, dann LAN Dose außen aus)
- Auslesen und Setzen des "Disabled" Zustands eines AP. (Ist nötig damit der Controller nicht warnt, wenn der Kontakt zum AP verloren geht, weil der Port aus ist)
- Web-Interface gibt kurze Übersicht über die Items. Bei Problemen (Tippfehler in der MAC o.ä.) wird zum Item eine Fehlerbeschreibung auf einem zweiten Tab eingeblendet und nicht das Logfile zugemüllt.
- Ich habe eine Logik eingebaut, die Einstellungen wie MAC-Adressen oder Port-Profile vom jeweiligen Eltern-Item, oder höher liest. Es wird am Item selbst gestartet und dann zur Wurzel hin gesucht; Das was zuerst gefunden wird greift. Damit ist auch eine globale Einstellung möglich, die in den unteren Ebenen in Einzelfällen überschrieben wird. Das geht bestimmt auch eleganter, aber so funktionierts.
Zuletzt geändert von jentz1986; 29.05.2019, 11:28.
Bezüglich plugin.yaml: Ups, völlig vergessen! Hab Deine plugin.yaml von hier direkt in den PR gepackt... Andererseits hilft das Admin-Backend doch schon sehr, da sind genau diese Dinge dann aus dem Plugin selbst generiert sichtbar. Danke für den Hinweis!
ja der item Generator funktioniert super, wobei er nur die aktuellen Geräte verbundenen Geräte nimmt, nett wäre alle bekannten Geräte zu nehmen (da ist mir nämlich aufgefallen dass sich eine WLAN Steckdose ausgeklinkt hat ...)
wobei bei mir jetzt schon der erste Error kam:
Code:
2019-06-17 15:06:11 ERROR plugins.unifi.poll_unifi Method plugins.unifi.poll_unifi exception: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))
> Traceback (most recent call last):
> File "/usr/local/lib/python3.5/dist-packages/urllib3/connectionpool.py", line 601, in urlopen
> chunked=chunked)
> File "/usr/local/lib/python3.5/dist-packages/urllib3/connectionpool.py", line 387, in _make_request
> six.raise_from(e, None)
> File "<string>", line 2, in raise_from
> File "/usr/local/lib/python3.5/dist-packages/urllib3/connectionpool.py", line 383, in _make_request
> httplib_response = conn.getresponse()
> File "/usr/lib/python3.5/http/client.py", line 1198, in getresponse
> response.begin()
> File "/usr/lib/python3.5/http/client.py", line 297, in begin
> version, status, reason = self._read_status()
> File "/usr/lib/python3.5/http/client.py", line 266, in _read_status
> raise RemoteDisconnected("Remote end closed connection without"
> http.client.RemoteDisconnected: Remote end closed connection without response
During handling of the above exception, another exception occurred:
> Traceback (most recent call last):
> File "/usr/local/lib/python3.5/dist-packages/requests/adapters.py", line 449, in send
> timeout=timeout
> File "/usr/local/lib/python3.5/dist-packages/urllib3/connectionpool.py", line 639, in urlopen
> _stacktrace=sys.exc_info()[2])
> File "/usr/local/lib/python3.5/dist-packages/urllib3/util/retry.py", line 357, in increment
> raise six.reraise(type(error), error, _stacktrace)
> File "/usr/local/lib/python3.5/dist-packages/urllib3/packages/six.py", line 685, in reraise
> raise value.with_traceback(tb)
> File "/usr/local/lib/python3.5/dist-packages/urllib3/connectionpool.py", line 601, in urlopen
> chunked=chunked)
> File "/usr/local/lib/python3.5/dist-packages/urllib3/connectionpool.py", line 387, in _make_request
> six.raise_from(e, None)
> File "<string>", line 2, in raise_from
> File "/usr/local/lib/python3.5/dist-packages/urllib3/connectionpool.py", line 383, in _make_request
> httplib_response = conn.getresponse()
> File "/usr/lib/python3.5/http/client.py", line 1198, in getresponse
> response.begin()
> File "/usr/lib/python3.5/http/client.py", line 297, in begin
> version, status, reason = self._read_status()
> File "/usr/lib/python3.5/http/client.py", line 266, in _read_status
> raise RemoteDisconnected("Remote end closed connection without"
> urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))
During handling of the above exception, another exception occurred:
> Traceback (most recent call last):
> File "/usr/local/smarthome/lib/scheduler.py", line 522, in _task
> obj()
> File "/usr/local/smarthome/plugins/unifi/__init__.py", line 653, in poll_device
> self._poll_with_unifi_type(UniFiConst.TYPE_CL_PRESENT, lambda i: self._get_client_presence(i))
> File "/usr/local/smarthome/plugins/unifi/__init__.py", line 646, in _poll_with_unifi_type
> item(func(item), self.get_shortname())
> File "/usr/local/smarthome/plugins/unifi/__init__.py", line 653, in <lambda>
> self._poll_with_unifi_type(UniFiConst.TYPE_CL_PRESENT, lambda i: self._get_client_presence(i))
> File "/usr/local/smarthome/plugins/unifi/__init__.py", line 640, in _get_client_presence
> return self._model._api.get_client_presence(client_mac)
> File "/usr/local/smarthome/plugins/unifi/ubiquiti/unifi.py", line 343, in get_client_presence
> clnts = self.list_clients(filters={'mac': client_mac})
> File "/usr/local/smarthome/plugins/unifi/ubiquiti/unifi.py", line 159, in list_clients
> self._site))
> File "/usr/local/smarthome/plugins/unifi/ubiquiti/unifi.py", line 84, in _get_url
> r = self._session.get(url, verify=self._verify_ssl)
> File "/usr/local/lib/python3.5/dist-packages/requests/sessions.py", line 546, in get
> return self.request('GET', url, **kwargs)
> File "/usr/local/lib/python3.5/dist-packages/requests/sessions.py", line 533, in request
> resp = self.send(prep, **send_kwargs)
> File "/usr/local/lib/python3.5/dist-packages/requests/sessions.py", line 646, in send
> r = adapter.send(request, **kwargs)
> File "/usr/local/lib/python3.5/dist-packages/requests/adapters.py", line 498, in send
> raise ConnectionError(err, request=request)
> requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))
Ay karamba. OK: Weiterer Punkt zur Verbesserung des Error-Handling: In den Lambdas zur Abfrage von Daten ein try-except rein, damit der nicht für die eine Minute komplett durchrauscht.
Aber schon komisch, dass bei Dir die Verbindung zum Controller einfach mal mitten drin stirbt, den hab ich noch nicht geschafft...
Meine Armut kotzt mich an </OT> Unifi ist doch vor allem eins: Uni, also einheitlich. Wenn du wirklich ein 500W Netzteil haben möchtest und an ALLEN 48 Ports PoE brauchst, dann ist das das Richtige, sonst halt ohne PoE, oder weniger Ports, oder ne Kombination aus 16Port PoE und 48 Ports ohne, da selbst 24Port PoE + 48Port ohne günstiger ist als der 48 Port 500W... Siehe: https://store.ui.com/collections/rou...witching/unifi
Zuletzt geändert von jentz1986; 17.06.2019, 15:44.
jentz1986 thx! 48 port ist mandatory, da im haus mehr als 24 anschluesse und die kinder langsam ins richtige alter kommen, den alten netgear 24er zu ersetzen.
POE ist aber alles andere als mandatory. daher klingt die kombilösung gut! hatte das günstigere 48 port gerät auf amazon übersehen, werde aber vermutlich sowieso wo anders ordern, da ich kein retourengerät will
Hmmm. Also was ich gemacht habe, ist die exception zu fangen, und dann als error zu loggen. Danach geht es normal im Programm weiter. Wenn die Gegenseite nicht erreicht werden kann, was soll das Programm sonst tun? Den Fehler verschweigen fänd ich weniger gut...
Was wäre denn die Idee? Fehler fangen und erst, wenn er mehrfach auftritt loggen?
Wo laufen denn bei euch Controller und ShNg? Bei mir beides im Docker auf der gleichen Maschine und beides im Host-netz, ohne Routing dazwischen...
Das herunterfahren und aufhängen finde ich blöder. Ich mach mal n Setup auf nem Pi und dann schauen wir.
Ich denke, die Sache ist erledigt, sobald du in der Stop Methode ein try um das logout machst. So passt bei mir zumindest alles auch ohne Netzwerkverbindung.
Setup ist bei mir zum Testen aktuell Mac OS X. Und als ich da mal das WLAN aus hatte, kamen die Fehler.
smarthomeNG läuft (derzeit noch) auf einem Raspi 3:
SmartHomeNG Version:
1.6.e6399d8e.develop in /usr/local/smarthome - heads/develop
SmartHomeNG Plugins Version:
1.6a.ac7a8704.develop in /usr/local/smarthome/plugins - heads/develop
und der Unifi Controller läuft in Proxmox (Virtualisierungsbetriebssystem) auf einem HP Microserver Gen10 (x3421 mit 16GB Ram) in einem LXC Container (also quasi virtuelle Maschine mit vollem Zugriff auf das Hostsystem) mit nur dem Unifi Controller drauf
- alles im gleichen (dummen) Switch, alles per LAN angebunden
artner Wie oft kommt der Connection aborted Fehler im Log? Ist das alle x Versuche mal? Oder quasi in Dauerschleife? Ich finde das seltsam... Onkelandy Jo, mache ich so. Ich hab das jetzt getestet in dem ich die Controller-URL auf unsinn gestellt hab. Das bedeutet halt keine Connection.
EDIT 21:32: Code ist aktualisiert im PR
Zuletzt geändert von jentz1986; 20.06.2019, 20:34.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar