69_Webuntis: Beta-Modul zum Auslesen von Webuntis Stundenplänen

Begonnen von KernSani, 26 Februar 2023, 23:52:38

Vorheriges Thema - Nächstes Thema

Sailor

#30
Moin tosammen

So, habe mal etwas rumgestrickt...

Mit der neuen Version aufbauend auf andies Version gibt es ab jetzt ein neues Attribut: iCalPath
Dies bitte mit einem existierenden Pfad verwenden -
Beispiel1: /opt/fhem/calendar
Beispiel2: /opt/fhem/calendar/
Beispiel3: calendar
Beispiel4: calendar/

Dann
get ... timetable
set ... export

Dann sollte eigentlich im genannten Pfad eine ics-Datei erstellt/überschrieben werden.

Mit der Bitte um Rückmeldung.

Gruß
  Sailor
******************************
Man wird immer besser...

andies

#31
Das sieht schon mal richtig gut aus. Zeichensetzung ist noch ein Problem, das kann man aber händisch ändern. Und meinen alten Code kannst du ja entfernen, der ist jetzt obsolet. Ein Problem gibt es noch. In der Q1/Q2 sind die Klassen riesig groß (siehe Anhang) und da wäre es gut, wenn man das Attribut
attr <name> excludeSubjects GE_LK_1,GEO_LK_1...nutzen kann. Ich schaue gleich mal, wo das sinnvoll wäre.

PS Geht das eventuell so:
Zeile 991+
my @exSu = split( $COMMA, AttrVal( $name, "excludeSubjects", $EMPTY ) );

Zeile 1005+
if ($TTHashcontent->{su}[0]{name} && grep(/$TTHashcontent->{su}[0]{name}/,@exSu)) {
                next;
            }
Ich kriege da aber einen fehlerhaften iCal, also so einfach geht das nicht.
FHEM 6.1 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

#32
Jetzt läuft es bei mir, allerdings mit zwei weiteren Änderungen:
Zeile 959 (ca)
my $TTTeacher  = $TTHashcontent->{te}[0]{longname} || 'NN ';
und
Zeile 963 (ca)
my $CalInfo    = " Klasse: " . $TTClass . "\\n" . " Unterricht: " . $TTSubject . "\\n" . " Ort: " . $TTLocation . "\\n" . " Lehrkoerper: " . $TTTeacher;
(die Umlaute bei **Lehrkörper** kamen bei mir nicht richtig durch, ich sitze am Mac). Ich habe bei mir auch die Klasse entfernt, weil ja mein Sohn weiß, in welcher er ist.
FHEM 6.1 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Sailor

#33
Hi andie

Zitat von: andies am 01 Oktober 2024, 20:59:13Jetzt läuft es bei mir, allerdings mit zwei weiteren Änderungen:
Zeile 959 (ca)
my $TTTeacher  = $TTHashcontent->{te}[0]{longname} || 'NN ';
Ist bei mir Zeile 1008 und jetzt sieht der Block so aus:
my $TTClass    = Encode::decode( 'iso-8859-1', $TTHashcontent->{kl}[0]{longname}) || 'NN ';
my $TTSubject  = Encode::decode( 'iso-8859-1', $TTHashcontent->{su}[0]{longname}) || 'NN ';
my $TTTeacher  = Encode::decode( 'iso-8859-1', $TTHashcontent->{te}[0]{longname}) || 'NN ';
my $TTLocation = Encode::decode( 'iso-8859-1', $TTHashcontent->{ro}[0]{longname}) || 'NN ';


Zitat von: andies am 01 Oktober 2024, 20:59:13und
Zeile 963 (ca)
my $CalInfo    = " Klasse: " . $TTClass . "\\n" . " Unterricht: " . $TTSubject . "\\n" . " Ort: " . $TTLocation . "\\n" . " Lehrkoerper: " . $TTTeacher;
(die Umlaute bei **Lehrkörper** kamen bei mir nicht richtig durch, ich sitze am Mac). Ich habe bei mir auch die Klasse entfernt, weil ja mein Sohn weiß, in welcher er ist.
Der Lehrkörper heißt jetzt Lehrkraft.
Verfluchter Gender-Wahn!
;D
Gruß
    Sailor
******************************
Man wird immer besser...

Sailor

Hallo andie

Zitat von: andies am 01 Oktober 2024, 20:59:13(die Umlaute bei **Lehrkörper** kamen bei mir nicht richtig durch, ich sitze am Mac). Ich habe bei mir auch die Klasse entfernt, weil ja mein Sohn weiß, in welcher er ist.

Das mit den Umlauten habe ich durch den Einsatz von "Encode::decode( 'iso-8859-1'," hoffentlich in den Griff bekommen.
Das mit der Klasse ist so eine Sache. Ich habe 2 Kinder auf der gleichen Schule und darüber hinaus haben die in der schule eine Eigenart die Klassenzuteilung zu den Unterrichten zu machen.

Gruß
    Sailor
******************************
Man wird immer besser...

Sailor

Moin tosammen

