Neues Modul - 66_EPG.pm | TV Programm,Tabelle, FTUI (Anregung,Erweiterung,Tests)

Begonnen von HomeAuto_User, 03 November 2019, 12:45:08

Vorheriges Thema - Nächstes Thema

Prof. Dr. Peter Henning

Nicht ganz, da wirfst Du Namen und Inhalt durcheinander. Besser

Name: x_<sender> => Inhalt: Sendungstitel
Name: t_<sender> => Inhalt: Sendungszeit
Name: v_<sender> => Inhalt: Flag 1, wenn Eintrag noch gültig, 0, wenn Zeit abgelaufen

Allerdings ist das ein Problem mit den ewig vielen Readings, deren Update auch FHEMWEB ziemlich belastet.

Es sollte daher eine einfache Hilfsfunktion geben, mit der man sich das Gewünschte aus einem Datenhash beschaffen kann, z.B.

EPGGetData(<sender>) => liefert ein Array aus Sendungstitel, Zeit und Gültigkeitsflag zurück. Zusätzlich
EPGGetTitle(<sender>) => Sendungstitel
EPGGetTime(<sender>) = Sendungszeit
EPGGetValid(<sender>) => Gültigkeitsflag

Mit Hilfe dieser Funktionen könnte sich jeder ein userReading für die Anzeige zurechtbasteln.

LG

pah

HomeAuto_User

Hallo,

Zitat von: Prof. Dr. Peter Henning am 25 Dezember 2019, 14:15:28
Nicht ganz, da wirfst Du Namen und Inhalt durcheinander. Besser

Name: x_<sender> => Inhalt: Sendungstitel
Name: t_<sender> => Inhalt: Sendungszeit
Name: v_<sender> => Inhalt: Flag 1, wenn Eintrag noch gültig, 0, wenn Zeit abgelaufen

Allerdings ist das ein Problem mit den ewig vielen Readings, deren Update auch FHEMWEB ziemlich belastet.

Es sollte daher eine einfache Hilfsfunktion geben, mit der man sich das Gewünschte aus einem Datenhash beschaffen kann, z.B.

EPGGetData(<sender>) => liefert ein Array aus Sendungstitel, Zeit und Gültigkeitsflag zurück. Zusätzlich
EPGGetTitle(<sender>) => Sendungstitel
EPGGetTime(<sender>) = Sendungszeit
EPGGetValid(<sender>) => Gültigkeitsflag

Mit Hilfe dieser Funktionen könnte sich jeder ein userReading für die Anzeige zurechtbasteln.

LG

pah

ich denke deine Bedenken zu verstehen und das mit den REadings. Ich werde es mir mal ansehen und überlegen was machbar ist am günstigsten.

Die Funktionen von dir, sollten kein Problem sein. Es stellt sich mir nur die Frage ob du den Datenbestand darin besitzen möchtest aus dem Inhalt der Ansicht oder aus den kompletten EPG Datenbestand welchen man herunter läd?

Ich könnte die Funktionen,

EPGGetData(<sender>) => liefert ein Array aus Sendungstitel, Zeit und Gültigkeitsflag zurück. Zusätzlich
EPGGetTitle(<sender>) => Sendungstitel
EPGGetTime(<sender>) = Sendungszeit
EPGGetValid(<sender>) => Gültigkeitsflag


einbauen und vorerst mal als return ausgeben lassen um zu sehen wie das Ergebnis ist und ob es so deiner Vorstellung entspricht.

Gültigkeitsflag, du meinst damit ob die Sendung noch läuft oder vergangen ist?

EDIT:

ZitatWas nun schön wäre: Das erste Schrittchen hin zu FTUI https://wiki.fhem.de/wiki/FHEM_Tablet_UI - @pah erwähnte das ja auch schon.
Ist das nicht eine HTML Seite welche man sich selbst erstellt? Das ist so gedacht, das Ihr diese euch einrichtet weil das ist absolut individuell.
Bitte erläutert mir dies bitte nochmal.

Das einzige was ich korrigieren muss, ist das
In allen HTML-Dateien, die im Browser geladen werden und das typische HTML-Gerüst besitzen
um eine solche Struktur
<!DOCTYPE html>
<html>
    <head>...</head>
    <body>...</body>
</html>

zu erreichen.

MfG
"Developer" heißt nicht, das man alles wissen kann!
- FHEM v5.9 | Rasberry PI 3
- radino CC1101 433Mhz (SIGNALduino)| - radino CC1101 868Mhz (CUL) | nano 433Mhz (SIGNALduino) - Sensoren: purer Dschungel querbeet

Prof. Dr. Peter Henning

ZitatGültigkeitsflag, du meinst damit ob die Sendung noch läuft oder vergangen ist?
Ja. Dieses Datum ist eh vorhanden, um festzulegen "ausgegraut oder nicht".

Zur Anzeige im FTUI könnte man eine Variante des MediaList Widgets verwenden. Eine solche Variante habe ich auch für eine bessere Playlist meine BOSE-Systeme in Betrieb.

LG

pah

curt

Zitat von: HomeAuto_User am 25 Dezember 2019, 14:43:01
ZitatWas nun schön wäre: Das erste Schrittchen hin zu FTUI https://wiki.fhem.de/wiki/FHEM_Tablet_UI - @pah erwähnte das ja auch schon.
Ist das nicht eine HTML Seite welche man sich selbst erstellt? Das ist so gedacht, das Ihr diese euch einrichtet weil das ist absolut individuell.
Bitte erläutert mir dies bitte nochmal.

Alle anderen hören weg, ich erzähle das fachlich mit ganz falschen Begriffen - aber so, dass es jemand schnell versteht, der FHEM nutzt.

Du hast FHEM und nutzt die Standard-Oberfläche, gegebenenfalls durch alternatives CSS in schwarz mit grüner Schrift. Ist auch alles schick.

Aber Du hast eine Frau und einen Sohn.
Die hätten das gern auf den Tablet. Und noch ein altes Tablet an der Wohnzimmerwand. Und Sohnemann auf dem Handy. Im Gegenzug willst *DU* nicht, dass die Gattin falsch klickt und Updates anstößt, um nur ein Beispiel zu nennen.

FTUI ist der unartige Sohn von FHEM. Er weiß viel von Vati FHEM, spielt damit rum und macht alles anders. Sohnemann kann nichts, was Vati nicht schon lange weiß - Sohnemann malt aber alles anders. Kinder halt ...

Du malst jetzt bitte gedanklich Kacheln auf Dein Tablet: Lineal raus, mit Filzstift machen wir nun ein Schachbrettmuster. Also erstmal Kacheln, meist 1x1, aber auch mal 4x1 und unten rechts recht groß eine Kachel 3x3. Fertig?

Also in jede dieser Kacheln können irgendwelche Daten von FHEM rein, schön bunt, vielleicht auch als Kreis mit unterschiedlichen Farben. Oder ein Fieberthermometer für die Temperatur im Schafzimmer ...

Nun müssen die interessanten verschiedenen FHEM-Daten in verschiedene Kacheln - und dabei optisch halt anders umgesetzt werden, das Fieberthermometer zum Beispiel.

Das machen Widgets, FTUI hat das Widget-Prinzip (genau so wie Widgets bei Android). Es gibt zig Widgets, jedes einzelne steht für eine Gestaltungsart der Kachel, für eine Präsentationsart.

Allen gemein ist, dass sie die Datenquelle (das FHEM-Device) wissen müssen, das muss ich von Hand mit einem Editor da reinschreiben - übrigens ist wirklich alles HTML-Quellcode!

Egal welches Widget - nach dem Device muss ich noch das Reading sagen, was das Widget darstellen soll. Also zum Beispiel sage ich als 'data-device' "ws980wifi" und als 'data-get' das Reading "temperature".

Ein einzelnes Reading als reinen Text rausknallen ist kein Problem. Da schrauben wir am Hintergrund rum und an der Schriftfarbe und machen für SAT1 ein FilmFilm-Schleifchen drum.

Prinzip von FTUI verstanden?
Nun sag schon "ja!".

Bei Deinem Modul läuft es möglicherweise sogar auf ein neu zu entwickelndes Widget hinaus. Das hat (allgemeiner gedacht) damit zu tun, dass es ein wirklich gutes TabellenWidget nicht gibt, vielleicht nicht geben kann. Im Moment halten sich alle zurück: Es ist ja wenig sinnvoll, bei einem in Entwicklung befindlichen Modul den Sohn schon in Marsch zu setzen - währenddessen Vati nicht zum Spielplatz, sondern vielleicht zur Kneipe läuft ... verstehst?

