Modul 74_UnifiClient

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

Vorheriges Thema - Nächstes Thema

Wuehler

Hallo zusammen,

ich habe begonnen ein Modul UnifiClient zu schreiben, das einen client nach einer definierbaren Online-Zeit blocked und am nächsten Tag wieder unblocked.
Definieren muss man aktuell noch manuell:
define myClient UnifiClient <clientName im Unifi-Modul>

Es werden nach dem nächsten Update des Unifi-Moduls im UnifiClient alle Informationen als Readings angezeigt.

Es gibt die Attribute:

  • maxOnlineMinutesPerDay: Zeit in Minuten, die der Client an einem Tag online sein darf.
  • thresholdBytesPerMinute: Bytes, die pro Minute verbraucht werden dürfen, ohne dass Onlinezeit angerechnet wird. Default: 75000
  • blockingUsergroup: Wenn gesetzt wird der client nicht geblockt sondern in die angegebene Benutzergruppe geschoben. Diese sollte einen sehr geringen up- und down-stream haben.

Es gibt einen set-Befehl (set usergroup <name>) zum ändern der Benutzergruppe des clients.

Es gibt einen neuen set-Befehl im Unifi-Modul:
- refreshUsergroups: Usergroups werden nur einmalig beim define abgefragt, nicht in jedem Update-Zyklus. Hiermit können Usergroups aktualisiert werden.



ich bin gespannt auf euer Feedback:
- Bezeichnungen verständlich?
- passt der Threshold?
- welche Funktionen fehlen?

Ihr müsst alle drei Module des Anhangs installieren.

VG,
Dirk

Edit: Anhänge entfernt, da das Modul im normalen Update enthalten ist.

Eisix

Hallo Wuehler,

endlich kann ich meine Kinder ohne viel Aufwand quälen  ;D

Zwei Attribute fehlen noch:

maxOnlineMinutesPerWeek
maxOnlineMinutesPerMonth

Gruß
Eisix

marvin78

Wie funktioniert das technisch? Am blocken stört in der Regel die ständige Provisionierung aller Access Points.

Wuehler

Ja, geht nur mit blocken. Alternativ für Besitzer eines USG könnte man eine Firewallregel erstellen, dann würden APs nicht provisioniert, nur das USG. Da nicht jeder ein USG hat würde ich das Blocken bevorzugen.

justme1968

wie wäre es optional die betroffenen clients zeitweise in eine andere benutzergruppe mit sehr stark eingeschränkter bandbreite zu schieben? 5k up und down machen das gerät interaktiv eigentlich unbenutzbar.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Wolle02

Zitat von: Wuehler am 24 April 2019, 06:43:06
Ja, geht nur mit blocken. Alternativ für Besitzer eines USG könnte man eine Firewallregel erstellen, dann würden APs nicht provisioniert, nur das USG. Da nicht jeder ein USG hat würde ich das Blocken bevorzugen.

Könnte man das eventuell mit einem Attribut steuerbar machen, ob Firewallregel oder Blocken? Beim Blocken habe ich das Problem, dass bei einer Neuprovisionierung des AP aus mir nicht ganz verständlichen Gründen mein FHEM für diese Zeit blockiert.

Wuehler

Die Idee von justme finde ich interessant. Leider kann man Usergroups nicht in Firewallregeln verwenden oder bestimmten Netzwerken zuweisen (zumindest habe ich das eben nicht gefunden).
Wenn ich es von unterwegs eben richtig gesehen habe führt eine Änderung der Usergroup nicht zu einer Provisionierung. Wäre ja vorteilhaft.

So wie es aussieht wird es dann irgendwann ein Attribut zur Auswahl der Block-Methode (block, Firewall, Usergroup) geben.

justme1968

ja. es wird bei ändern der usergroup nicht neu provisioniert.

hab gerade gesehen das man inzwischen sogar bis auf 2kbps runter kann.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Wuehler

Nabend,

Ich habe die Anregung mit den Benutzergruppen umgesetzt. Ist noch nicht ganz durchgetestet und der Code kann auch noch optimiert werden, aber sieht bisher vielversprechend aus. Wer also Zeit und Lust hat sich als Beta-Tester zu beschäftigen:
Im ersten Post ein Update der Module.