Letzter Stand:
- Alten Code entfernt.
- Inaktives Attribut "interval" richtig implementiert.
- "set ... export" wieder gelöscht. wird jetzt automatisch mit "get ... timetable" getriggert.
- Problem mit Umlauten hoffentlich gelöst.

Gruß
    Sailor
******************************
Man wird immer besser...

enno

#36
Moin zusammen,

ich würde gerne mittesten, aber ich bekomme nur den Error "No JSON after Login". Kann das an Sonderzeichen im Password oder Umlaute im Schulnamen liegen?


define Webuntis_JM Webuntis
attr Webuntis_JM exceptionIndicator code,info,lstext,lstype,substText
attr Webuntis_JM iCalPath /opt/fhem4/calendar/
attr Webuntis_JM room Schule
attr Webuntis_JM school Elsa-Brändström-Schule
attr Webuntis_JM server https://peleus.webuntis.com/
attr Webuntis_JM user enno
attr Webuntis_JM verbose 2
#   FUUID      66fc4ab1-f33f-8a87-4488-90e3d54060a38398
#   NAME       Webuntis_JM
#   NR         46
#   NTFY_ORDER 50-Webuntis_JM
#   STATE      ???
#   TYPE       Webuntis
#   VERSION    0.2.01
#   eventCount 4
#   READINGS:
#     2024-10-02 12:47:11   error           No JSON after Login
#   helper:
#
setstate Webuntis_JM 2024-10-02 12:47:11 error No JSON after Login

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC

andies

Am Password nicht. Bist du dir sicher, dass du den Schulnamen richtig hast? Umlaute und Bindestriche etc. regeln die ja so. Kommst du auf die Webseite?
FHEM 6.1 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

enno

Über die Webseite kann ich mich anmelden. Mit dem Modul ging es auch schon mal... Ich habe oben mal ein List ergänzt.
Einfacher FHEM Anwender auf Intel®NUC

andies

Also bei mir ist ein Leerzeichen in der Schule und das sieht so aus:
school Hans-Carossa-+OSDa ist sicher der Haken. Ich habe nur vergessen, wie ich den Namen der Schule herausgefunden habe. Das war auch über die Webseite, ich habe in den JSON gesucht.
FHEM 6.1 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

wenn man in der Webmaske eingibt, sieht man mE die Links, zB
https://borys.webuntis.com/WebUntis/?school=EBS+Elmshornoder
https://nessa.webuntis.com/WebUntis/?school=elsa-brandstr%C3%B6m-rs
FHEM 6.1 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

enno

#41
das wäre bei mir: https://peleus.webuntis.com/WebUntis/?school=Elsa-Br%C3%A4ndstr%C3%B6m-Schule dann versuche ich mal mein Glück damit.

Edit: Damit hat es geklappt! Ich bin wieder dabei ;D
Einfacher FHEM Anwender auf Intel®NUC

Sailor

Moin enno

Zitat von: enno am 02 Oktober 2024, 13:19:31das wäre bei mir: https://peleus.webuntis.com/WebUntis/?school=Elsa-Br%C3%A4ndstr%C3%B6m-Schule dann versuche ich mal mein Glück damit.
Edit: Damit hat es geklappt! Ich bin wieder dabei ;D

Immer diese Lehrer auf Selbstverwirklichungs-Trip mit Umlauten...

Gruß
    Sailor
******************************
Man wird immer besser...

enno

Moin Sailor,

für die Kinder bin ich jetzt drin. Aber wo du gerade über Lehrer her ziehst ;) Ich habe so ein Exemplar hier. Dort wird die Anmeldung bei Untis im Web über SSO gelöst. Gibt es da eine Chance? Ich muss mich dazu bei einer Portalseite einloggen und werde von dort an Untis zurückgeleitet....

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC

tobi01001

Zitat von: Sailor am 02 Oktober 2024, 11:41:32Moin tosammen

Letzter Stand:
- Alten Code entfernt.
- Inaktives Attribut "interval" richtig implementiert.
- "set ... export" wieder gelöscht. wird jetzt automatisch mit "get ... timetable" getriggert.
- Problem mit Umlauten hoffentlich gelöst.

Gruß
    Sailor
Hi Sailor,

habs noch nicht getestet, aber mal kurz reingeschaut.

exportTT2iCal($hash);Das solltest du besser am Ende von parseTT aufrufen (vor dem return z.B.).
Hintergrund ist, das parseTT die Callback-Funktion des Non-Blocking HTTP Aufrufs ist. Erst dann sind die Daten im hash TT aktualisiert.

in Zeile 694 muss es
$html[b]Row[/b] .= $t->{$f}[0]{name}; anstatt $html .= $t->{$f}[0]{name}; heißen. War schon vorher da und hat keine Auswirkung, da die html-Darstellung nicht benutzt wird.

Was macht ihr mit der iCal Datei - also welcher use-Case ist das dann?

Danke und Gruß,
Tobias
FHEM@UbuntuServer on Lenovo ThinkCentre M900 [i5-6500T / 8GB RAM] MySQL-DbLog, Grafana, FTUI3 / HmIP incl. CCU3 / LGESS / Wärempumpe über TA CMI und CANoE / Shellies u.v.m.