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

OdfFhem

@HomeAuto_User

Seit einiger Zeit lese ich hier schon mit und heute habe ich mir auch ein EPG-Device angelegt.

Die Einrichtung lief eigentlich problemlos; einzig der im Einleitungsbeitrag nicht genannte Punkt

  5) get TVinfo loadEPG_now   oder   get TVinfo loadEPG_today   oder   ...

musste noch "erarbeitet" werden.


Schon mal herzlichen Dank für das bislang Geleistete.


Nichts ist erfahrungsgemäß aber so perfekt, dass sich nicht doch noch Änderungswünsche ergeben:


  • Was mich auf Anhieb stört, ist die Anzeige der bereits abgelaufenen Sendungen in der Detailansicht (today). Dadurch wird und bleibt die Ansicht doch recht schnell unübersichtlich. Wäre es möglich, diese Sendungen (via Attribut; evtl. sogar standardmäßig) zu unterdrücken?


  • Aktiviert man EPG_auto_update, werden bereits abgelaufene Sendungen in der Detailansicht (today) nicht mehr ausgegraut ... Fehler oder hat das einen besonderen Grund?


  • Schön wäre natürlich, wenn sich die EPG-Ansicht (insbesondere bei today) beim Ablauf einer Sendung automatisch neu darstellt (mit den bereits geladenen Daten) ... möglich?


  • Das Ergebnis von "get TVinfo 20200105_2000" hat mich verwirrt. Statt der einen Sendung je Sender, die um 20:00 läuft, hätte ich alle Sendungen, die im Bereich 20:00 - 20:59 laufen, erwartet.


  • Nützlich wäre natürlich noch eine Möglichkeit, alle Sendungen in einem von/bis-Bereich darzustellen (z.B. 18:00-22:00) ...

JensS

Hallo HomeAuto_User,

genial!!!  :)
Ch_Commands funktioniert bestens.
DANKE!

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.

the ratman

hab mich wieder ein wenig gespielt ...

da ich ja keine 2 epgs (at und de) "verbinden" kann, dacht ich mir, ich bau mir ne readingsgroup.

bsp. def:epg_de:<>,<>,?!aktuell,?!haupt,state
<hr>
epg_de:<01>,<tagesschau24>,x_tagesschau24.*
epg_de:<02>,<Das&nbsp;Erste>,.*Erste.*
epg_de:<03>,<One>,x_One.*
epg_de:<04>,<ZDF>,x_ZDF_.*
epg_de:<05>,<ZDFneo>,x_ZDFneo.*
epg_de:<06>,<ZDFinfokanal>,x_ZDFinfokanal.*
epg_de:<07>,<SWR&nbsp;Fernsehen&nbsp;BW>,x_SWR.Fernsehen.*
epg_at:<08>,<ORF&nbsp;1>,x_ORF.eins.*
epg_at:<09>,<ORF&nbsp;2>,x_ORF.2.*
epg_at:<10>,<ORF&nbsp;3>,x_ORF.III.*
epg_de:<11>,<3sat>,x_3sat.*
epg_de:<12>,<ARTE>,x_ARTE.*
epg_de:<13>,<ServusTV>,x_ServusTV.*
epg_at:<14>,<ATV>,x_ATV_.*
epg_at:<15>,<ATV&nbsp;2>,x_ATV2.*
epg_at:<16>,<PULS&nbsp;4>,x_PULS.4.*
epg_de:<17>,<ard-alpha>,x_ard-alpha.*
epg_de:<18>,<Super&nbsp;RTL>,x_Super.RTL.*
epg_de:<19>,<RTL>,x_RTL_.*
epg_de:<20>,<RTL&nbsp;II>,x_RTL.II.*
epg_de:<21>,<RTL&nbsp;Nitro>,x_RTL.Nitro.*
epg_de:<22>,<Sat&nbsp;1>,x_Sat.1.*
epg_de:<23>,<Sat1&nbsp;Gold>,x_Sat1.Gold.*
epg_de:<24>,<ProSieben>,x_ProSieben_.*
epg_de:<25>,<ProSieben&nbsp;Maxx>,x_ProSieben.Maxx.*
epg_de:<26>,<kabel&nbsp;eins>,x_kabel.eins.*
epg_de:<27>,<VOX>,x_VOX.*
epg_de:<28>,<Tele&nbsp;5>,x_Tele.5.*
epg_de:<29>,<DMAX>,x_DMAX.*