Änderungen:
UnifiClient:
- Attribut blockingUsergroup: Wenn gesetzt wird der client nicht geblockt sondern in die angegebene Benutzergruppe geschoben. Diese sollte einen sehr geringen up- und down-stream haben.
- set usergroup

Unifi:
- set refreshUsergroups: Aufrufen, wenn man im UC die Benutzergruppen geändert hat

UnifiSwitch:
- Kompatibilität sicherstellen. Keine inhaltlichen Änderungen

VG,
Dirk

marvin78

Zitat von: justme1968 am 24 April 2019, 08:19:50
wie wäre es optional die betroffenen clients zeitweise in eine andere benutzergruppe mit sehr stark eingeschränkter bandbreite zu schieben? 5k up und down machen das gerät interaktiv eigentlich unbenutzbar.

Das ist aber dann nur für ein Netzwerk gültig, das als Gastnetzwerk definiert ist. Für andere Netzwerke ist die Usergruppe und deren Bandbreite unerheblich und wird nicht angewendet.

https://community.ubnt.com/t5/UniFi-Updates-Blog/UniFi-5-0-7-is-released/ba-p/1587040

Und das gilt noch immer. Ich habe es eben getestet.

justme1968

das funktioniert bei mir im ganz normalen (nicht-gast) netz.


dein link zeigt auf einen post der fast drei jahre alt ist und ich kann dort nichts zu benutzerguppen oder bandbreite finden.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

marvin78

Zitat von: justme1968 am 25 April 2019, 15:06:16

dein link zeigt auf einen post der fast drei jahre alt ist und ich kann dort nichts zu benutzerguppen oder bandbreite finden.

ZitatSpeed limits for wireless clients only work on guest VAPs. Non-guest VAPs will not enforce speed limits. This is to help with overall throughput. Please see our original post HERE. If you need to have enforced speed limits on non-guest VAPs then you should use firmware 3.4.19 (do note that you will lose some features when changing to 3.4.19). We've been working on a fix for this and will include it as soon as possible.


Und ich kann bei mir keine Veränderung zum Status von vor 3 Jahren feststellen. Und ja, ich bin bei der Firmware und beim Controller aktuell.

justme1968

stimmt steht da. hatte nicht nach speed gesucht. nur nach user und bandwidh :). aber als bug. nicht als feature.

die 'offizielle' beschreibung des features hier: https://help.ubnt.com/hc/en-us/articles/204911354-UniFi-How-to-Set-Traffic-Bandwidth-Limits sagt auch nichts zu einer einschränkung auf gast netze.

ich verwende das schon ziemlich lange und es hat immer funktioniert.

jetzt wäre die frage welche ap modelle du verwendest und welche firmware?

meine sind uap-ac-pro, uap-mesh-pro, ap-ac-inwall, uap-ac-mesh und noch einen alten uap-pro aktuell mit 4.0.32, in den letzen monaten und jahren fast immer die jeweils neueste.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

marvin78

Ich verwende verschiedene Modelle:

UniFi AP-nanoHD
UniFi AP-AC-Mesh
UniFi AP-HD
UniFi AP-AC-LR

Jeweils mehrere, außer beim HD

Firmware ist aktuell: 4.0.21.9965

Idee: Ggf. muss man erst alle ACs erst provisionieren, nachdem die neue Gruppe mit neuer Bandbreite angelegt wurde? Genau das wollte ich vermeiden.

Aktuell ist es hier so: Gebe ich meinen Smartphone eine Usergroup mit 2kpbs Bandbreite, kann ich weiter ohne Einschränkung das Netz verwenden. Auch ein Neu-Verbinden ändert nichts daran.

justme1968

ich habe die gruppe 'useless' mit 5kb up und down schon ewig. wenn ich einen client dort rein schiebe greift es sofort. ohne irgendetwas zu provisionieren. ich sehe auf dem iPhone sogar direkt wie der laufende speedtest fast sofort langsamer wird.

auch beim youtube schauen läuft noch der cache leer und das war es dann.


vorhin habe ich die gruppe von 5kb auf 2kb runter gesetzt und auch da wurde nichts provisioniert. und sie greift immer noch sofort. ob aktuell 2 oder 5 verwendet werden kann ich aber nicht sagen. beides ist so langsam das spendetest beim direkten laufen lassen eine fehlende verbindung anmeckert.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968