Neues Modul - 74_Unifi - Für den Ubiquiti Networks (UBNT) - Unifi Controller

Begonnen von rapster, 23 August 2015, 02:12:04

Vorheriges Thema - Nächstes Thema

Pi_Newbie

Hallo zusammen,

ich hoffe es kann mir jemand hier helfen, da ich es einfach nicht schaffe das Unifi-Modul zur Anwesenheitserkennung zu nutzen.

Das Unifi-Modul als solches funktioniert. Im UnifiController ist z.B. mein persönliches Mobilgerät mit dem Alias "myHandy" versehen.

Somit wird "myHandy" auch im Unifi-Modul (innerhalb fhem) korrekt erkannt, siehe:myHandy_accesspoint
Access Point Erdgeschoss
2017-11-02 19:34:58
myHandy_hostname
Samsung-Galaxy-S7
2017-11-02 19:34:58
myHandy_last_seen
2017-11-02 19:34:49
2017-11-02 19:34:58
myHandy_uptime
132


Wie müsste das korrekte define in fhem lauten, damit ein "Connect/Disconnect" auch zur Anwesenheitserkennung genutzt werden kann. Weder die function noch event Variante aus dem wiki war bei mir erfolgreich!

Vielen Dank an alle!
Pi3 mit Jessie lite, KNX-Installation

Benny33

Moin zusammen,

ich steh auf dem Schlauch warum funktioniert dieses bei mir nicht
function { ((ReadingsVal("UniFi","Samsung-Galaxy-S7","") eq "connected") and (index(ReadingsVal("Unifi","Samsung-Galaxy-S7_accesspoint",""), "AP ")) != -1) ? 1 : 0}

wohingegen dieses funktioniert
function {ReadingsVal('UniFi','Samsung-Galaxy-S7','"') eq "connected" ? 1:0}

Danke Benny




Eisix

Hallo,

DOIF

([Unifi:Handy] eq "connected") (set rr_bewohner  home) DOELSE (set rr_bewohner absent)


Gruß
Eisix

Wuehler

@Benny: Typo, einmal Unifi mit kleinem f, sonst mit großem F.

@Pi_Newbie: welches define funktioniert denn konkret nicht richtig?

Benny33

@Wuehler
Das hatte ich auch zuerst auch vermutet, aber das ändern hilft nichts. Es funktioniert weiterhin nicht.
function { ((ReadingsVal("UniFi","Samsung-Galaxy-S7","") eq "connected") and (index(ReadingsVal("UniFi","Samsung-Galaxy-S7_accesspoint",""), "AP ")) != -1) ? 1 : 0}
presence und state bleibt auf absent.

hierbei sind die readings presence und state auf present bzw. auf absent wenn wlan am handy ausgeschaltet wird
function {ReadingsVal('UniFi','Samsung-Galaxy-S7','') eq "connected" ? 1:0}

Gruß Benny

DerBodo

Wie sind denn deine AccessPoints benannt ?
Der Filter in "AP " muss natürlich passen, sonst bekommt er immer ein "false" zurück.

Pi_Newbie

Hallo,

@Wuehler: Ich habe folgende zwei defines eingetragen.

define Anwesenheit_Mobil1 PRESENCE function {ReadingsVal("<UniFi>","MyHandy","") eq "connected" ? 1:0}

define Anwesenheit_Mobil2 PRESENCE event UniFi:MyHandy:.disconnected UniFi:MyHandy:.connected



  • Das "event"-define zeigt ein permanentes "absent". Egal ob ich via WLAN verbunden bin oder nicht. Das "unifi-modul" jedoch registriert sofort wenn ich das WLAN deaktiviere.
  • Das "function"-define zeigt ein "initialised" oder ???.

Ich gehe davon aus, dass ich einen Fehler im define habe, erkenne leider nur nicht wo.

Besten Dank für die Hilfe!

Pi3 mit Jessie lite, KNX-Installation

Wuehler

Heisst dein Unifi-device wirklich ,,<UniFi>" oder nur ,,UniFi"?
Habe PRESENCE bisher nicht genutzt, da nicht alle ein Handy haben bei uns. Aber mit function hat es bei mir sofort funktioniert.

