FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: KernSani am 06 Januar 2020, 20:22:44

Titel: 98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 06 Januar 2020, 20:22:44
Pünktlich zum Schulbeginn (zumindest für diejenigen bei denen heute noch Feiertag war  8) ) habe ich noch schnell ein Modul geschnitzt, dass den Vertretungsplan der DSBMobile-App - die an der Schule meines Sohnes verwendet wird (und wohl auch an einigen anderen Schulen zumindest in BaWü) -auszulesen.
Das Modul verwendet einige Module, die möglicherweise nicht auf eurem System vorhanden sind, die müssen ggf. über cpan installiert werden:


use IO::Compress::Gzip;   
use IO::Uncompress::Gunzip;
use MIME::Base64;
use HTML::TableExtract;



Define
define dsb DSBMobile

dann unbedingt die Attribute pflegen:
dsb_user und dsb_password sind die Logindaten der DSBMobile App
In dsb_class können die Klassen eingeschränkt werden, für die die Vertretungen abgerufen werden sollen. Ich würde das stark empfehlen, sonst werden es schnell ziemlich viele Readings. Hier kann eine Regex mitgegeben werden, zum einen um mehrere Klassen anzugeben (also sowas wie 5a|7b) aber auch, weil z.B. bei meiner Schule gerne Vertretungen (in Sport oder so) für die Klassen 5abc eingetragen werden. Das Modul würde das nicht finden, wenn als Klasse 5b gepflegt ist. Eine passende Regex könnte 5.*b lauten.

Der einzige Get-Befehl holt dann den Vertretungsplan ab. Dies ist bewusst nicht timer gesteuert, sondern sollte über ein at gemacht werden. Bei uns kommen die Updates meistens morgens um ca. 07:40 und dann nochmal nachmittags. Ich hole also einmal um 07:45 und einmal abends aktuelle Daten ab.
Über dsb_interval kann eingestellt werden, wie häufig neue Daten abgerufen werden sollen.

Das Teil legt eine Menge readings an, die nicht wirklich gut lesbar sind, daher gibt es noch eine (im ersten Schritt wirklich sehr einfach gehaltene) Funktion um einen Weblink anzulegen

define dsb_web weblink htmlCode {DSBMobile_simpleHTML("dsb")}



Ergebnis sieht dann irgendwie so aus:
Zitat2019-12-20
08c, 5 - 6. Stunde(n) --- (---) statt WELZ (D) Entfall ---
2020-01-07
08c, 1. Stunde(n) ROLK (D) statt WELZ (D) --- ---
08c, 2. Stunde(n) HUMM (D) statt WELZ (D) --- ---

Kann man natürlich schöner machen ;-) Ich könnte mir auch vorstellen ein Mapping mit einzubauen, dass die Lehrerkürzel auf echte Namen und/oder Fächerkürzel auf Fächer mappt etc... Die App enthält auch noch andere Infos (wie z.B. News, oder auch "Info des Tages" im Vertretungsplan), die derzeit noch nicht ausgelesen werden.
Lasst mich wissen, falls ihr Interesse habt, dass das Dings aufgebohrt wird.

Update 25.01.: Mittlerweile werden auch die "Infos des Tages" abgerufen (diese können im Weblink mit einem optionalem zweitem Parameter eingeblendet werden, siehe Commandref). Ausserdem werden auch die "Aushänge" abgerufen und können mittels eines zweiten Weblinks (DSBMobile_infoHTML($name)) angezeigt werden.

Update 11.02.: In Bayern ticken die Vertretungspläne anders (und möglicherweise nicht nur da). Die Readings werden nun dynamisch aufgrund der im Vertretungsplan vorhandenen Spalten abgefragt. Das macht die Ausgabe etwas schwieriger, weil das Modul ja jetzt nicht weiß, welche Readings kommen. Daher gibt es jetzt ein Attribut "dsb_outputFormat", indem die Readings als Platzhalter eingebaut werden können. In meinem Fall sieht das so aus:
%Klasse_n_% %Stunde%. Stunde %Vertreter% (%Fach%, %Raum%) statt %_Lehrer_% (%_Fach_%, %_Raum_%) %Vertr._von% %_Le.__nach% %Vertretungs-Text%
Zusätzlich gibt es auch noch das Attribut "dsb_classReading". Dieses muss gesetzt werden, falls die Spalte mit der Klassenangabe nicht "Klasse(n)" heißt (das ist aber auch in Bayern so).
Ausserdem habe ich noch ein paar kleinere Verbesserungen und Optimierungen vorgenommen:
* die "Info des Tages" jetzt auch angezeigt, wenn für den fraglichen Tag keine Vertretungen vorhanden sind
* wenn über den Get-Befehl die Daten abgeholt werden, wird nichtmehr geprüft ob neue Daten vorhanden sind, sondern es wird auf jeden Fall neu geladen, ebenso werden die Daten auf jeden Fall neu geladen (beim nächsten Timer oder manuellem Get) wenn das "dsb_class" oder "dsb_classReading" geändert wurden.
* ein/zwei Bugs ausgebaut ;-)
Update 12.02.: Kleinen Bug gefixt (Perl-Warnung im Log, wenn keine Vertretungs-Daten gefunden werden)
Update 14.02.: Noch eine Perl-Warnung gefixt, Commandref auf deutsch ergänzt und das Ganze ins SVN eingecheckt, d.h. DSBMobile steht ab morgen mit dem regulären FHEM-Update zur Verfügung.
Titel: Antw:98_DSMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: mvatfhem am 09 Januar 2020, 22:47:30
Hallo,

ich bin an dem Modul sehr interessiert. Leider bekomme ich es nicht zum Laufen. Die Perl Module müssten per Debian Buster repo eigentlich alle installiert sein.

Beim define des Moduls bekomme ich folgende Fehlermeldung:


2020.01.09 22:42:25 1: PERL WARNING: Backslash found where operator expected at ./FHEM/98_DSBMobile.pm line 157, near "gzip \"
2020.01.09 22:42:25 1: PERL WARNING: (Do you need to predeclare gzip?)
2020.01.09 22:42:25 1: PERL WARNING: Backslash found where operator expected at ./FHEM/98_DSBMobile.pm line 192, near "gunzip \"
2020.01.09 22:42:25 1: PERL WARNING: (Do you need to predeclare gunzip?)
2020.01.09 22:42:25 1: reload: Error:Modul 98_DSBMobile deactivated:
syntax error at ./FHEM/98_DSBMobile.pm line 157, near "gzip \"
syntax error at ./FHEM/98_DSBMobile.pm line 192, near "gunzip \"

2020.01.09 22:42:25 0: syntax error at ./FHEM/98_DSBMobile.pm line 157, near "gzip \"
syntax error at ./FHEM/98_DSBMobile.pm line 192, near "gunzip \"


Viellleicht hast Du einen Tip für mich.

Gruß Markus
Titel: Antw:98_DSMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: amenomade am 09 Januar 2020, 22:50:48
sudo apt install gzip ?
Titel: Antw:98_DSMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: mvatfhem am 09 Januar 2020, 22:59:55
Danke für Deinen Tip, aber gzip ist installiert und libio-compress-perl, libperlio-gzip-perl ebenso.
Titel: Antw:98_DSMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 10 Januar 2020, 00:18:15
was macht cpan install IO::Compress::Gzip?
Titel: Antw:98_DSMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: amenomade am 10 Januar 2020, 00:22:50
Nw ist IO::Compress::Gzip Teil von libio-compress-perl, und das hat er installiert.
https://packages.debian.org/de/sid/libio-compress-perl

Das Problem scheint aber eher von den Backslashes zu kommen
Titel: Antw:98_DSMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 10 Januar 2020, 00:37:08
Möglicherweise war es auch ein ganz anderes Problem... Kannst du mal die am ersten Post angehängte Datei probieren?
Titel: Antw:98_DSMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 10 Januar 2020, 22:22:15
Ich habe nochmal etwas nachgeforscht, was das "Do you need to predeclare..." verursachen könnte und predeclare gzip und gunzip jetzt. Mir ist ein Rätsel, warum das bei mir funktioniert und bei dir nicht, kann aber mit perl-Version, lib-Version und/oder Betriebssystem zusammenhängen. Auf jeden Fall wäre ich dankbar, @mvatfhem wenn du mit der Version im ersten Post nochmal testen könntest.
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: mvatfhem am 10 Januar 2020, 23:27:57
Schönen guten Abend,

ich habe die andere Version von KernSani probiert. Das Problem bleibt das Gleiche, ebenso die Fehlermeldung. Die benötigten Perl Module habe ich alle per apt installiert, also nicht über cpan. OS ist Debian Buster. Wenn ich die Backslashes entferne dann wird das Module geladen. Danach habe ich dsb_user und dsb_password  eingegeben. Ein get dsb timetable lässt fhem dann aber gnadenlos abstürzen.

Gruß Markus
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 10 Januar 2020, 23:53:51
Hi Markus,

wenn du die backslashes entfernst, versucht gzip ein file zu öffnen, das es nicht gibt. gzip verlangt in diesem Fall zwingend eine Referenz (also mit \). Daher ist der Absturz ohne \ vorhersehbar... Hast du die Version, die im ersten Post angehängt ist probiert, oder die, die ich gestern (bzw. heute) um 00:37:08 in einem separaten Post angehängt hatte?
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: mvatfhem am 11 Januar 2020, 00:22:51
ich habe beide ausprobiert. Die Fehlermeldung von der Datei mit 11.405 Bytes.


2020.01.11 00:20:40 1: PERL WARNING: Subroutine DSBMobile_Initialize redefined at ./FHEM/98_DSBMobile.pm line 48.
2020.01.11 00:20:40 1: PERL WARNING: Subroutine DSBMobile_Define redefined at ./FHEM/98_DSBMobile.pm line 63.
2020.01.11 00:20:40 1: PERL WARNING: Subroutine DSBMobile_Undefine redefined at ./FHEM/98_DSBMobile.pm line 85.
2020.01.11 00:20:40 1: PERL WARNING: Subroutine DSBMobile_Notify redefined at ./FHEM/98_DSBMobile.pm line 91.
2020.01.11 00:20:40 1: PERL WARNING: Subroutine DSBMobile_Set redefined at ./FHEM/98_DSBMobile.pm line 104.
2020.01.11 00:20:40 1: PERL WARNING: Subroutine DSBMobile_Get redefined at ./FHEM/98_DSBMobile.pm line 110.
2020.01.11 00:20:40 1: reload: Error:Modul 98_DSBMobile deactivated:
syntax error at ./FHEM/98_DSBMobile.pm line 160, near "gzip \"
syntax error at ./FHEM/98_DSBMobile.pm line 195, near "gunzip \"

2020.01.11 00:20:40 0: syntax error at ./FHEM/98_DSBMobile.pm line 160, near "gzip \"
syntax error at ./FHEM/98_DSBMobile.pm line 195, near "gunzip \"
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: amenomade am 11 Januar 2020, 00:50:10
Ich habe ein bisschen experimentiert. Es scheint, dass Perl (5.24 bei mir) ein anderes gzip nutzt (das vom system?). Warum... weiss ich (noch?) nicht.
Dieses einfache Programm bringt den gleichen Fehler:
use IO::Compress::Gzip;
use IO::Uncompress::Gunzip;
my $input = "this is my text";
my $output;
gzip \$input => \$output;
print "$output\n";

pi@pivirtual:~ $perl test.pl
Backslash found where operator expected at test.pl line 5, near "gzip \"
           (Do you need to predeclare gzip?)
Syntax error at test.pl line 5, near "gzip \"
Execution of test.pl aborted due to compilation errors.


Aber wenn man "gzip" durch "IO::Compress::Gzip::gzip" ersetzt, geht es.
Dieses Programm funktioniert:
use IO::Compress::Gzip;
use IO::Uncompress::Gunzip;
my $input = "this is my text";
my $output;
IO::Compress::Gzip::gzip \$input => \$output;
print "$output\n";


Also im Modul überall wo gzip und gunzip benutzt werden, mit entspr. Modulname explizit ergänzen, z.B.:
    gzip \$json => \$zip;
eher
    IO::Compress::Gzip::gzip \$json => \$zip;
Sollte als Workaround funktionieren

Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 11 Januar 2020, 01:00:38
Cool. Danke. Passe ich irgendwann am Wochenende an:D


Kurz, weil mobil
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: amenomade am 11 Januar 2020, 01:49:03
Komischerweise geht es auch bei mir mit:
use IO::Compress::Gzip qw(gzip);
use IO::Uncompress::Gunzip qw(gunzip);
my $input = "this is my text";
my $output;
gzip \$input => \$output;
print "$output\n";
gunzip \$output => \$input;
print "$input\n";
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 11 Januar 2020, 14:03:42
Ich habe amenomades workaround eingebaut und ein paar kleiner Optimierungen vorgenommen.
Der HTML-Output ignoriert jetzt Tage in der Vergangenheit.
Aktuelle Version hängt am ersten Post.

Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 11 Januar 2020, 14:21:51
Habe gerade noch ein PERL-Warning entdeckt und gefixt... Der eine Downloader der Version von vorhin, bitte nochmal downloaden. Sorry  :-[
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: mvatfhem am 11 Januar 2020, 17:58:53
so, jetzt klappt es :)

Allerdings musste ich noch das use strict; kommentieren, da sonst folgende Meldung kam.


Bareword "UUID::Random::generate" not allowed while "strict subs" in use at ./FHEM/98_DSBMobile.pm line 135.


Über ein "Aufbohren" Deines tollen Modules wäre ich auch sehr erfreut  :D

Gruß Markus
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 11 Januar 2020, 22:35:56
Freut mich, dass es klappt :)

Irgendwas ist bei dir aberkomisch ;-) Welche Perl-Version nutzt du denn?

Ich habe UUID::Random::generate mal weggeworfen und die Funktionalität im Modul selbst implementiert (ist von überschaubarer Komplexität).

Was würde dich denn interessieren (bez. "aufbohren"), wo könnte das Modul noch verbessert werden?

Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: mvatfhem am 13 Januar 2020, 22:02:19
Hallo  KernSani,

ich benutze die Perl Version von Debian 10 alias Buster, in Version 5.28.

Momentan bin ich schon super zufrieden  :) Wenn Du mal Zeit hast, könntest Du noch die Info des Tages integrieren und einen weblink für FTUI einbauen.

VG Markus
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 13 Januar 2020, 22:28:11
Hi Markus,

Hmm, bei mir Perl 5.28 auf raspbian Buster... sollte eigentlich keinen großen Unterschied machen :-S (mal abgesehen von 64 vs. 32 bit)

Rein interessehalber: Was steht denn bei der in der Info des Tages drin? Bei mir steht da meistens sowas wie "Blockierte Räume: 101,104" oder "Abwesende Klassen: 8c"

FTUI habe ich leider keine Ahnung, aber lese ich mich vielleicht mal ein...

Grüße,

Oli
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 13 Januar 2020, 22:29:55
Achso: Ich habe gerade ein Version bei mir im Testbetrieb, die dann doch regelmäßig (z.B. einmal pro Stunde) abfragt ob es was Neues gibt und nur dann synchronisiert... Kommt dann demnächst...
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 25 Januar 2020, 23:15:09
Zitat von: mvatfhem am 13 Januar 2020, 22:02:19
Momentan bin ich schon super zufrieden  :) Wenn Du mal Zeit hast, könntest Du noch die Info des Tages integrieren
Erledigt... ausserdem Aushänge, performance Verbesserungen, meta-Json, englische Commandref... neue Version im ersten Post
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: tpm88 am 09 Februar 2020, 19:57:59
Hallo KernSani,

danke für das DSB Modul. Funktioniert bei mir auf Anhieb - allerdings sind die Spalten teacherNew und teacherOld offenbar genau vertauscht??
Wahrscheinlich gehen hier in Bayern nicht nur die Uhren anders...

fhem> list dsb
Internals:
   CFGFN
   FUUID      5e404f57-f33f-7f16-7a73-5e800fe6ee54db2a
   FVERSION   98_DSBMobile.pm:v0.0.4-s000002/2020-01-04 TESTING
   NAME       dsb
   NR         1038
   STATE      ok
   TYPE       DSBMobile
   OLDREADINGS:
   READINGS:
     2020-02-09 19:37:06   lastCheck       2020-02-09 19:37
     2020-02-09 19:37:06   lastSync        2020-02-09 19:37
     2020-02-09 19:37:06   lastTTUpdate    2020-02-07 11:23
     2020-02-09 19:37:06   state           ok
     2020-02-09 19:37:06   ti0_sdate       2020-02-07
     2020-02-09 19:37:06   ti0_topic       Die Leseinsel bleibt heute in der 2. Pause geschlossen!!!
     2020-02-09 19:37:06   tt0_class       9gelb_I
     2020-02-09 19:37:06   tt0_comment     -
     2020-02-09 19:37:06   tt0_hour        1
     2020-02-09 19:37:06   tt0_roomNew     -
     2020-02-09 19:37:06   tt0_roomOld     -
     2020-02-09 19:37:06   tt0_sdate       2020-02-07
     2020-02-09 19:37:06   tt0_substof     -
     2020-02-09 19:37:06   tt0_substto     -
     2020-02-09 19:37:06   tt0_teacherNew  M
     2020-02-09 19:37:06   tt0_teacherOld  Vertretung
     2020-02-09 19:37:06   tt0_topicNew    311
     2020-02-09 19:37:06   tt0_topicOld    -
     2020-02-09 19:37:06   tt1_class       9gelb_I
     2020-02-09 19:37:06   tt1_comment     -
     2020-02-09 19:37:06   tt1_hour        2
     2020-02-09 19:37:06   tt1_roomNew     -
     2020-02-09 19:37:06   tt1_roomOld     -
     2020-02-09 19:37:06   tt1_sdate       2020-02-07
     2020-02-09 19:37:06   tt1_substof     -
     2020-02-09 19:37:06   tt1_substto     -
     2020-02-09 19:37:06   tt1_teacherNew  M
     2020-02-09 19:37:06   tt1_teacherOld  Vertretung
     2020-02-09 19:37:06   tt1_topicNew    311
     2020-02-09 19:37:06   tt1_topicOld    -
     2020-02-09 19:37:06   tt2_class       9gelb_I
     2020-02-09 19:37:06   tt2_comment     -
     2020-02-09 19:37:06   tt2_hour        4
     2020-02-09 19:37:06   tt2_roomNew     -
     2020-02-09 19:37:06   tt2_roomOld     -
     2020-02-09 19:37:06   tt2_sdate       2020-02-07
     2020-02-09 19:37:06   tt2_substof     -
     2020-02-09 19:37:06   tt2_substto     -
     2020-02-09 19:37:06   tt2_teacherNew  E
     2020-02-09 19:37:06   tt2_teacherOld  Betreuung
     2020-02-09 19:37:06   tt2_topicNew    311
     2020-02-09 19:37:06   tt2_topicOld    -
     2020-02-09 19:37:06   tt3_class       9gelb_I, 9orange, 9rot?9gelb_I, 9rot
     2020-02-09 19:37:06   tt3_comment     -
     2020-02-09 19:37:06   tt3_hour        5 - 6
     2020-02-09 19:37:06   tt3_roomNew     -
     2020-02-09 19:37:06   tt3_roomOld     -
     2020-02-09 19:37:06   tt3_sdate       2020-02-07
     2020-02-09 19:37:06   tt3_substof     -
     2020-02-09 19:37:06   tt3_substto     -
     2020-02-09 19:37:06   tt3_teacherNew  EvR
     2020-02-09 19:37:06   tt3_teacherOld  Betreuung
     2020-02-09 19:37:06   tt3_topicNew    307?302
     2020-02-09 19:37:06   tt3_topicOld    -
     2020-02-09 19:37:06   tt4_class       9gelb_I
     2020-02-09 19:37:06   tt4_comment     -
     2020-02-09 19:37:06   tt4_hour        2
     2020-02-09 19:37:06   tt4_roomNew     -
     2020-02-09 19:37:06   tt4_roomOld     -
     2020-02-09 19:37:06   tt4_sdate       2020-02-10
     2020-02-09 19:37:06   tt4_substof     -
     2020-02-09 19:37:06   tt4_substto     -
     2020-02-09 19:37:06   tt4_teacherNew  M
     2020-02-09 19:37:06   tt4_teacherOld  Statt-Vertretung
     2020-02-09 19:37:06   tt4_topicNew    311
     2020-02-09 19:37:06   tt4_topicOld    -
     2020-02-09 19:37:06   tt5_class       9gelb_I
     2020-02-09 19:37:06   tt5_comment     -
     2020-02-09 19:37:06   tt5_hour        3 - 4
     2020-02-09 19:37:06   tt5_roomNew     -
     2020-02-09 19:37:06   tt5_roomOld     -
     2020-02-09 19:37:06   tt5_sdate       2020-02-10
     2020-02-09 19:37:06   tt5_substof     -
     2020-02-09 19:37:06   tt5_substto     -
     2020-02-09 19:37:06   tt5_teacherNew  D
     2020-02-09 19:37:06   tt5_teacherOld  Betreuung
     2020-02-09 19:37:06   tt5_topicNew    311
     2020-02-09 19:37:06   tt5_topicOld    -
Attributes:
   dsb_class  9gelb
   dsb_password xxxxxxx
   dsb_user   yyyyyy
   room       DSB


Gruß
Tobias
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 09 Februar 2020, 22:19:45
Hi Tobias,

kannst du mir den HTML-Quelltext des Vertretungsplanes anhängen? Dann kann ich mal schauen, was da anders ist, als bei mir... Bei mir läuft übrigens eine erweiterte Version der App, die auch die Aushänge ausliest und bez. Stabilität und Perfomance optimiert ist. Werde ich in den nächsten Tagen mal im ersten Post austauschen.

Danke,

Grüße,

Oli
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: tpm88 am 10 Februar 2020, 17:01:27
Hallo Oli,

ich habe die Vertretungsplan-Seite im Firefox via Speichern unter - Webseite komplett gespeichert und hier angehangen. Ist es das, was Du brauchst?

