Skip to content

Commit 7fdaab7

Browse files
authored
Merge pull request #25 from elueckel/beta
final 1.2 release
2 parents abaf356 + 69a6142 commit 7fdaab7

24 files changed

+1984
-537
lines changed

README.md

+10-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Die UniFi Toolbox ist eine Sammlung von Modulen, welche verschiedene Aktionen in
44

55
## Voraussetzungen:
66
* Symcon 5.5 oder höher
7-
* UniFi Dream Machine
7+
* UniFi DreamMachine
88
* UniFi Controller
99

1010
## Installation:
@@ -18,9 +18,17 @@ Folgende Module beinhaltet das UniFi Toolbox Repository:
1818
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.
1919

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

2323
- __UniFi Device Blocker__ ([Dokumentation](UniFi%20Device%20Blocker))
2424
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.
2525

26+
- __UniFi Device Monitor__ ([Dokumentation](UniFi%20Device%20Monitor))
27+
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.
28+
29+
- __UniFi Endpoint Monitor__ ([Dokumentation](UniFi%20Endpoint%20Monitor))
30+
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.
31+
2632
Für detaillierte Informationen zu den Modulen, wie z.B. zur Version bitte die Hilfeseiten der Module besuchen.
33+
34+
Dieses Modul ist für die nicht kommerzielle Nutzung kostenlos - bei kommerzieller Nutzung bitte den Author kontaktieren.

UniFi Device Blocker/README.md

