Hallo zusammen,
Ich möchte gerne per Rule die Lottozahlen 6 aus 49 automatisch einlesen und vergleichen. Hat jemand eine Idee, wo und wie ich an diese Zahlen komme?
Beste Grüße
Jürgen
Gesendet von iPhone mit Tapatalk
Auslesen der Lottozahlen
-
- Beiträge: 373
- Registriert: 30. Apr 2021 13:13
Re: Auslesen der Lottozahlen
Moin,
z.B. mit dem http-Binding und dieser Seite von Lotto -> https://services.lotto-hessen.de/spielinformationen/
Gerade was grob zusammengeklickt
Lotto6aus49_Aktuell ergibt
z.B. mit dem http-Binding und dieser Seite von Lotto -> https://services.lotto-hessen.de/spielinformationen/
Gerade was grob zusammengeklickt
Code: Alles auswählen
UID: http:url:Lotto6aus49
label: Lotto6aus49
thingTypeUID: http:url
configuration:
authMode: BASIC
ignoreSSLErrors: false
baseURL: https://services.lotto-hessen.de/spielinformationen/gewinnzahlen/lotto
delay: 0
stateMethod: GET
refresh: 60
commandMethod: GET
contentType: application/json
timeout: 5000
bufferSize: 2048
channels:
- id: Lotto6aus49_Aktuell
channelTypeUID: http:string
label: Lotto6aus49_Aktuell
description: ""
configuration:
mode: READONLY
- id: Lotto6aus49_Ziehung
channelTypeUID: http:string
label: Lotto6aus49_Ziehung
description: ""
configuration:
stateTransformation: JSONPATH:$.Ziehung
- id: Lotto6aus49_Zahl1
channelTypeUID: http:number
label: Lotto6aus49_Zahl1
description: ""
configuration:
stateTransformation: JSONPATH:$.Zahl[0]
Code: Alles auswählen
{"Datum":"10.01.2024","Ziehung":"Mittwoch","Superzahl":9,"Zahl":[37,3,7,24,21,49]}
Zuletzt geändert von Harka am 12. Jan 2024 05:02, insgesamt 1-mal geändert.
- udo1toni
- Beiträge: 14415
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Auslesen der Lottozahlen
Unter lotto.de kann man die Zahlen abrufen, genau wie auf vielen anderen Seiten. Die größte Herausforderung besteht naturgemäß darin, die Nutzdaten vom Müll zu trennen.
Bei lotto.de werden alle Daten auf der Seite als eingebettetes JSON bereitgestellt (extrem effizient, gerade wenn man per Smartphone zugreift... nicht)
Mein Ansatz wäre, das per externem Script zu erledigen, einfach weil das json so umfangreich ist, dass es nicht als Status gehalten werden kann (die ausgelieferte Seite hat knapp 456 kByte, nach dem Entfernen des umgebenden html-Codes bleiben noch 421 kByte übrig.)
Im json ist der interessante Teil der im Knoten props.pageProps.winningNumbersData
In diesem Knoten gibt es (aktuell) 7 Unterknoten, von denen einer (momentan der vierte...) zwei Unterknoten enthält, die die aktuellen Ziehungsdaten von 4 aus 49 enthalten, und zwar Mittwoch und Samstag. Unterscheidbar, welcher Knoten welcher ist, sind sie anhand des Unterknotens gameType, welcher wiederum den Wert name enthält (eben 'LOTTO 6aus49 Samstag' oder 'LOTTO 6aus49 Mittwoch')
Ich habe keine Ahnung, ob das so zulässig wäre, aber die 6 Ziehungszahlen von der Samstagsziehung bekäme man dann so:
und die Superzahl so
Das erste Problem dabei: die '4' ist durchaus ein veränderlicher Wert, und ich habe keine Möglichkeit gefunden, diesen Wert über eine Suche (wie im zweiten Teil über gameType.name) herauszufinden.
Das zweite Problem: in openHAB selbst klappt der Zugriff so überhaupt nicht, weil die Datei einfach zu groß ist.
Die Zahlen werden auch im html-Code direkt ausgeliefert, dort ist der Zugriff aber suboptimal, weil es sich nur um lauter div-Attribute handelt, man hat keinen festen Bezugspunkt, an dem man die Daten ausschneiden könnte.
Bleibt also ein externes Script, z.B. mittels Python, welches die Daten direkt von der Quelle zieht und mundgerecht zurechtstutzt.
Vielleicht gibt es aber noch andere Seiten, auf denen die gesuchten Daten bereitgestellt werden (und wo sie leichter zu grabben sind...)
Bei lotto.de werden alle Daten auf der Seite als eingebettetes JSON bereitgestellt (extrem effizient, gerade wenn man per Smartphone zugreift... nicht)
Mein Ansatz wäre, das per externem Script zu erledigen, einfach weil das json so umfangreich ist, dass es nicht als Status gehalten werden kann (die ausgelieferte Seite hat knapp 456 kByte, nach dem Entfernen des umgebenden html-Codes bleiben noch 421 kByte übrig.)
Im json ist der interessante Teil der im Knoten props.pageProps.winningNumbersData
In diesem Knoten gibt es (aktuell) 7 Unterknoten, von denen einer (momentan der vierte...) zwei Unterknoten enthält, die die aktuellen Ziehungsdaten von 4 aus 49 enthalten, und zwar Mittwoch und Samstag. Unterscheidbar, welcher Knoten welcher ist, sind sie anhand des Unterknotens gameType, welcher wiederum den Wert name enthält (eben 'LOTTO 6aus49 Samstag' oder 'LOTTO 6aus49 Mittwoch')
Ich habe keine Ahnung, ob das so zulässig wäre, aber die 6 Ziehungszahlen von der Samstagsziehung bekäme man dann so:
Code: Alles auswählen
$.props.pageProps.winningNumbersData['4'][?(@.gameType.name=='LOTTO 6aus49 Samstag')].drawNumbersCollection[*].drawNumber
Code: Alles auswählen
$.props.pageProps.winningNumbersData['4'][?(@.gameType.name=='LOTTO 6aus49 Samstag')].superNumber
Das zweite Problem: in openHAB selbst klappt der Zugriff so überhaupt nicht, weil die Datei einfach zu groß ist.
Die Zahlen werden auch im html-Code direkt ausgeliefert, dort ist der Zugriff aber suboptimal, weil es sich nur um lauter div-Attribute handelt, man hat keinen festen Bezugspunkt, an dem man die Daten ausschneiden könnte.
Bleibt also ein externes Script, z.B. mittels Python, welches die Daten direkt von der Quelle zieht und mundgerecht zurechtstutzt.
Vielleicht gibt es aber noch andere Seiten, auf denen die gesuchten Daten bereitgestellt werden (und wo sie leichter zu grabben sind...)
openHAB4.2.0 stable in einem Debian-Container (bookworm) (Proxmox 8.2.4, LXC), mit openHABian eingerichtet
- udo1toni
- Beiträge: 14415
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Auslesen der Lottozahlen
Hatte gar nicht mitbekommen, dass inzwischen schon jemand anderes eine viel einfachere Lösung (also Quelle) gefunden hat...
Umso besser
Umso besser
openHAB4.2.0 stable in einem Debian-Container (bookworm) (Proxmox 8.2.4, LXC), mit openHABian eingerichtet
-
- Beiträge: 39
- Registriert: 18. Nov 2017 20:44
Re: Auslesen der Lottozahlen
Vielen Dank für die Antworten.
Ich werde mir die Lösung in Ruhe anschauen, versuchen zu verstehen und dann einbauen und testen
Ich werde mir die Lösung in Ruhe anschauen, versuchen zu verstehen und dann einbauen und testen