Skip to content

Commit

Permalink
Merge pull request #25 from elueckel/beta
Browse files Browse the repository at this point in the history
final 1.2 release
  • Loading branch information
elueckel authored Dec 31, 2021
2 parents abaf356 + 69a6142 commit 7fdaab7
Show file tree
Hide file tree
Showing 24 changed files with 1,984 additions and 537 deletions.
12 changes: 10 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Die UniFi Toolbox ist eine Sammlung von Modulen, welche verschiedene Aktionen in

## Voraussetzungen:
* Symcon 5.5 oder höher
* UniFi Dream Machine
* UniFi DreamMachine
* UniFi Controller

## Installation:
Expand All @@ -18,9 +18,17 @@ Folgende Module beinhaltet das UniFi Toolbox Repository:
Mit dem Presence oder Anwesenheitsmanager ist es möglich Geräte die mit dem Netzwerk verbunden sind zu überwachen, z.B. um die Anwesenheit zu bestimmen.

- __UniFi Internet Controller__ ([Dokumentation](UniFi%20Internet%20Controller))
Der Internet Controller ermöglich die Erfassung von Informationen zur Internetverbindung, wenn eine USG oder Dream Machine eingesetzt wird.
Der Internet Controller ermöglich die Erfassung von Informationen zur Internetverbindung, wenn eine USG oder DreamMachine eingesetzt wird.

- __UniFi Device Blocker__ ([Dokumentation](UniFi%20Device%20Blocker))
Mit dem Device Blocker können Geräte anhand ihrer MAC Adresse vom Zugang auf das Netzwerk geblockt werden, z.B. um die Nutzung von Geräten im Kinderzimmer nach 20 Uhr zu sperren und am Morgen wieder zu aktivieren.

- __UniFi Device Monitor__ ([Dokumentation](UniFi%20Device%20Monitor))
Mit dem Device Monitor können Geräte von UniFi überwacht werden - es stehen bei Firewalls (UDM/USG) Daten zur Internetverbindung zur Verfügung, bei generischen Geräten Daten zum Status und Hardware.

- __UniFi Endpoint Monitor__ ([Dokumentation](UniFi%20Endpoint%20Monitor))
Mit dem Endpoint Monitor können mit den UniFi Netzwerkverbunde Geräte überwacht werden. Hierbei wird zwischen Kabel und WLAN Verbindungen unterschieden, da im WLAN weit mehr Daten zur Verfügung stehen.

Für detaillierte Informationen zu den Modulen, wie z.B. zur Version bitte die Hilfeseiten der Module besuchen.

