UniFi Modul

Moin,

ich wollte auch mal n bisl was mit den Modulen rumspielen. Raus gekommen ist dieses Modul, mit dem die Clients und WLANs aus dem Ubiquiti Unifi Tool gezogen werden kann.

https://github.com/Spoosie/KH_UniFi.git

„Ganz einfach“ Modul installieren, IP - Benutzername - Passwort eingeben. Und der Rest wird selbst erzeugt. Minütlich werden die eingeloggten Clients gezogen, und in kleinen Kategorien hinterlegt.

Zusätzlich wird eine HTMLBox mit den aktuell eingeloggten Devices erstellt.

Ergänzend zu dem Thema WLAN ein/ausschalten werden in einer anderen Kategorie die aktuellen WLANs erstellt. In dem WLAN gibt es eine Variable mit der Bezeichnung Enabled - diese ist schon so aufbereitet, dass nur noch ein Link ins Webfront zeigen muss. Profil und Aktion sind schon so vorbereitet, dass nur noch geklickt werden muss.

Soweit… bitte testen.

Gruß
Kevin

Hallo Kevin,

Coole Sache!

Um dieses Modul nutzen zu können muss aber irgendwo der unifi (Win/Lin/Mac) Dienst laufen nehme ich an?

Paul

Hallo Kevin,

ich habe erst jetzt den Thread mit dein Script mit allen Infos gesehen, werde es sicher über die Feiertage einrichten!

Paul

Hallo Kevin

Super Danke. Das funktioniert ja 1A.
Wenn man noch einzelne Clients sperren könnte :wink:

Gruss und frohe Festtage

Stephan

Hallo Kevin,

ich wollte gerade dein neues Modul testen.
Leider funktioniert es bei mir nicht.
Ich habe mit dem Controller V4.6.3 getestet.
Muss ich die api im Controller frei geben?

26.12.2015 09:22:33*| Login*| https://192.168.0.132/api/login
26.12.2015 09:22:33*| Login*| {'username':'xxxxx', 'password':'yyyyy'}
26.12.2015 09:22:33*| Login*| https://192.168.0.132/api/login
26.12.2015 09:22:33*| Login*| {'username':'xxxxx', 'password':'yyyyy'}
26.12.2015 09:22:33*| ScriptEngine*| Result for Event 45584
<br />
<b>Notice</b>:  Trying to get property of non-object in <b>/mnt/data/symcon/scripts/18530.ips.php</b> on line <b>9</b><br />
<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>/mnt/data/symcon/scripts/18530.ips.php</b> on line <b>9</b><br />
26.12.2015 09:22:33*| GetClients*| Resource id #8
26.12.2015 09:22:33*| GetClients*| https://192.168.0.132/api/s/default/stat/sta
26.12.2015 09:22:33*| GetClients*| False
26.12.2015 09:22:33*| VariableManager*| [Hardware\UniFi\ClientHTMLBox] = <table style='width:100%;font-size:14px;'><tr><td style='text-align:left;font-size:12px;' colspan='10'>Letzte Aktualisierung: 09:22:33 26.12.2015</td></tr><tr style='height:1px;'><td style='background-color:#aaaaaa;' colspan='10'></td></tr><tr><td style=''>Keine Clients im WLAN</td></tr>
26.12.2015 09:22:33*| ScriptEngine*| Result for Event 25234
01<br />
<b>Warning</b>:  Variable #12345 existiert nicht in <b>/mnt/data/symcon/scripts/42429.ips.php</b> on line <b>144</b><br />

Mir ist noch aufgefallen, dass das Profil von „ClientHTMLbox“ nicht richtig gesetzt wird.

Gruß
Jens

hab hier die neueste stable (4.7.6-6357), damit funktionierts wunderbar (ips beta auf debian 8, unifi controller auf ubuntu 14.04)
nach dem ich die HTMLBox eingetragen hatte

Vielleicht noch ein Verbesserungsvorschlag: wenn möglich die Client namen vom DNS-Server abfragen dann bräuchte man die liste nicht händisch führen

Christian

Hallo ,

Mein Variablen Profil war immer wieder nicht gesetzt , wer ähnliche Probleme hat :
in Zeile 164 ein.


IPS_SetVariableCustomProfile($htmlBoxID, "~HTMLBox");

Danke Kevin für das Modul … Super Arbeit !

Moin Moin,

ich habe auf dem Pi das Phänomen , das mit deinem Modul der Dienst ständig abkackt, auf Windows läuft es.
Letzte Meldung im Log ist der Login zum Controller den er zweimal versucht und dann ist es aus mit dem Dienst.Bis dahin läuft das Modul 1a .

Abend!

Erstmal > Herzlichen Dank für das Modul! Einfach einzurichten und funktioniert super :slight_smile:

Läuft auch stabil bei mir, bisher 0 Ausfälle. UniFi Controller Software läuft auf einem Ubuntu Server 14.04.3 LTS x64.

ABER :stuck_out_tongue: :wink:
>>> Der Variable „ClientHTMLBox“ fehlt das Variablenprofil „~HTMLBox“
> In der „module.php“ in Zeile 32 die aktuelle Zeile einfach gegen diese tauschen:

$this->RegisterVariableString("ClientHTMLBox", "ClientHTMLBox", "~HTMLBox");

>>> Unter „…/webfront/user/img/“ gibt es bei mir leider weder den Ordner „level“ noch die Grafiken „level1.png“ usw…deshalb keine > Anzeige der Grafiken im WebFront :frowning:
Entweder die Grafiken direkt aus der module.php heraus erstellen (wie das im Skript geht, kannst du dir z.B. bei Nall chan seinem FritzBox Projekt abschauen) oder die Grafiken mit ins GitHub-Repo aufnehmen und dann per Skript an die richtige Stelle kopieren.

Edit: Und ich persönlich würde das „Access Point- und Anwesenheits-Mapping“ direkt mit in die Modul-Instanz. Finde es schöner/besser, wenn man direkt im Modul alle Einstellungen machen kann und nicht noch in irgendwelchen Skripten irgendwas schreiben muss.
Ich würde einfach X-Felder machen, dann im Modul prüfen, ob etwas eingetragen ist und dann entsprechend Variablen anlegen usw.
Optional könnte man im Skript dann noch weitere eintragen, falls die Felder in der Modul-Instanz nicht ausreichen sollten.

Besten Dank und Grüße,
Chris

Da ich meinen Nick gesehen habe… mal eben drei Worte dazu :smiley:

Das ist ein ganz blöde Idee Chris :wink:

Im Detail:
Das FB-Projekt nutzt den RS Script-Exporter und wird somit nur einmalig ausgeführt und erzeugt die Daten (Grafiken).
Wenn du das im Modul versuchst, hast du jedesmal 5-100kB an base64-codierten Daten im Modul, welche bei JEDER Aktion mit einer der Instanzen aus den Modulen geladen wird.
Besser kann man Speicher und Performance nicht verbrennen :wink:

Also nicht machen.

Dann wirklich in das Repro mit aufnehmen und gar nicht den user-Ordner nutzen, sondern die URL für die Grafik auf einen Webhook umstellen, welcher über ein Hilfs-Script eine Instanz-Funktion aufruft.
Diese lädt dann die Datei aus dem modules-Ordner und ausgibt sie direkt (an den Browser) aus.

Michael

Kannst du das bitte noch ein wenig genauer erläutern? Da kann ich dir leider nicht so ganz folgen. :confused:

Danke!
-Chris-

Aber nur ganz kurz, sonst haut mich Kevin gleich (zu recht :smiley: )

Ein Webhook kann ja eine HTTP-GET sein, also das Bild einfach mit

<img src="hook/meinhook?img=bild.png" />

Und das ist das Script hinter dem ‚Hook‘.

$file=$_GET["img"];
readfile($file);

Natürlich muss der Pfad zum ‚Bild‘ passen.
Aber dafür gibt es ja DIR :smiley:
Michael

Mein lieber Scholli! Trollt euch! Ich hab die 4er erstmal wieder beiseite gelegt. Sobald ich diese fest einsetze mach ich das alles mal schöner! zeter

Hi!

Könntest du im Modul bitte im „updateClients“-Skript den Block nach „War nicht in Liste!“ wie folgt anpassen?

		// War nicht in Liste!
		if ($clientName == "")
		{
			if (@$client->hostname != "")
			{
				$clientName = $client->hostname;
			}
			else
			{
			   $clientName = "unbekannt";
			}
		}

		$scriptResult .= "<td>".$clientName."</td>";

		$scriptResult .= "<td style='text-align:center'>".$client->mac."</td>";
		$scriptResult .= "<td style='text-align:center'>".$client->ip."</td>";

Sonst gibt es dauernd Fehler im Log, wenn UniFi keinen Namen von einem Device hat und man den nicht von Hand im Skript eingetragen hat. Ich habe es so angepasst, dass dann einfach „unbekannt“ angezeigt wird. Besser als Fehler im Log :slight_smile: Gerne kannst du auch „unbekannt“ durch etwas anderes ersetzen, Hauptsache es wird abgefangen :slight_smile:

  • noch der bereits gemeldete Punkt bzgl. Variablenprofil „~HTMLBox“.

  • die ganzen „echo“ in den Skripten entfernen oder auskommentieren, weil das Log damit extrem gefüllt wird und das Meldungen-Fenster geflutet wird

Danke und Grüße,
Chris

Gehts jetzt weiter? :D:)

Schon meine Mutter durfte erfahren… wenn sie besonders nervte, wurde er extrem langsamer!

Bei dir ist eine Nachfrage schon Nerven? Die arme Frau…

das dürfte wohl eher der 4er geschuldet sein… und die kann ja noch dauern, bis die Kinderkrankheiten weg sind…

Gut das ich auf die 4.1 warten muss, wie es so schön heißt… Seit 3.4 irgendwas ist zwave ja nur noch rudimentär:p

Gibt einen Tip wie ich die ClientHTMLBox , dauerhaft auf das Profil HTML umstellen kann ?