und noch die dazugehörigen commands:{
'aktuell' => 'get epg_de loadEPG_now; get epg_at loadEPG_now; ',
'haupt' => 'get epg_de loadEPG_Prime; get epg_at loadEPG_Prime; '
}


das updaten funzt mit den get-befehlen, der state wird upgedatet, aber der rest der readingsgroup wird nicht upgedatet - ideen?

btw - die readings, wie sie derzeit sind, sind für rg's nicht wirklich geeignet. keine ahung, wie ich da anfangs- und endzeit rausfiltern sollte. das übersteigt mein können eindeutig und durch die öfters gleichen anfangsnamen der sender wird sogar ein ".*" zur herausforderung..
und schade ist natürlich, dass ich nicht auch gleich den ch_sort für meien rg verwenden kann ... zumindest weiß ich ned wie.
→do↑p!dnʇs↓shit←

mumpitzstuff

https://wiki.fhem.de/wiki/TV_Programm

In dem Script gibt es eine tvMerge() Funktion und eine tvDownloadMerge() Funktion, die deren Verwendung demonstriert. Damit könntest du dir eine Datei generieren und verwenden, falls das Modul auch mit lokalen Dateien umgehen kann.

the ratman

sicher ne lässige sache, aber ich denke, das hier zu entwickelnde epg-modul wird das irgendwann auch alleine hinbekommen *g*. bzw. könnte das ja vielleicht eingebaut werden?
mal abwarten ...
→do↑p!dnʇs↓shit←

OdfFhem

@HomeAuto_User

Mir ist noch aufgefallen, dass Langtext zu Sendungen genau dann fehlt, wenn es eigentlich besonders interessant wäre.

Beispielsweise sind heute u.a. folgende Sendungen betroffen, obwohl ein Langtext vorhanden ist:

ZDF 18:00 18:54 SOKO Wismar
ZDF 19:25 20:15 Heldt
ZDF 20:15 21:45 Das Mädchen am Strand




Da das Thema FTUI ja noch mehr oder weniger vollkommen offen ist, habe ich mich mal ein wenig mit einer möglichen FTUI-Umsetzung beschäftigt und ein Test-Widget erstellt.

Zu diesem Zweck habe ich mir manuell folgende JSON-Datenquelle gebastelt:

