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

Hallo zusammen,

morgen im Update:
- neues Attribut customClientReadings.
- Ausserdem werden bei get clientData zusätzlich einige Daten formatiert angezeigt (präfix _f_). Diese kann man über customClientReadings auch als Readings anlegen lassen.
- das Attribut deprecatedClientNames ist entfallen.

Spannender Usecase ist mir dabei aufgefallen:
- Die UAP-Uptime könnte man evtl. dazu verwenden, den Kindern die Handyzeit im WLAN einzuschränken  ;)


Nächste ToDos:
1. switchSiteLEDs reparieren (ab UnifiController 5.10. defekt)
2. setLocateAP reparieren (ab UnifiController 5.10. defekt)
3. neues Attribut customClientNames einführen. Einziger möglicher Wert ist zunächst "mac".

Viele Grüße,
Dirk

Maui

Was hälst du denn von einer Art Aufräumfunktion für die Readings?
Aktuell wird ja über den Name (alias) definiert. Ändere ich nun im Controller den alias, erstellt er ja dafür neue Readings.
Eine Idee wäre über lastSeen zu gehen und Einträge älter als x zu löschen.
Alternativ könnte man die mac Adresse auf doppelte Einträge prüfen, und dann den alten (ebenfalls mit lastseen) löschen.

Wuehler

Moin,
Ich mache bei Änderungen meistens ein set clear all. Reicht das nicht?

Maui

Prinzipiell ja. Ich mache es ja nicht anders.
Ist ganz klar unter Luxus Problem und kommt nicht häufig vor einzuordnen  ;D

Wuehler

Moin,

Ich will für das Modul im Wiki eine Seite anlegen, falls ihr Input habt, nutzt bitte folgenden Thread:
https://forum.fhem.de/index.php/topic,98820.0.html

Danke für eure Unterstützung,
Dirk

Maui

Wenn ich mir selbst etwas bauen möchte, um zb per lastSeen > 14 Tage die entsprechenden Readings zu löschen, werden diese dann bei erneutem Connect auch wieder sauber angelegt und löst newClients aus?

Wuehler


Maui

Okay, hab es soweit hinbekommen.
Allerdings triggert direkt nach dem Löschen der newClient. Hast eine Idee warum?

Wuehler

Magst du deinen Code posten. Dann wird es für mich einfacher.  ;)

Maui

Aber erwarte kein Meisterstück  :o Kann kein perl.
Und ja ich weiß das falls iPhone gelöscht wird, auch iPhone8 gelöscht wird.
Aber ich würde den Timer auf 14 Tage stellen, damit ich eine Art "Klingel" habe.
Ich kriege meistens zuerst die Telegram Nachricht, bevor der Besuch klingelt.

PS: Etwas ähnliches (also besser) könnte man halt auch im Modul unter clear:OldReadings einbauen.
Zeitspanne über Attribut und triggern nur händisch (in meinem Fall per at/DOIF).
Aber ich will dich dazu auch nicht drängen  ;)

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

Wuehler

Mit dem Code vor Augen war das Problem dann doch einfach zu finden. Dein sofort dürfte kein richtiges sofort gewesen sein. Die Readings sind beim nächsten Update-Zyklus wieder angelegt worden, oder? Und damit auch newClients.
Alle Clients die vom UC gesendet werden, werden im Modul-Hash intern gespeichert, vor jedem Update aber gelöscht. Darin sind also niemals disconnectede Geräte. Um auch für diese Geräte Readings haben zu können werden alle Clients noch einmal im Modul-Hash gespeichert. Das Delta der beiden Listen sind die disconnecteden Clients. Alle anderen werden aktualisiert. Aus der zweiten Liste werden die Readings erstellt.

Du müsstest also zusätzlich den Client aus der zweiten Liste entfernen.
Ich bin erst morgen wieder am Rechner. Daher diese nur halb qualifizierte Antwort von unterwegs.

Maui

Ne die Readings sind immer noch weg. Was mir allerdings grad auffällt, in newClient steht das Device immer noch. Ich erinnere mich, dass sonst beim nächsten Update Zyklus gelöscht wird. Vielleicht hängt das jetzt zwischen Himmel und Hölle.
Aber lass dir Zeit. Läuft ja nicht weg. Ist Wochenende  :)

Wuehler

Hi Maui,

im Anhang ein kleiner Fix, newClients muss natürlich nur bei connected clients gemacht werden. Muss gerade weg und komme nicht zum testen, daher auf diesem Weg. Bitte mal ausprobieren.

VG,
Dirk

Maui


OdfFhem

@Wuehler
Zunächst einmal vielen Dank für die nützliche Erweiterung des Unifi-Moduls.

Beim ersten Einsatz nach dem Update sind mir folgende Dinge aufgefallen:

  • snr heisst jetzt wohl rssi; snr-Reading ist weiterhin sichtbar, wird aber nicht mehr aktualisiert; Default-Wert für customClientReadings enthält weiterhin snr und nicht rssi.
  • Wäre es möglich, die textField-long-Unterstützung für das Feld customClientReadings standardmäßig zu aktivieren (Modul-Zeile #146)?
  • Nützlich wäre noch ein Hinweis im Wiki, dass die Liste der möglichen Readings für customClientReadings via "get <unifi> clientData <device>" zur Verfügung steht.
  • Fehlerteufel in Wiki-Beispiel zu customClientReadings ... einTelefon$:^mac$:^mac$ ...