Pi_Newbie

@Wuehler: genau dort lag der Fehler! Die Klammern habe ich bestimmt 100x mal überlesen! Sorry, aber trotzdem danke!

@alle: Ich habe soeben verschiedene Automatiken mit der Anwesenheitserkennung und "unifi" verknüpft. Gibt es eine Möglichkeit die "Connected/Disconnected"-Erkennung zu beschleunigen? Aktuell benötigt das Modul ja ca. 10Minuten bis es ein z.B. Disconnect registriert.

Wenn ich jedoch mit dem Auto in die Garage fahre, das Handy sich ins WLAN einwählt soll im Flur das Licht eingeschaltet werden. Durch die extrem verzögerte Erkennung macht die Funktion momentan wenig Sinn.

Jemand eine Idee wie man das beschleunigen kann?

Vielen Dank für Eure Hilfe!!!
Pi3 mit Jessie lite, KNX-Installation

Wuehler

Hallo Pi,

manchmal übersieht man sowas   :D kein Problem.

Wegen der disconnect-Zeit: das kommt von der Controller-Software. Manche Versionen machen das nach 5, andere nach 10 Minuten. Auf Seite 1 dieses Threads ist eine Umsetzung auf Basis des last_seen readings dargestellt.
Wegen der connect-Zeit: das Unifi-Modul fragt regelmäßig den Controller nach aktuellen Daten ab. Die Zeit hast du im Define des Moduls festgelegt. Vermutlich 30 Sekunden. D.h. Wenn du Pech hast erkennt fhem erst 30 Sekunden später, dass dein handy im wlan ist. Je nachdem wo dein Controller und dein fhem läuft kannst du versuchen die Zeit zu reduzieren. Wenn beide auf demselben RasPi sind dann lass es lieber.
Kannst du nicht das Öffnen des Garagentors in fhem erkennen?

Gruß,
Wuehler

Eisix

@Pi

Mit presence kannst du einen Ping auf die IP des Handys machen zb alle 30 sec. IP im DHCP fest vergeben.

Gruß
Eisix

Roli1606

Hallo Ich habe ständig Probleme mit Freez Meldungen im Log. Hab schon einiges Probiert an Optimierungen (glaube von Seite 17  in diesem Thread mongo DB verkleinert) am Unifi Server. Oder auch auch das Update auf nur Client beschränkt damit mein Cubietruck nicht so viel Arbeit hat. Dazu habe ich in der 74_Unifi.pm folgendes auskommentiert. Leider alles ohne Erfolg.

if (Unifi_CONNECTED($hash)) {
        $hash->{unifi}->{updateStartTime} = time();
        $hash->{updateDispatch} = {  # {updateDispatch}->{callFn}[callFnRef,'receiveFn',receiveFnRef]
            Unifi_GetClients_Send => [\&Unifi_GetClients_Send,'Unifi_GetClients_Receive',\&Unifi_GetClients_Receive],
            #Unifi_GetAccesspoints_Send => [\&Unifi_GetAccesspoints_Send,'Unifi_GetAccesspoints_Receive',\&Unifi_GetAccesspoints_Receive],
            #Unifi_GetWlans_Send => [\&Unifi_GetWlans_Send,'Unifi_GetWlans_Receive',\&Unifi_GetWlans_Receive],
            #Unifi_GetUnarchivedAlerts_Send => [\&Unifi_GetUnarchivedAlerts_Send,'Unifi_GetUnarchivedAlerts_Receive',\&Unifi_GetUnarchivedAlerts_Receive],
            #Unifi_GetEvents_Send => [\&Unifi_GetEvents_Send,'Unifi_GetEvents_Receive',\&Unifi_GetEvents_Receive],
            # Unifi_GetWlanGroups_Send => [\&Unifi_GetWlanGroups_Send,'Unifi_GetWlanGroups_Receive',\&Unifi_GetWlanGroups_Receive],
            #Unifi_GetHealth_Send => [\&Unifi_GetHealth_Send,'Unifi_GetHealth_Receive',\&Unifi_GetHealth_Receive],
            Unifi_ProcessUpdate   => [\&Unifi_ProcessUpdate,''],
        };
        Unifi_NextUpdateFn($hash,$self);
    }



Hier mal ein Auszug aus dem FHEM Log Die ersten Zeilen sind mit verbose0 danach mit Verbose5
2017.11.13 09:26:23 1: Perfmon: possible freeze starting at 09:26:22, delay is 1.418
2017.11.13 09:26:55 1: Perfmon: possible freeze starting at 09:26:54, delay is 1.075
2017.11.13 09:28:30 1: Perfmon: possible freeze starting at 09:28:29, delay is 1.188
2017.11.13 09:30:05 1: Perfmon: possible freeze starting at 09:30:04, delay is 1.373
2017.11.13 09:30:37 1: Perfmon: possible freeze starting at 09:30:36, delay is 1.055
2017.11.13 09:31:40 1: Perfmon: possible freeze starting at 09:31:39, delay is 1.392
2017.11.13 09:32:12 1: Perfmon: possible freeze starting at 09:32:11, delay is 1.026
2017.11.13 09:33:15 1: Perfmon: possible freeze starting at 09:33:14, delay is 1.276
2017.11.13 09:34:50 1: Perfmon: possible freeze starting at 09:34:49, delay is 1.333
2017.11.13 09:36:25 1: Perfmon: possible freeze starting at 09:36:24, delay is 1.246
2017.11.13 09:38:00 1: Perfmon: possible freeze starting at 09:37:59, delay is 1.23
2017.11.13 09:38:30 5: Ubiquiti (Unifi_DoUpdate) - executed.
2017.11.13 09:38:30 5: Ubiquiti (Unifi_GetClients_Send) - executed.
2017.11.13 09:38:32 5: Ubiquiti (Unifi_GetClients_Receive) - executed.
2017.11.13 09:38:32 5: Ubiquiti (Unifi_GetClients_Receive) - state:'ok'
2017.11.13 09:38:32 5: Ubiquiti (Unifi_ProcessUpdate) - executed after 1.7571 seconds.
2017.11.13 09:38:32 5: Ubiquiti (Unifi_SetHealthReadings) - executed.
2017.11.13 09:38:32 5: Ubiquiti (Unifi_SetClientReadings) - executed.
2017.11.13 09:38:32 5: Ubiquiti (Unifi_SetAccesspointReadings) - executed.
2017.11.13 09:38:32 5: Ubiquiti (Unifi_ProcessUpdate) - finished after 1.7983 seconds.
2017.11.13 09:38:39 5: Ubiquiti: set called with update
2017.11.13 09:38:39 4: Ubiquiti: set update
2017.11.13 09:38:39 5: Ubiquiti (Unifi_DoUpdate) - executed.
2017.11.13 09:38:39 5: Ubiquiti (Unifi_GetClients_Send) - executed.
2017.11.13 09:38:41 5: Ubiquiti (Unifi_GetClients_Receive) - executed.
2017.11.13 09:38:41 5: Ubiquiti (Unifi_GetClients_Receive) - state:'ok'
2017.11.13 09:38:41 5: Ubiquiti (Unifi_ProcessUpdate) - executed after 1.5352 seconds.
2017.11.13 09:38:41 5: Ubiquiti (Unifi_SetHealthReadings) - executed.
2017.11.13 09:38:41 5: Ubiquiti (Unifi_SetClientReadings) - executed.
2017.11.13 09:38:41 5: Ubiquiti (Unifi_SetAccesspointReadings) - executed.
2017.11.13 09:38:41 5: Ubiquiti (Unifi_ProcessUpdate) - finished after 1.5411 seconds.
2017.11.13 09:39:11 5: Ubiquiti (Unifi_DoUpdate) - executed.
2017.11.13 09:39:11 5: Ubiquiti (Unifi_GetClients_Send) - executed.
2017.11.13 09:39:12 5: Ubiquiti (Unifi_GetClients_Receive) - executed.
2017.11.13 09:39:12 5: Ubiquiti (Unifi_GetClients_Receive) - state:'ok'
2017.11.13 09:39:12 5: Ubiquiti (Unifi_ProcessUpdate) - executed after 1.4249 seconds.
2017.11.13 09:39:12 5: Ubiquiti (Unifi_SetHealthReadings) - executed.
2017.11.13 09:39:12 5: Ubiquiti (Unifi_SetClientReadings) - executed.
2017.11.13 09:39:12 5: Ubiquiti (Unifi_SetAccesspointReadings) - executed.
2017.11.13 09:39:12 5: Ubiquiti (Unifi_ProcessUpdate) - finished after 1.4576 seconds.
2017.11.13 09:39:42 5: Ubiquiti (Unifi_DoUpdate) - executed.
2017.11.13 09:39:42 5: Ubiquiti (Unifi_GetClients_Send) - executed.
2017.11.13 09:39:43 5: Ubiquiti (Unifi_GetClients_Receive) - executed.
2017.11.13 09:39:43 5: Ubiquiti (Unifi_GetClients_Receive) - state:'ok'
2017.11.13 09:39:43 5: Ubiquiti (Unifi_ProcessUpdate) - executed after 1.4553 seconds.
2017.11.13 09:39:43 5: Ubiquiti (Unifi_SetHealthReadings) - executed.
2017.11.13 09:39:43 5: Ubiquiti (Unifi_SetClientReadings) - executed.
2017.11.13 09:39:43 5: Ubiquiti (Unifi_SetAccesspointReadings) - executed.
2017.11.13 09:39:43 5: Ubiquiti (Unifi_ProcessUpdate) - finished after 1.4887 seconds.
2017.11.13 09:40:13 5: Ubiquiti (Unifi_DoUpdate) - executed.
2017.11.13 09:40:13 5: Ubiquiti (Unifi_GetClients_Send) - executed.
2017.11.13 09:40:15 1: Perfmon: possible freeze starting at 09:40:14, delay is 1.38
2017.11.13 09:40:15 5: Ubiquiti (Unifi_GetClients_Receive) - executed.
2017.11.13 09:40:15 5: Ubiquiti (Unifi_GetClients_Receive) - state:'ok'
2017.11.13 09:40:15 5: Ubiquiti (Unifi_ProcessUpdate) - executed after 1.4242 seconds.
2017.11.13 09:40:15 5: Ubiquiti (Unifi_SetHealthReadings) - executed.
2017.11.13 09:40:15 5: Ubiquiti (Unifi_SetClientReadings) - executed.
2017.11.13 09:40:15 5: Ubiquiti (Unifi_SetAccesspointReadings) - executed.
2017.11.13 09:40:15 5: Ubiquiti (Unifi_ProcessUpdate) - finished after 1.4500 seconds.
2017.11.13 09:40:45 5: Ubiquiti (Unifi_DoUpdate) - executed.
2017.11.13 09:40:45 5: Ubiquiti (Unifi_GetClients_Send) - executed.
2017.11.13 09:40:46 5: Ubiquiti (Unifi_GetClients_Receive) - executed.
2017.11.13 09:40:46 5: Ubiquiti (Unifi_GetClients_Receive) - state:'ok'
2017.11.13 09:40:46 5: Ubiquiti (Unifi_ProcessUpdate) - executed after 1.4365 seconds.
2017.11.13 09:40:46 5: Ubiquiti (Unifi_SetHealthReadings) - executed.
2017.11.13 09:40:46 5: Ubiquiti (Unifi_SetClientReadings) - executed.
2017.11.13 09:40:46 5: Ubiquiti (Unifi_SetAccesspointReadings) - executed.
2017.11.13 09:40:46 5: Ubiquiti (Unifi_ProcessUpdate) - finished after 1.4662 seconds.
2017.11.13 09:41:16 5: Ubiquiti (Unifi_DoUpdate) - executed.
2017.11.13 09:41:16 5: Ubiquiti (Unifi_GetClients_Send) - executed.
2017.11.13 09:41:18 1: Perfmon: possible freeze starting at 09:41:17, delay is 1.328
2017.11.13 09:41:18 5: Ubiquiti (Unifi_GetClients_Receive) - executed.
2017.11.13 09:41:18 5: Ubiquiti (Unifi_GetClients_Receive) - state:'ok'
2017.11.13 09:41:18 5: Ubiquiti (Unifi_ProcessUpdate) - executed after 1.5892 seconds.
2017.11.13 09:41:18 5: Ubiquiti (Unifi_SetHealthReadings) - executed.
2017.11.13 09:41:18 5: Ubiquiti (Unifi_SetClientReadings) - executed.
2017.11.13 09:41:18 5: Ubiquiti (Unifi_SetAccesspointReadings) - executed.
2017.11.13 09:41:18 5: Ubiquiti (Unifi_ProcessUpdate) - finished after 1.7443 seconds.
2017.11.13 09:41:48 5: Ubiquiti (Unifi_DoUpdate) - executed.
2017.11.13 09:41:48 5: Ubiquiti (Unifi_GetClients_Send) - executed.
2017.11.13 09:41:50 1: Perfmon: possible freeze starting at 09:41:49, delay is 1.071
2017.11.13 09:41:50 5: Ubiquiti (Unifi_GetClients_Receive) - executed.
2017.11.13 09:41:50 5: Ubiquiti (Unifi_GetClients_Receive) - state:'ok'
2017.11.13 09:41:50 5: Ubiquiti (Unifi_ProcessUpdate) - executed after 1.4513 seconds.
2017.11.13 09:41:50 5: Ubiquiti (Unifi_SetHealthReadings) - executed.
2017.11.13 09:41:50 5: Ubiquiti (Unifi_SetClientReadings) - executed.
2017.11.13 09:41:50 5: Ubiquiti (Unifi_SetAccesspointReadings) - executed.
2017.11.13 09:41:50 5: Ubiquiti (Unifi_ProcessUpdate) - finished after 1.6108 seconds.
2017.11.13 09:42:20 5: Ubiquiti (Unifi_DoUpdate) - executed.
2017.11.13 09:42:20 5: Ubiquiti (Unifi_GetClients_Send) - executed.
2017.11.13 09:42:21 5: Ubiquiti (Unifi_GetClients_Receive) - executed.
2017.11.13 09:42:21 5: Ubiquiti (Unifi_GetClients_Receive) - state:'ok'
2017.11.13 09:42:21 5: Ubiquiti (Unifi_ProcessUpdate) - executed after 1.4371 seconds.
2017.11.13 09:42:21 5: Ubiquiti (Unifi_SetHealthReadings) - executed.
2017.11.13 09:42:21 5: Ubiquiti (Unifi_SetClientReadings) - executed.
2017.11.13 09:42:21 5: Ubiquiti (Unifi_SetAccesspointReadings) - executed.
2017.11.13 09:42:21 5: Ubiquiti (Unifi_ProcessUpdate) - finished after 1.4655 seconds.
2017.11.13 09:42:51 5: Ubiquiti (Unifi_DoUpdate) - executed.
2017.11.13 09:42:51 5: Ubiquiti (Unifi_GetClients_Send) - executed.
2017.11.13 09:42:53 1: Perfmon: possible freeze starting at 09:42:52, delay is 1.134
2017.11.13 09:42:53 5: Ubiquiti (Unifi_GetClients_Receive) - executed.
2017.11.13 09:42:53 5: Ubiquiti (Unifi_GetClients_Receive) - state:'ok'
2017.11.13 09:42:53 5: Ubiquiti (Unifi_ProcessUpdate) - executed after 1.4570 seconds.
2017.11.13 09:42:53 5: Ubiquiti (Unifi_SetHealthReadings) - executed.
2017.11.13 09:42:53 5: Ubiquiti (Unifi_SetClientReadings) - executed.
2017.11.13 09:42:53 5: Ubiquiti (Unifi_SetAccesspointReadings) - executed.
2017.11.13 09:42:53 5: Ubiquiti (Unifi_ProcessUpdate) - finished after 1.6136 seconds.
2017.11.13 09:43:23 5: Ubiquiti (Unifi_DoUpdate) - executed.
2017.11.13 09:43:23 5: Ubiquiti (Unifi_GetClients_Send) - executed.
2017.11.13 09:43:24 5: Ubiquiti (Unifi_GetClients_Receive) - executed.
2017.11.13 09:43:24 5: Ubiquiti (Unifi_GetClients_Receive) - state:'ok'
2017.11.13 09:43:24 5: Ubiquiti (Unifi_ProcessUpdate) - executed after 1.5346 seconds.
2017.11.13 09:43:24 5: Ubiquiti (Unifi_SetHealthReadings) - executed.
2017.11.13 09:43:24 5: Ubiquiti (Unifi_SetClientReadings) - executed.
2017.11.13 09:43:24 5: Ubiquiti (Unifi_SetAccesspointReadings) - executed.
2017.11.13 09:43:24 5: Ubiquiti (Unifi_ProcessUpdate) - finished after 1.5618 seconds.
2017.11.13 09:43:54 5: Ubiquiti (Unifi_DoUpdate) - executed.
2017.11.13 09:43:54 5: Ubiquiti (Unifi_GetClients_Send) - executed.
2017.11.13 09:43:56 1: Perfmon: possible freeze starting at 09:43:55, delay is 1.358
2017.11.13 09:43:56 5: Ubiquiti (Unifi_GetClients_Receive) - executed.
2017.11.13 09:43:56 5: Ubiquiti (Unifi_GetClients_Receive) - state:'ok'
2017.11.13 09:43:56 5: Ubiquiti (Unifi_ProcessUpdate) - executed after 1.4252 seconds.
2017.11.13 09:43:56 5: Ubiquiti (Unifi_SetHealthReadings) - executed.
2017.11.13 09:43:56 5: Ubiquiti (Unifi_SetClientReadings) - executed.
2017.11.13 09:43:56 5: Ubiquiti (Unifi_SetAccesspointReadings) - executed.
2017.11.13 09:43:56 5: Ubiquiti (Unifi_ProcessUpdate) - finished after 1.4549 seconds.
2017.11.13 09:44:17 3: CUL_HM set Zwi_Steck_Flur statusRequest
2017.11.13 09:44:26 5: Ubiquiti (Unifi_DoUpdate) - executed.


