Read the statement by Michael Teeuw here.
MMM-Webuntis
-
Hallo @heikogr.
Danke für die Arbeit und die ganzen Updates der letzten Tage …
Die haben mich leider nur rein bisschen überfordert. Was für einen displayMode muss ich denn einstellen, dass ich wieder nur die Stundenausfälle sehe - also wirklich nur eine Info, wenn eine Stunde ausfällt. Hab leider nicht allzuviel Platz für die Grid View auf meinem MM, sonst würde ich die natürlich nehmen.
DANKE!!!
Schönen Abend.
Robert -
Du hast recht, die vielen Möglichkeiten machen alles sehr unübersichtlich. Sorry. Die Schule meiner Kinder nutzt Umtis ziemlich viel - daher will ich so viel wie möglich anzeigen lassen können. Die meisten Optionen sind jedoch optional. Du kannst dich langsam heranarbeiten.
Eigentlich solltest du nichts ändern müssen. Per default sollten lessons und exams (also Ausfälle und Klassenarbeiten) angezeigt werden.
So sieht es mit Elternaccount aus. Angezeigt werden dann die ausfallenden stunden heute und morgen von allen Kinder:
{ module: "MMM-Webuntis", header: "Stundenplanänderungen ", position: "top_right", config: { updateInterval: 5 * 60 * 1000, username: 'USERNAME', password: 'PASSWORT', school: 'SCHULE', server: 'SCHULE.webuntis.com', displayMode: 'lessons', lessons: { nextDays: 1, // widget-specific days ahead }, } },Wenn du einen Schüler spezifischen qr login hast, bleibt dieser im students object stehen - wie bisher. Der eltern Block fällt dann weg.
-
@RobertMuc achso, ganz vergessen zu erwähnen: ich hab auch sehr wenig Platz (oder zu viele Informationen) auf meinem display. Aus dem Grund setze ich das wundervolle Modul MMM-Carousel ein. Das Grid ist dann auf Seite 2.
-
Danke Heiko für die schnelle Antwort. Ich hatte tatsächlich das lessons Objekt falsch. Danke auch nochmal für den Hinweis mit dem Carousel. Sehr gute Idee.
Gruß und Danke!!!
Robert
-
Hi @Heikogr ,
wieder mal ich. Bei uns gibt es leider keinen ElternAccount. Habe aber 3 Kinder mit 3 mal den direct credentials. Funktioniert eigentlich alles, aber es bleibt halt leer… Any idea?
Hier mal ein Auszug aus dem Log.
[DEBUG] [lib] [AuthService] REST auth token obtained successfully
[DEBUG] [lib] [AuthService] Student login (direct credentials): personId=5500 = studentId (same person)
[INFO] 👤 Login PersonId: 5500
[INFO] ⚠️ No valid studentId resolved (check config)
Gruß
Robert -
BTW, ich fand MMM-Pages, da man damit besser gleiche Module auf unterschiedliche Pages verteilen kann (z.B. unterschiedliche Google Sheets, oder calendar).
Robert
-
Hallo,
das ist ein Fall den ich leider so nicht nachvollziehen kann, da wir einen Eltern Account haben und unsere Kinder sich per Office365 anmelden.
das Problem ist, dass das Modul die studentId braucht, mit dem login aber erstmal nur die personId bekommt.
du hast jetzt folgende Möglichkeiten:
- die neueste Version ausprobieren (ich habe sehr viel geändert die letzten Tage) - es kann sein, dass es damit schon funktioniert
- Für jedes Kind in untis einloggen und einen qrcode erzeugen - dann kannst du diesen qrcode string in die config.js eintragen (der weg funktioniert ziemlich sicher!), oder:
- im webuntis.com die studentId rausbekommen (steht zum Beispiel in der URL bei "Mein Stundenplan) und diese in der config.js hinterlegen (könnte funktionieren), oder:
- in der Developer Ansicht im Browser (F12 drücken) im Tab Netzwerk die Response von der Resource “data” mir zur Verfügung stellen. Achtung: vorher alle sensiblen Daten entfernen. Der markierte Bereich (currentSchoolYear) ist nur ein winziger Teil der Daten)

-
@RobertMuc geht mit MMM-Carousel auch, aber soweit ich weiss ist das mit Pages tatsächlich einfacher. Ich bleibe trotzdem bei Carousel 😎
-
Hi @HeikoGr ,
erst einmal wieder Danke.
Hier meine Response. Ich habe alle IDs mal ausprobiert. Keine davon wurde akzeptiert.
QRCode sieht bei mir auch ganz anders aus.
Andere Webuntis Version?
Robert
{ "currentSchoolYear": { "dateRange": { "start": "2025-09-16", "end": "2026-07-31" }, "id": 16, "name": "2025/2026", "timeGrid": { "schoolyearId": 16, "units": [ } ] } }, "departments": [], "isPlayground": false, "oneDriveData": { "hasOneDriveRight": false, "oneDriveClientVersion": "V8", "oneDriveClientId": "d4acf9ca-5400-48f0-96db-e356769fa9fb" }, "tenant": { "displayName": "xx", "id": "xx", "wuHostName": null, "name": "xx" }, "ui2020": true, "user": { "id": xxx, "locale": "de", "name": "xx", "email": "xxx", "permissions": { "views": [ "TODAY", "TIMETABLE_NEW_STUDENTS_MY", "TIMETABLE_NEW_CLASSES", "MESSAGE_CENTER", "MESSAGE_CENTER_2021", "PROFILE", "PERMISSION_STUDENT_TT_OWN", "PERMISSION_CLASS_TT_OWN", "PERMISSION_CLASS_TT_ALL", "MY_DATA", "STUDENT_HOMEWORK", "STUDENT_CLASSREG_ENTRIES" ] }, "person": { "displayName": "xxx", "id": xx, "imageUrl": null }, "roles": [ "STUDENT" ], "students": [], "lastLogin": "2026-01-15T07:18:16.425" }, "permissions": [ "CONTACTDETAILS:R:0:ASSIGNED", "LESSONTOPIC:R:0:ALL", "TT_VIEW:R:1:ASSIGNED", "TT_VIEW:R:5:ASSIGNED", "HOMEWORK:R:0:ALL", "MESSAGES:R:0:ALL", "TT_OVERVIEW:R:1:ALL", "CLASSEVENT:R:0:ASSIGNED" ], "settings": [ "system.linesperpage:15", "system.firstDayOfWeek:2", "system.showlessonsofday:false", "system.emailadmin:xxx" ], "pollingJobs": [], "isSupportAccessOpen": true, "licenceExpiresAt": "2999-12-31", "holidays": [ ] } -
HI @HeikoGr,
bei mir sieht der Call ganz anders aus und keine der IDs funktioniert (siehe unten). Wenn ich mir den call für die Entries anschaue , sieht das ganze so aus.
/WebUntis/api/rest/view/v1/timetable/entries?start=2026-01-12&end=2026-01-16&format=1&resourceType=STUDENT&resources=823&periodTypes=&timetableType=MY_TIMETABLE&layout=START_TIMEAber diese id funktioniert auch nicht, wenn ich sie als StudentID übergebe …
Puh.
Robert
{ "currentSchoolYear": { "dateRange": { "start": "2025-09-16", "end": "2026-07-31" }, "id": 16, "name": "2025/2026", "timeGrid": { "schoolyearId": 16, "units": [ } ] } }, "departments": [], "isPlayground": false, "oneDriveData": { "hasOneDriveRight": false, "oneDriveClientVersion": "V8", "oneDriveClientId": "d4acf9ca-5400-48f0-96db-e356769fa9fb" }, "tenant": { "displayName": "xx", "id": "xx", "wuHostName": null, "name": "xx" }, "ui2020": true, "user": { "id": xxx, "locale": "de", "name": "xx", "email": "xxx", "permissions": { "views": [ "TODAY", "TIMETABLE_NEW_STUDENTS_MY", "TIMETABLE_NEW_CLASSES", "MESSAGE_CENTER", "MESSAGE_CENTER_2021", "PROFILE", "PERMISSION_STUDENT_TT_OWN", "PERMISSION_CLASS_TT_OWN", "PERMISSION_CLASS_TT_ALL", "MY_DATA", "STUDENT_HOMEWORK", "STUDENT_CLASSREG_ENTRIES" ] }, "person": { "displayName": "xxx", "id": xx, "imageUrl": null }, "roles": [ "STUDENT" ], "students": [], "lastLogin": "2026-01-15T07:18:16.425" }, "permissions": [ "CONTACTDETAILS:R:0:ASSIGNED", "LESSONTOPIC:R:0:ALL", "TT_VIEW:R:1:ASSIGNED", "TT_VIEW:R:5:ASSIGNED", "HOMEWORK:R:0:ALL", "MESSAGES:R:0:ALL", "TT_OVERVIEW:R:1:ALL", "CLASSEVENT:R:0:ASSIGNED" ], "settings": [ "system.linesperpage:15", "system.firstDayOfWeek:2", "system.showlessonsofday:false", "system.emailadmin:xxx" ], "pollingJobs": [], "isSupportAccessOpen": true, "licenceExpiresAt": "2999-12-31", "holidays": [ ] }
