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

Wuehler

Hi Maui,

Nein, habe lange nichts geändert im Modul. Worum geht es genau? Hast du ein List deines Devices?

VG,
Dirk

Maui

Moin Dirk, was brauchst du denn genau? Will zb nicht crypt und auch nicht alle mac Adressen im Forum stehen haben.
Müsstest du aber denke ich relativ leicht nachbauen können, indem du einfach die Readings eines disconnected Devices löscht in fhem und auf das Update wartest


Internals:
   DEF        192.168.1.198 8443 crypt:xxxx crypt:xxx 10
   FUUID      5cde9019-f33f-f22a-b901-d10927df52aa2d9b
   LASTInputDev myunifi
   MSGCNT     416285
   NAME       myunifi
   NOTIFYDEV  global
   NR         61
   NTFY_ORDER 50-myunifi
   STATE      connected
   TYPE       Unifi
   UC_VERSION 5.12.35
   VERSION    3.4.0
   myunifi_MSGCNT 416285
   myunifi_TIME 2020-01-21 08:25:57
   OLDREADINGS:
   READINGS:
.....
     2020-01-21 08:25:57   3D_Drucker      disconnected
     2020-01-21 08:25:57   3D_Drucker__f_last_seen_duration 0d 2h 19m 28s
     2020-01-21 08:25:57   3D_Drucker_last_seen 1579583189
     2020-01-21 08:25:57   3D_Drucker_mac  dc:4f:22:ea:1a:4e
......
Attributes:
   customClientReadings .:^mac$|^ip$|^_f_last_seen_duration$|^last_seen$|^rssi$|^essid$
   event-on-change-reading .*
   room       9_Tech

Ich habe im groben den Code genommen, den du selbst mal gepostet hast, um die Readings zu löschen. Beim nächsten update sind diese dann aber fröhlich wieder da.



sub OldReadings_Unifi()
{
my $hash = $defs{'myunifi'};
my $readings = $hash->{READINGS};
foreach my $a ( keys %{$readings} )
{
    if ($a =~ m/_last_seen$/)
    {
        my $differenz = time() - ReadingsVal('myunifi',$a,"");
        if ($differenz > 3600)
        {
           my $dev_name = substr($a,0,length($a)-10);
            Log3( 'myunifi', 0,"Reading : $dev_name $differenz" );
            fhem("deletereading myunifi $dev_name ");
            fhem("deletereading myunifi ".$dev_name."_.*");

        }
    }
}
}

Wuehler

Moin,
Es werden die Readings angezeigt (sofern vorhanden), die du bei customClientReadings anforderst. Ein disconnectedClient ist immer noch ein Client und wird vom UnifiController mitgesendet.
VG, Dirk

Maui

Moin Dirk,

jetzt habe ich aber grad einen Knoten im Kopf.  ::)
Vielleicht kannst du ihn ja lösen.
Wir hatten hier (damals) ab Post #920 über das Thema gesprochen und du in Post #931 ein Notify reingestellt.
So wie ich dich heute verstehe, kann das gar nicht funktionieren?!

Irgendwann müsste der Unifi Controller doch die Clients vergessen...

Gruß und Danke
Maui

Wolle02

Moin Dirk,

ich habe mir ein USG zugelegt, wobei das USG die Einwahl ins Internet übernimmt. In den Readings des Unifi-Moduls habe ich gesehen, dass auch drei neue Readings hinzugefügt wurden für Clients, Locate und State.
Wenn die Internetverbindung getrennt wird bleibt der State aber weiterhin auf ok, obwohl im Controller das WAN Interface des USG als disconnected angezeigt wird.
Gibt es eine Möglichkeit den WAN Status auch in das Modul zu integrieren oder teilt das der Controller gar nicht mit?

Gruß
Wolle

Wuehler

@Maui: vor einiger Zeit gab es mal ein Update, in dem auch die disconnected clients aus der Historie ausgelesen werden. Vermutlich geht dein Script seit dem nicht mehr.

@Wolle: Es gibt das Reading -UC_wan_ip. Vielleicht kannst du das nutzen.

Wolle02

Zitat von: Wuehler am 30 Januar 2020, 08:44:55
Es gibt das Reading -UC_wan_ip. Vielleicht kannst du das nutzen.

Leider bleibt das Reading trotz Verlust der Internetverbindung auf der alten IP Adresse stehen, bis eine neue WAN IP Adresse zugewiesen wird. Erst dann wird das Reading aktualisiert.
Eine zuverlässige Prüfung der Internetverfügbarkeit ist so mit dem Reading wohl leider nicht durchführbar.

Fs79

Hallo,

ich habe hier eine Unifi Dream Machine. Auf der läuft ein Controller, ein Switch und ein AP.
In der neuesten Software läuft der Controller auf der IP/network also in etwa so.
http://10.10.10.1/network/ und dann site etc.

Kann man das Modul anpassen das es auch mit dem neuen Controller läuft auf der UDM läuft?
Bin auch gern bereit zu testen.

VG
Frank

Motivierte linke Hände

Hallo,

ich habe das Problem, dass derzeit der Status für einen Client bei mir zwischen dem Unifi Modul und dem Controller auseinanderfällt.

Das Modul in fhem meldet:

iPhone-11-Pro connected 2020-02-03 10:42:57

während der Controller es als disconnected anzeigt.

Ich habe dann mal ein

set unifi updateClient iPhone-11-Pro

versucht. Das gab mit verbose 5 einiges an kB an Logfile, wobei das Interessante für mich ist, dass in dem Logfile zwar Daten von Tonnen an verbundenen Geräten kommen (seit ich einen Unifi Flex habe, werden auch immer alle kabelgebundenen Geräte gezeigt, und das sind eine Menge), aber dieses Gerät (Status derzeit: Disconnected) tauchte darin gar nicht auf.

