Ich habe bereits über meine Unifi-Installation geschrieben, die sich weiterhin bewährt.
Mit großer Freude habe ich gelesen, dass seit 23. August 2015 auch ein Unifi-Modul für fhem verfügbar ist! (Das Changelog sagt: „added: 74_Unifi.pm for the Ubiquiti Networks (UBNT) – Unifi Controller“)
Das muss ich gleich probieren! Einen Unifi-Controller habe ich laufen, jetzt möchte ich diesen mit fhem verbinden und anhand der Clients im WLAN die Anwesenheitserkennung von fhem nutzen.
Mittlerweile habe ich den Unifi Controller in Version 4.6.6 bei mir laufen. Von Version 3 zu Version 4 hat sich einiges geändert, auch in der Unifi API. Es ist daher verständlich, dass man die Versionnummer angeben muss. Gleichzeitig ist es toll, dass das fhem-Modul sowohl Version 3 als auch Version 4 unterstützt.
Ich habe für den Unifi-Zugriff aus fhem einen eigenen User „fhem“ mit „Read Only“-Berechtigung im Unifi Controller angelegt.
Der Zugriff von fhem war mit einer Zeile erledigt:
define myunifi Unifi 192.168.1.9 443 fhem geheim 30 default 4
Der Syntax lautet gemäß Perl Modul:
define <name> Unifi <ip> <port> <username> <password> [<interval> [<siteID> [<version>]]]
In der Commandref stehen auch die Details zur Nutzung des Moduls.
Die Standardwerte dafür sind:
- interval = 30 Sekunden
- siteID = default
- version = 4
Ich habe dennoch alles explizit angegeben. Damit hoffe ich, dass in zukünftigen Versionen keine Problem auftauchen (zB. sobald es Version 5 gibt, etc.).
Zuerst habe ich den angezeigten Namen vom Unifi-Controller meiner Site als siteID anzugeben. Damit habe ich keine Werte bekommen. Nach kurzer Suche habe ich die Fehlermeldung im Log gefunden:
myunifi (Unifi_GetClients_Receive) - Failed! - state:'error' - msg:'api.err.NoSiteContext' - This error indicates that the <siteID> in your definition is wrong. Try to modify your definition with <sideID> = default.
Folgender Hinweis hilft: in der URL des Controller sieht man, mit welcher siteID man verbunden ist, auch wenn diese einen anderen Namen trägt, der im Controller angezeigt wird:
Es hat dann sofort funktioniert: im „Unsorted“-Bereich habe ich nun das Objekt myunifi und alle verbundenen Endgeräte:Die Daten, die fhem vom Unifi Controller bezieht sind umfangreich und ermöglichen viele Anwendungen, auch außerhalb der Presence-Funktion. Hier die Details zu einem Client:
====================================== _id = 558XXXXXXXXXXXXXb85ae047 _is_guest_by_uap = false _last_seen_by_uap = 1441082804 _uptime_by_uap = 33149 ap_mac = 24:a4:XX:XX:XX:c3 assoc_time = 1441043174 authorized = true bssid = 2e:a4:XX:XX:XX:c3 bytes-r = 3 ccq = 991 channel = 7 essid = MeineSSID first_seen = 1435052270 hostname = android-bfeXXXXXXXXX9f0f idletime = 24 ip = 192.168.XXX.103 is_guest = false is_wired = false last_seen = 1441082804 latest_assoc_time = 1441049655 mac = 60:af:XX:XX:XX:e5 name = Stefan Samsung XXXX noise = -94 note = noted = false oui = SamsungE powersave_enabled = true qos_policy_applied = true radio = ng radio_proto = ng roam_count = 2 rssi = 40 rx_bytes = 1339759 rx_bytes-r = 3 rx_packets = 6309 rx_rate = 6000 signal = -54 site_id = 53ecXXXXXXXXXXXXXXX91e2a tx_bytes = 1905377 tx_bytes-r = 0 tx_packets = 5576 tx_power = 30 tx_rate = 72222 uptime = 39630 user_id = 55892XXXXXXXXXXXXX5ae047 usergroup_id = ======================================
neue & weitere Funktionen
Das Modul für Unifi ist neu im fhem. Es wird laufend weiterentwickelt, so wurde letzte Nacht wieder um Funktionen erweitert, zB:
- einen Client disconnecten,
- einen Access Point restarten
- die „Locate“-Funktion eines APs ein- & ausschalten (blinken)
- Alarme am Controller archivieren
Am besten behält man das fhem Changelog im Auge. Dort werden Änderungen & Erweiterungen protokolliert.