{"epg":[{ "id":"ARD.de",
          "name":"Das Erste",
          "programme":[{ "start":"2020-01-08T17:00:00", "end":"2020-01-08T17:15:00", "title":"Tagesschau", "description":"Detailinfo zu #Tagesschau#" },
                       { "start":"2020-01-08T17:15:00", "end":"2020-01-08T18:00:00", "title":"Brisant", "description":"Detailinfo zu #Brisant#" },
                       { "start":"2020-01-08T18:00:00", "end":"2020-01-08T18:50:00", "title":"Wer weiss denn sowas?", "description":"Detailinfo zu #Wer weiss denn sowas?#" },
                       { "start":"2020-01-08T18:50:00", "end":"2020-01-08T19:45:00", "title":"Rentnercops", "description":"Detailinfo zu #Rentnercops#" },
                       { "start":"2020-01-08T19:45:00", "end":"2020-01-08T19:50:00", "title":"Wissen vor acht - Werkstatt","description": "Detailinfo zu #Wissen vor acht - Werkstatt#" },
                       { "start":"2020-01-08T19:50:00", "end":"2020-01-08T19:55:00", "title":"Wetter vor acht", "description":"Detailinfo zu #Wetter vor acht#" },
                       { "start":"2020-01-08T19:55:00", "end":"2020-01-08T20:00:00", "title":"Börse vor acht", "description":"Detailinfo zu #Börse vor acht#" },
                       { "start":"2020-01-08T20:00:00", "end":"2020-01-08T20:15:00", "title":"Tagesschau", "description":"Detailinfo zu #Tagesschau#" },
                       { "start":"2020-01-08T20:15:00", "end":"2020-01-08T21:40:00", "title":"Alte Bande", "description":"Detailinfo zu #Alte Bande#" },
                       { "start":"2020-01-08T21:40:00", "end":"2020-01-08T22:15:00", "title":"Plusminus", "description":"Detailinfo zu #Plusminus#" }
                      ]},
        { "id":"ZDF.de",
          "name":"ZDF",
          "programme":[{ "start":"2020-01-08T17:00:00", "end":"2020-01-08T17:10:00", "title":"heute", "description":"Die Nachrichtensendung des Zweiten Deutschen Fernsehens versorgt die Zuschauer mit aktuellen Meldungen des Tages aus den Bereichen Politik Wirtschaft Kultur Gesellschaft Sport und Wetter und dass seit dem 1. April 1963. Seit 1971 moderieren auch Frauen die Sendung deren inoffizielles Credo lautet #Auf unterhaltsame Weise schon vor der Tagesschau informiert#" },
                       { "start":"2020-01-08T17:10:00", "end":"2020-01-08T17:45:00", "title":"hallo deutschland", "description":"Das Boulevard- und Schlagzeilenmagazin berichtet unterhaltsam und informativ über Menschen und ihre Geschichten in den Bundesländern und über das Leben von Prominenten in Deutschland" },
                       { "start":"2020-01-08T17:45:00", "end":"2020-01-08T18:00:00", "title":"Leute heute", "description":"Im Mittelpunkt des Boulevardmagazins steht die Berichterstattung über Prominente. Ausserdem gibt es Informationen aus den Bereichen Entertainment Mode und Lifestyle" },
                       { "start":"2020-01-08T18:00:00", "end":"2020-01-08T18:54:00", "title":"SOKO Wismar", "description":"Die Krimi-Serie dreht sich um den Arbeitsalltag auf dem kleinen Polizeirevier von Wismar wo die kleinen und grossen Delikte in der Ostseestadt und der näheren Umgebung untersucht werden. Leiter der Sonderkommission ist der Kriminalhauptkommissar Jan Reuter der die Fälle gemeinsam mit seinem engagierten Team untersucht und aufklärt." },
                       { "start":"2020-01-08T18:54:00", "end":"2020-01-08T19:00:00", "title":"Lotto am Mittwoch - Die Gewinnzahlen", "description":"Seit dem 28. April 1982 werden im ZDF auch mittwochs die Gewinnzahlen bekannt gegeben. Waren es anfänglich noch #7 aus 38# kommt seit 1986 das klassische #6 aus 49#-Prinzip zur Anwendung" },
                       { "start":"2020-01-08T19:00:00", "end":"2020-01-08T19:20:00", "title":"heute", "description":"Die Nachrichtensendung des Zweiten Deutschen Fernsehens versorgt die Zuschauer mit aktuellen Meldungen des Tages aus den Bereichen Politik Wirtschaft Kultur Gesellschaft Sport und Wetter und dass seit dem 1. April 1963. Seit 1971 moderieren auch Frauen die Sendung deren inoffizielles Credo lautet #Auf unterhaltsame Weise schon vor der Tagesschau informiert#" },
                       { "start":"2020-01-08T19:20:00", "end":"2020-01-08T19:25:00", "title":"Wetter", "description":"Detailinfo zu #Wetter#" },
                       { "start":"2020-01-08T19:25:00", "end":"2020-01-08T20:15:00", "title":"Heldt", "description":"Heldts Kollege Mario Korthals soll illegal Pornos auf den Dienstrechner geladen haben. Dann erhält Korthals von der renommierten Kanzlei Stranach eine Abmahnung wegen des Verstosses gegen das Urheberrecht. Was bei Heldt erst für Amüsement gesorgt hat wird nun Ernst. Warum gibt ein so erfolgreicher Nobel-Anwalt sich mit solch windigen Geschäften ab? Heldt ahnt dass mehr hinter der Sache steckt." },
                       { "start":"2020-01-08T20:15:00", "end":"2020-01-08T21:45:00", "title":"Das Mädchen am Strand", "description":"Kessler und die LKA-Ermittler aus Hamburg stossen bei ihren Ermittlungen schliesslich auf Dirk Eilers einen Lehrer der Schule der mit dem Tod beider Mädchen in Zusammenhang gebracht werden kann. Hella Christensen Kesslers ehemalige Kollegin die mittlerweile den Dienst bei der Polizei quittiert hat ermittelt auf eigene Faust. Sie fürchtet dass ihr Sohn Sven in den Mord involviert sein könnte." },
                       { "start":"2020-01-08T21:45:00", "end":"2020-01-08T22:15:00", "title":"heute-journal", "description":"Das Nachrichtenmagazin des Zweiten Deutschen Fernsehens liefert tagesaktuelle Nachrichten gut recherchierte Hintergrundberichte und Interviews mit Politikern und Entscheidungsträgern aus Wirtschaft Gesellschaft Sport und Kultur. Die Sendung wird jeweils von einem zweiköpfigen Team vor der Kamera präsentiert einer Person die moderiert und einer die Nachrichten vorträgt" }
                      ]},
        { "id":"WDR.de",
          "name":"WDR Fernsehen",
          "programme":[{ "start":"2020-01-08T17:00:00", "end":"2020-01-08T22:15:00", "title":"WDR-Testsendung", "description":"Detailinfo zu #WDR-Testsendung#" }
                      ]},
        { "id":"RTL.de",
          "name":"RTL",
          "programme":[{ "start":"2020-01-08T17:00:00", "end":"2020-01-08T22:15:00", "title":"RTL-Testsendung", "description":"Detailinfo zu #RTL-Testsendung#" }
                      ]},
        { "id":"Sat1.de",
          "name":"Sat.1",
          "programme":[{ "start":"2020-01-08T17:00:00", "end":"2020-01-08T22:15:00", "title":"Sat.1-Testsendung", "description":"Detailinfo zu #Sat.1-Testsendung#" }
                      ]}
       ]}