Im Gegenzug bitte ich Dich um einen kleinen Gefallen:
Irgendwie habe ich einen Schuss überhört: Wieso haben die denn einzelne Sender mit der aktuellen Sendung in einzelnen Readings? Ich will sowas schönes aber auch! Was muss ich denn anschalten?

Das steht nicht in der commandref ... und da stehen recht viele neuere attr auch nicht drin ... ok: Das waren schon zwei Wünsche. ich weiß.

Einen schönen 2. Weihnachtsfeiertrag wünsche ich.

P.S: Beispiel
https://wiki.fhem.de/w/images/4/4a/EBUSD_FTUI.png
RPI 4 - Jeelink HomeMatic Z-Wave

Prof. Dr. Peter Henning

Das FTUI-Beispiel ist ein extrem schlechtes Beispiel: Vollkommen überladen mit Informationen, orientiert an Technik statt am Menschen...

LG

pah

HomeAuto_User

Hallo,
danke für die Erläuterung vom FTUI.
Das ist mir bewusster geworden und hast du auch gut rüber gebracht.

Letztendlich ging eine Frage unter, was kann ich ändern oder müsste ich ergänzen damit ihr es nutzen könnt im FTUI oder war es gemeint auf eine Vorlage für FTUI? Das sind 2 paar Schuhe.

Ps: Informationen in Readings geht mit dem Attribut Ch_Info_Reading. Das dort der Readingname ggf umgestaltet werden kann / muss haben wir ja schon in Diskussion


Gesendet von iPhone mit Tapatalk Pro
"Developer" heißt nicht, das man alles wissen kann!
- FHEM v5.9 | Rasberry PI 3
- radino CC1101 433Mhz (SIGNALduino)| - radino CC1101 868Mhz (CUL) | nano 433Mhz (SIGNALduino) - Sensoren: purer Dschungel querbeet

the ratman

wieso lässt du die readingsnamen und -werte nicht wirklich per attr bestimmen - eine sehr schöne noob-freundliche lösung hat da z.b. die FB_CALLLIST mit "visible-columns" - die macht das dann sogar mit java-script (is zwar ned nötig, schaut aber super aus *g*)
→do↑p!dnʇs↓shit←

rischbiter123

Moin,
diese Fehlermeldung bekomme ich seit dem letzten Update, wenn ich epg_today aufrufe:
decode_json fehlgeschlagen, bitte benutze verbose 5 um mehr zu erkennen

und hier der Logeintrag:
2019.12.26 12:34:12 3: TVInfo: nonBlock_loadEPG_v1Done decode_json failed: illegal backslash escape sequence in string, at character offset 412485 (before "\\ (2016)","title":"...") at ./FHEM/66_EPG.pm line 1522.
Die Daten werden sauber heruntergeladen.

epg_now und _Prime funktionieren.

LG

Andreas
4*Raspi, Max Thermostate und Fensterkontakte, FB7590, Mysensors und NanoCUL, IT und Sonoff, zigbee2mqtt2

HomeAuto_User

Hallo Andreas,
da steht mit Sicherheit ein unerlaubtes Zeichen im Titel was ich falsch oder nicht anpasse. Wenn du dies mal bitte mit verbose 5 laufen lassen könntest und als File angähnst so sehen wir es.

Wenn der Titel der Sendung sich ändern, geht es wieder ;)

Der Fehler resultiert, da ich nicht alle Sonderzeichen behandeln bzw. entferne weil ich diese erschlagen wollte.

Mfg


Gesendet von iPhone mit Tapatalk Pro
"Developer" heißt nicht, das man alles wissen kann!
- FHEM v5.9 | Rasberry PI 3
- radino CC1101 433Mhz (SIGNALduino)| - radino CC1101 868Mhz (CUL) | nano 433Mhz (SIGNALduino) - Sensoren: purer Dschungel querbeet

rischbiter123

Moin,

im Anhang das Logfile mir Verbose 5 vom EPG-Aufruf.
Wenn es wirklich nur an einer Sendung liegt, wird es ja morgen wieder funktionieren.