Danke & Gruß
Tobi
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 10 Februar 2020, 17:17:15
Hi Tobi,

das hat leider nicht ganz das gewünschte Ergebnis gebracht:
1.) DSBMobile im Browser öffnen
2.) Auf den Vertretungsplan gehen
3.) Click mit rechter Maustaste auf den Vertretungsplan und "Frame-Quelltext anzeigen" (so heisst es in Chrome, FF sollte ähnlich sein)
4.) Das sollte den HTML-Quelltext anzeigen, der so beginnt:

<html><head><meta http-equiv="Content-Type" content="text/html;"><style type="text/css">

body { margin-top: 0px; margin-left: 20px; margin-right: 20px;
background: #fff; color: #272727; font: 80% Arial, Helvetica, sans-serif; }

h1 { color: #ee7f00; font-size: 150%; font-weight: normal;}
h1 strong { font-size: 200%; font-weight: normal; }
h2 { font-size: 125%;}

h1, h2 { margin: 0; padding: 0;}

th { background: #000; color: #fff; }
table.mon_list th, td { padding: 8px 4px;}


.mon_title
{

5.) Den gesamten Text markieren und in ein Textfile kopieren.

Alternativ kannst du auch das DSB Device in FHEM auf "verbose 5" stellen, eine Abfrage durchführen und mir anschließend das FHEM-Log schicken.
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: tpm88 am 10 Februar 2020, 17:49:09
Hallo Oli!

Voila (siehe Anhang).

Danke & Gruß
Tobi
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 10 Februar 2020, 22:04:33
Zitat von: tpm88 am 10 Februar 2020, 17:49:09
Hallo Oli!

Voila (siehe Anhang).

Danke & Gruß
Tobi

Das ist ja interessant... Zum einen stelle ich fest, dass ihr die 2020er Version habt, ich habe noch die 2013er. Zum anderen ist der Spaltenaufbau komplett anders als bei uns... Ihr habt wesentlich weniger Spalten. Überrascht mich, dass da überhaupt noch was leidlich sinnvolles rauskommt.  Ich baue mal ein Attribut ein, mit dem man das flexibel gestalten kann... das wird aber vor dem Wochenende vermutlich nix.

Grüße,

Oli

Edit: Ich brauche ja garkein Attribut, ich muss nur die Spaltenüberschriften auslesen und daraus die readingnamen generieren... Die Frage ist, wie ich dann eine sinnvolle Ausgabe produziere...
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 11 Februar 2020, 00:00:33
Ich habe dann doch noch eine neue Version gebastelt... Die Readings werden nun dynamisch erzeugt, allerdings grüble ich noch, wie ich da eine vernünftige Ausgabe im weblink hinbekomme. Ideen sind willkommen :-)

Testversion im Anhang (diese enthält auch die oben angesprochenen Verbesserungen bez. Stabilität und liest auch die Aushänge)

Danke für's Testen :-)
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 11 Februar 2020, 22:47:43
Nochmals verbesserte Version (mit Ausgabeformatierung) hängt am ersten Post...
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: tpm88 am 12 Februar 2020, 18:33:59
Hallo Oli,

vielen Dank für die neue Version - sieht gut für mich aus.

Ich habe das dsb_outputFormat wie folgt gesetzt (Bayern):
%Klasse_n_%: %Stunde%. Stunde %Art% statt %Fach% in Raum %Raum%. Text: %Text%

Ausgabe sieht dann so aus:
2020-02-12
9gelb_I: 1 - 2. Stunde Betreuung statt Sm in Raum SVNPL. Text: -
9gelb_I: 5. Stunde Betreuung statt E in Raum 311. Text: -
2020-02-13
9gelb_I: 1 - 2. Stunde Vertretung statt M in Raum 311. Text: -
9gelb_I: 5. Stunde Vertretung statt IT in Raum P12. Text: -
9gelb_I: 6. Stunde Vertretung statt IT in Raum P12. Text: -


...
* die "Info des Tages" jetzt auch angezeigt, wenn für den fraglichen Tag keine Vertretungen vorhanden sind
...

Hmm - bei mir wird keine "Info des Tages angezeigt", obwohl folgende Readings da sind:

ti0_topic

Die Bewegte Pause entfällt heute in der 2. Pause.
Die Leseinsel bleibt heute in der Mittagspause geschlossen.

2020-02-12 18:14:05


Gruß
Tobias
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 12 Februar 2020, 21:33:07
Das sieht ja ganz gut aus (finde ich). 

Zitat von: tpm88 am 12 Februar 2020, 18:33:59
Hmm - bei mir wird keine "Info des Tages angezeigt", obwohl folgende Readings da sind:
Der simpleHtml-Funktion kann ein zweiter, optionaler Parameter übergeben werden, Wert ist egal (also z.B. "zeigeInfoDesTages" oder einfach "1"), dann wird die Info mit angezeigt.

Mir ist noch ein kleiner Bug aufgefallen, wenn keine Vertretungs-Daten vorhanden sind (gefixte Version im 1. Post).

Wenn du noch weitere Wünsche hast, immer gerne :-)
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 14 Februar 2020, 23:03:49
nochmals aktualisierte Version ins SVN eingecheckt. Steht ab morgen mit regulärem FHEM Update zur Verfügung.
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: raiderxxl am 20 Februar 2020, 14:50:50
Hi,

gerade dein Modul entdeckt...
Installiert ... kommt aber nix an :-)

Ich hab dir mal die html und screenshots dazu gepackt..

Grüßle

Pascal
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: frankreed am 20 Februar 2020, 17:40:53
Hallo,

bei mir kommt der folgende Fehler:
PERL WARNING: Subroutine DSBMobile_Set redefined at ./FHEM/98_DSBMobile.pm line 117.
2020.02.20 17:33:56 1: PERL WARNING: Subroutine DSBMobile_Get redefined at ./FHEM/98_DSBMobile.pm line 123.
2020.02.20 17:33:56 1: reload: Error:Modul 98_DSBMobile deactivated:
syntax error at ./FHEM/98_DSBMobile.pm line 173, near "encode_json \"
Global symbol "$json" requires explicit package name (did you forget to declare "my $json"?) at ./FHEM/98_DSBMobile.pm line 174.

2020.02.20 17:33:56 0: syntax error at ./FHEM/98_DSBMobile.pm line 173, near "encode_json \"
Global symbol "$json" requires explicit package name (did you forget to declare "my $json"?) at ./FHEM/98_DSBMobile.pm line 174.



Hab' ich ein perl-Modul vergessen? Die im ersten Post benötigten habe ich per apt installiert.....
Danke für die Hilfe
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 20 Februar 2020, 17:44:23
@raiderxxl: Oh Mann, das ist schon wieder anders formatiert... Das DSB-Dingens scheint da recht flexibel zu sein. Bei dir kommen die Daten nach Klasse gruppiert, dadurch gibt es keine Spalte "Klasse(n)" auf die die regex matchen könnte. Das macht es nicht einfacher zu parsen... Heute komme ich nicht dazu, aber morgen müsste ich Zeit haben, mir das im Detail anzusehen...

Edit: Vielleicht solltest du den Screenshot (mit user etc...) entfernen.

Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 20 Februar 2020, 17:51:02
Zitat von: frankreed am 20 Februar 2020, 17:40:53
Hallo,

bei mir kommt der folgende Fehler:
PERL WARNING: Subroutine DSBMobile_Set redefined at ./FHEM/98_DSBMobile.pm line 117.
2020.02.20 17:33:56 1: PERL WARNING: Subroutine DSBMobile_Get redefined at ./FHEM/98_DSBMobile.pm line 123.
2020.02.20 17:33:56 1: reload: Error:Modul 98_DSBMobile deactivated:
syntax error at ./FHEM/98_DSBMobile.pm line 173, near "encode_json \"
Global symbol "$json" requires explicit package name (did you forget to declare "my $json"?) at ./FHEM/98_DSBMobile.pm line 174.

2020.02.20 17:33:56 0: syntax error at ./FHEM/98_DSBMobile.pm line 173, near "encode_json \"
Global symbol "$json" requires explicit package name (did you forget to declare "my $json"?) at ./FHEM/98_DSBMobile.pm line 174.



Hab' ich ein perl-Modul vergessen? Die im ersten Post benötigten habe ich per apt installiert.....
Danke für die Hilfe
JSON sollte eigentlich default-mäßig gehen. Probier mal JSON::XS zu installieren
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: frankreed am 20 Februar 2020, 18:45:07
Mmmmmm.....

Habe jetzt mal JSON:XS nachinstalliert und fhem neu gestartet.
Jetzt sieht es so aus:
2020.02.20 18:41:19 1: PERL WARNING: Backslash found where operator expected at ./FHEM/98_DSBMobile.pm line 173, near "encode_json \"
2020.02.20 18:41:19 1: PERL WARNING: (Do you need to predeclare encode_json?)
2020.02.20 18:41:19 1: reload: Error:Modul 98_DSBMobile deactivated:
syntax error at ./FHEM/98_DSBMobile.pm line 173, near "encode_json \"
Global symbol "$json" requires explicit package name (did you forget to declare "my $json"?) at ./FHEM/98_DSBMobile.pm line 174.

2020.02.20 18:41:19 0: syntax error at ./FHEM/98_DSBMobile.pm line 173, near "encode_json \"
Global symbol "$json" requires explicit package name (did you forget to declare "my $json"?) at ./FHEM/98_DSBMobile.pm line 174.


Geht also nicht.
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 20 Februar 2020, 18:50:59
Bist du
Zitat von: frankreed am 20 Februar 2020, 18:45:07
Mmmmmm.....

Habe jetzt mal JSON:XS nachinstalliert und fhem neu gestartet.
Jetzt sieht es so aus:
2020.02.20 18:41:19 1: PERL WARNING: Backslash found where operator expected at ./FHEM/98_DSBMobile.pm line 173, near "encode_json \"
2020.02.20 18:41:19 1: PERL WARNING: (Do you need to predeclare encode_json?)
2020.02.20 18:41:19 1: reload: Error:Modul 98_DSBMobile deactivated:
syntax error at ./FHEM/98_DSBMobile.pm line 173, near "encode_json \"
Global symbol "$json" requires explicit package name (did you forget to declare "my $json"?) at ./FHEM/98_DSBMobile.pm line 174.

2020.02.20 18:41:19 0: syntax error at ./FHEM/98_DSBMobile.pm line 173, near "encode_json \"
Global symbol "$json" requires explicit package name (did you forget to declare "my $json"?) at ./FHEM/98_DSBMobile.pm line 174.


Geht also nicht.


Schreib mal im Modul ganz oben noch ein
use JSON::XS qw( encode_json decode_json );
rein und probiere nochmal einen reload
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: raiderxxl am 20 Februar 2020, 20:59:20
Keine Hektik  hier...  ich hab Zeit  8)

User muss ich nicht löschen der ist öffentlich bekannt... gibt nur diesen für die Schule.


Grüßle