Die Darstellung in FTUI könnte mit derartigem Datenmaterial z.B. wie auf den angehängten Screenshots aussehen ...

HomeAuto_User

@OdfFhem

Ich schaue es mir morgen an. Mobil konnte ich sehen, das dort nichts angezeigt wird.

Den Grund muss ich morgen schauen und nachstellen.

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

Prof. Dr. Peter Henning

Das Problem bei FTUI ist nicht, irgendeine Anzeige zu bekommen. Sondern diese Anzeige frei von zu vielen Informationen zu halten.

LG

pah

OdfFhem

@pah

Deiner Aussage würde ich zunächst einmal generell zustimmen.

Fraglich für mich ist allerdings, ob man aus der allgemeinen Aussage auch direkt konkrete Folgerungen für eine anwenderfreundliche FTUI-EPG-Umsetzung ziehen kann.

Um es vielleicht ein wenig konkreter zu machen:


  • Fällt eine Zeitstrahl-Darstellung eher in die Kategorie "irgendeine" Anzeige? Wenn ja, was würde man bei einer EPG-Darstellung eher erwarten?

  • Was würde man als absolute Basis-Informationen ansehen? In der Testumsetzung sind dies Sender, Uhrzeit und Titel; optional kann noch eine evtl. vorhandene Langbeschreibung als Popup oder Dialog eingeblendet werden.

  • Welche Funktionalitäten sollte eine Umsetzung bereitstellen?


Förderlich wäre sicherlich mehr Gedankenaustausch zum Thema ...

OdfFhem

Das Interesse an einer FTUI-Umsetzung scheint ja - gemessen an den bisherigen Reaktionen - eher gering bis gar nicht vorhanden zu sein.

Ich selbst hingegen bin schon daran interessiert und habe deshalb noch ein wenig weiter experimentiert.


Die JSON-Struktur eines Senders hat zwei neue EIgenschaften bekommen, um die im EPG-FHEM-Device gespeicherte Information verarbeiten zu können:

  • sortkey entspricht dem Eintrag zum Sender aus dem Ch_sort-Attribut
  • cmdline entspricht dem Eintrag zum Sender aus dem Ch_Commands-Attribut


        { "id":"WDR.de",
          "name":"WDR Fernsehen",
          "sortkey":3,
          "cmdline":"set ftuitest epg_resource DasDritte"
          "programme":[{ "start":"2020-01-08T17:00:00", "end":"2020-01-08T22:15:00", "title":"WDR-Testsendung", "description":"Detailinfo zu #WDR-Testsendung#" }
                      ]}



