Modul 74_UnifiClient

Begonnen von Wuehler, 23 April 2019, 07:04:35

Vorheriges Thema - Nächstes Thema

Wuehler

Moin,

werde versuchen auf timelocal zu verzichten, um diese Abhängigkeit loszuwerden. Wird aber vermutlich etwas dauern bis ich Zeit dazu habe und etwas passendes gefunden habe. Bin auch kein Perl-Experte.
Von daher am schnellsten wäre es aktuell für euch das Paket zu installieren.

VG,
Dirk

Wuehler

Es war dann doch einfacher als gedacht, habe mich im Modul AT bedient und einen guten und einfachen Ersatz gefunden. Fix ist hochgeladen und morgen ab 8 Uhr im Update verfügbar.

db

Super, funktioniert!
Nicht, dass das jetzt noch entscheidend wäre... Ich habe mal nachgeschaut, zu meinem Erstaunen ist die lib bei mir installiert.

pi@HDDpi:~ $ sudo apt-get install libdatetime-perl
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
libdatetime-perl ist schon die neueste Version (2:1.42-1).
libdatetime-perl wurde als manuell installiert festgelegt.

fhem habe ich aus dem Repository installiert.
Danke an euch für die Mühe.

Wuehler

#33
Sehr schön. Lerne immer noch neues über perl  ;)
Keine Ahnung, warum manche den Fehler bekommen und andere nicht. In einer reinen perl-Datei ohne fhem drumrum habe ich nämlich dieselbe Fehlermeldung gesehen. Hätte mit use Time::Local das Paket eigentlich einbinden müssen. Aber die jetztige Lösung ist noch besser, da das zusätzliche Paket vermieden wird.

@all: Hatte mir selbst mal das presence-Reading wie im WIKI bisher beschrieben angelegt und bemerkt, dass das Handy oft als wired-Gerät an den USG "übergeben" wird, wenn ich das Haus verlasse. Bin dann oft ganz kurz absent gewesen um kurze Zeit später wieder present zu sein (wired). Habe daher das WIKI auf eine zusätzliche Überprüfung des Attributes "is_wired" angepasst.

Wolle02

Moin Dirk,

ich habe ein neues Handy und dieses als Unifi-Client in FHEM eingebunden und mein altes gelöscht. Jetzt habe ich gerade im Logfile gesehen, dass ca. alle 30 Sekunden folgende Meldung ins Log geschrieben wird.

ERROR: >UC_Wolles_S7< returned by the UnifiClient ParseFn is invalid, notify the module maintainer

Das Device UC_Wolles_S7 gibt es gar nicht mehr.

Gruß
Wolle

Wolle02

Ich habe jetzt versucht das Device UC_Wolles_S7 wieder anzulegen. Dann erhalte ich allerdings folgende Fehlermeldung:

Client with name Wolles-S7 already defined in UC_Wolles_S7

Ein "list UC_Wolles_S7" ergibt aber folgendes Ergebnis:

No device named UC_Wolles_S7 found


Wuehler

Moin,

Vermutlich muss ich beim undefine noch etwas machen. Schaue ich mir nach meinem Urlaub an.

VG,
Dirk

Wolle02

Ohh, alles klar. Dann wünsche ich dir erstmal einen schönen Urlaub.  ;) 8)

Wuehler

Hi Wolle,

der erste Fehler
ZitatERROR: >UC_Wolles_S7< returned by the UnifiClient ParseFn is invalid, notify the module maintainer
kommt, da dein Unifi-Modul auch alte Clients weiter beinhaltet. Bitte dort mal ein "set removeClientReadings UC_Wolles_S7" durchführen, oder wenn das nicht geht ein clear all.

Zum zweiten Fehler: Wie hast du den UnifiClient gelöscht? Edit in fhem-config? Oder per klick auf den Link "Delete this device (UC_Wolles_S7)" unten am device?

VG,
Dirk

Wolle02

Hallo Dirk,

ZitatBitte dort mal ein "set removeClientReadings UC_Wolles_S7" durchführen

Das hat funktioniert. Die Fehlermeldung kommt nicht mehr.
Wenn ich allerdings das alte Handy wieder einschalte und es sich erneut am WLAN anmeldet werden die Readings wieder angelegt und die Fehlermeldung kommt wieder.

ZitatWie hast du den UnifiClient gelöscht? Edit in fhem-config? Oder per klick auf den Link "Delete this device (UC_Wolles_S7)" unten am device?

Ich hatte auf den Link "Delete this device (UC_Wolles_S7)" geklickt.
Wenn ich nun versuche das alte Handy wieder als ClientDevice anzulegen kommt wieder die gleiche Fehlermeldung, dass es nicht angelegt werden kann, da es bereits existiert. Ein list zeigt aber weiterhin, dass es nicht existiert.

Wuehler

Hi,

kannst du bitte ein
list TYPE=UnifiClient
ausführen. Bin gespannt, ob dein Wolles-S7 dann dabei ist.
Wenn nicht nochmal ein
{ join("\n", grep { !defined($defs{$_}{TYPE}) } keys %defs) }

VG,
Dirk

Wolle02

Also ein
list TYPE=UnifiClient
ergibt nur mein neues Handy:

Internals:
   CFGFN     
   CODE       Wolles-S10
   DEF        Wolles-S10
   IODev      UniFi_Controller
   LASTInputDev UniFi_Controller
   MODEL     
   MSGCNT     28353
   NAME       UC_Wolles_S10
   NOTIFYDEV  global
   NR         26146
   STATE      Onlinezeit im Netzwerk: 14 Minuten
   TYPE       UnifiClient
   UniFi_Controller_MSGCNT 28353
   UniFi_Controller_TIME 2019-07-27 05:51:01
   VERSION    0.0.3 BETA


Die Eingabe von
{ join("\n", grep { !defined($defs{$_}{TYPE}) } keys %defs) }
hat nur eine lere Seite zur Folge.

Wuehler

da bin ich irgendwie auch ratlos. Bei mir funktioniert das Löschen eines UnifiClients auch problemlos.
Setze bitte beim Unifi Modul und bei deinem existierenden UnifiClient mal verbose auf 5 und schick/poste mir das Log.

Wolle02

Huiii, das hat aber innerhalb von ein paar Minuten gut das Logfile gefüllt  8)
Ich schick dir die Daten per PN.

Wuehler

Moin,

ich fasse die Kommunikation per pm mal für die Nachwelt zusammen:

Interessant sind folgende drei Zeilen aus dem Log:
2019.07.28 06:57:33 5: UniFi_Controller (UnifiClient_Parse) - executed. UnifiClient: Adress: Wolles-S7
2019.07.28 06:57:33 5: UniFi_Controller (UnifiClient_Parse) - return: UC_Wolles_S7
2019.07.28 06:57:33 1: ERROR: >UC_Wolles_S7< returned by the UnifiClient ParseFn is invalid, notify the module maintainer


Die erste sagt, dass ein UnifiClient mit dem Namen Wolles-S7 aktualisiert werden soll.
Die zweite zeigt, dass eine Definition UC_Wolles_S7 dazu gefunden wurde in dem globalen Hash $modules.
Die dritte sagt, dass es diese Definition in einem anderen globalen Hash $defs nicht existiert.

Im Undefine vom UnifiClient wird eigentlich folgendes aufgerufen:
{delete($modules{UnifiClient}{defptr}{UC_Wolles_S7})}
Das hat aus irgendwelchen Gründen in diesem Fall nicht funktioniert.
Die Zeile direkt in der fhem-Befehlszeile eingegeben hat wieder für Konsistenz gesorgt.

VG,
Dirk