Dieses Modul ist für die nicht kommerzielle Nutzung kostenlos - bei kommerzieller Nutzung bitte den Author kontaktieren.
60 changes: 47 additions & 13 deletions UniFi Device Blocker/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,22 @@ Dieses Modul ermöglicht es Geräte im Netz zu blockieren, um z.B. den Zugang de
2. [Voraussetzungen](#2-voraussetzungen)
3. [Software-Installation](#3-software-installation)
4. [Einrichten der Instanzen in IP-Symcon](#4-einrichten-der-instanzen-in-ip-symcon)
5. [Versionsinformation](#5-versionsinformation)
5. [PHP-Befehlsreferenz](#5-php-befehlsreferenz)
6. [Versionsinformation](#6-versionsinformation)


## 1. Funktionsumfang

* Unterstützung für UniFi Cloudkey 1
* Unterstützung für UniFi Cloudkey 2 und Dream Maschine
* Unterstützung für UniFi CloudKey 1 (UC-CK)
* Unterstützung für UniFi CloudKey 2 (UCK-G2) und DreamMachine (UDM)
* Anlegen von zu überwachenden Geräten mit Name und MAC Adresse
* Erstellt pro Gerät eine Variable welche z.B. für die Automation oder Überwachung genutzt werden kann (Boolean)
* Das Modul reagiert auf die Änderung einer Variable

## 2. Vorraussetzungen
## 2. Voraussetzungen

- IP-Symcon ab Version 5.5
- Unifi Benutzer mit Owner oder Super-Admin Rechten (Limited-Admin Rechte sind nicht ausreichend!)

## 3. Software-Installation

Expand All @@ -36,7 +38,7 @@ __Konfigurationsseite__:

**Art des Controllers**

Da sich die APIs von CloudKey 1 und CloudKey2/Dreammaschine unterscheiden, kann hier der Controller gewählt werden
Da sich die APIs von CloudKey 1 und CloudKey2/DreamMachine unterscheiden, kann hier der Controller gewählt werden

**Benutzername & Kennwort**

Expand All @@ -46,27 +48,50 @@ Account mit dem sich das Modul mit dem Controller verbindet

Site die im Controller hinterlegt ist

**IP Adresse und Port**
**IP-Adresse und Port**

Bei der Dream Maschine ist der Port 443, bei einem Controller im Standard 8443. IP Addresse des CloudKeys oder der Dream Maschine.
Bei der DreamMachine ist der Port 443, bei einem Controller im Standard 8443. IP-Adresse des CloudKeys oder der DreamMachine.

**Aktualisierungsfrequenz**

Da der Controller aktiv abfragt werden muss, kann man hier eine Frequenz hinterlegen wie oft dies geschehen soll.

**Geräte**

Geräte die Überwacht werden sollen, werden einfach mit einem Namen und einer MAC Addresse in der Tabelle hinterlegt. Das Modul erstellt dann eine Boolean Variable mit Switch Profil welche in weiter Prozesse eingebunden werden kann um ein Gerät zu blocken oder eine blockade aufzulösen.
Geräte die Überwacht werden sollen, werden einfach mit einem Namen und einer MAC Addresse in der Tabelle hinterlegt.
Das Modul erstellt dann eine Boolean-Variable mit Switch-Profil, welche in weiter Prozesse eingebunden werden kann um ein Gerät zu blocken (=false) oder eine blockade aufzulösen (=true).
Das Modul selbst löscht keine Variablen, sollte sich ein Name ändern, dann wird eine neue erstellt und die alte im Objektbaum belassen.

**Debugging**
Das Modul gibt diverse Informatioen im Debug Bereich aus.

## 5. Versionsinformation
Das Modul gibt diverse Informationen im Debug Bereich aus.

### 5. PHP-Befehlsreferenz

#### Empfehlung
Sofern nur eine Instanz des Unifi Device Blockers im Einsatz ist, sollte die $InstanzID wie folgt dynamisch ermittelt werden und nicht statisch gesetzt werden, da somit ein Löschen und Neuinstallieren der Unifi Device Blocker Instanz keine Auswirkung auf andere Skripte hat:

`$InstanzID = IPS_GetInstanceListByModuleID("{FC3E71F1-BF95-D45D-0676-BA3D10D02CB8}")[0];`


#### Funktionen

`bool DB_block(int $InstanzID, string $DeviceMacAddress)`

Blockiert das Gerät mit der MAC Adresse $DeviceMacAddress, welche in der DeviceBlocker Instanz $InstanzID konfiguriert wurde.
Gibt false zurück, wenn Gerät in DeviceBlocker Instanz nicht gefunden wurde, ansonsten true.

`bool DB_unblock(int $InstanzID, string $DeviceMacAddress)`

Erlaubt das Gerät mit der MAC Adresse $DeviceMacAddress, welche in der DeviceBlocker Instanz $InstanzID konfiguriert wurde.
Gibt false zurück, wenn Gerät in DeviceBlocker Instanz nicht gefunden wurde, ansonsten true.


## 6. Versionsinformation

Version 0.3 (Beta) - 23-08-2021
* Unterstützung für UniFi Cloudkey 1
* Unterstützung für UniFi Cloudkey 2 und Dream Maschine
* Unterstützung für UniFi CloudKey 1
* Unterstützung für UniFi CloudKey 2 und DreamMachine
* Anlegen von zu überwachenden Geräten mit Name und MAC Adresse
* Erstellt pro Gerät eine Variable welche z.B. für die Automation oder Überwachung genutzt werden kann (Boolean)
* Abfragen der Controller erfolgt zeitgesteuert alle xx Sekunden
Expand All @@ -75,4 +100,13 @@ Version 0.31 (Beta) - 27-08-2021
* Fix bei der Logik zum blocken

Version 1.0 - 09-09-2021
* keine weiteren Änderungen
* keine weiteren Änderungen

Version 1.1 - 25-12-2021
* Fix - Memory Leak
* Fix - HTTP Response Error Message
* Variablen Management umgestellt - es Ident wird jetzt die MAC verwendet

Version 1.2 - 30-12-2021
* Neu - Verbessertes Fehlerhandling vor allem bei falschen Logins
* Neu - Block kann jetzt als Funktion aufgerufen werden
28 changes: 18 additions & 10 deletions UniFi Device Blocker/form.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@
},
{
"type": "Label",
"label": "Please select the type of controller you are using, enter its IP Adress, Port and a user allowed to log in."
"label": "Please select the type of controller you are using, enter its IP address, port and a user allowed to log in."
},
{
"type": "Label",
"label": "To manage devices, please use their MAC adress and a clear text name, which will be used to create a variable in the object tree."
"label": "To manage devices, please use their MAC address and a clear text name, which will be used to create a variable in the object tree."
},
{
"type": "Label",
Expand All @@ -40,7 +40,7 @@
"caption": "Controller Type",
"options": [
{
"caption": "Dream Maschine / Pro / CloudKey V2",
"caption": "DreamMachine / Pro / CloudKey V2",
"value": 0
},
{
Expand All @@ -56,13 +56,17 @@
},
{
"type": "ValidationTextBox",
"name": "ServerAdress",
"caption": "Server Address"
"name": "ServerAddress",
"caption": "Server Address",
"validate": "^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"
},
{
"type": "NumberSpinner",
"name": "ServerPort",
"caption": "Server Port"
"caption": "Server Port",
"digits": 0,
"minimum": 1,
"maximum": 65535
},
{
"type": "ValidationTextBox",
Expand All @@ -74,6 +78,11 @@
"name": "Password",
"caption": "Password"
},
{
"type": "Label",
"bold": "true",
"label": "Device names must not contain a space - e.g. please use GardenCam without a space."
},
{
"type": "List",
"name": "Devices",
Expand Down Expand Up @@ -115,10 +124,9 @@
{
"type": "Button",
"label": "Test Authentication and Blocking",
"onClick": "DB_AuthenticateAndProcessRequest($id);"
"onClick": "DB_AuthenticateAndProcessRequest($id, '');"
}
]
}
],
"status": []
}
]
}
9 changes: 6 additions & 3 deletions UniFi Device Blocker/locale.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,25 @@
"de": {
"Module Help": "Modul Hilfe",
"This Module allows to block devices from accessing the network - e.g. block internet access of children post 20:00.": "Dieses Modul ermöglicht es Geräte im Netz zu blockieren, um z.B. den Zugang der Kinder zu Internet nach 20 Uhr zu blockieren.",
"Please select the type of controller you are using, enter its IP Adress, Port and a user allowed to log in.": "Bitte wählen sie die Art des Controllers und geben die IP Adresse, Port und einen Anwender ein der auf diesen zugreifen darf.",
"To manage certain devices, please use their MAC adress and a clear text name, which will be used to create a variable in the object tree.": "Um Geräte zu verwalten, geben sie bitte die MAC Addresse und einen Namen in der Form unten ein - anhand des Namens wird eine Boolean Variable im Objektbaum erstellt.",
"Please select the type of controller you are using, enter its IP address, port and a user allowed to log in.": "Bitte wählen sie die Art des Controllers und geben die IP Adresse, Port und einen Anwender ein der auf diesen zugreifen darf.",
"To manage certain devices, please use their MAC address and a clear text name, which will be used to create a variable in the object tree.": "Um Geräte zu verwalten, geben sie bitte die MAC Addresse und einen Namen in der Form unten ein - anhand des Namens wird eine Boolean Variable im Objektbaum erstellt.",
"This variable can than be turn on or off resulting in a block or unblock e.g. via the mobile app, webfront or other automation.": "Die Variable im Objektbaum kann im Webfront, der Mobile-App oder einer Automation genutzt werden um Geräte ein oder aus zu schalten.",
"Updates will happen on a schedule every xyz seconds.": "Das Module prüft die Anwensenheit alle xyz Sekunden, wie im Module konfiguriert",
"For debugging, please use the Debug function of the module.": "Für das Prüfen der Funktionen, gibt es Modul Meldungen im Debugbereich aus",
"400 Bad Request - The server cannot or will not process the request due to an apparent client error.": "400 Bad Request - Die Anfrage wird vom Controller nicht verarbeitet (falsche IP?) - Client Fehler.",
"401 Unauthorized / 403 Forbidden - The request contained valid data and was understood by the server, but the server is refusing action. Missing user permission?": "401 Unauthorized / 403 Forbidden - Die Anfrage ging an den richtigen Server, allerdings konnte sich Symcon nicht anmelden. Bitte Login Daten prüfen.",
"UniFi Toolbox - Presence Manager Configuration": "UniFi Toolbox - Anwesenheits Manager Konfiguration",
"Controller Type": "Art des Controllers",
"Server Address": "Server Adresse",
"User Name": "Anmeldename",
"Password": "Passwort",
"Update Frequency": "Aktualisierungsfrequenz",
"sec - 0 is off": "Sek - 0 ist Aus",
"Device names must not contain a space - e.g. please use GardenCam without a space.": "Gerätenamen dürfen keine Leerzeichen enthalten, bitte z.B. GartenKamera verwenden",
"Devices": "Geräte",
"Devicename": "Gerätename",
"MAC": "MAC",
"Test Authentication and Blocking": "Teste Anmeldung und Sperre"
}
}
}
}
Loading

0 comments on commit 7fdaab7

Please sign in to comment.