Anmerkungen:

  • Bei Start bzw. Ende wäre vermutlich der Transport in getrennten Datum-/Zeit-Feldern allgemeiner verwendbar und auch genauso unproblematisch verarbeitbar.
  • FTUI funktioniert im Prinzip rein ereignisorientiert. Bedeutet, dass eine Hinterlegung von (darstellungsreleveanten) Zusatzinformationen in Attributen eine manuelle Aktualisierung der Oberfläche erfordert. Würden hier Readings, die im Gegensatz zu Attributen Events auslösen, zum Einsatz kommen, könnte dies auch automatisch geschehen.
  • Um die Automatik zu unterstützen, könnte natürlich in Anlehnung an z.B. ein Calendar-FHEM-Device auch ein einzelnes Reading namens lastUpdate, o.ä. bereitgestellt werden. Dies wäre "breiter" einsetzbar und könnte dann z.B. beim Setzen der Ch_*-Attribute oder auch nach dem Download einer neuen Datei oder ... gesetzt werden.


@HomeAuto_User
Besteht die Hoffnung auf Bereitstellung einer get-Routine, die eine allgemein verwendbare JSON-Struktur mit den benötigten EPG-Informationen zurückliefert?

Prof. Dr. Peter Henning

Wieso gering? Ich bin da längst dran, habe aber derzeit noch ein paar andere Ding ezu erledigen - wie etwa eine Kongressmesse mit 12.000 Teilnehmern zu organisieren...

LG

pah

OdfFhem

@pah

Jetzt, wo's gesagt wurde ... kann man die Lage neu "bewerten" ... ich und vielleicht auch noch Andere sind gespannt ...

HomeAuto_User

Zitat von: OdfFhem am 12 Januar 2020, 09:00:27
@HomeAuto_User
Besteht die Hoffnung auf Bereitstellung einer get-Routine, die eine allgemein verwendbare JSON-Struktur mit den benötigten EPG-Informationen zurückliefert?

Hallo, einer Bereitstellung steht nichts im Wege. Ich wollte ein wenig auch die Reaktion bzw. Diskussion abwarten um die Lage einschätzen zu können.

Gern können wir dies zusammen erarbeiten um eine optimale Lösung dann bereit zu stellen.

Ich überlege bei jedem Vorschlag quer ob eine Lösung da schon bereits integriert ist und ob man es abgreifen kann. Wir möchten ja ungern zusätzlich Attribute und Variablen ergänzen wenn diese schon nutzbar umher liegen.

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


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

OdfFhem

@HomeAuto_User

Die FTUI-Oberfläche kommt (normalerweise) nicht direkt an Modul- bzw. FHEM-Variablen. Notwendig für einen Zugriff sind (in der Regel) get-Routinen, die angeforderte Daten geeignet aufbereiten (oder auf bereits vorhandene Variablen zurückgreifen) und bereitstellen. Alternativ könnte natürlich auch ein Reading (pro Variable) bereitgestellt werden, aber das scheint mir im vorliegenden Fall schon angesichts der Datenmenge nicht unbedingt sinnvoll.


Als kleines Beispiel (mit vergleichbarer Funktionalität) kann man gut das Modul 57_Calendar.pm anführen. Mit dem unten aufgeführten FHEM-Befehl wird der zugrundeliegende VCALENDAR bereitgestellt. Wird diese Routine von FTUI angestossen, können die bereitgestellten Daten nach Lust und Laune weiterverarbeitet werden.

FHEM-Befehl:

get <Calendar-FHEM-Device> vcalendar


bereitgestellte Daten:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:Irgendeine

BEGIN:VEVENT
DTSTART;VALUE=DATE-TIME:20191201T101500
DTEND;VALUE=DATE-TIME:20191201T104500
RRULE:FREQ=DAILY
SUMMARY:tägliches Ereignis
END:VEVENT

END:VCALENDAR



Folglich könnte z.B. "get <EPG-FHEM-Device> epg <optionale Parameter>" ein entsprechendes JSON-Objekt bereitstellen ...

<optionale Parameter> würde ich zunächst einmal ignorieren; könnte aber später ein Datum oder eine Zeitspanne oder einen Sender oder ... sein.

Wichtig wäre aus meiner SIcht auf jeden Fall, dass man eine möglichst breit verwendbare Datenstruktur bereitstellt und nicht unbedingt nur auf einen Anwendungsfall abgestimmte.

HomeAuto_User

Verstehe ich das richtig,
notwendig sind ein oder mehrere get Befehle wo als Return die aufbereiteten Daten kommen?


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