Dann habe ich weitergeschaut und festgestellt, dass ich, nach Integration des Unifi Flex, das Attribut

attr unifi ignoreWiredClients 1

gesetzt hatte, um die Tonnen an Gerätereadings im unifi-Device wieder loszuwerden, die ich für nichts brauche. Ein

get unifi clientData iPhone-11-Pro

allerdings zeigt dann interessanterweise:

======================================
[...]
is_wired = 1
[...]
======================================


Erfolgt diese Zuordnung durch das FHEM Modul Unifi? Falls ja, gibt es da irgendwo noch was, was man verbessern könnte. Ich bin im Bedarfsfall gerne beim Debuggen behilflich.

Bis dahin hat ein Löschen des Attributes mein Problem gelöst, um für alle WLAN-Clients im Netz Daten zu bekommen.
FHEM 6 in einer KVM VM mit Ubuntu
HM-CFG-USB2, 2xHM-CFG-HMLAN, HM-HMUARTLGW mit 100+ HomeMatic Devices, Geofencing, Fritzbox, Unifi, HUE, Harmony-Hub, Denon-Receiver-Modul, Calendar, GardenaSmartDevice, Shelly, MQTT (zigbee2mqtt, Tasmota und Shelly) und ein wenig 1Wire.

Wuehler

@fs79: ich vermute, das könnte einfach gehen. Bin aber privat und beruflich gerade sehr eingespannt und komme eher nicht dazu.

@linke Hände: das alles erinnert mich an das übliche Verhalten des Controllers (ohne alles genau durchdacht zu haben). Der sendet einen wifi-Client nach dem disconnect noch 5 Minuten als wired Client mit. Warte also mal etwas länger.

Motivierte linke Hände

@Wuehler: Um 14:10 Uhr, als ich meine Nachricht schrieb, zeigte das Reading, wie unten geschrieben "last seen 10:42 Uhr" und "connected". Nach dem Löschen des Attributs passte es sofort wieder.

Ich habe das Unifi-Modul schon seit Jahren hier laufen, ich kenne die Verzögerung. :)
FHEM 6 in einer KVM VM mit Ubuntu
HM-CFG-USB2, 2xHM-CFG-HMLAN, HM-HMUARTLGW mit 100+ HomeMatic Devices, Geofencing, Fritzbox, Unifi, HUE, Harmony-Hub, Denon-Receiver-Modul, Calendar, GardenaSmartDevice, Shelly, MQTT (zigbee2mqtt, Tasmota und Shelly) und ein wenig 1Wire.

popy

Hatte heute auch ein komisches Thema dass der State zwischen fhem modul und controller nicht passte.
Er ging bei einem Client einfach nicht auf connected obwohl der controller connected anzeigte.
Habe jetzt ein "clear all" gemacht und nun ist alles korrekt.
Mal schauen ob es geholfen hat...

Hatte sonst auch noch nie Probleme mit dem Modul außer dieses eine Problem heute.

pOpY

Motivierte linke Hände

So, habe das mal getest: "is_wired" geht auf 1, wenn das Telefon mit einem AP verbunden ist, der hinter einem Unifi Switch (hier Flex) steht.

Also:

[Controller] -----> [AP] -----> Telefon => is_wired = 0
[Controller] -----> [Switch] ------> [AP] ------> Telefon => is_wired = 1


Deswegen darf ich

attr unifi ignoreWiredClients 1

nicht setzen, auch wenn ich nur WLAN-Geräte abfragen will, weil WLAN-Geräte, wie oben beschrieben, in manchen Szenarien als "wired" erkannt werden.

@Wuehler: Ich nehme mal nicht an, dass Du daran was ändern kannst? Sollte man das vielleicht dokumentieren?
FHEM 6 in einer KVM VM mit Ubuntu
HM-CFG-USB2, 2xHM-CFG-HMLAN, HM-HMUARTLGW mit 100+ HomeMatic Devices, Geofencing, Fritzbox, Unifi, HUE, Harmony-Hub, Denon-Receiver-Modul, Calendar, GardenaSmartDevice, Shelly, MQTT (zigbee2mqtt, Tasmota und Shelly) und ein wenig 1Wire.

okenny

Zitat von: Fs79 am 02 Februar 2020, 18:43:49
Hallo,

ich habe hier eine Unifi Dream Machine. Auf der läuft ein Controller, ein Switch und ein AP.
In der neuesten Software läuft der Controller auf der IP/network also in etwa so.
http://10.10.10.1/network/ und dann site etc.

Kann man das Modul anpassen das es auch mit dem neuen Controller läuft auf der UDM läuft?
Bin auch gern bereit zu testen.

VG
Frank


Funktioniert das Module mit dem UDM wirklich nicht? oh oh....
Ich habe ein UDM Pro bestellt....aber das FHEM Modul muss für mich funktionieren. Sonst bleibe ich mit dem Cloudkey/USG

Wuehler

Hallo okenny,

ohne selbst eine DreamMachine zu haben kann ich nicht so viel unterstützen. Also musst du selbst ein wenig ran. Schau mal direkt in den Modulcode. Zeile 212 kautet:

            url         => "https://".$a[2].(($a[3] == 443) ? '' : ':'.$a[3]).'/api/s/'.(($a[7]) ? $a[7] : 'default').'/',
# $a[2] = ip
# $a[3] = port
# $a[7] = site-ID


Jetzt kommt es darauf an, wie das Ganze aus der Unifi-Controller-Software aufgerufen wird. Dazu solltest du die Entwicklertools des Browsers starten und schauen, wie die API-Aufrufe von dort aussehen. Danach kannst du vermutlich Zeile 212 entsprechend anpassen.

Viele Grüße,
Dirk