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

rapster

Hallo Zusammen,

habe soeben das neue Modul 74_Unifi eingecheckt, welches die API des UBNT Unifi-Controller verwendet um verschiedene Aktionen an den Geräten (z.B. WLAN Accesspoints) durchzuführen und Information & Statistiken abzufragen.

Der Funktionsumfang ist i.M. noch relativ begrenzt,
- Man kann die PRESENCE Funktionalität nutzen (mein Hauptgrund für das Modul), welche einen sofort sobald sich ein Gerät mit dem WLAN verbindet, und etwa 5 Minuten nachdem es sich wieder disconnected benachrichtigt.
- Man kann sich detailierte Informationen der WLAN-Clients ausgeben lassen.

Die PRESENCE Funktionalität meldet erst ein disconnect wenn das Gerät wirklich disconnected ist!
Da der Unifi Controller selbst im PowerSave-Mode (üblich bei MobileDevices, in diesem Modus ist kein Ping möglich) eine Verbindung zum Gerät hat.

Weitere Infos sind in der Commandref zu finden.

Gruß
  Claudiu

Michi240281

Hi!

Das hört sich toll an! Kannst du mir das Modul schicken oder hier anhängen?

Du schreibst, die Abwesenheitsmeldung würde bei dir etwa 5 Minuten dauern, nachdem das Gerät offline geht! Bei mir sinds ziemlich genau 10 Minuten!Kann man diese Zeit über das Modul beeinflussen? Das wäre nämlich genau das, was ich bräuchte!

Besten Dank!!
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

rapster

Hallo Michi,

das Modul wird ganz normal über FHEM-Update verteilt.
Also in die Fhem-Kommandozeile einfach "update" eingeben.

Anschließend findest du in der Commandref ein Beispiel und Hilfe wie man Unifi in fhem definiert.

Habe gerade allerdings eine neue Version eingecheckt, welche ab Morgen früh im Update ist, oder welche du jetzt im SVN herunterladen kannst.
In der neuen Version hat sich zwar ein bisschen was geändert, aber grundlegend funktionieren tut die momentane auch schon :-)

Die 5 Minuten kommen vom Controller selber, das ist der Zeitpunkt nachdem der Controller das Device (z.B. wenn man sein Handy komplett ausschaltet) als disconnected markiert. (Das sind dann evtl. bei dir auch 10 Minuten, falls du eine andere Controller Version verwendest als ich.)

Unifi selber bietet dir aber für jedes WLAN-Gerät ein Reading <deviceID>_last_seen wodurch du dir selber nach beliebiger Zeit eine disconnected Meldung generieren kannst.

Gruß
  Claudiu



Michi240281

Zitat von: rapster am 23 August 2015, 19:03:34
Die 5 Minuten kommen vom Controller selber, das ist der Zeitpunkt nachdem der Controller das Device (z.B. wenn man sein Handy komplett ausschaltet) als disconnected markiert. (Das sind dann evtl. bei dir auch 10 Minuten, falls du eine andere Controller Version verwendest als ich.)

Unifi selber bietet dir aber für jedes WLAN-Gerät ein Reading <deviceID>_last_seen wodurch du dir selber nach beliebiger Zeit eine disconnected Meldung generieren kannst.



Wie meinst du das? Ja bei mir kommen die 10 Minutem vom Controller und das würde ich gerne runtersetzen, weil das viel zu lange dauert! Problem: Ich verlasse das Haus, iPhone wird aber erst 10 Minuten später als offline erkannt! Die Dauer will/muss ich unbedingt verkürzen!!
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

rapster

Wie gesagt, wenn du das Standardverhalten nicht möchtest, kannst du dazu das Reading <deviceID>_last_seen welches jedem WLAN-Device zur Verfügung steht verwenden.

Beispiel für 3 Minuten mithilfe von DOIF:
define di_unifi_presence DOIF (time()-time_str2num([myUnifiController:MyClient_last_seen]) > 180) (set dummy disconnected) DOELSE (set dummy connected)

oder 3 Minuten mit einem notify:
define ntfy_unifi_presence notify myUnifiController:MyClient_last_seen:.* {
if (time() - time_str2num($EVENT) > 180) {
fhem("set dummy disconnected");
} else {
fhem("set dummy connected");
}
}


Gruß
  Claudiu

Michi240281

D.h., dass dieses Reading direkt anzeigt, wenn ein Device offline geht und nicht erst nach den 5 oder 10 Minuten?

Kannst du mal einen Link zum SVN reinsetzen, ich kann das Modul leider nicht finden und ich will gerade kein "update" machen, da ich seit längerem keins gemacht habe und nachher zickt FHEM irgendwo rum und ich habe heute Abend keine Lust mehr auf evtl. Mehrarbeit! ;-)
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