LG

Andreas
4*Raspi, Max Thermostate und Fensterkontakte, FB7590, Mysensors und NanoCUL, IT und Sonoff, zigbee2mqtt2

HomeAuto_User

Hallo Andreas,

Zitat von: rischbiter123 am 26 Dezember 2019, 14:17:41
Moin,

im Anhang das Logfile mir Verbose 5 vom EPG-Aufruf.
Wenn es wirklich nur an einer Sendung liegt, wird es ja morgen wieder funktionieren.

LG

Andreas

ich konnte den Fehler nachvollziehen wieso es stockte. Sollte es wieder mal auftreten, so kannst du ins Logfile schauen und den FEhler melden ohne nochmal mit Verbose 5 alles durchlaufen zu lassen.

@all
1) FTUI, die Frage ist noch offen was ich anpassen muss ohne Euch eine komplette Webseite zu erstellen ;-)
2) Readingsnahmen ich sehe mir es man um ggf diese selbst anzupassen.

"Developer" heißt nicht, das man alles wissen kann!
- FHEM v5.9 | Rasberry PI 3
- radino CC1101 433Mhz (SIGNALduino)| - radino CC1101 868Mhz (CUL) | nano 433Mhz (SIGNALduino) - Sensoren: purer Dschungel querbeet

Prof. Dr. Peter Henning

Die FTUI-Seite muss mit einem Widget bedient werden, das ist unabhängig vom Modul. Wichtig wäre, die anzuzeigende Tabelle im JSON-Format zur Verfügung zu haben - dann ließe sich eine Variante des MediaList-Widgets zur Anzeige und Auswahl verwenden. Das Modul 98_MediaList.pm stellt auch nur JSON zur Verfügung, das dann im Widget verarbeitet wird.

Beispiel für das Reading playlist in einer Instanz dieses Moduls:
Zitat[{"Time":"280","Title":"To France","File":"/home/music/Mike Oldfield/(Disc 2) 06 - To France.mp3","Cover":"https://is5-ssl.mzstatic.com/image/thumb/Music128/v4/26/c7/1b/26c71b42-4314-5832-2f07-dccdb83c0f3b/source/100x100bb.jpg","Album":"Two Sides: The Very Best Of Mike Oldfield","Artist":"Mike Oldfield"},{"Artist":"Mike Oldfield","Album":"The Mike Oldfield Collection","Cover":"https://is5-ssl.mzstatic.com/image/thumb/Music128/v4/26/c7/1b/26c71b42-4314-5832-2f07-dccdb83c0f3b/source/100x100bb.jpg","File":"/home/music/Mike Oldfield/(Disc 2) 08 - Five Miles Out.mp3","Title":"Five Miles Out","Time":"257"},{"Cover":"https://is5-ssl.mzstatic.com/image/thumb/Music128/v4/26/c7/1b/26c71b42-4314-5832-2f07-dccdb83c0f3b/source/100x100bb.jpg","Artist":"Mike Oldfield","Album":"The Mike Oldfield Collection","Time":"188","Title":"Shadow On The Wall","File":"/home/music/Mike Oldfield/(Disc 2) 12 - Shadow On The Wall.mp3"},{"File":"/home/music/Mike Oldfield/01 - Sailing.mp3","Title":"Sailing","Time":"286","Album":"Man On The Rocks","Artist":"Mike Oldfield","Cover":"https://is5-ssl.mzstatic.com/image/thumb/Music128/v4/26/c7/1b/26c71b42-4314-5832-2f07-dccdb83c0f3b/source/100x100bb.jpg"},{"Cover":"https://is5-ssl.mzstatic.com/image/thumb/Music128/v4/26/c7/1b/26c71b42-4314-5832-2f07-dccdb83c0f3b/source/100x100bb.jpg","Album":"Essential Music Hits Vol 2","Artist":"Mike Oldfield","File":"/home/music/Mike Oldfield/03 - In Dulci Jubilo.mp3","Title":"In Dulci Jubilo","Time":"172"},{"File":"/home/music/Mike Oldfield/04 - Arrival.mp3","Title":"Arrival","Time":"168","Cover":"https://is5-ssl.mzstatic.com/image/thumb/Music128/v4/26/c7/1b/26c71b42-4314-5832-2f07-dccdb83c0f3b/source/100x100bb.jpg","Artist":"Mike Oldfield","Album":"QE2"},{"Cover":"https://is5-ssl.mzstatic.com/image/thumb/Music128/v4/26/c7/1b/26c71b42-4314-5832-2f07-dccdb83c0f3b/source/100x100bb.jpg","Artist":"Mike Oldfield","Album":"Cuarto Milenio - Deluxe","File":"/home/music/Mike Oldfield/09 - Tubular Bells.mp3","Title":"Tubular Bells","Time":"255"},{"Album":"Crises","Artist":"Mike Oldfield","Cover":"https://is5-ssl.mzstatic.com/image/thumb/Music128/v4/26/c7/1b/26c71b42-4314-5832-2f07-dccdb83c0f3b/source/100x100bb.jpg","File":"/home/music/Mike Oldfield/12 - Moonlight Shadow (12_ Single_ 2013 Remaster).mp3","Time":"316","Title":"Moonlight Shadow"},{"File":"/home/music/Mike Oldfield/17 - The Sailor's Hornpipe.mp3","Time":"105","Title":"The Sailor's Hornpipe","Cover":"https://is5-ssl.mzstatic.com/image/thumb/Music128/v4/26/c7/1b/26c71b42-4314-5832-2f07-dccdb83c0f3b/source/100x100bb.jpg","Artist":"Mike Oldfield","Album":"Tubular Bells 2003"}]