Was mir auffällt ist das die Freezer immer nach diesem Eintrag kommen 2017.11.13 09:42:51 5: Ubiquiti (Unifi_GetClients_Send) - executed.

Hat noch jemand eine Idee was ich probieren kann?

Unifi und Fhem laufen parallel auf einem Cubietruck.
Cubietruck mit Stefanius Image
FHEM 5.8
HMLAN
und CUL

Wuehler

Hi,
Versuch mal das Aktualisierungsinterval in der def des Unifi-Devices zu verlängern (von 30 auf 60 Sekunden).
Wie sieht denn ein top auf dem cubietruck aus? Nutzt Java (und damit vermutlich der Unifi-Controller) viele Ressourcen?

Roli1606

Ja alle ca 30 sec. geht die auslastung auf ca. 60% bis 80%. Mir würde es ja reichen wenn mir in fhem nur die wlan Geräte gezeigt werden kann ich da vielleicht noch Leistung einsparen irgendwie? den intervall auf 60 sec zu stellen finde ich icht so optimal da ich die anwesenheitserkennung damit machen möchte. ist dann etwas lang.


Also ein ändern des abruf intervalls ändert die häufigkeit der Freezer im Log und auch die auslastung im htop.
Cubietruck mit Stefanius Image
FHEM 5.8
HMLAN
und CUL

Wuehler

Bei mir lief bis vor kurzem auch fhem und Unifi auf einem RasPi. Führte dazu, dass man bei Nutzung von automatisierten Funktionen  ab und an (wenn er das Refresh-Interval getroffen hat) recht lange auf Feedback gewartet hat. Jetzt habe ich nen eigenen RasPi für Unifi und alles läuft flüssiger.