+47-13
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,22 @@ Dieses Modul ermöglicht es Geräte im Netz zu blockieren, um z.B. den Zugang de
77
2. [Voraussetzungen](#2-voraussetzungen)
88
3. [Software-Installation](#3-software-installation)
99
4. [Einrichten der Instanzen in IP-Symcon](#4-einrichten-der-instanzen-in-ip-symcon)
10-
5. [Versionsinformation](#5-versionsinformation)
10+
5. [PHP-Befehlsreferenz](#5-php-befehlsreferenz)
11+
6. [Versionsinformation](#6-versionsinformation)
1112

1213

1314
## 1. Funktionsumfang
1415

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

21-
## 2. Vorraussetzungen
22+
## 2. Voraussetzungen
2223

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

2527
## 3. Software-Installation
2628

@@ -36,7 +38,7 @@ __Konfigurationsseite__:
3638

3739
**Art des Controllers**
3840

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

4143
**Benutzername & Kennwort**
4244

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

4749
Site die im Controller hinterlegt ist
4850

49-
**IP Adresse und Port**
51+
**IP-Adresse und Port**
5052

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

5355
**Aktualisierungsfrequenz**
5456

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

5759
**Geräte**
5860

59-
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.
61+
Geräte die Überwacht werden sollen, werden einfach mit einem Namen und einer MAC Addresse in der Tabelle hinterlegt.
62+
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).
6063
Das Modul selbst löscht keine Variablen, sollte sich ein Name ändern, dann wird eine neue erstellt und die alte im Objektbaum belassen.
6164

6265
**Debugging**
63-
Das Modul gibt diverse Informatioen im Debug Bereich aus.
6466

65-
## 5. Versionsinformation
67+
Das Modul gibt diverse Informationen im Debug Bereich aus.
68+
69+
### 5. PHP-Befehlsreferenz
70+
71+
#### Empfehlung
72+
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:
73+
74+
`$InstanzID = IPS_GetInstanceListByModuleID("{FC3E71F1-BF95-D45D-0676-BA3D10D02CB8}")[0];`
75+
76+
77+
#### Funktionen
78+
79+
`bool DB_block(int $InstanzID, string $DeviceMacAddress)`
80+
81+
Blockiert das Gerät mit der MAC Adresse $DeviceMacAddress, welche in der DeviceBlocker Instanz $InstanzID konfiguriert wurde.
82+
Gibt false zurück, wenn Gerät in DeviceBlocker Instanz nicht gefunden wurde, ansonsten true.
83+
84+
`bool DB_unblock(int $InstanzID, string $DeviceMacAddress)`
85+
86+
Erlaubt das Gerät mit der MAC Adresse $DeviceMacAddress, welche in der DeviceBlocker Instanz $InstanzID konfiguriert wurde.
87+
Gibt false zurück, wenn Gerät in DeviceBlocker Instanz nicht gefunden wurde, ansonsten true.
88+
89+
90+
## 6. Versionsinformation
6691

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

77102
Version 1.0 - 09-09-2021
78-
* keine weiteren Änderungen
103+
* keine weiteren Änderungen
104+
105+
Version 1.1 - 25-12-2021
106+
* Fix - Memory Leak
107+
* Fix - HTTP Response Error Message
108+
* Variablen Management umgestellt - es Ident wird jetzt die MAC verwendet
109+
110+
Version 1.2 - 30-12-2021
111+
* Neu - Verbessertes Fehlerhandling vor allem bei falschen Logins
112+
* Neu - Block kann jetzt als Funktion aufgerufen werden

UniFi Device Blocker/form.json

+18-10
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@
1010
},
1111
{
1212
"type": "Label",
13-
"label": "Please select the type of controller you are using, enter its IP Adress, Port and a user allowed to log in."
13+
"label": "Please select the type of controller you are using, enter its IP address, port and a user allowed to log in."
1414
},
1515
{
1616
"type": "Label",
17-
"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."
17+
"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."
1818
},
1919
{
2020
"type": "Label",
@@ -40,7 +40,7 @@
4040
"caption": "Controller Type",
4141
"options": [
4242
{
43-
"caption": "Dream Maschine / Pro / CloudKey V2",
43+
"caption": "DreamMachine / Pro / CloudKey V2",
4444
"value": 0
4545
},
4646
{
@@ -56,13 +56,17 @@
5656
},
5757
{
5858
"type": "ValidationTextBox",
59-
"name": "ServerAdress",
60-
"caption": "Server Address"
59+
"name": "ServerAddress",
60+
"caption": "Server Address",
61+
"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]?)$"
6162
},
6263
{
6364
"type": "NumberSpinner",
6465
"name": "ServerPort",
65-
"caption": "Server Port"
66+
"caption": "Server Port",
67+
"digits": 0,
68+
"minimum": 1,
69+
"maximum": 65535
6670
},
6771
{
6872
"type": "ValidationTextBox",
@@ -74,6 +78,11 @@
7478
"name": "Password",
7579
"caption": "Password"
7680
},
81+
{
82+
"type": "Label",
83+
"bold": "true",
84+
"label": "Device names must not contain a space - e.g. please use GardenCam without a space."
85+
},
7786
{
7887
"type": "List",
7988
"name": "Devices",
@@ -115,10 +124,9 @@
115124
{
116125
"type": "Button",
117126
"label": "Test Authentication and Blocking",
118-
"onClick": "DB_AuthenticateAndProcessRequest($id);"
127+
"onClick": "DB_AuthenticateAndProcessRequest($id, '');"
119128
}
120129
]
121130
}
122-
],
123-
"status": []
124-
}
131+
]
132+
}

UniFi Device Blocker/locale.json

+6-3
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,25 @@
33
"de": {
44
"Module Help": "Modul Hilfe",
55
"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.",
6-
"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.",
7-
"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.",
6+
"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.",
7+
"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.",
88
"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.",
99
"Updates will happen on a schedule every xyz seconds.": "Das Module prüft die Anwensenheit alle xyz Sekunden, wie im Module konfiguriert",
1010
"For debugging, please use the Debug function of the module.": "Für das Prüfen der Funktionen, gibt es Modul Meldungen im Debugbereich aus",
11+
"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.",
12+
"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.",
1113
"UniFi Toolbox - Presence Manager Configuration": "UniFi Toolbox - Anwesenheits Manager Konfiguration",
1214
"Controller Type": "Art des Controllers",
1315
"Server Address": "Server Adresse",
1416
"User Name": "Anmeldename",
1517
"Password": "Passwort",
1618
"Update Frequency": "Aktualisierungsfrequenz",
1719
"sec - 0 is off": "Sek - 0 ist Aus",
20+
"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",
1821
"Devices": "Geräte",
1922
"Devicename": "Gerätename",
2023
"MAC": "MAC",
2124
"Test Authentication and Blocking": "Teste Anmeldung und Sperre"
2225
}
2326
}
24-
}
27+
}

0 commit comments

Comments
 (0)