Pascal
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 21 Februar 2020, 01:31:44
Ok, done. Beide Probleme sollten mit dem morgigen Update gelöst sein.
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: frankreed am 21 Februar 2020, 07:21:49
Hallo,
danke erst einmal für den schnellen Fix. Ich probier' ihn heute abend mal aus und gebe Rückmeldung.
Grüße
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: frankreed am 21 Februar 2020, 18:10:09
Modul geht mit dem Fix!
Danke!
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: frankreed am 24 Februar 2020, 11:41:27
Hi,
Modul funktioniert wunderbar.
Eine kleine Anregung für die einfache HTML-Ausgabe:

Könnte man die Überschriften, die ich mit mit dem Attribut "dsb_OutputFormat" festgelegt habe, als Überschrift bei den einzelnen Tagen noch mit anzeigen lassen?
Und die einzelnen Spalten mit einem Tab etwas mehr "auseinanderziehen"? Momentan ist alles sehr gedrängt.

Sorry meine HTML-Kenntnisse sind sehr rudimentär....

Danke!

PS: Ob man das statt der HTML-Ausgabe auch als Readingsgroup hinbekommen würde bin ich mir sicher, aber das haut bei mir nicht hin.

Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: raiderxxl am 24 Februar 2020, 13:27:13
Zitat von: KernSani am 21 Februar 2020, 01:31:44
Ok, done. Beide Probleme sollten mit dem morgigen Update gelöst sein.

Funktioniert DANKE!

Grüßle
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: karpate am 24 Februar 2020, 17:40:49
Hallo,
ich konnte dsb erfolgreich definieren. Aber bei mir funktionieren zwei Dinge nicht:
1. das dsb_interval ist auf 3600 gesetzt. Doch leider wird keine Aktualisierung vorgenommen. Ein manuelles get timetable funktioniert dagegen einwandfrei.
2. ggf. liegt es dsb_class Attribute, aber es wird für den 2.3. die Einträge der 5c nicht abgeholt, obwohl vorhanden (siehe Screenshot)

Vielleicht hat mir jemanden einen Tipp...
Danke und Gruß


Internals:
   CFGFN     
   FUUID      5e50232a-f33f-c7cb-14bf-40e167e428a70437
   FVERSION   98_DSBMobile.pm:v0.0.4-s21240/2020-02-21 TESTING
   NAME       dsb
   NR         1334
   STATE      ok
   TYPE       DSBMobile
   OLDREADINGS:
   READINGS:
     2020-02-24 17:31:18   columnNames     Klasse_n_,Stunde,_Fach_,Fach,Raum,Text
     2020-02-24 17:31:16   i0_date         17.02.2020 07:10
     2020-02-24 17:31:16   i0_title        DSB-Aushang Spiele-AG
     2020-02-24 17:31:16   i0_url          https://app.dsbcontrol.de/data/2f655f00-f85f-4019-88f7-c80db0f84a18/1ab893c0-0886-4694-aa22-c51cd6a8be00/1ab893c0-0886-4694-aa22-c51cd6a8be00_000.png
     2020-02-24 17:31:16   i1_date         23.01.2020 11:48
     2020-02-24 17:31:16   i1_title        Teilnehmerliste Musicalausfahrt
     2020-02-24 17:31:16   i1_url          https://app.dsbcontrol.de/data/2f655f00-f85f-4019-88f7-c80db0f84a18/f2424a86-3ad3-4a00-a0fd-9ad9ed837d97/f2424a86-3ad3-4a00-a0fd-9ad9ed837d97_000.jpg
     2020-02-24 17:31:16   i2_date         23.01.2020 11:48
     2020-02-24 17:31:16   i2_title        Ankündigungsplakatx
     2020-02-24 17:31:16   i2_url          https://app.dsbcontrol.de/data/2f655f00-f85f-4019-88f7-c80db0f84a18/928a58cd-5a5c-4633-96bb-f49d0b99f2e9/928a58cd-5a5c-4633-96bb-f49d0b99f2e9_000.png
     2020-02-24 17:31:16   i3_date         20.02.2020 15:56
     2020-02-24 17:31:16   i3_title        7bx
     2020-02-24 17:31:16   i3_url          https://app.dsbcontrol.de/data/2f655f00-f85f-4019-88f7-c80db0f84a18/2b4307e4-d1f2-411b-a2bd-a9146334ce44/2b4307e4-d1f2-411b-a2bd-a9146334ce44_000.png
     2020-02-24 17:31:16   i4_date         20.02.2020 15:56
     2020-02-24 17:31:16   i4_title        Dok1x
     2020-02-24 17:31:16   i4_url          https://app.dsbcontrol.de/data/2f655f00-f85f-4019-88f7-c80db0f84a18/67ca3539-efef-4141-81b0-55499ea137ee/67ca3539-efef-4141-81b0-55499ea137ee_000.png
     2020-02-24 17:31:16   i5_date         20.02.2020 15:56
     2020-02-24 17:31:16   i5_title        Israelx
     2020-02-24 17:31:16   i5_url          https://app.dsbcontrol.de/data/2f655f00-f85f-4019-88f7-c80db0f84a18/488510ad-618f-4031-991a-23dd4a0ed628/488510ad-618f-4031-991a-23dd4a0ed628_000.png
     2020-02-24 17:31:16   lastCheck       2020-02-24 17:31
     2020-02-24 17:31:18   lastSync        2020-02-24 17:31
     2020-02-24 17:31:16   lastTTUpdate    2020-02-20 15:57
     2020-02-24 17:31:18   state           ok
     2020-02-24 17:31:18   ti0_sdate       2020-02-20
     2020-02-24 17:31:18   ti0_topic       Ethik Klasse 8: 1.+2. Std. in 313

   helper:
Attributes:
   dsb_class  5.*c
   dsb_interval 3600
   dsb_password ####
   dsb_user   ####
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 24 Februar 2020, 20:26:14
Hi Karpate,
zu 1.: Beim regelmäßigen Check holt das Modul nur neue Daten, wenn sich das Aktualisierungsdatum auf Serverseite geändert hat, d.h wenn es tatsächlich Änderungen gibt.
zu 2.: Miss ich mir später mal genauer anschauen. Auf den ersten Blick sollte das passen... Hast du mal nur mit ,,5c" im Attribut probiert?

Grüße,

Oli


Gesendet von iPhone mit Tapatalk
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 24 Februar 2020, 22:26:41
Hi Karpate,
ich hab mir das Ganze nochmal angesehen und ein ähnliches Szenario bei mir durchgespielt. Kann keine Probleme entdecken... Kannst du den HTML Quelltext (so wie hier beschrieben: https://forum.fhem.de/index.php/topic,107104.msg1022923.html#msg1022923) anhängen?
Grüße,
Oli
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: karpate am 25 Februar 2020, 05:25:39
Hi Oli,

1. Danke.
2. Ja versucht, auch mit "5c" werden keine Einträge angezeigt.
Habe dir den HTML Quelltext angehängt...

Danke und Gruß
Ingo
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 25 Februar 2020, 14:13:32
Hi Ingo,

komischerweise werden bei mir auch mit deinem HTML-Quelltext die "5c" Einträge (egal ob als 5c oder 5.*c) korrekt extrahiert.
tt0_Fach --- 2020-02-25 14:06:44
tt0_Klasse_n_ 5c 2020-02-25 14:06:44
tt0_Raum --- 2020-02-25 14:06:44
tt0_Stunde 1 2020-02-25 14:06:44
tt0_Text - 2020-02-25 14:06:44
tt0__Fach_ E 2020-02-25 14:06:44
tt0_sdate 2020-03-02 2020-02-25 14:06:44
tt1_Fach LB 2020-02-25 14:06:44
tt1_Klasse_n_ 5c 2020-02-25 14:06:44
tt1_Raum 413 2020-02-25 14:06:44
tt1_Stunde 2 2020-02-25 14:06:44
tt1_Text Lernbox 2020-02-25 14:06:44
tt1__Fach_ D 2020-02-25 14:06:44
tt1_sdate 2020-03-02 2020-02-25 14:06:44
tt2_Fach E 2020-02-25 14:06:44
tt2_Klasse_n_ 5c 2020-02-25 14:06:44
tt2_Raum 413 2020-02-25 14:06:44
tt2_Stunde 3 2020-02-25 14:06:44
tt2_Text - 2020-02-25 14:06:44
tt2__Fach_ D 2020-02-25 14:06:44
tt2_sdate 2020-03-02 2020-02-25 14:06:44


Kannst du dein DSB Device auf verbose 4 setzen, get timetetable machen und die zugehörigen Logeinträge posten (wenn das nichts hilft müssen wir auf verbose 5 gehen, das möchte ich uns aber vorerst ersparen :D)

Grüße,

Oli
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: karpate am 25 Februar 2020, 20:27:05
Hi Oli,
Danke für deine Hilfe. Ich habe gleich mal ein Verbose 5 angehängt

Gruß Ingo

Edit: ups, sorry da hat der tag
gefehlt...ich habe es dir angehängt
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 25 Februar 2020, 21:49:34
Hmmm... da fehlt der interessante Teil. hat der Editor da evtl. was abgeschnitten? Vielleicht kannst du es als Textfile anhängen.
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 26 Februar 2020, 00:00:19
Zitat von: frankreed am 24 Februar 2020, 11:41:27
Hi,
Modul funktioniert wunderbar.
Eine kleine Anregung für die einfache HTML-Ausgabe:

Könnte man die Überschriften, die ich mit mit dem Attribut "dsb_OutputFormat" festgelegt habe, als Überschrift bei den einzelnen Tagen noch mit anzeigen lassen?
Und die einzelnen Spalten mit einem Tab etwas mehr "auseinanderziehen"? Momentan ist alles sehr gedrängt.

Sorry meine HTML-Kenntnisse sind sehr rudimentär....

Danke!

PS: Ob man das statt der HTML-Ausgabe auch als Readingsgroup hinbekommen würde bin ich mir sicher, aber das haut bei mir nicht hin.


Mit dem morgigen update steht eine weiter Funktion für den Weblink zur Verfügung, die eine "echte" Tabelle, mit Überschriften erzeugt.
Funktioniert genauso wie simpleHTML:

defmod dsb_web weblink htmlCode {DSBMobile_tableHTML("dsb",1)}

Unschön ist noch, dass die Überschriften den Reading-Namen entsprechen. Da lass ich mir noch was einfallen (z.B., dass die Original-Spaltenbezeichnungen übernommen werden)

Edit: Habe mir gerade deinen Post nochmal genauer durchgelesen... wahrscheinlich ist das jetzt nicht ganz das, was du willst... Schau's dir mal an und gib Feedback...

Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: karpate am 26 Februar 2020, 10:16:32
Zitat von: KernSani am 25 Februar 2020, 21:49:34
Hmmm... da fehlt der interessante Teil. hat der Editor da evtl. was abgeschnitten? Vielleicht kannst du es als Textfile anhängen.

Hi Oli,

siehe Datei in meinem vorherigen Post.

Danke
Ingo
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 26 Februar 2020, 23:06:05
Zitat von: karpate am 26 Februar 2020, 10:16:32
Hi Oli,

siehe Datei in meinem vorherigen Post.

Danke
Ingo

Oh, da habe ich deine Änderung verpasst... Dieses DSBMobile wird ja immer interessanter... Bei Dir gibt es pro Tag ein separate Seite? Bisher war ich davon ausgegangen, dass der Vertretungsplan für alle Tage auf einer Seite kommt... Da muss ich dann wohl noch einen Loop einbauen... Das könnte heute eng werden ;-) Aber ich hoffe ich kriege es hin, bevor die Ferien vorbei sind.