LG

pah

HomeAuto_User

Hallo pah,

Zitat von: Prof. Dr. Peter Henning am 27 Dezember 2019, 16:24:54
Wichtig wäre, die anzuzeigende Tabelle im JSON-Format zur Verfügung zu haben

Ich könnte eine Variable definieren Bsp: JSON_Output mit den Daten, würde es so reichen? Diese würde dann bei klick oder bei betreten des Raumes gefüllt werden.

EDIT:

@pah, schau mal ob du schon so an die Variable $json_HTML herankommst oder alternativ $HTML (dort wurde schon decode_json durchgeführt).
Diese beinhalten die Daten eigendlich schon.
"Developer" heißt nicht, das man alles wissen kann!
- FHEM v5.9 | Rasberry PI 3
- radino CC1101 433Mhz (SIGNALduino)| - radino CC1101 868Mhz (CUL) | nano 433Mhz (SIGNALduino) - Sensoren: purer Dschungel querbeet

JensS

Hallo HomeAuto_User,

vielen Dank für die Veröffentlichung deines Moduls! Es ist dir gut gelungen und funktioniert bestens. Das bringt mich zu meinem anfänglichen Erweiterungsvorschlag:
https://forum.fhem.de/index.php/topic,105015.msg993419.html#msg993419

Gruß Jens
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

HomeAuto_User

Hallo,
ich wünsche Euch allen ein Gesundes neues Jahr 2020.

Den Wunsch, ein Kommando auszuführen beim Klick auf den Sender bin ich nachgegangen und habe es ergänzt.
Bitte macht ein Update und testet. Wie dies umgesetzt wird, ist einfach aus der Commandref zu entnehmen.

update all https://raw.githubusercontent.com/fhem/EPG/pre-release/controls_EPG.txt

Gern möchte ich mich eurer FTUI noch widmen bzw. die Hilfestellung dafür aufbringen.

@pah, schau mal ob du schon so an die Variable $json_HTML herankommst oder alternativ $HTML (dort wurde schon decode_json durchgeführt).
Diese beinhalten die Daten eigendlich schon.

oder benötigtst du dafür diese?

EPGGetData(<sender>) => liefert ein Array aus Sendungstitel, Zeit und Gültigkeitsflag zurück. Zusätzlich
EPGGetTitle(<sender>) => Sendungstitel
EPGGetTime(<sender>) = Sendungszeit
EPGGetValid(<sender>) => Gültigkeitsflag


"Developer" heißt nicht, das man alles wissen kann!
- FHEM v5.9 | Rasberry PI 3
- radino CC1101 433Mhz (SIGNALduino)| - radino CC1101 868Mhz (CUL) | nano 433Mhz (SIGNALduino) - Sensoren: purer Dschungel querbeet