NEWS
XML verarbeiten für EPG
-
@david-g in Blockly lässt sich das nur mühselig umsetzen. Das Json enthält alle Daten, mit dem Inventwo json widget kann man aber schön sortieren. damit das abspeichern mit setState() funktioniert musst du natürlich noch einen DP 0_userdata.0.TV.epg erstellen. Der Filter filtert dann aus diesen Daten nach den voreingestellten beiden Kriterien. Es wird auch noch eine json-Datei geschrieben, das kannst du auskommentieren. Als Daten sind in der json nur Sender, Titel, Start und Stop verfügbar, das kann man natürlich noch erweitern, sollte eher als Anregung zum Erweitern dienen
-
Beim erweitern muss ich mal schauen ^^.
Eine Tabelle Brauche ich garnicht unbedingt.
Nutze kein VIS.
Hab meine Visu in Lovelace.
Das reine aktuelle Programm reicht eigentlich schon. Start und Ende waren nice to have.Könnte folgendes klappen?
Das Skript als Funktion in Blockly einfügen und dann den Sender und Zeit aus einer Variablen holen die vorher in Blockly gesetzt werden.
Dann das gewünschte Ergebnisse in eine (bzw 2-3) Variablen schreiben.So baue ich es ein:
EDIT
Muss ich in der Javascript Instanz noch Module hinzufügen? -
@david-g ja, xml2js in der Instanz eintragen. Als JSFunktion geht natürlich, ich schau mal für morgen, viel Änderung ist da nicht notwendig, wenn überhaupt
-
Sehr cool, danke.
Wenn da was in Blockly geht (mit Funktion) bekomme ich bestimmt mein Skript 2 Posts weiter oben angepasst. -
@david-g ich denke schon dass das leicht geht, hier als Blockly
-
Vielen Dank.
Hab es importiert und die Zeile zur xml angepasst.
Im Log erscheint jetzt
07:00:24.068 info javascript.0 (27980) script.js.Eigene_Scripte.VIS.Status_TV: registered 0 subscriptions and 1 schedule 07:00:24.383 info javascript.0 (27980) script.js.Eigene_Scripte.VIS.Status_TV: null 07:00:24.384 info javascript.0 (27980) script.js.Eigene_Scripte.VIS.Status_TV: null 07:00:24.384 info javascript.0 (27980) script.js.Eigene_Scripte.VIS.Status_TV: null
Hat er ein Problem mit der großen xml?
Abarbeiten tut er es. Dauert so 2-3 sek bis er den Log ausgibt.
Komisch finde ich auch, dass er nur 3 Zeilen debug ausgibt, obwohl es 4 Bausteine gibt. -
@david-g du hast die Datei verändert, das solltest du immer erst dann tun wenn das gepostete Beispiel läuft!
An den Daten liegt es nicht, jedoch dauert es hier ca. 10s bis die Daten eingelesen und aufbereitet sind. Das Filtern selbst dauert nur wenige ms.javascript.1 2022-04-20 14:30:00.027 info script.js.Forum.epgOrg: ARD javascript.1 2022-04-20 14:30:00.027 info script.js.Forum.epgOrg: Wed Apr 20 2022 15:00:00 GMT+0200 (Mitteleuropäische Sommerzeit) javascript.1 2022-04-20 14:30:00.026 info script.js.Forum.epgOrg: Wed Apr 20 2022 14:10:00 GMT+0200 (Mitteleuropäische Sommerzeit) javascript.1 2022-04-20 14:30:00.026 info script.js.Forum.epgOrg: Rote Rosen
-
Hm,
komische Angelegenheit.
Hab jetzt EXAKT dein Blockly genommen. Sogar den Speicherpfad erstellt.Die kleine xml mit den 2 Sendern klappt.
Bei der großen (aus der PN) kommt:17:04:43.404 info javascript.0 (27980) script.js.Eigene_Scripte.VIS.tv2: Kein laufendes Programm gefunden! 17:04:43.404 info javascript.0 (27980) script.js.Eigene_Scripte.VIS.tv2: null 17:04:43.404 info javascript.0 (27980) script.js.Eigene_Scripte.VIS.tv2: null 17:04:43.404 info javascript.0 (27980) script.js.Eigene_Scripte.VIS.tv2: null
Verschiedene Sender und Zeiten getestet.
EDIT:
Da habe ich uns ja eine gemeine Falle gestellt........
Du hast Sie scheinbar gesehen^^.
Die eine Datei ist aus ´21 die andere jetzt aktuell ......Vielen Dank für deine Hilfe.
Ist ziemlich cool geworden und habe es auch schon integriert.
Jetzt stelle Ich Irgendwann mal meine EPG Tabelle auf die Daten um ^^. -
@david-g schön dass es jetzt klappt
Aber sag mal, braucht es wirklich nur 2-3 sec bis die Antwort kommt? Noch eine Frage, wie oft läuft dein Schedule, alle Minuten oder wie oft oder ist der Trigger ein Sender-Button in deiner VIS? Sobald ich das weiss kann ich später noch ein kleines Update posten
- Generieren der Daten nur zum Programmstart oder wenn zusätzlicher Parameter auf true
- Der Filter benötigt dann nur wenige ms und das Ergebnis ist sofort sichtbar
- Neue Daten können dann per Zeitplan einmal am Tag gelesen und aufbereitet werden
- Wie erhälst du neue Daten zur Zeit, automatisiert?
- Generieren der Daten nur zum Programmstart oder wenn zusätzlicher Parameter auf true
-
Jetzt eines klappt braucht er was länger.
Hab mal einen debug am Start gesetzt.2022-04-20 19:07:25.070 error script.js.Eigene_Scripte.Multimedia.Tv.Fernbedienung: ARD javascript.0 2022-04-20 19:07:25.070 error script.js.Eigene_Scripte.Multimedia.Tv.Fernbedienung: Wed Apr 20 2022 19:45:00 GMT+0200 (Mitteleuropäische Sommerzeit) javascript.0 2022-04-20 19:07:25.070 error script.js.Eigene_Scripte.Multimedia.Tv.Fernbedienung: Wed Apr 20 2022 18:50:00 GMT+0200 (Mitteleuropäische Sommerzeit) javascript.0 2022-04-20 19:07:25.069 error script.js.Eigene_Scripte.Multimedia.Tv.Fernbedienung: Hubert ohne Staller javascript.0 2022-04-20 19:07:18.969 error script.js.Eigene_Scripte.Multimedia.Tv.Fernbedienung: Start
Ungefähr 7sek auf einem Raspberry 4.
Im Moment lade ich einmal pro Tag um 3 per wget die xml runter. So oft muss aber eigentlich nicht sein. Sind ja mehrere Tage drinnen.
Ausgeführt wird das Skript im Moment nur, wenn ich den Sender am TV umschalte. Der TV gibt mir aicu den entsprechenden Sender. Muss das nur noch mappen, weil die schreibweisen was unterschiedlich sind.
So ist es in der vis natürlich nur in dem Moment wo ich umschalte aktuell.
Mal sehen, ob ich das dann noch alle 5sek laufen lasse.EDIT:
Mir ist grad noch eine Idee für den Trigger gekommen.
Werde vermutlich noch einen cron erstellen, der nach der Endzeit der Sendung +1min oder so das Script nochmal startet.
Hab ich zwar noch nie gemacht, aber ist bestimmt machbarEDIT 2:
Hab jetzt noch einen Trigger der am Ende einer Sendung den Text für die Vis aktualisiert.
EDIT 3:
Hab mir die js Funktion grad mal angeschaut und versucht das Bild der Sendung zu holen.
Leider kapiere ich das ganze (-d{2}) Zeug nicht. Hatte jetzt überall wo zb die Startzeit alles abgeändert übernommen.
Das aktuelle Senderlogo geht vermutlich nicht, da es ja in einem anderen "Bereich" steht?