P.S.: Es hätte gereicht nur das DSB Device auf verbose 5 zu setzen ;-)
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 27 Februar 2020, 00:41:19
Zitat von: KernSani am 26 Februar 2020, 23:06:05
Das könnte heute eng werden ;-) Aber ich hoffe ich kriege es hin, bevor die Ferien vorbei sind.
War dann doch nicht so komplex ;) Bitte mal angehängte Version probieren. In meinen konstruierten Tests hat es funktioniert, aber ich hätte gerne einen echten Test bevor ich die Version einchecke.
Danke,

Oli
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: karpate am 27 Februar 2020, 06:36:12
Zitat von: KernSani am 27 Februar 2020, 00:41:19
War dann doch nicht so komplex ;) Bitte mal angehängte Version probieren. In meinen konstruierten Tests hat es funktioniert, aber ich hätte gerne einen echten Test bevor ich die Version einchecke.
Danke,

Oli

Hallo Oli,
war mir nicht bewußt das es nicht "normal" ist für jeden Tag eine eigene Seite zu haben ;)
Danke für die Testversion. Habe diese ausprobiert. Nach get timetable steht im Log jetzt eine Perlmeldung, die "zweite Seite" wird nicht angezeigt.
2020.02.27 06:28:30 1: PERL WARNING: Use of uninitialized value $ttpage in concatenation (.) or string at ./FHEM/98_DSBMobile.pm line 321.

Habe dir gleich ein Verbose des Devices noch angehängt  8)

Danke und Gruß Ingo

Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 27 Februar 2020, 20:29:51
Zitat von: karpate am 27 Februar 2020, 06:36:12
Hallo Oli,
war mir nicht bewußt das es nicht "normal" ist für jeden Tag eine eigene Seite zu haben ;)
Tja, dieses DSBMobile scheint sehr flexibel konfigurierbar sein... Die angehängte Version sollte jetzt auch die zweite (oder weitere) Seiten vernünftig extrahieren.

Grüße,

Oli
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: karpate am 28 Februar 2020, 08:30:43
Hallo Oli,

habe deine neue Version gerade getestet. Ich konnte keine Änderungen in den Readings festestellen.

Ein List und Verbose 5 habe ich angehängt.
Gruß Ingo

Internals:
   FUUID      5e50232a-f33f-c7cb-14bf-40e167e428a70437
   FVERSION   98_DSBMobile.pm:v0.0.4-s21278/2020-02-25 TESTING
   NAME       dsb
   NR         1254
   STATE      ok
   TYPE       DSBMobile
   OLDREADINGS:
   READINGS:
     2020-02-28 08:25:27   columnNames     Klasse_n_,Stunde,_Fach_,Fach,Raum,Text
     2020-02-27 15:57:29   error           https://www.dsbmobile.de/JsonHandler.ashx/GetData: Can't connect(2) to https://www.dsbmobile.de:443:  SSL wants a read first
     2020-02-28 08:25:24   i0_date         17.02.2020 07:10
     2020-02-28 08:25:24   i0_title        DSB-Aushang Spiele-AG
     2020-02-28 08:25:24   i0_url          https://app.dsbcontrol.de/data/2f655f00-f85f-4019-88f7-c80db0f84a18/1ab893c0-0886-4694-aa22-c51cd6a8be00/1ab893c0-0886-4694-aa22-c51cd6a8be00_000.png
     2020-02-28 08:25:24   i1_date         23.01.2020 11:48
     2020-02-28 08:25:24   i1_title        Teilnehmerliste Musicalausfahrt
     2020-02-28 08:25:24   i1_url          https://app.dsbcontrol.de/data/2f655f00-f85f-4019-88f7-c80db0f84a18/f2424a86-3ad3-4a00-a0fd-9ad9ed837d97/f2424a86-3ad3-4a00-a0fd-9ad9ed837d97_000.jpg
     2020-02-28 08:25:24   i2_date         23.01.2020 11:48
     2020-02-28 08:25:24   i2_title        Ankündigungsplakatx
     2020-02-28 08:25:24   i2_url          https://app.dsbcontrol.de/data/2f655f00-f85f-4019-88f7-c80db0f84a18/928a58cd-5a5c-4633-96bb-f49d0b99f2e9/928a58cd-5a5c-4633-96bb-f49d0b99f2e9_000.png
     2020-02-28 08:25:24   i3_date         20.02.2020 15:56
     2020-02-28 08:25:24   i3_title        7bx
     2020-02-28 08:25:24   i3_url          https://app.dsbcontrol.de/data/2f655f00-f85f-4019-88f7-c80db0f84a18/2b4307e4-d1f2-411b-a2bd-a9146334ce44/2b4307e4-d1f2-411b-a2bd-a9146334ce44_000.png
     2020-02-28 08:25:24   i4_date         20.02.2020 15:56
     2020-02-28 08:25:24   i4_title        Dok1x
     2020-02-28 08:25:24   i4_url          https://app.dsbcontrol.de/data/2f655f00-f85f-4019-88f7-c80db0f84a18/67ca3539-efef-4141-81b0-55499ea137ee/67ca3539-efef-4141-81b0-55499ea137ee_000.png
     2020-02-28 08:25:24   i5_date         20.02.2020 15:56
     2020-02-28 08:25:24   i5_title        Israelx
     2020-02-28 08:25:24   i5_url          https://app.dsbcontrol.de/data/2f655f00-f85f-4019-88f7-c80db0f84a18/488510ad-618f-4031-991a-23dd4a0ed628/488510ad-618f-4031-991a-23dd4a0ed628_000.png
     2020-02-28 08:25:24   lastCheck       2020-02-28 08:25
     2020-02-28 08:25:27   lastSync        2020-02-28 08:25
     2020-02-28 08:25:24   lastTTUpdate    2020-02-20 15:57
     2020-02-28 08:25:27   state           ok
     2020-02-28 08:25:27   ti0_sdate       2020-02-20
     2020-02-28 08:25:27   ti0_topic       Ethik Klasse 8: 1.+2. Std. in 313

   helper:
Attributes:
   dsb_class  5.*c
   dsb_interval 600
   dsb_password aagy
   dsb_user   163962
   group      Steuerung
   room       999_Status
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 28 Februar 2020, 20:22:14
Oh Mann, doofer Fehler... jetzt aber :)
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: karpate am 28 Februar 2020, 21:29:50
Zitat von: KernSani am 28 Februar 2020, 20:22:14
Oh Mann, doofer Fehler... jetzt aber :)

Hi Oli,
cool, ich sehe die Vertretungen für den 02.03.2020.
Vielen Dank für deine Hartnäckigkeit ;)

Versendest du z.B. per Telegram die Readings?

Gruß Ingo
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 28 Februar 2020, 23:01:25
Zitat von: karpate am 28 Februar 2020, 21:29:50
Versendest du z.B. per Telegram die Readings?
Nein, ich habe aktuelle Vertretungen nur neben Terminen (Google Kalender) etc... auf meiner FHEM-Startseite (auch am Wandtablet), damit übersehe ich sie eigentlich nicht, und mein Sohn schaut sowieso ständig drauf :D
Zum Versenden würde sich wahrscheinlich besser die Rückgabe der simpleHTML (oder tableHTML)-Funktion eignen...
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: raiderxxl am 02 März 2020, 07:53:47
Mal noch ne doofe frage...
Kann das Modul auch ne zweite Seite? (Heute /Morgen) Denn bei uns enthält der Vertretungsplan immer 2 Tage?

Ich sehe zum Bleistift keine Benachrichtigung obwohl für morgen was drin steht...

Daten sind im #33 zu sehen...

Grüßle

Pascal



Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 02 März 2020, 07:58:47
Zitat von: raiderxxl am 02 März 2020, 07:53:47
Mal noch ne doofe frage...
Kann das Modul auch ne zweite Seite? (Heute /Morgen) Denn bei uns enthält der Vertretungsplan immer 2 Tage?

Ich sehe zum Bleistift keine Benachrichtigung obwohl für morgen was drin steht...

Daten sind im #33 zu sehen...

Grüßle

Pascal
Guck mal meinen vorletzten Post, da hängt eine Version dran, die auch mehrere Seiten kann.


Gesendet von iPhone mit Tapatalk
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: raiderxxl am 02 März 2020, 08:24:51
Hi,

gerade geladen FHEM neu gestartet... ändert aber nix

Bei mir war ja auch das Problem das es keine Zeile mit Klassen gab... da war ne extra Zeile dazwischen....

2020.03.02 08:22:26 5:  [dsb] Arguments (in json) to encode'{"OsVersion":"27 8.1.0","AppId":"15ec8374-58ca-b84f-381c-87bc9aa6aa10","PushId":"","BundleId":"de.heinekingmedia.dsbmobile","UserId":"231801","appversion":"2.5.9","Date":"2020-03-02T08:22:26.999+0100","LastUpdate":"2020-03-02T08:22:26.999+0100","UserPw":"mobileLUS","Language":"de","Device":"Nexus 4"}'

2020.03.02 08:22:26 5:  [dsb] 1st nonblocking HTTP Call starting
2020.03.02 08:22:27 5:  [dsb] 1st nonblocking HTTP Call returning
2020.03.02 08:22:27 5:  [dsb] GetData - received {"d":"H4sIAAAAAAAEAO1ZzW7bOBC+L7DvIOhcWhRN/eXWTbdAgCQI4gB7WBQFRVK2EJkyLKrZRdC32TfZF1vKtBVJplRbdQJ0ax5iY4bzw2/GnBnm+ddfLMu+50WZSZozbl9Y8F2DNpNElsWVSHLFsW3NUsS1vBKM/6WIwG3uv+GivJJ8WSjOnxXdsp71h9qyE9EWNInm4joVjy/aN+SHVGaVL0pkQTLJG6zLRZqxhvqWiZYZ912b3DC1kHJVXDgOWa0mrIgVR67zbMK4U6gDp9Qhgq3zlKWKUzgPacaLyUrM7bbG2sv3ZbH49x8x550N93kuFb/lXuUJax93S/5AJDcyajv7IlySNDMLkXlhZFzm4uHvFW/FYcu6W6e5ib4fuIFg6PXcJdTnRtT3fRzFIAxwBDBKCAhDHoIkiAIPJQH0Itp1uoUPdCdwOkEQQcuNLjzXuLnG7C7PUpk+mjX2wjcIYQdGZGL3QKlx6IFT6+2FtFoGWLXK74JWg3EEvBqeAyDWmmuY+393jEjiID+I4TRwQeRiF2DIYhBN3RCg2I89PE18z2XOIYd0BH8qJgu5zPq9HwiuDkQdYL9vy0CQdVQGAq1t1MH+1G+Df0n50ya8J4NnpZVu7jST3a9Gb87Jd06+t0i+faLJwaZze3r2E7i/IMXIC0OIEUBhwgDGQQQijCIQcBpDj+LYS/BwQUJ10sLgAqHhgnSLsPUHl5KvrXs+T3NBjHnyvytOY2HWYBwBtYbnSLi1lb27ghK64KhzXXys+kHH3S5g+LNbziGHdp44kQu+/jmvjIMQepMro03oyvfKtq+aXojsGy4XObsly01ayiqHOuPCLX+6zEsh9yJgz8gXfk2KzThWict1yV82ND0wj0Iddd8zCi3VbyTO+NA4dJepYeg8C9Wrv/SEnhsRBilAHvMA9vFUJb/PAfO9CGLKPUaTY0pPNFx6Psx+s5Z5rFLvp6g4Y9HVYByBsIZnh3JRxoX8DFUrqy70N+pLDzmqc5hjRxSa6Y9UaA6C6DUGo3MamtMQndNwdBr+gP3OtnE4Vc+z+/pitWOx8WZsNDJgYHfE/afrlzflbz5dz1S/JNN5s8s74vH6ZB3bTM0+qZgPvl//nipXeZaVYs6FPSq+xdbM6PAmJCuO6mlP9rz/kXMWE/o4hNBuzzhwErP0K4KDTgXO+zgv5RAym/8NjUKFVKrfDpLpqSC5zuffwETvGIdKZpIdD8urXpPVh1asTkeE4FlrmrJvFG5ESN0GBZRA7KnxHnrVoB9QF4ShmwBMMaQQJknshqrQfP0PY8++JZMcAAA="}
2020.03.02 08:22:27 5:  [dsb] JSON received: {
  'Resultcode' => 0,
  'StartIndex' => -1,
  'ChannelType' => 0,
  'ResultStatusInfo' => '',
  'MandantId' => '7ca04579-05fd-47c1-881f-4c40c00ffb18',
  'ResultMenuItems' => [
                         {
                           'Title' => 'Inhalte',
                           'NewCount' => 0,
                           'IconLink' => '',
                           'Childs' => [
                                         {
                                           'Title' => "Aush\x{c3}\x{a4}nge",
                                           'Index' => 1,
                                           'MethodName' => 'tiles',
                                           'Root' => {
                                                       'Id' => '',
                                                       'Tags' => '',
                                                       'Detail' => '',
                                                       'Title' => '',
                                                       'ConType' => 0,
                                                       'Index' => 0,
                                                       'Date' => '',
                                                       'Childs' => [
                                                                     {
                                                                       'Date' => '01.03.2020 19:51',
                                                                       'Childs' => [
                                                                                     {
                                                                                       'Detail' => 'https://app.dsbcontrol.de/data/267b0371-9141-40db-9318-2b6b543f651d/2c66649b-8749-42fa-88e8-f79752f7059c/news.html',
                                                                                       'ConType' => 6,
                                                                                       'Title' => 'Politik',
                                                                                       'Index' => 0,
                                                                                       'Id' => '2c66649b-8749-42fa-88e8-f79752f7059c',
                                                                                       'Tags' => '',
                                                                                       'Prio' => 0,
                                                                                       'Preview' => '267b0371-9141-40db-9318-2b6b543f651d/2c66649b-8749-42fa-88e8-f79752f7059c/preview.png',
                                                                                       'Childs' => [],
                                                                                       'Date' => '01.03.2020 19:51'
                                                                                     },
                                                                                     {
                                                                                       'Date' => '01.03.2020 19:51',
                                                                                       'Childs' => [],
                                                                                       'Preview' => '267b0371-9141-40db-9318-2b6b543f651d/2c66649b-8749-42fa-88e8-f79752f7059c/preview.png',
                                                                                       'Prio' => 0,
                                                                                       'Tags' => '',
                                                                                       'Id' => '2c66649b-8749-42fa-88e8-f79752f7059c',
                                                                                       'Index' => 0,
                                                                                       'Title' => 'Politik',
                                                                                       'Detail' => 'https://app.dsbcontrol.de/data/267b0371-9141-40db-9318-2b6b543f651d/2c66649b-8749-42fa-88e8-f79752f7059c/news.html',
                                                                                       'ConType' => 6
                                                                                     }
                                                                                   ],
                                                                       'Prio' => 0,
                                                                       'Preview' => '',
                                                                       'Id' => '2c66649b-8749-42fa-88e8-f79752f7059c',
                                                                       'Tags' => '',
                                                                       'Title' => 'Politik',
                                                                       'Detail' => '',
                                                                       'ConType' => 2,
                                                                       'Index' => 0
                                                                     },
                                                                     {
                                                                       'Childs' => [
                                                                                     {
                                                                                       'Date' => '02.03.2020 07:22',
                                                                                       'Childs' => [],
                                                                                       'Prio' => 0,
                                                                                       'Preview' => '267b0371-9141-40db-9318-2b6b543f651d/b2588042-28fd-4479-9429-7ecb05c4b5f4/preview.png',
                                                                                       'Id' => 'b2588042-28fd-4479-9429-7ecb05c4b5f4',
                                                                                       'Tags' => '',
                                                                                       'Detail' => 'https://cache2.dsbcontrol.de/Files/11111111-1111-1111-1111-111111111111/b2588042-28fd-4479-9429-7ecb05c4b5f4/weather.html',
                                                                                       'Title' => 'N24 Wetter Regional',
                                                                                       'ConType' => 6,
                                                                                       'Index' => 0
                                                                                     }
                                                                                   ],
                                                                       'Date' => '02.03.2020 07:22',
                                                                       'Prio' => 0,
                                                                       'Preview' => '',
                                                                       'Detail' => '',
                                                                       'ConType' => 2,
                                                                       'Title' => 'N24 Wetter Regional',
                                                                       'Index' => 0,
                                                                       'Id' => 'b2588042-28fd-4479-9429-7ecb05c4b5f4',
                                                                       'Tags' => ''
                                                                     }
                                                                   ],
                                                       'Prio' => 0,
                                                       'Preview' => ''
                                                     },
                                           'SaveLastState' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),
                                           'NewCount' => 0,
                                           'Childs' => [],
                                           'IconLink' => 'https://app.dsbcontrol.de/static/androidicons/Tiles.png'
                                         },
                                         {
                                           'Title' => "Pl\x{c3}\x{a4}ne",
                                           'Index' => 0,
                                           'Root' => {
                                                       'Tags' => '',
                                                       'Id' => '',
                                                       'Index' => 0,
                                                       'Title' => '',
                                                       'Detail' => '',
                                                       'ConType' => 0,
                                                       'Preview' => '',
                                                       'Prio' => 0,
                                                       'Date' => '',
                                                       'Childs' => [
                                                                     {
                                                                       'Title' => 'DSB mobile',
                                                                       'Detail' => '',
                                                                       'ConType' => 2,
                                                                       'Index' => 0,
                                                                       'Id' => '8519ad0c-25d5-4643-946e-d65904ce5dcf',
                                                                       'Tags' => '',
                                                                       'Prio' => 0,
                                                                       'Preview' => '',
                                                                       'Childs' => [
                                                                                     {
                                                                                       'Preview' => '267b0371-9141-40db-9318-2b6b543f651d/8519ad0c-25d5-4643-946e-d65904ce5dcf/preview.png',
                                                                                       'Prio' => 0,
                                                                                       'Childs' => [],
                                                                                       'Date' => '02.03.2020 07:29',
                                                                                       'Index' => 0,
                                                                                       'Detail' => 'https://app.dsbcontrol.de/data/267b0371-9141-40db-9318-2b6b543f651d/8519ad0c-25d5-4643-946e-d65904ce5dcf/subst_001.htm',
                                                                                       'ConType' => 3,
                                                                                       'Title' => 'subst_001.htm',
                                                                                       'Tags' => '',
                                                                                       'Id' => '8519ad0c-25d5-4643-946e-d65904ce5dcf'
                                                                                     },
                                                                                     {
                                                                                       'Date' => '02.03.2020 07:29',
                                                                                       'Childs' => [],
                                                                                       'Prio' => 0,
                                                                                       'Preview' => '267b0371-9141-40db-9318-2b6b543f651d/8519ad0c-25d5-4643-946e-d65904ce5dcf/preview.png',
                                                                                       'Id' => '8519ad0c-25d5-4643-946e-d65904ce5dcf',
                                                                                       'Tags' => '',
                                                                                       'ConType' => 3,
                                                                                       'Title' => 'subst_001.htm',
                                                                                       'Detail' => 'https://app.dsbcontrol.de/data/267b0371-9141-40db-9318-2b6b543f651d/8519ad0c-25d5-4643-946e-d65904ce5dcf/subst_002.htm',
                                                                                       'Index' => 0
                                                                                     }
                                                                                   ],
                                                                       'Date' => '02.03.2020 07:29'
                                                                     }
                                                                   ]
                                                     },
                                           'MethodName' => 'timetable',
                                           'SaveLastState' => $VAR1->{'ResultMenuItems'}[0]{'Childs'}[0]{'SaveLastState'},
                                           'NewCount' => 0,
                                           'Childs' => [],
                                           'IconLink' => 'https://app.dsbcontrol.de/static/androidicons/Timetable.png'
                                         }
                                       ],
                           'Index' => 0,
                           'MethodName' => '',
                           'SaveLastState' => $VAR1->{'ResultMenuItems'}[0]{'Childs'}[0]{'SaveLastState'}
                         },
                         {
                           'SaveLastState' => $VAR1->{'ResultMenuItems'}[0]{'Childs'}[0]{'SaveLastState'},
                           'MethodName' => '',
                           'Childs' => [
                                         {
                                           'NewCount' => 0,
                                           'Title' => 'Einstellungen',
                                           'Childs' => [],
                                           'IconLink' => 'https://app.dsbcontrol.de/static/androidicons/Settings.png',
                                           'Index' => 0,
                                           'MethodName' => 'settings',
                                           'SaveLastState' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' )
                                         },
                                         {
                                           'SaveLastState' => $VAR1->{'ResultMenuItems'}[1]{'Childs'}[0]{'SaveLastState'},
                                           'MethodName' => 'feedback',
                                           'IconLink' => 'https://app.dsbcontrol.de/static/androidicons/Feedback.png',
                                           'Childs' => [],
                                           'Index' => 1,
                                           'NewCount' => 0,
                                           'Title' => 'Feedback'
                                         },
                                         {
                                           'NewCount' => 0,
                                           'Title' => 'Info',
                                           'Childs' => [],
                                           'IconLink' => 'https://app.dsbcontrol.de/static/androidicons/About.png',
                                           'Index' => 2,
                                           'MethodName' => 'about',
                                           'SaveLastState' => $VAR1->{'ResultMenuItems'}[1]{'Childs'}[0]{'SaveLastState'}
                                         },
                                         {
                                           'SaveLastState' => $VAR1->{'ResultMenuItems'}[1]{'Childs'}[0]{'SaveLastState'},
                                           'MethodName' => 'logout',
                                           'IconLink' => 'https://app.dsbcontrol.de/static/androidicons/Logout.png',
                                           'Childs' => [],
                                           'Index' => 3,
                                           'NewCount' => 0,
                                           'Title' => 'Logout'
                                         }
                                       ],
                           'Index' => 1,
                           'IconLink' => '',
                           'NewCount' => 0,
                           'Title' => 'Sonstiges'
                         }
                       ]
}

2020.03.02 08:22:27 4:  [dsb] Extracted the url: https://app.dsbcontrol.de/data/267b0371-9141-40db-9318-2b6b543f651d/8519ad0c-25d5-4643-946e-d65904ce5dcf/subst_001.htm
2020.03.02 08:22:27 5:  [dsb] processing page https://app.dsbcontrol.de/data/267b0371-9141-40db-9318-2b6b543f651d/8519ad0c-25d5-4643-946e-d65904ce5dcf/subst_001.htm
2020.03.02 08:22:27 5:  [dsb] 2nd nonblocking HTTP Call starting for https://app.dsbcontrol.de/data/267b0371-9141-40db-9318-2b6b543f651d/8519ad0c-25d5-4643-946e-d65904ce5dcf/subst_001.htm
2020.03.02 08:22:27 5:  [dsb] 2nd nonblocking HTTP Call returning
2020.03.02 08:22:27 5:  [dsb] Received HTML:






body { margin-top: 0px; margin-left: 20px; margin-right: 20px;
background: #fff; color: #272727; font: 80% Arial, Helvetica, sans-serif; }

h1 { color: #ee7f00; font-size: 150%; font-weight: normal;}
h1 strong { font-size: 200%; font-weight: normal; }
h2 { font-size: 125%;}

h1, h2 { margin: 0; padding: 0;}

th { background: #000; color: #fff; }
table.mon_list th, td { padding: 8px 4px;}


.mon_title
{
font-weight: bold;
font-size: 120%;
clear: both;
margin: 0;
}

.inline_header
{
font-weight: bold;
}

table.info
{
color: #000000;
font-size: 100%;
border: 1px;
border-style:solid;
border-collapse:collapse;
padding: 8px 4px;
}

table.mon_list
{
color: #000000;
width: 100%;
font-size: 100%;
border: 1px;
border-style:solid;
border-collapse:collapse;
}

table.mon_head
{
color: #000000;
width: 100%;
font-size: 100%;
}

td.info,
th.list,
td.list,
tr.list
{
border: 1px;
border-style: solid;
border-color: black;
margin: 0px;
border-collapse:collapse;
padding: 3px;
}

tr.odd { background: #fad3a6; }
tr.even { background: #fdecd9; }









   

       
Untis 2020
       
       
           
L.-Uhland-Schule Heimsheim   D-71296, Schulstr. 19-21


            6. Plan 2019/2020 g�ltig ab 17.02.2020   Stand: 02.03.2020 07:28

       
   



2.3.2020 Montag


Nachrichten zum Tag



Porsche-Termin LUS 9a 1.Gruppe







Stunde Fach (Lehrer) Vertreter Raum Text Entfall

6b

3 M Fs HK 416

7a

2 D LH St 303

7d

5 Gk Fs Sz 306

6 --- Fs --- --- x

8b

1 Gk Fs St 208

2 G Fs Sz 208

3 - 4 M Fs BT 208

9a

1 - 2 BK Gt Gt 112

1 - 8 Bn Porsche

3 D KS KS 210

4 M HK HK 210

5 - 6 E JS JS 210

9b

1 D LH Sz 209

6 --- LH --- --- x

9c

3 D LH St 204

5 Bio LH RN 301

10c

3 EWG EK BF Sz 305

-----

2/3 BF St 9.20 Felsen Hof

6/7 Fs Br 13.05 Bus2




Periode5    (26)   Zweites Schulhalbjahr_Februar 2020


Untis Stundenplan Software





2020.03.02 08:22:27 5:  [dsb] processing page
2020.03.02 08:22:27 4:  [dsb] Starting extraction mon_list
2020.03.02 08:22:27 4:  [dsb] Starting extraction info
2020.03.02 08:22:27 5:  [dsb] Found info of the Day: '

Nachrichten zum Tag



Porsche-Termin LUS 9a 1.Gruppe




'

2020.03.02 08:22:27 4:  [dsb] Starting extraction mon_title
2020.03.02 08:22:27 5:  [dsb] Processing line #0
2020.03.02 08:22:27 5:  [dsb] Extracted Lines
2020.03.02 08:22:27 5:  [dsb] 2nd nonblocking HTTP Call parse done
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 02 März 2020, 21:52:23
Zitat von: raiderxxl am 02 März 2020, 08:24:51
Hi,

gerade geladen FHEM neu gestartet... ändert aber nix

Bei mir war ja auch das Problem das es keine Zeile mit Klassen gab... da war ne extra Zeile dazwischen....
Dieses DSBMobile macht mich wahnsinnig... So viele Varianten ;)
Bei Ingo oben gab es auf der Startseite zwei (oder mehr) Unterseiten, je eine pro Tag. Bei dir gibt es auf der Startseite nur einen Link, innerhalb dessen aber zwei (oder mehr) Seiten... Daher ist die JSON-Struktur wieder anders. Dieser Fall ist nun aber auch abgedeckt.
Ich hoffe mal, dass nicht noch mehr Varianten auftauchen :D
Die neue Version ist angehängt und ich denke, ich werde sie dann auch einchecken, so dass sie mit dem regulären Update kommt.

Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: pasp am 03 März 2020, 00:05:31
Kurzer Testbericht: Bei der Schule meines Sohnes haben wir 3 Links mit jeweils mehreren Seiten.
In der letzten Version werden jetzt auch Daten aus den gut versteckten Seiten gefunden.

Was noch toll wäre, wäre zur Steigerung des WAF die Möglichkeit, in dsb_outputFormat Text und Variablen nur nach bestimmten Bedingungen anzuzeigen.
ZZt habe ich
%Klasse_n_%: %Stunde%. Stunde statt %Fach% bei %Lehrer% Vertretung durch %Vertreter% in Raum %Raum%. Text: %Information%/%Verlegung%
gesetzt, was dann zu solcher Ausgabe führt:
5C: 1. Stunde statt Deutsch bei PJU Vertretung durch GEI in Raum W203. Text: -/-
5C: 2. Stunde statt Deutsch bei PJU Vertretung durch GEI in Raum W203. Text: -/-
5C: 3. Stunde statt Englisch bei PJU Vertretung durch SEM in Raum S106. Text: -/-
11Q_5: 2. Stunde statt --- bei PJU Vertretung durch --- in Raum ---. Text: -/Entfall
11Q_5: 3 - 4. Stunde statt --- bei TCH Vertretung durch --- in Raum ---. Text: -/Entfall
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: frankreed am 04 März 2020, 07:58:47
Zitat von: frankreed am 24 Februar 2020, 11:41:27
Eine kleine Anregung für die einfache HTML-Ausgabe:

Könnte man die Überschriften, die ich mit mit dem Attribut "dsb_OutputFormat" festgelegt habe, als Überschrift bei den einzelnen Tagen noch mit anzeigen lassen?
Und die einzelnen Spalten mit einem Tab etwas mehr "auseinanderziehen"? Momentan ist alles sehr gedrängt.

Ich habe mir zwischenzeitlich geholfen mit einem Hilfsmodul:
https://github.com/klein0r/fhem-abstracttable (https://github.com/klein0r/fhem-abstracttable)

Damit habe ich mir "meine" HTML-Ausgabe zusammengebastelt. Mit dem Hilfsmodul kann man noch viel mehr anstellen, siehe Webseite.


Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 04 März 2020, 23:13:55
Zitat von: frankreed am 04 März 2020, 07:58:47
Ich habe mir zwischenzeitlich geholfen mit einem Hilfsmodul:
https://github.com/klein0r/fhem-abstracttable (https://github.com/klein0r/fhem-abstracttable)

Damit habe ich mir "meine" HTML-Ausgabe zusammengebastelt. Mit dem Hilfsmodul kann man noch viel mehr anstellen, siehe Webseite.
kannte ich garnicht... sieht nicht uninteressant aus... Vielleicht magst du dein Beispiel ja hier im raw format posten, dass andere es übernehmen können.
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 04 März 2020, 23:16:25
Zitat von: pasp am 03 März 2020, 00:05:31
Kurzer Testbericht: Bei der Schule meines Sohnes haben wir 3 Links mit jeweils mehreren Seiten.
In der letzten Version werden jetzt auch Daten aus den gut versteckten Seiten gefunden.
Was noch toll wäre, wäre zur Steigerung des WAF die Möglichkeit, in dsb_outputFormat Text und Variablen nur nach bestimmten Bedingungen anzuzeigen.
Danke für den Testbericht :)
Wie stellst du dir die Bedingungen vor? Was ich mir vorstellen könnte, ist dem dsb_outputFormat Perl beizubringen. Wäre das die richtige Richtung?
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: frankreed am 05 März 2020, 06:58:46
Zitat von: KernSani am 04 März 2020, 23:13:55
kannte ich garnicht... sieht nicht uninteressant aus... Vielleicht magst du dein Beispiel ja hier im raw format posten, dass andere es übernehmen können.

Mach' ich heute Abend.
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: raiderxxl am 05 März 2020, 09:28:41
Hi,

meines sieht so aus...

defmod dsb_ab abstracttable dsb
attr dsb_ab DbLogExclude .*
attr dsb_ab alias DSB Mobile
attr dsb_ab table-header Datum,Klasse,Stunde,Fach,Lehrer,Vertretung,Raum,Text,Entfällt
attr dsb_ab table-rowtemplate tt%d_sdate,tt%d_Klasse_n_,tt%d_Stunde,tt%d_Fach,tt%d__Lehrer_,tt%d_Vertreter,tt%d_Raum,tt%d_Text,tt%d_Entfall
attr dsb_ab table-startindex 0


hab nur noch ein Problem mit der Sortierung nach Datum... der Sortiert nach dem Index im Readingsnamen..

Grüßle

Pascal
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: tschaedl am 15 März 2020, 12:13:15
Hallo,

tolles Modul. Ich hätte noch einen Wunsch. Bei uns sind Aushänge oft mehrseitig. Momentan bekomme ich nur die erste Seite. Gibt es da Möglichkeiten, was zu ändern?

Danke,
Thomas
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 20 März 2020, 00:41:25
Zitat von: tschaedl am 15 März 2020, 12:13:15
Hallo,

tolles Modul. Ich hätte noch einen Wunsch. Bei uns sind Aushänge oft mehrseitig. Momentan bekomme ich nur die erste Seite. Gibt es da Möglichkeiten, was zu ändern?

Danke,
Thomas
Hi Thomas,

zur Zeit ist das Modul (bzw. die App) vermutlich eher sinnlos :-S. Ich habe eine Vermutung, wie die Multipage-Aushänge funktionieren und habe das mal angepasst. Falls angehängte Version nicht funktioniert, kannst du mir deine Zugangsdaten per PN schicken?

Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: tschaedl am 21 März 2020, 12:59:01
Zitat von: KernSani am 20 März 2020, 00:41:25
Hi Thomas,

zur Zeit ist das Modul (bzw. die App) vermutlich eher sinnlos :-S. Ich habe eine Vermutung, wie die Multipage-Aushänge funktionieren und habe das mal angepasst. Falls angehängte Version nicht funktioniert, kannst du mir deine Zugangsdaten per PN schicken?

Hi,

wie du schon richtig sagst, zur Zeit kann man da wenig machen. Sobald wieder Normalität herrscht und es mehrseitige Aushänge gibt, probiere ich es aus und melde mich. Trotzdem schonmal ein grosses Dankeschön an dich.

Gruss Thomas
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: raiderxxl am 20 April 2020, 11:09:53
FHEM Schmiert seit heute komplett ab:

2020.04.20 10:56:09 4: https://www.dsbmobile.de/JsonHandler.ashx/GetData: HTTP response code 400
2020.04.20 10:56:09 5: HttpUtils https://www.dsbmobile.de/JsonHandler.ashx/GetData: Got data, length: 334
2020.04.20 10:56:09 5: HttpUtils response header:
HTTP/1.1 400 Bad Request
Content-Type: text/html; charset=us-ascii
Server: Microsoft-HTTPAPI/2.0
Date: Mon, 20 Apr 2020 08:56:08 GMT
Connection: close
Content-Length: 334
2020.04.20 10:56:09 5: [dsb] 1st nonblocking HTTP Call returning
2020.04.20 10:56:09 5: [dsb] GetData - received <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>Bad Request</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Bad Request - Invalid Hostname</h2>
<hr><p>HTTP Error 400. The request hostname is invalid.</p>
</BODY></HTML>

malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "<!DOCTYPE HTML PUBLI...") at ./FHEM/98_DSBMobile.pm line 218.


zur info
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 20 April 2020, 11:14:56
Komisch, bei mir funktioniert es noch. Schaue ich mir heute Abend mal an. Und abschmieren sollte die Kiste natürlich nicht. Das werde ich fixen.


Kurz, weil mobil....
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: karpate am 20 April 2020, 11:22:49
gleiches Problem bei mir wie von raiderxxl beschrieben...nicht die ganze Kiste schmiert ab, sondern fhem stürzt ab und startet neu
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 20 April 2020, 11:55:20
Fix im Anhang (der Fehler wird abgefangen, so dass FHEM nicht mehr stirbt). Ursache analysiere ich heute Abend...

Edit: Schnellschuss funktioniert wohl immernoch nicht (aber tötet FHEM nicht) näheres später...
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 20 April 2020, 21:41:47
Ok... Das DSBMobile Modul hat Covid und muss auf die Intensivstation... Die bisher genutzte API funktioniert nicht mehr und bisher widersteht die App meinen Versuchen den Traffic mitzuhören... Die angehängte Version kommt morgen mit dem Update und behebt zum einen den Fehler, dass FHEM abstürzt, zum anderen versetzt sie das Modul in den Winterschlaf... Sobald ich - oder schlauere Menschen - die neue API entschlüsselt haben, wird's ein Update geben...
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 04 Mai 2020, 23:32:02
Ich habe mit dem Entwickler der DSBMobile-App Kontakt aufgenommen und die Antwort erhalten, dass eine Abfrage durch Drittanwendungen weder vorgesehen noch erwünscht sei. Ich bleibe dran, nehme das Modul aber erstmal aus dem SVN :-(
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: tschaedl am 06 Mai 2020, 12:50:54
Vielen Dank fürs dranbleiben. Wäre toll, wenn du das wieder hinbekommen könntest auch wenn der Hersteller not amused ist.

Gruss Thomas
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: frankreed am 16 Mai 2020, 10:51:26
Morgen,

habe auf der folgenden Seite etwas Interessanntes gefunden:

https://github.com/nerrixDE/DSBApi (https://github.com/nerrixDE/DSBApi)

Dort ist eine API in Python aufgeführt, die auf die Android-API aufsetzt. Und die funktioniert weiterhin, habe das Beispielscript ausgeführt.

Vielleicht wäre das ein Ansatz...

Grüße Patrick
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 16 Mai 2020, 12:56:08
Interessant... Muss ich mir mal im Detail anschauen. Danke für den Hinweis.


Kurz, weil mobil....
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 23 Mai 2020, 18:29:29
Gute Nachrichten! Ich bin endlich dazu gekommen mir mal DSBMobile wieder vorzunehmen und habe es dank der Hinweise aus der Community tatsächlich wieder zum Laufen bekommen :-)
Ich werde heute noch ein bisschen testen und das Ding dann wieder ins SVN stellen, so dass es morgen mit dem Update wieder verfügbar sein sollte.

Danke für die Hinweise!

Oli

Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: Martin-72 am 22 August 2020, 19:01:59
Hallo Olli,

vielen Dank für das Modul und Klasse, wie schnell DU immer antwortest. Nach Corona habe ich es nun bei mir installiert.

Es scheint auch zu klappen, denn es werden die "Nachrichten zum Tag" richtig übernommen. - Allerdings die vom gestrigen Freitag, nicht die von Montag. (wobei für Montag noch keine Liste hochgeladen ist  /  die Datei heißt auch "VerSchheu"). Das kann also alles richtig sein.

Allerdings werden keine Vertretungen übernommen für Klasse 8C (Auch nicht für 05B oder 05B...

Vielen Dank

Martin

Internals:
   FUUID      5f4142fa-f33f-290b-ac8f-7e96dc69412661d3
   FVERSION   98_DSBMobile.pm:v0.0.4-s22014/2020-05-23 TESTING
   NAME       DSBMobile
   NR         372
   STATE      ok
   TYPE       DSBMobile
   OLDREADINGS:
   READINGS:
     2020-08-22 18:58:59   columnNames     Kl.,Std.,Kl.,Fach,Lehrer,Vertr.,Raum,Bemerkung,Neu
     2020-08-22 18:58:57   lastCheck       2020-08-22 18:58
     2020-08-22 18:58:59   lastSync        2020-08-22 18:58
     2020-08-22 18:58:57   lastTTUpdate    2020-08-21 07:21
     2020-08-22 18:58:59   state           ok
     2020-08-22 18:58:59   ti0_sdate       2020-08-24
     2020-08-22 18:58:59   ti0_text        AAR, BER (1-6), BEU, BOR (1-6), DER (1-6), ELF (1-6), KRM (1-6), MAR (1-6), SWA (1-6), UFN, VOG, WAE (1-6)
     2020-08-22 18:58:59   ti0_topic       Abwesende Lehrer-
     2020-08-22 18:58:59   ti1_sdate       2020-08-24
     2020-08-22 18:58:59   ti1_text        EF
     2020-08-22 18:58:59   ti1_topic       Abwesende Klassen-
     2020-08-22 18:58:59   ti2_sdate       2020-08-24
     2020-08-22 18:58:59   ti2_topic       Der Förderunterricht für die Jgst.6 und Jgst. 7 beginnt heute (21.08.20).
Der förderunterricht für die Jgst. 8 und 9 beginnt nächste Woche (28.08.20).
   helper:
Attributes:
   dsb_class  08.*C
   dsb_classReading Kl.
   dsb_interval 1800
   dsb_password schueler
   dsb_user   170162
   room       System,Web
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: enno am 10 September 2020, 13:19:33
Moin Oli,

ich verzweifel gerade am Umlaut im Password. "Grütze" und in Verbose 5 kann ich sehen, dass mein Raspi daraus "Grütze" macht. Ich habe jetzt schon das Forum hoch und runter gesucht, aber keine Idee wie ich das richtige Password übermitteln kann.

{$ ENV {LANG}} sagt mir de_DE.UTF-8 also eigentlich alles korrekt. Gibt es noch irgendwo einen Trick. Oder kann ich das ü unter den Atrributen so eingeben, dass dein Modul das richtige daraus macht? Wenn ihr einen Tip für mich habt, bitte schön.

Gruss
  Enno
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: enno am 10 September 2020, 15:57:58
ok, habe es gelöst:

attr dsb password Grütze

Gruss
  Enno

Edit: Login klappt aber leider nicht.
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: frankreed am 22 September 2020, 19:02:06
Zitat von: frankreed am 05 März 2020, 06:58:46
Mach' ich heute Abend.

Ok, heute Abend ist ein bisschen verspätet:


defmod dsbmobile DSBMobile
attr dsbmobile dsb_class 7D.*
attr dsbmobile dsb_interval 1800
attr dsbmobile dsb_outputFormat %Klasse_n_% %Fach% %Vertreter% Vertretung durch %Raum% im Raum %_Lehrer_% anstatt %Art% Vertretungsart %Text% %Sch__lergruppe%
attr dsbmobile dsb_password xxxxxxx
attr dsbmobile dsb_user yyyyyyy


und


defmod dsb_view abstracttable dsbmobile
attr dsb_view icon time_calendar
attr dsb_view room Konfiguration->Websites
attr dsb_view table-header Datum,Klasse,Stunde,Fach,Art,regulär_bei,Vertretung_durch,in_Raum
attr dsb_view table-rowtemplate tt%d_sdate,tt%d_Stunde,tt%d_Fach,tt%d_Vertreter,tt%d_Text,tt%d_Art,tt%d_Raum,tt%d__Lehrer_


Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: elle am 07 Oktober 2020, 09:42:02
Hallo Oli,

waere es ev. moeglich, ein Attribut einzubauen, ueber das man angeben kann, in welcher Zeile die Spaltennamen stehen?

Die Schule meiner Jungs hat noch eine Zeile vor den tatsaechlichen Spaltennamen, wo noch anderer Kram drin steht, der aber nicht eindeutig ist.

Bei mir habe ich es derzeit so geloest:

                #create readingnames from first line
457                 if ( $j == 0 ) {
458                         $j++;
459                         next;
460                 }
461                 elsif ($j == 1) {
462                     $j++;
463                     @ch = map { makeReadingName($_) } @f;
464                     next;
465                 }
466


aber musste natuerlich nun erstmal das Modul aus dem Update rausnehmen, um die Anpassung nicht zu verlieren.

Vielleicht kann man das ueber ein Attribut regeln und wenn das definiert ist, diese Zeile statt der ersten nehmen?

Ansonsten super Sache! Danke.

Viele Gruesse

Jens
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: KernSani am 26 März 2021, 21:18:45
Hallo zusammen,
auch wenn zur Zeit (zumindest bei uns) relativ wenig in DSBMobile los ist... ich bräuchte mal wieder Hilfe. Die API wurde mal wieder geändert und ich habe das so weit es ging gefixt. Allerdings habe ich ein Problem: Bei uns gibt es keine "News" mit denen ich testen könnte. Hat jemand von euch "News" in der App, wo es auch Content gibt?
Danke,
Oli
Titel: Antw:98_DSBMobile - Modul zur Abfrage des Vertretungsplans
Beitrag von: adrian am 14 Juni 2021, 21:57:09
Hallo zusammen,
das DSB-Modul  funktioniert top, vorallem die "dsb_web_table".
Nun würde ich aber gern diese "dsb_web_table" in der FTUI verwenden. Hab schon data-type "iframe", "link" und sonstwas ausprobiert, bekomme aber keine Ergebnisse in der FTUI angezeigt.
Hat jemand eine Idee mit welchem data-type man den DSB-Weblink "dsb_web_table" in die FTUi übergeben kann?
danke und schönen Abend noch
Adrian