rapster

Genau, in diesem Reading steht der Zeitpunkt des letzten Kontakt zum Controller, also plus/minus wenigen Sekunden die Zeit in der es tatsächlich offline ging.

Hier kannst du die Dateien aus dem SVN downloaden: https://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/FHEM/
Falls deine HttpUtils.pm allerdings älter als 2 Tage ist (was ich denke wenn du länger kein Update gemacht hast) musst du dieses Modul auch zwingend aktualisieren damit Unifi funktioniert.



Damian

Zitat von: rapster am 23 August 2015, 19:39:03
Wie gesagt, wenn du das Standardverhalten nicht möchtest, kannst du dazu das Reading <deviceID>_last_seen welches jedem WLAN-Device zur Verfügung steht verwenden.

Beispiel für 3 Minuten mithilfe von DOIF:
define di_unifi_presence DOIF (time()-time_str2num([myUnifiController:54245784e4b0b49b2ded629f_last_seen]) > 180) (set dummy disconnected) DOELSE (set dummy connected)

oder 3 Minuten mit einem notify:
define ntfy_unifi_presence notify myUnifiController:54245784e4b0b49b2ded629f_last_seen:.* {
if (time() - time_str2num($EVENT) > 180) {
    fhem("set dummy disconnected");
    } else {
    fhem("set dummy connected");
    }
}


Gruß
  Claudiu

Das sollte auch einfach mit:

define di_unifi_presence DOIF ([myUnifiController:54245784e4b0b49b2ded629f_last_seen:sec] > 180) (set dummy disconnected) DOELSE (set dummy connected)


gehen.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

rapster

Hallo Damian,

funzt 1A, tagtäglich entdeckt man an diesem DOIF Modul etwas neues tolles  ;D

Gruß
  Claudiu

rapster

Ups, doch zu schnell getestet, scheint leider doch nicht zu funktionieren.

Kann es sein das :sec auf 'TIME' geht und nicht auf 'VAL'?

In diesem Fall steht der benötigte Zeitstempel in 'VAL', hast du dafür evtl. auch noch ne kürzere Lösung?

Gruß
  Claudiu

Michi240281

Hmmmmmmmmm........

habe beide pm Dateien neu einkopiert aber Fhem stürzt jedes Mal ab, wenn ich das define anlegen will.........Ne Idee?
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

rapster

Am besten mal ein normales Update machen.

Ich denke da werden jetzt irgendwelche Abhängigkeiten nicht mehr stimmen, oder in deinem Versionsstand sind verwendete Funktionen noch nicht enthalten.

Du kannst aber auch mal "attr global verbose 5" probieren um zu schauen bei was genau fhem abstürzt)

Michi240281

Ok dann nehme ich mir mal morgen Abend das "update" vor! Das läuft ganz bestimmt nicht sauber über die Bühne! Hab ca. 4-5 Monate nicht mehr upgedated!
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

Damian

Zitat von: rapster am 23 August 2015, 21:49:59
Ups, doch zu schnell getestet, scheint leider doch nicht zu funktionieren.

Kann es sein das :sec auf 'TIME' geht und nicht auf 'VAL'?

In diesem Fall steht der benötigte Zeitstempel in 'VAL', hast du dafür evtl. auch noch ne kürzere Lösung?

Gruß
  Claudiu

ja sec-Option bezieht sich tatsächlich auf den TIME-Wert. Wenn es der Wert selbst ist, dann ist deine Lösung die korrekte und wahrscheinlich auch die kürzeste.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Mumpitz

Hallo Rapster

Besten Dank für deine Arbeiten in diesem Modul. Ich wollte dieses heute installieren, bin aber wohl an einem Überlegungsfehler gescheitert...

Ich wollte mit dem Modul auf einen meiner 3 Accesspoints zugreifen und habe dementsprechend auch die IP eines solchen genommen. Dazu den Port 8443. Das Modul konnte sich jedoch nie mit dem Accesspoint verbinden.

Bei mir läuft der Controller auf einem Windows PC der sehr selten läuft, von dort aus kann ich mich problemlos auf die einzelnen Accesspoints einloggen.

Beim genauen durchlesen deines CommandRef Eintrages bin ich darauf gestoßen, dass du geschrieben hast die IP des UniFi Controllers. Das wäre in meinem Fall jetzt aber mein Windows PC! @dernieläuft@

Heißt das ich kann das Modul nicht nutzen oder wie hast Du das gelöst???


Gesendet von iPad mit Tapatalk