iobroker.webuntis2 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Voodoo2man <Voodoo2man@outlook.de>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.de.md ADDED
@@ -0,0 +1,79 @@
1
+ **IN ARBEIT**
2
+
3
+ ![WebUntis2](docs/webuntis2-readme-banner.png)
4
+
5
+ # ioBroker.webuntis2
6
+
7
+ [![NPM-Version](https://img.shields.io/npm/v/iobroker.webuntis2.svg)](https://www.npmjs.com/package/iobroker.webuntis2)
8
+
9
+ WebUntis2 verbindet ioBroker mit WebUntis. Der Adapter ruft Stundenpläne für
10
+ ein Schüler- oder Familienkonto ab und stellt sie in ioBroker für
11
+ Visualisierungen, Benachrichtigungen und Automatisierungen bereit.
12
+
13
+ ## Funktionen
14
+
15
+ - Schulsuche nach Schulname, Stadt oder Ort
16
+ - Einfache Auswahl der richtigen Schule bei der Einrichtung
17
+ - Geschützte Eingabe von Benutzername und Passwort
18
+ - Verbindungstest vor dem Speichern
19
+ - Stundenpläne für heute, morgen und die aktuelle Woche
20
+ - Unterrichtsdaten wie Fach, Lehrer, Raum, Klasse, Uhrzeit und Status
21
+ - Erkennung von Änderungen, Vertretungen und ausgefallenen Stunden
22
+ - Tagesübersichten mit Stundenanzahl, Unterrichtszeiten, Fächern und Änderungen
23
+ - Informationen zur aktuellen und nächsten Stunde inklusive Restzeit
24
+ - Aktuelle und nächste Schulferien
25
+ - Automatische Aktualisierung standardmäßig alle fünf Minuten
26
+
27
+ ## Installation und Einrichtung
28
+
29
+ 1. Installiere **WebUntis2** über die ioBroker-Adapterliste.
30
+ 2. Lege eine neue Instanz `webuntis2` an.
31
+ 3. Suche nach deiner Schule, indem du einen Teil des Namens oder einen Ort
32
+ eingibst.
33
+ 4. Wähle die passende Schule aus den Ergebnissen aus.
34
+ 5. Gib Benutzername und Passwort deines WebUntis-Kontos ein.
35
+ 6. Führe den **Verbindungstest** aus und speichere die Einstellungen.
36
+
37
+ Die ausgewählte Schule wird zusammen mit den für die Verbindung benötigten
38
+ Daten gespeichert. Eine Serveradresse muss nicht manuell eingetragen werden,
39
+ wenn sie über die Schulsuche ermittelt wurde.
40
+
41
+ ## Daten in ioBroker
42
+
43
+ Die Stundenpläne stehen unter `timetable.today`, `timetable.tomorrow` und
44
+ `timetable.week` zur Verfügung. Jede Unterrichtsstunde enthält verständliche
45
+ Werte für Fach, Lehrer, Raum, Klasse, Beginn, Ende und Status.
46
+
47
+ Die Tagesübersicht zeigt, ob Schule stattfindet, die Anzahl und Dauer der
48
+ Stunden, die erste und letzte Stunde, die Fächer in Stundenplanreihenfolge
49
+ sowie Änderungen und Ausfälle. Im Bereich `info` befinden sich der
50
+ Verbindungsstatus und Aktualisierungsinformationen. Ferientermine stehen unter
51
+ `holidays`.
52
+
53
+ ## Voraussetzungen und Hinweise
54
+
55
+ - Für die ausgewählte Schule wird ein WebUntis-Konto mit ausreichenden Rechten
56
+ benötigt.
57
+ - Unterstützt wird die Anmeldung mit Benutzername und Passwort.
58
+ - QR-Code-, Microsoft-365-, SAML- und OAuth-Anmeldung werden nicht unterstützt.
59
+ - Prüfungen, Hausaufgaben und Mitteilungen werden nicht bereitgestellt.
60
+ - WebUntis ist ein externer Dienst. Dieses Projekt ist unabhängig und nicht
61
+ mit der Untis GmbH verbunden.
62
+
63
+ ## Datenschutz und Sicherheit
64
+
65
+ Das Passwort wird über die geschützte ioBroker-Konfiguration gespeichert.
66
+ Zugangsdaten, Cookies und Sitzungsinformationen werden weder in Logs angezeigt
67
+ noch als States veröffentlicht. Teile deine Zugangsdaten niemals in Issues
68
+ oder Supportanfragen.
69
+
70
+ ## Hilfe bei Problemen
71
+
72
+ Prüfe zuerst, ob die ausgewählte Schule und der WebUntis-Login im Browser
73
+ funktionieren. Führe anschließend den Verbindungstest in der
74
+ Adapterkonfiguration aus. Teile bei einer Supportanfrage nur relevante,
75
+ nicht vertrauliche Logmeldungen.
76
+
77
+ ## Lizenz
78
+
79
+ MIT-Lizenz. Siehe [LICENSE](LICENSE).
package/README.md ADDED
@@ -0,0 +1,74 @@
1
+ **WORK IN PROGRESS**
2
+
3
+ ![WebUntis2](docs/webuntis2-readme-banner.png)
4
+
5
+ # ioBroker.webuntis2
6
+
7
+ [![NPM version](https://img.shields.io/npm/v/iobroker.webuntis2.svg)](https://www.npmjs.com/package/iobroker.webuntis2)
8
+
9
+ WebUntis2 connects ioBroker with WebUntis. It retrieves timetables for a
10
+ student or family account and makes them available in ioBroker for
11
+ visualizations, notifications, and automations.
12
+
13
+ ## What the adapter provides
14
+
15
+ - School search by school name, city, or address
16
+ - Simple school selection during setup
17
+ - Secure username and password configuration
18
+ - A connection test before saving
19
+ - Timetables for today, tomorrow, and the current week
20
+ - Lesson details such as subject, teacher, room, class, time, and status
21
+ - Information about changes, substitutions, and cancelled lessons
22
+ - Daily summaries with lesson counts, school times, subjects, and changes
23
+ - Current and next lesson information, including the remaining time
24
+ - Current and upcoming school holidays
25
+ - Automatic updates every five minutes by default
26
+
27
+ ## Installation and setup
28
+
29
+ 1. Install **WebUntis2** from the ioBroker adapter list.
30
+ 2. Create a new `webuntis2` instance.
31
+ 3. Search for your school by entering part of its name or a city.
32
+ 4. Select the matching school from the results.
33
+ 5. Enter the WebUntis username and password.
34
+ 6. Use **Test connection** and save the settings.
35
+
36
+ The adapter stores the selected school together with the information required
37
+ for the connection. No server address needs to be entered manually when it is
38
+ provided by the school search.
39
+
40
+ ## Data in ioBroker
41
+
42
+ The timetable is available below `timetable.today`, `timetable.tomorrow`, and
43
+ `timetable.week`. Each lesson contains readable values for the subject,
44
+ teacher, room, class, start and end time, and lesson status.
45
+
46
+ Daily summaries show whether there is school, the number and duration of
47
+ lessons, the first and last lesson, the subjects in timetable order, and
48
+ changes or cancellations. The `info` section contains the connection status
49
+ and update information. Holiday information is available below `holidays`.
50
+
51
+ ## Requirements and notes
52
+
53
+ - A WebUntis account with access to the selected school is required.
54
+ - Username-and-password login is supported.
55
+ - QR-code, Microsoft 365, SAML, and OAuth login are not supported.
56
+ - Exams, homework, and messages are not provided.
57
+ - WebUntis is an external service. This project is independent and is not
58
+ affiliated with Untis GmbH.
59
+
60
+ ## Privacy and security
61
+
62
+ The password is stored using ioBroker's protected configuration mechanism.
63
+ Credentials, cookies, and session information are not shown in logs or
64
+ published as states. Do not share login details in issues or support requests.
65
+
66
+ ## Support
67
+
68
+ If the connection does not work, check the selected school and WebUntis login
69
+ in a browser first. Then run the connection test in the adapter configuration
70
+ and include only relevant, non-sensitive log messages when asking for help.
71
+
72
+ ## License
73
+
74
+ MIT License. See [LICENSE](LICENSE).
@@ -0,0 +1,2 @@
1
+ .logo-background-light,.logo-background-colored{background:#fff}.logo-background-dark,.logo-background-blue{background:#000}.logo-div{position:absolute;top:50%;left:50%;-ms-transform:translateX(-50%) translateY(-50%);-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);overflow:hidden;border-radius:50%;z-index:2}.logo-border{border-top-color:#39c;border-left-color:#164477;border-bottom-color:#164477;border-right-color:#164477;border-radius:50%;border-style:solid;box-sizing:border-box;width:100%;height:100%;position:absolute}.logo-top{position:absolute;width:4.5%;height:16%;top:0;z-index:2}.logo-i{position:absolute;width:14.5%;height:60%;top:20%;left:42%;background:#39c}.logo-i-top{position:absolute;width:14.5%;height:4%;left:42%;background:#39c;border-radius:100%}.logo-back{width:100%;height:100%;z-index:0;overflow:hidden}@keyframes logo-grow{0%{width:230px;height:230px;transform:translate(-50%,-50%) scale(1);opacity:1}99%{width:230px;height:230px;transform:translate(-50%,-50%) scale(10);opacity:0}to{width:0;height:0;opacity:0}}@keyframes logo-spin{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes logo-color-inside-light{0%{background:#fefefe}to{background:#39c}}@keyframes logo-color-inside-dark{0%{background:#030303}to{background:#39c}}@keyframes logo-color-inside-colored{0%{background:#fefefe}to{background:#39c}}@keyframes logo-color-inside-blue{0%{background:#030303}to{background:#39c}}@keyframes logo-color-outside-light{0%{border-color:#fefefe}to{border-top-color:#39c;border-left-color:#164477;border-bottom-color:#164477;border-right-color:#164477}}@keyframes logo-color-outside-dark{0%{border-color:#040404}to{border-top-color:#39c;border-left-color:#164477;border-bottom-color:#164477;border-right-color:#164477}}@keyframes logo-color-outside-colored{0%{border-color:#fefefe}to{border-top-color:#39c;border-left-color:#164477;border-bottom-color:#164477;border-right-color:#164477}}@keyframes logo-color-outside-blue{0%{border-color:#040404}to{border-top-color:#39c;border-left-color:#164477;border-bottom-color:#164477;border-right-color:#164477}}.logo-animate-wait{animation:logo-color-outside 1.5s,logo-spin 1.5s linear infinite}.logo-animate-grow-light{background:#ddd}.logo-animate-grow-dark{background:#1d1d1d}.logo-animate-grow-colored{background:#ddd}.logo-animate-grow-blue{background:#1d1d1d}.logo-animate-grow{display:inline-block;text-align:center;z-index:1;top:50%;left:50%;-ms-transform:translateX(-50%) translateY(-50%);-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:245px;height:245px;border-radius:50%;position:absolute;animation:logo-grow 1s 1 ease forwards}.logo-animate-color-inside-light{animation:logo-color-inside-light 2.5s}.logo-animate-color-inside-dark{animation:logo-color-inside-dark 2.5s}.logo-animate-color-inside-colored{animation:logo-color-inside-colored 2.5s}.logo-animate-color-inside-blue{animation:logo-color-inside-blue 2.5s}.logo-animate-color-outside-light{animation:logo-color-outside-light 1.5s}.logo-animate-color-outside-dark{animation:logo-color-outside-dark 1.5s}.logo-animate-color-outside-colored{animation:logo-color-outside-colored 1.5s}.logo-animate-color-outside-blue{animation:logo-color-outside-blue 1.5s}html{height:100%}body{margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:100%;height:100%;overflow:hidden}::-webkit-scrollbar-track{background-color:#ccc;border-radius:5px}::-webkit-scrollbar{width:5px;height:5px;background-color:#ccc}::-webkit-scrollbar-thumb{background-color:#575757;border-radius:5px}#root,.App{height:100%}@keyframes glow{0%{background-color:initial}to{background-color:#58c458}}
2
+ /*# sourceMappingURL=index.css.map */
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../node_modules/@iobroker/adapter-react/Components/loader.css", "../../node_modules/@iobroker/adapter-react/index.css"],
4
+ "sourcesContent": ["/**\n * Copyright 2018-2021 bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n **/\n\n.logo-background-light, .logo-background-colored {\n background: white;\n}\n.logo-background-dark, .logo-background-blue {\n background: black;\n}\n.logo-div {\n position: absolute;\n top: 50%;\n left: 50%;\n -ms-transform: translateX(-50%) translateY(-50%);\n -webkit-transform: translate(-50%,-50%);\n transform: translate(-50%,-50%);\n overflow: hidden;\n border-radius: 50%;\n z-index: 2;\n}\n.logo-border {\n /*border-color: #164477;*/\n border-top-color: #3399CC;\n border-left-color: #164477;\n border-bottom-color: #164477;\n border-right-color: #164477;\n border-radius: 50%;\n border-style: solid;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n position: absolute;\n}\n.logo-top {\n position: absolute;\n width: 4.5%;\n height: 16%;\n top: 0;\n z-index: 2;\n}\n.logo-i {\n position: absolute;\n width: 14.5%;\n height: 60%;\n top: 20%;\n left: 42%;\n background: #3399CC;\n}\n.logo-i-top {\n position: absolute;\n width: 14.5%;\n height: 4%;\n left: 42%;\n background: #3399CC;\n border-radius: 100%;\n}\n.logo-back {\n width: 100%;\n height: 100%;\n z-index: 0;\n overflow: hidden;\n}\n@keyframes logo-grow {\n 0% {\n width: 230px;\n height: 230px;\n transform: translate(-50%,-50%) scale(1);\n opacity: 1\n }\n 99% {\n width: 230px;\n height: 230px;\n transform: translate(-50%,-50%) scale(10);\n opacity: 0;\n }\n 100% {\n width: 0;\n height: 0;\n opacity: 0;\n }\n}\n@keyframes logo-spin { 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } }\n@keyframes logo-color-inside-light {\n 0% {\n background: #FEFEFE;\n }\n 100% {\n background: #3399CC;\n }\n}\n@keyframes logo-color-inside-dark {\n 0% {\n background: #030303;\n }\n 100% {\n background: #3399CC;\n }\n}\n@keyframes logo-color-inside-colored {\n 0% {\n background: #FEFEFE;\n }\n 100% {\n background: #3399CC;\n }\n}\n@keyframes logo-color-inside-blue {\n 0% {\n background: #030303;\n }\n 100% {\n background: #3399CC;\n }\n}\n\n@keyframes logo-color-outside-light {\n 0% {\n border-color: #FEFEFE;\n }\n 100% {\n border-top-color: #3399CC;\n border-left-color: #164477;\n border-bottom-color: #164477;\n border-right-color: #164477;\n }\n}\n@keyframes logo-color-outside-dark {\n 0% {\n border-color: #040404;\n }\n 100% {\n border-top-color: #3399CC;\n border-left-color: #164477;\n border-bottom-color: #164477;\n border-right-color: #164477;\n }\n}\n@keyframes logo-color-outside-colored {\n 0% {\n border-color: #FEFEFE;\n }\n 100% {\n border-top-color: #3399CC;\n border-left-color: #164477;\n border-bottom-color: #164477;\n border-right-color: #164477;\n }\n}\n@keyframes logo-color-outside-blue {\n 0% {\n border-color: #040404;\n }\n 100% {\n border-top-color: #3399CC;\n border-left-color: #164477;\n border-bottom-color: #164477;\n border-right-color: #164477;\n }\n}\n\n.logo-animate-wait {\n animation: logo-color-outside 1.5s, logo-spin 1.5s linear infinite;\n}\n\n.logo-animate-grow-light {\n background: #DDD;\n}\n.logo-animate-grow-dark {\n background: #1d1d1d;\n}\n.logo-animate-grow-colored {\n background: #DDD;\n}\n.logo-animate-grow-blue {\n background: #1d1d1d;\n}\n\n.logo-animate-grow {\n display: inline-block;\n text-align: center;\n z-index: 1;\n top: 50%;\n left: 50%;\n -ms-transform: translateX(-50%) translateY(-50%);\n -webkit-transform: translate(-50%,-50%);\n transform: translate(-50%,-50%);\n width: 245px;\n height: 245px;\n border-radius: 50%;\n position: absolute;\n animation: logo-grow 1s 1 ease forwards;\n}\n\n.logo-animate-color-inside-light {\n animation: logo-color-inside-light 2.5s;\n}\n.logo-animate-color-inside-dark {\n animation: logo-color-inside-dark 2.5s;\n}\n.logo-animate-color-inside-colored {\n animation: logo-color-inside-colored 2.5s;\n}\n.logo-animate-color-inside-blue {\n animation: logo-color-inside-blue 2.5s;\n}\n\n.logo-animate-color-outside-light {\n animation: logo-color-outside-light 1.5s;\n}\n.logo-animate-color-outside-dark {\n animation: logo-color-outside-dark 1.5s;\n}\n.logo-animate-color-outside-colored {\n animation: logo-color-outside-colored 1.5s;\n}\n.logo-animate-color-outside-blue {\n animation: logo-color-outside-blue 1.5s;\n}", "/**\n * Copyright 2018-2020 bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n **/\n\nhtml {\n height: 100%;\n}\n\nbody {\n margin: 0;\n padding: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n\n/* scrollbar */\n::-webkit-scrollbar-track {\n background-color: #ccc;\n border-radius: 5px;\n}\n\n::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n background-color: #ccc;\n}\n\n::-webkit-scrollbar-thumb {\n background-color: #575757;\n border-radius: 5px;\n}\n\n#root {\n height: 100%;\n}\n\n.App {\n height: 100%;\n}\n\n@keyframes glow {\n from {\n background-color: initial;\n }\n to {\n background-color: #58c458;\n }\n}"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }