Installation stundenplan24 / Vertretungsplan von Indiware als integration (api?)

Hallo zusammen,
ich möchte gerne die Daten aus der App/Webseite stundenpan24vertretungsplan von Indiware in den HA integrieren - entweder als Integration oder als Import der Daten.

Es gibt dazu auch auf Github eine api
GitHub - Vertretungsapp/indiware-api: :space_invader: A fully-typed wrapper for the Indiware API, used by Vertretungsapp

bzw. eine App Vertretungsapp Development · GitHub

Wie integriere ich am besten die Daten in den HA?

Danke für Eure Unterstützung

Ohne das ich jetzt viel gelesen habe oder den o.g. Link angeschaut habe, aber geht das hier in die Richtung bzw. könnte es Dir helfen?

Danke für die schnelle Antwort.
Ja, das geht in die richtige Richtung.

Meine Idee war, mir den Weg, die Website selber auszulesen zu sparen

  • vor allem, da relativ schwierig abzugreifen (Benutzername, Passwort, Schulnummer, Klasse etc.)
  • ich habe im 1. Anlauf die “Datenquelle” auf der Seite auch nicht so richtig finden können (Stichwort: Selektor) - liegt aber wahrscheinlich an mir

Stattdessen wollte ich auf eine der beiden OpenSource Quellen zuzugreifen, die ja die Daten bereits strukturiert zur Verfügung stellen!? Oder bin ich da völlig auf dem falschen Weg?

VG. Heiko

da es eine Integration nicht gibt, wäre es sowas wie das hier:

1 „Gefällt mir“

Spannend, ich steh gerade vor einer ähnlichen Idee. Ich würde gern auf den Notenspiegel meines Sohnes zugreifen, der auf beste.schule vorliegt. Auch hier gibt es eine API, nur steig ich noch nicht ganz dahinter, wie ich die Daten in HA bekomme.

@harryp : Das Video habe ich in diesem Zusammenhang auch gesehen. Leider bringt es mich nicht weiter, da ich immer am Login scheitere.

Das sieht nach einer guten Erklärung aus. Werde ich mal probieren.

1 „Gefällt mir“

Vielen Dank. Werde ich mir mal anschauen.

Update:
Also, mit dem Scraper funktioniert der Zugriff, auch die Zugangsdaten funktionieren und einen einfachen Text habe ich auch herausziehen können.
image

Allerdings gelingt es mir nicht, die relevanten Daten zu scrapen.
Sind diese Daten “nur” eingebettet? (Sorry für meinen laienhaften Ausdruck)

Der herauskopierte Selector

#tablekopf > tbody > tr:nth-child(4) > td

liefert dann im Sensor nur “unbekannt”
Was mache ich falsch?

:crayon:by HarryP: Zusammenführung Doppelpost (bitte “bearbeiten” Funktion nutzen)

Was soll denn genau ausgelesen werden?

wenn du die Klassen mit Änderungen auslesen willst, dann ist das

.tdabwesend

Allerdings kann man natürlich nicht sehen, das wievielte Mal das auf der Seite vorkommt.
Hier kann man gut testen, da steht auch die Zählung:

Im Logfile von Home Assistant stehen auch mehr Angaben, wenn man das Logging in der Scrape Integration anschaltet.

PS: Ich würde mal die Personaldaten hier rausnehmen, insbesondere die Schule und die Lehrernamen.

Moin,

Ich bin kein Datenschutzbeauftragter, aber Du zeigst im Bild Daten, die ich für nicht korrekt halte, denn dort stehen Namen, ich würde das Bild löschen oder den Bereich unkenntlich machen.

Wieso, wenn Du das, was da Hellblau hinterlegt ist, Scrapen willst, dann ist das doch

<td class="tdabwesend">

Du solltest eher mit dem Demobereich von Stundenplan24 testen und hier posten, nicht mit echten Schulen.

VG
Bernd

1 „Gefällt mir“

Also mit rechter Maustaste und Kopieren Selector

liefert mir die Seite

#tablekopf > tbody > tr:nth-child(4) > td

was später in Scrape nur “unbekannt” auswirft.

Danke für den Tipp.
Im 1. Schritt liefert auch .tdabwesend ein unbekannt zurück.
Ich werde heute abend nochmal in Ruhe über den Link von dir testen.
Danke!

Update: Komme leider nicht vorwärts.
Ich vermute, dass im Hintergund xml Daten gelesen werden und als Tabelle eingebettet werden.
Ich verlinke hier mal die Testschule: Vertretungsplan online
Im ersten Schritt möchte ich die Klasse mit Änderung auslesen.

.tdabwesend

tut das, was es soll.

Zeig mal deinen Scraper (Zugangsdaten, etc. entfernen!).
Was steht im Logfile dazu?


Beim Auslesen der Version klappt es


Beim Auslesen der Version klappt es


:pencil2: by tarag: Beiträge zusammengeführt

Hat schon jemand hinbekommen von der Ecowitt Webseite die öffentlich zur verfügen gestellten Stationen zu scrapen? Gibt es da einen Trick? Ist die Seite dynamisch und deswegen bekomme ich es nicht hin?

Das ist auch so. Für die Beispielschule sieht das so aus. Überden Link kommt man auf eine xml für den Vertretungsplan.

Mit “VplanKl.xml” scheint man immer den aktuellen Plan des Tages zu bekommen. Man kann aber auch ein spezielles Datum abfragen. Da sieht die aufzurufende Datei dann so aus: VplanKl20240815.xml. Fand ich in dieser PDF von Indiware.

Für die Beispielschule ist das auch nicht schwierig, an die Daten zu kommen. Allerdings wird bei der Schule meiner Kinder immer erst noch Benutzernamen und Kennwort abgefragt. Ich bin noch nicht dahinter gekommen, wie ich das aus HA heraus machen soll. Alternativ ginge auch NodeRed.

Ja, hier komme ich auch nicht weiter. Meine Vorstellung wäre, dass in der xml gesucht wird, ob die Klasse, in die meine Tochter geht (hier z.B. Kl. 7c) vom Vertretungsplan betroffen ist (also, ob es Änderungen zum normalen Stundenplan gibt).
Wenn der Wert “7c” in der Datei nicht gefunden wird , erledigt. Wenn der Wert “7c” irgendwo auftaucht, soll eine Benachrichtigung erstellt werden (Achtung Stundenplanänderung) oder ein Sensor einen bestimmten Wert erhalten (z.B. Änderungen: ja)

Mit NodeRed habe ich das hinbekommen, allerdings noch nicht vorzeigbar, da experimentell.

Außerdem habe ich festgestellt, dass es gar nicht so schwer ist, Benutzernamen und Kennwort zu übergeben. Im Browser funktioniert das ganz einfach mit folgendem Link:

https://{Nutzername}:{Kennwort}www.stundenplan24.de/{Schulnummer}/vplan/vdaten/VplanKl.xml

Allerdings würde ich das so nicht tun, da Nutzer und Kennwort im Klartext übermittelt werden.

Man kann damit auch gezielt ein Datum abfragen. Dann einfach den Dateinamen ergänzen, z. B:

VplanKl20240827.xml

In NodeRed funktioniert der Abruf per HTTP Request-Node. Dann die erhaltene xml in eine json umwandeln und auswerten. Da bin ich aber noch am testen, da es so viele Daten sind, die da mitkommen. Und ich bin auch nicht der Profi für sowas, sondern mache das meiste mit probieren und ChatGPT.

sehr gut. Danke, dass werde ich mal ausprobieren.

Ok, ich bin nun soweit, dass ich mir die Anzahl der Änderungen für die kommenden zwei Schultage (mehr ist natürlich möglich) anzeigen lasse. Dabei wird auch das Wochenende berücksichtigt.

Screenshot_2024-08-29-06-07-42-744_io.homeassistant.companion.android

Das Auslesen der Daten habe ich über NodeRed gelöst, weil das für mich logischer zu gestalten ist. Sicher kann man das aber auch als Rest-Sensor in der yaml machen.

Welche Veränderungen es im Stundenplan gibt, erfasse ich auch. Da brauche ich aber noch etwas, um das sinnvoll darzustellen, da die Struktur der Daten recht unübersichtlich ist. Ist für mich auch nicht so dringend, da ich es besser fände, wenn man den Stundenplan insgesamt anzeigen könnte, also reguläre Stunden + Veränderungen.

.

EDIT: Habe gerade gefunden, dass es doch Daten gibt, bei denen man Änderungen und aktuellen Plan gemeinsam hat. Zu finden ist das unter dem Link

https://www.stundenplan24.de/schulnummer/mobil/mobdaten/PlanKl20240829.xml

Damit lässt sich doch arbeiten :slight_smile:

1 „Gefällt mir“

Sieht super aus.
Kannst du den Code hier reinstellen?

Kann ich am Wochenende machen. Vorher muss ich meinen NodeRed-Flow nochmal aufräumen. Sieht gerade sehr wüst aus :wink:

2 „Gefällt mir“