Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. TESTER: Neuer Adapter Webuntis

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    TESTER: Neuer Adapter Webuntis

    This topic has been deleted. Only users with topic management privileges can see it.
    • Newan
      Newan last edited by

      Nach dem Adapterwunsch unter: https://github.com/ioBroker/AdapterRequests/issues/673
      und der Bereitstellung eines Accounts (danke Lissandro) habe ich mir dem Thema mal angesehen.

      Würde mich freuen wenn der ein oder andere mal testen könnte:

      https://github.com/Newan/ioBroker.webuntis

      Es ist natürlich nicht fehlerfrei und der erste Versuch.

      Umgesetzt:

      • Login Webuntis
        • Es wird ein Account sowie Schulkennung und baseUrl gebraucht. Wenn das nicht selbsterklärend ist, kann ich gerne Helfen
      • Jede Stunde wird nach Veränderungen gesucht
        • Nach Wunsch könnte man auch einen force refresh Button einbinden
      • Es der aktuelle Tag abgefragt, ist da kein Stundenplan (Wochenende etc.) sucht der Adapter nach dem nächsten Werktag.

      Fragen:

      • Reicht ein Tag?
      • Welche Daten werden noch benötigt?
      • Sind die Daten bei anderen Accounts ggf. falsch oder anders?
      • Was sind eure Wünsche?

      @Mod Ich habe keine Rechte in Entwicklung oder Tester ein Beitrag zu eröffnen daher erstmal hier. Ggf kann es einer verschieben?

      Gruß
      Newan

      Elektrickser created this issue in ioBroker/AdapterRequests

      closed Untis / Webuntis Stundenplan #673

      derAlff E D andre 4 Replies Last reply Reply Quote 4
      • derAlff
        derAlff Developer @Newan last edited by

        Hallo @newan

        Schau mal hier https://forum.iobroker.net/topic/26085/richtlinien-für-die-kategorie-tester

        Du kannst dem @Jey-Cee eine Nachricht schreiben, um in Tester schreiben zu dürfen/können 😉

        Homoran 1 Reply Last reply Reply Quote 0
        • E
          elektrickser.de @Newan last edited by elektrickser.de

          @newan sagte in TESTER: Neuer Adapter Webuntis:

          Hi Newan,

          danke, dass du dich der Sache angenommen hast.

          ich kann mich leider nicht einloggen:

          webuntis.0
          	2022-01-23 00:00:37.817	error	Login WebUntis failed
          webuntis.0
          	2022-01-23 00:00:37.816	error	Error: Failed to login. {"jsonrpc":"2.0","id":"error","error":{"message":"invalid schoolname","code":-8500}}
          webuntis.0
          	2022-01-23 00:00:30.276	warn	Clear yet terminated timer undefined
          webuntis.0
          	2022-01-22 23:59:56.215	error	Login WebUntis failed
          webuntis.0
          	2022-01-22 23:59:56.214	error	Error: Failed to login. {"jsonrpc":"2.0","id":"Awesome","error":{"message":"bad credentials","code":-8504}}
          webuntis.0
          	2022-01-22 23:59:49.641	warn	Clear yet terminated timer undefined
          webuntis.0
          	2022-01-22 23:59:23.164	error	Login WebUntis failed
          webuntis.0
          	2022-01-22 23:59:23.163	error	Error: getaddrinfo ENOTFOUND https
          webuntis.0
          	2022-01-22 23:59:16.812	warn	Clear yet terminated timer undefined
          webuntis.0
          	2022-01-22 23:58:51.435	error	Login WebUntis failed
          webuntis.0
          	2022-01-22 23:58:51.434	error	Error: Failed to login. {"jsonrpc":"2.0","id":"Awesome","error":{"message":"bad credentials","code":-8504}}
          webuntis.0
          	2022-01-22 23:58:44.740	warn	Clear yet terminated timer undefined
          webuntis.0
          	2022-01-22 23:57:50.458	error	Login WebUntis failed
          webuntis.0
          	2022-01-22 23:57:50.457	error	Error: Failed to login. {"jsonrpc":"2.0","id":"Awesome","error":{"message":"bad credentials","code":-8504}}
          webuntis.0
          	2022-01-22 23:57:43.830	warn	Clear yet terminated timer undefined
          webuntis.0
          	2022-01-22 23:57:27.149	error	Login WebUntis failed
          webuntis.0
          	2022-01-22 23:57:27.148	error	Error: Failed to login. {"jsonrpc":"2.0","id":"Awesome","error":{"message":"bad credentials","code":-8504}}
          webuntis.0
          	2022-01-22 23:57:20.678	warn	Clear yet terminated timer undefined
          webuntis.0
          	2022-01-22 23:57:03.417	error	Login WebUntis failed
          webuntis.0
          	2022-01-22 23:57:03.414	error	Error: Failed to login. {"jsonrpc":"2.0","id":"error","error":{"message":"invalid schoolname","code":-8500}}
          webuntis.0
          	2022-01-22 23:56:56.117	warn	Clear yet terminated timer undefined
          webuntis.0
          	2022-01-22 23:54:40.556	error	Login WebUntis failed
          webuntis.0
          	2022-01-22 23:54:40.555	error	Error: Failed to login. {"jsonrpc":"2.0","id":"error","error":{"message":"invalid schoolname","code":-8500}}
          webuntis.0
          	2022-01-22 23:54:34.015	warn	Clear yet terminated timer undefined
          webuntis.0
          	2022-01-22 23:53:58.413	error	Login WebUntis failed
          webuntis.0
          	2022-01-22 23:53:58.412	error	Error: Failed to login. {"jsonrpc":"2.0","id":"Awesome","error":{"message":"bad credentials","code":-8504}}
          webuntis.0
          	2022-01-22 23:53:51.775	warn	Clear yet terminated timer undefined
          webuntis.0
          	2022-01-22 23:53:21.705	error	Login WebUntis failed
          webuntis.0
          	2022-01-22 23:53:21.704	error	Error: Failed to login. {"jsonrpc":"2.0","id":"Awesome","error":{"message":"bad credentials","code":-8504}}
          webuntis.0
          	2022-01-22 23:53:15.055	warn	Clear yet terminated timer undefined
          webuntis.0
          	2022-01-22 23:52:22.896	error	Login WebUntis failed
          webuntis.0
          	2022-01-22 23:52:22.895	error	Error: Failed to login. {"jsonrpc":"2.0","id":"error","error":{"message":"invalid schoolname","code":-8500}}
          webuntis.0
          	2022-01-22 23:52:16.350	warn	Clear yet terminated timer undefined
          webuntis.0
          	2022-01-22 23:50:29.774	error	Login WebUntis failed
          webuntis.0
          	2022-01-22 23:50:29.773	error	Error: Failed to login. {"jsonrpc":"2.0","id":"error","error":{"message":"invalid schoolname","code":-8500}}
          

          Ich weiß nicht ob es ein Problem ist, dass die Schule ein ü im Namen hat. Wenn ich "ue" schreibe, kommt der Fehler invalid schoolname

          Schreibe ich den Namen der Schule Fürth, dann kommt: bad credentials
          Mit dem Benutzer und Passwort kann ich mich ohne Probleme auf der Homepage einloggen.

          Newan 2 Replies Last reply Reply Quote 0
          • Newan
            Newan @elektrickser.de last edited by Newan

            @elektrickser-de wenn du magst kannst du mir den Account mal private zukommen lassen. Dann versuche ich es mal. Ü im Namen hab ich natürlich nicht direkt getestet 🙂

            Nachtrag:

            1. https://webuntis.com/
            2. Schule suchen
            3. nun findet man die baseurl (erste teil bis Topleveldomain) und auch die school Variabel

            Beispiel
            https://mese.webuntis.com/WebUntis/?school=AP_APH+Fürth#/basic/login

            Ergibt:
            BaeUrl: mese.webuntis.com
            School: AP_APH+Fürth

            1 Reply Last reply Reply Quote 0
            • Homoran
              Homoran Global Moderator Administrators @derAlff last edited by

              @deralff sagte in TESTER: Neuer Adapter Webuntis:

              Hallo @newan

              Schau mal hier https://forum.iobroker.net/topic/26085/richtlinien-für-die-kategorie-tester

              Du kannst dem @Jey-Cee eine Nachricht schreiben, um in Tester schreiben zu dürfen/können 😉

              habs in Tester geschoben!

              1 Reply Last reply Reply Quote 0
              • Newan
                Newan @elektrickser.de last edited by

                @elektrickser-de
                Dein Account bekommt nun Daten, keine Ahnung wieso auf einmal.
                Danach gab es aber noch ein Fehler. Da bei deinen Daten kein Lehrer im Array steht. Dieser wurde behoben. Einfach einmal neu installieren.

                1 Reply Last reply Reply Quote 0
                • E
                  elektrickser.de last edited by

                  @newan Jep, klappt erstmal. Ich test mal und dann schauen wir mal weiter. Ich schau mir deinen Code mal an, vielleicht kann ich dich unterstützen

                  ldittmar 1 Reply Last reply Reply Quote 0
                  • ldittmar
                    ldittmar Developer @elektrickser.de last edited by ldittmar

                    Cool... danke für den Adapter. Jetzt kommen die Details 😉

                    Wie wäre es wenn man aus end- und startTime Date-Objekte machen würden, dann könnte man viel einfacher damit arbeiten.

                    Das Programm gibt auch noch weitere wichtige Daten. Heute zum Beispiel gab es eine Benachrichtigung, dass in der Schule eine Telefonumstellung gibt.

                    Außerdem gibt es die Möglichkeit Mitteilungen von Lehrer zu empfange/versenden. Das Versenden ist erstmal nicht so wichtig... aber der Posteingang ist schon cool. Da hat z.B. eine Lehrerin geschrieben, dass sie zu spät kommt.

                    Dann gibt es noch das Info-Center mit Abwesenheiten, Termine und Sprechstunden. 🙂

                    Aber klar... immer eins nach dem Anderen 😄

                    Ahh... dein Nachtrag zum baseUrl, School ist echt wichtig, denn viele werden das so nicht hinbekommen. Das sollte ggf. in die Konfig-Seite rein.

                    Newan 3 Replies Last reply Reply Quote 1
                    • Newan
                      Newan @ldittmar last edited by

                      @ldittmar Alles richtig,

                      das mit dem Datum ist schon seit gestern Abend drin :-), aber noch keine neue Version veröffentlicht.

                      Wollte jetzt erstmal den Stundenplan als erstes Feature einbauen. Alles weitere danach, gerne mit Beispielen aus Accounts.
                      Da ich ja bekanntlich noch keine Kids im Schulalter habe bin ich da auf euch angewiesen 🙂

                      Aber danke für die Ideen

                      @elektrickser-de Ggf. könntest du dich um die Readme bzw. die Doku kümmern. Das net so mein Ding und würdest mir viel Arbeit abnehmen.

                      1 Reply Last reply Reply Quote 0
                      • Newan
                        Newan @ldittmar last edited by

                        @ldittmar Hab mal versucht herauszufinden welche Daten ich für deine Ideen wo her bekomme. Leider finde ich keine passenden Funktionen. Ggf kann mir wer helfen:

                        https://webuntis.noim.me/

                        Was an Funktionen wäre für euch noch interessant?

                        1 Reply Last reply Reply Quote 0
                        • O
                          oxident last edited by oxident

                          Super Adapter, vielen Dank! Hat auch auf Anhieb geklappt.

                          Ein paar Vorschläge hätte ich:

                          • Wäre gut, wenn der Adapter Beginn und Ende der Schulzeit ermitteln könnte. Also quasi einfach nur früheste Startzeit und späteste Endzeit.

                          • Vielleicht könnte man alles nach aktuellem Tag und den Folgetag gliedern. Also quasi als oberste Ebene der DP "current" und "1d" oder "nextday" verwenden. Schwierig wird da ggf. noch das Handling von Wochenenden und Ferien.

                          • Da ja derzeit wohl überall oft Ausfälle sind wäre es toll, wenn der Adapter gleich auch pro Tag die Anzahl der ausgefallenen Stunden zählen könnte. Dann kann man direkt darauf triggern, dass heute (oder morgen) etwas ausfällt. In der API wäre das beim Attribut "code" der Wert "cancelled".

                          • Parallel dazu könnte man so auch Vertretungsunterricht (oder Distanzlernen) abfangen. Die entsprechenden "codes" kenne ich zwar nicht, aber man könnte generell, wenn bei einer Schulstunde ein "code" <> "cancelled" vorhanden ist einen Zähler (z. B. "exceptions") inkrementieren. Dann weiß man, dass an diesem Tag irgendwas "komisch" ist 😉

                          Newan 1 Reply Last reply Reply Quote 0
                          • Newan
                            Newan @oxident last edited by

                            @oxident Super Ideen, schaue ich mir die Tage gerne an. Das mit dem "code" hab ich noch gar nicht gesehen. Wenn ihr sowas habt. Würde ich über den Debug-Log freuen damit ich das Json mal analysieren kann.

                            O 1 Reply Last reply Reply Quote 0
                            • S
                              Seamen last edited by

                              Sehr gute idee! werde ich mir definitiv anschauen!

                              1 Reply Last reply Reply Quote 0
                              • O
                                oxident @Newan last edited by

                                @newan Gesagt, getan. Musste ja nicht lange auf den nächsten Ausfall warten 😉

                                [
                                	{
                                		"id": 123,
                                		"date": 20220126,
                                		"startTime": 1120,
                                		"endTime": 1240,
                                		"code": "irregular",
                                		"kl": [
                                			{
                                				"id": 123,
                                				"name": "7e",
                                				"longname": "LEHRER"
                                			}
                                		],
                                		"te": [
                                			{
                                				"id": 123,
                                				"name": "XXX",
                                				"longname": "LEHRER"
                                			}
                                		],
                                		"su": [
                                			{
                                				"id": 123,
                                				"name": "En",
                                				"longname": "Englisch"
                                			}
                                		],
                                		"ro": [
                                			{
                                				"id": 123,
                                				"name": "E1.02",
                                				"longname": "Klassenraum XX",
                                				"orgid": 99,
                                				"orgname": "TU3"
                                			}
                                		],
                                		"lsnumber": 123,
                                		"sg": "Sp_7e"
                                	},
                                	{
                                		"id": 123,
                                		"date": 20220126,
                                		"startTime": 1120,
                                		"endTime": 1240,
                                		"code": "cancelled",
                                		"kl": [
                                			{
                                				"id": 123,
                                				"name": "7e",
                                				"longname": "LEHRER"
                                			}
                                		],
                                		"te": [
                                			{
                                				"id": 123,
                                				"name": "XXX",
                                				"longname": "LEHRER"
                                			}
                                		],
                                		"su": [
                                			{
                                				"id": 123,
                                				"name": "Sp",
                                				"longname": "Sport"
                                			}
                                		],
                                		"ro": [
                                			{
                                				"id": 123,
                                				"name": "TU3",
                                				"longname": "Turnhalle 3"
                                			}
                                		],
                                		"lsnumber": 123,
                                		"sg": "Sp_7e",
                                		"activityType": "Unterricht"
                                	},
                                	{
                                		"id": 123,
                                		"date": 20220126,
                                		"startTime": 1340,
                                		"endTime": 1500,
                                		"kl": [
                                			{
                                				"id": 123,
                                				"name": "7e",
                                				"longname": "LEHRER"
                                			}
                                		],
                                		"te": [
                                			{
                                				"id": 123,
                                				"name": "LEHRER",
                                				"longname": "LEHRER",
                                				"orgid": 123,
                                				"orgname": "VOIM"
                                			}
                                		],
                                		"su": [
                                			{
                                				"id": 123,
                                				"name": "LeZ",
                                				"longname": "Lernzeit"
                                			}
                                		],
                                		"ro": [
                                			{
                                				"id": 123,
                                				"name": "XXX",
                                				"longname": "Klassenraum 7e"
                                			}
                                		],
                                		"lsnumber": 123,
                                		"sg": "LeZ_7e",
                                		"activityType": "Unterricht"
                                	},
                                	{
                                		"id": 123,
                                		"date": 20220126,
                                		"startTime": 800,
                                		"endTime": 920,
                                		"code": "cancelled",
                                		"kl": [
                                			{
                                				"id": 123,
                                				"name": "7d",
                                				"longname": "LEHRER"
                                			},
                                			{
                                				"id": 356,
                                				"name": "7e",
                                				"longname": "LEHRER"
                                			},
                                			{
                                				"id": 361,
                                				"name": "7f",
                                				"longname": "LEHRER"
                                			}
                                		],
                                		"te": [
                                			{
                                				"id": 123,
                                				"name": "LEHRER",
                                				"longname": "LEHRER"
                                			}
                                		],
                                		"su": [
                                			{
                                				"id": 123,
                                				"name": "Reli",
                                				"longname": "Religion"
                                			}
                                		],
                                		"ro": [
                                			{
                                				"id": 123,
                                				"name": "XXX",
                                				"longname": "Klassenraum 10a"
                                			}
                                		],
                                		"lsnumber": 123,
                                		"sg": "Reli_123",
                                		"activityType": "Unterricht"
                                	},
                                	{
                                		"id": 123,
                                		"date": 20220126,
                                		"startTime": 945,
                                		"endTime": 1105,
                                		"kl": [
                                			{
                                				"id": 123,
                                				"name": "7e",
                                				"longname": "LEHRER"
                                			}
                                		],
                                		"te": [
                                			{
                                				"id": 123,
                                				"name": "LEHRER",
                                				"longname": "LEHRER"
                                			},
                                			{
                                				"id": 123,
                                				"name": "LEHRER",
                                				"longname": "LEHRER",
                                				"orgid": 123,
                                				"orgname": "VOIM"
                                			}
                                		],
                                		"su": [
                                			{
                                				"id": 123,
                                				"name": "LeZ Klassenrat",
                                				"longname": "Lernzeit Klassenrat"
                                			}
                                		],
                                		"ro": [
                                			{
                                				"id": 123,
                                				"name": "XXX",
                                				"longname": "Klassenraum 7e"
                                			}
                                		],
                                		"lsnumber": 123,
                                		"sg": "LeZKlassenrat_7e",
                                		"activityType": "Unterricht"
                                	}
                                ]
                                

                                Ich denke mal, die generelle Struktur kennst Du ja sicherlich 😉
                                Interessant ist an dieser Stelle, dass zwei Stunden ausfallen ("code": "cancelled") und eine Stunde Vertretung ist (vermute ich mal) -> "code": "irregular".

                                Newan 1 Reply Last reply Reply Quote 0
                                • Newan
                                  Newan @oxident last edited by

                                  @oxident Mega!
                                  Ja das bauen wir ein. "irregular" ist schon amüsant.

                                  1 Reply Last reply Reply Quote 0
                                  • Newan
                                    Newan last edited by

                                    @ldittmar sagte in TESTER: Neuer Adapter Webuntis:

                                    Das sollte ggf. in die Konfig-Seite rein.

                                    -> Done, habe einen Link zur späteren Anleitung eingebunden. Muss nur einer ne Anleitung schreiben. AM besten per md-Datei auf github im Repo.

                                    @oxident:

                                    Vielleicht könnte man alles nach aktuellem Tag und den Folgetag gliedern. Also quasi als oberste Ebene der DP "current" und "1d" oder "nextday" verwenden. Schwierig wird da ggf. noch das Handling von Wochenenden und Ferien.

                                    Folgende Logik ist aktiv: Wenn die Funktion getOwnTimetableForToday null zurückgibt, gehe ich von Wochenende aus. Dann wird nextBusinessDay gesucht und dann abgefragt. Wenn dann auch leer ist Ferien und die Datenpunkte bleiben leer bzw. werden entfernt.
                                    -> wäre das für die Anleitung
                                    Habe jetzt einfch 0 und 1 gemacht als Index. Problem ist das ja wie oben nicht immer current zieht und mir keine passende Namen eingefallen sind. Es wird aber das ausgelesene Datum angegeben.

                                    Parallel dazu könnte man so auch Vertretungsunterricht (oder Distanzlernen) abfangen. Die entsprechenden "codes" kenne ich zwar nicht, aber man könnte generell, wenn bei einer Schulstunde ein "code" <> "cancelled" vorhanden ist einen Zähler (z. B. "exceptions") inkrementieren. Dann weiß man, dass an diesem Tag irgendwas "komisch" ist 😉

                                    Das ist wie folgt gelöst. In der Stunde wird angezeigt ob "Vertretung" oder ausfällt. AM tag wir mit exception angezeigt ob was komisch oder nicht ist. Schaut mal ob das so nutzbar und praktikabel ist. Auch hier wäre ein Eintrag in der Anleitung hilfreich

                                    1 Reply Last reply Reply Quote 0
                                    • Newan
                                      Newan last edited by

                                      Update online, happy testing

                                      E 1 Reply Last reply Reply Quote 0
                                      • E
                                        elektrickser.de @Newan last edited by

                                        @newan ich hab gesteren nen Fork gezogen und mit der Readme für Github begonnen.

                                        Sollte ich diese auf English machen oder in Deutsch halten?

                                        Ich bin noch neu mit VScode und Git und deswegen klappts mit dem Pullrequest noch nicht so. eventuell schiebe ich dir die dann per Github hoch.

                                        Newan E 2 Replies Last reply Reply Quote 0
                                        • Newan
                                          Newan @elektrickser.de last edited by

                                          @elektrickser-de Am besten beides 🙂

                                          Pull ist denkbar einfach. In deinem Fork einfach nen commit machen und dann in github auf der Webseite einen PR stellen, Rest geht vom system quasi alleine.

                                          1 Reply Last reply Reply Quote 0
                                          • E
                                            elektrickser.de @elektrickser.de last edited by

                                            @Newan

                                            ich finde jetzt erstmal diesen Request interesant:

                                            (async) getTimetableForRange(rangeStart, rangeEnd, id, type, validateSessionopt) → {Promise.<Array>}
                                            
                                            Get the timetable for a given Date range for specific element
                                            
                                            E 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            979
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            46
                                            190
                                            20729
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo