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

@fhemfreund

Problem liegt wohl daran, dass die Datenquelle Programminformationen für mehr Kanäle anbietet als dem FHEM-Device bekannt sind. Bei mir waren/sind die Informationen beim "Bedienfeld":

früher   ... Liste der verfügbaren Kanäle     eingelesene Kanäle: 89      ausgewählte Kanäle: X
momentan ... Liste der verfügbaren Kanäle     eingelesene Kanäle: 103     ausgewählte Kanäle: Y



Ich habe bei mir vorübergehend eine kleine Moduländerung (line 1438) vorgenommen, um den Logfile zu "schonen":

my $search = $hash->{helper}{Programm}{$4};

um eine Zeile erweitert

my $search = $hash->{helper}{Programm}{$4};
if (!defined($search)) { $search = $4; }


Alternativ bzw. zusätzlich kann man auch regelmäßig die Kanalliste aktualisieren ... "get <FHEM-DEVICE> available_channels"

@HomeAuto_User
Für die "optimale" Lösung wäre es vermutlich besser, mit dem Laden/Auswerten einer neuen Datenquelle autom. die Channel-Liste zu aktualisieren oder Programminformationen mit unbekanntem Kanal zu überlesen ...

fhemfreund

@OdfFhem

Zitat
Problem liegt wohl daran, dass die Datenquelle Programminformationen für mehr Kanäle anbietet als dem FHEM-Device bekannt sind. Bei mir waren/sind die Informationen beim "Bedienfeld":

Klasse Tip - das war die Lösung. Da ich viele Updates in Fhem aus Shell-Scripten triggere war es für mich kein Problem den Channel Update mit aufzunehmen.
Stimme dir auch zu, dass es besser im EPG Modul abgefangen werden sollte, um ein vollaufen des Fhem-Logs zu verhindern.

Andreas

JensS

Heute gab es ein \ im EPG, welches zu einem Fehler führte:2022.06.06 18:36:10 3: EPG: nonBlock_loadEPG_v1Done decode_json failed: illegal backslash escape sequence in string, at character offset 19966 (before "\Roxie) - Rein Hofm...") at ./FHEM/66_EPG.pm line 1690.
Als Notlösung habe ich in Zeile 2012 folgendes eingefügt:$desc =~ s/\\+//gm;
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 Jens,

Zitat von: JensS am 06 Juni 2022, 18:54:17
Heute gab es ein \ im EPG, welches zu einem Fehler führte:2022.06.06 18:36:10 3: EPG: nonBlock_loadEPG_v1Done decode_json failed: illegal backslash escape sequence in string, at character offset 19966 (before "\Roxie) - Rein Hofm...") at ./FHEM/66_EPG.pm line 1690.
Als Notlösung habe ich in Zeile 2012 folgendes eingefügt:$desc =~ s/\\+//gm;

danke für den Hinweis. Ich schaute soeben mal in das Modul und bin mir unsicher mit deiner Notlösung bzw. Anpassung.
Mich macht stutzig die Zeilennummer 1690 welche nichts diesbezüglich prüft.
In der aktuellen Version lautet die Zeile folgender Maßen:
    readingsBulkUpdate($hash, 'state', $json_HTML);

Die Ausgabe
EPG: nonBlock_loadEPG_v1Done decode_json failed: ...
kommt in der Zeile 1685.

Es muss die Prüfung in der Sub EPG_SyntaxCheck_for_JSON_v1 das Zeichen nicht eliminiert haben.
Schleife
for(my $i=0;$i<=$#values;$i++) {

Welchen Stand des Modules nutzt du?

Gruß Marco
"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

HomeAuto_User

Hallo

Zitat von: OdfFhem am 19 Februar 2022, 23:07:40
Ich habe bei mir vorübergehend eine kleine Moduländerung (line 1438) vorgenommen, um den Logfile zu "schonen":

my $search = $hash->{helper}{Programm}{$4};

um eine Zeile erweitert

my $search = $hash->{helper}{Programm}{$4};
if (!defined($search)) { $search = $4; }

den Hinweis habe ich übernommen.

Zitat von: OdfFhem am 19 Februar 2022, 23:07:40
@HomeAuto_User
Für die "optimale" Lösung wäre es vermutlich besser, mit dem Laden/Auswerten einer neuen Datenquelle autom. die Channel-Liste zu aktualisieren oder Programminformationen mit unbekanntem Kanal zu überlesen ...

Müsste ich mir mal anschauen.

Alternativ bzw. zusätzlich kann man auch regelmäßig die Kanalliste aktualisieren ... "get <FHEM-DEVICE> available_channels"
So lasse ich mir die Daten immer holen.

Grüße Marco
"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

Hallo Marco,

schön, dass Du wieder da bist. Ich nutze das Modul weiterhin dauerhaft und habe im Laufe der Zeit kleinere Anpassungen vorgenommen.


Um das stat-Problem zu eliminieren (Das Attribut EPG_file_age steht nach einem loadFile auf 1970-01-01 01:00:00) (#1170)

  if ($DownloadFile_found != 0) {
    Log3 $name, 4, "$name: File_check ready to search properties on $DownloadFile";
    my $stat_DownloadFile = stat("./FHEM/EPG/".$DownloadFile);  # Dateieigenschaften

    $FileAge = FmtDateTime($stat_DownloadFile->mtime);          # letzte Änderungszeit
    Log3 $name, 3, "$name: File_check ready - last access: ".$FileAge;

    Log3 $name, 5, "$name: File_check ready - file rights: ".(sprintf "%04o", $stat_DownloadFile->mode & 07777);
    Log3 $name, 5, "$name: File_check ready - file owner-ID number: ".$stat_DownloadFile->uid;
    Log3 $name, 5, "$name: File_check ready - file group-ID number: ".$stat_DownloadFile->gid;
    Log3 $name, 5, "$name: File_check ready - file size: ".$stat_DownloadFile->size.' bytes';
  } else {
    Log3 $name, 5, "$name: File_check nothing file found";
    $DownloadFile = $EPG_tt->{'File_check_DownFile'};
  }



Um nicht nur den heutigen, sondern auch einen anderen Tag komplett aufbereiten zu können (#1430)

  if ($cmd =~ /loadEPG/ && $cmd2 =~ /^\d{8}_$/) {   # Beginn und Ende eines Tages bestimmen
    $TimeNow = $cmd2."1200";
    $TimeNow =~ s/_//g;
    $TimeNow.= "10 $TimeLocaL_GMT_Diff";

    $today_start = substr($TimeNow,0,8)."000000 $TimeLocaL_GMT_Diff";
    $today_end = substr($TimeNow,0,8)."235959 $TimeLocaL_GMT_Diff";
    $last_loaded = substr($today_start,0,8).'_';
  }



Um mögllichst keine Sendung zu verlieren, die an den Zeitraumrändern "überlappt" (#1489)

          if ($cmd !~ /loadEPG_Fav/ && grep /$search($|,)/, $Ch_select) {             # find in attributes channel
            if (($today_start eq "") && ($today_end eq "")) {
              $EPG_found++ if ($TimeNow gt $start && $TimeNow lt $end);
            } else {
              $EPG_found++ if ((($start ge $today_start) && ($end le $today_end)) || (($start lt $today_start) && ($end ge $today_start)) || (($end gt $today_end) && ($start le $today_end)));
            }
          }



Vielleicht findet ja eine der Änderungen den Weg ins offizielle Modul ...

fhemfreund

Hat das Modul jemand noch im Einsatz? Habe heute folgende Fehler-Meldung (via Verbose 5) im Log:


TVInfo: nonBlock_loadEPG_v1Done, Please report it to the developer with the following line!
TVInfo: nonBlock_loadEPG_v1Done decode_json failed: illegal backslash escape sequence in string, at character offset 13720 (before "\\Joey\\\\ MacDonald...") at ./FHEM/66_EPG.pm line 1681.


Nach einem Fhem Reboot (Verbose auf 0) steht folgendes im Log:


PERL WARNING: Use of uninitialized value in pattern match (m//) at ./FHEM/66_EPG.pm line 766.
PERL WARNING: Use of uninitialized value in substr at ./FHEM/66_EPG.pm line 768.
PERL WARNING: substr outside of string at ./FHEM/66_EPG.pm line 768.
PERL WARNING: Use of uninitialized value in multiplication (*) at ./FHEM/66_EPG.pm line 768.
PERL WARNING: Argument "" isn't numeric in multiplication (*) at ./FHEM/66_EPG.pm line 768.
PERL WARNING: Use of uninitialized value in substr at ./FHEM/66_EPG.pm line 769.


Andreas

OdfFhem

Zitat von: fhemfreund am 07 Januar 2023, 21:07:44
Hat das Modul jemand noch im Einsatz? Habe heute folgende Fehler-Meldung (via Verbose 5) im Log:

Habe ich immer noch im Einsatz und macht auch noch das, was es soll.

Laut Log sieht es so aus, als ob die heruntergelasene Datei unbrauchbar wäre
... in meiner Datei steht z.B. "Michele Carey - Josephine \Joey\ MacDonald"

fhemfreund

Habe mal einen

cat rytecDE_Basic | grep Carey


gemacht und bekomme folgendes Ergebnis:


Michele Carey - Josephine \Joey\ MacDonald
Michele Carey - Josephine \Joey\ MacDonald
Joey MacDonald - Michele Carey
Joey MacDonald - Michele Carey
Joey MacDonald - Michele Carey
Joey MacDonald - Michele Carey
Carey Meyer
    <desc lang="de">Wer schafft die meisten Oktaven: Mariah Carey, Whitney Houston, Adele oder doch Freddie Mercury? - Findet es heraus!</desc>
Dwayne Carey-Hill.</desc>
Dwayne Carey-Hill.</desc>
Dwayne Carey-Hill.</desc>
Dwayne Carey-Hill.</desc>
Dwayne Carey-Hill, Stephen Sandoval.</desc>


scheint also gleich zu sein. Ein Löschen des rytecDE_Basic Files + neu laden des EPGs bricht mit dem gleichen Fehler ab.
Mein epg.pm hat die Version '20210120_pre_release'. Gibts ev. noch eine neuere/andere Version?

Andreas

OdfFhem

Sieht doch überraschend ähnlich aus.

Meine Datei hat folgende Zeit bzw. Größe: rytecDE_Basic ... 06.01.2023 23:03 ... 11295844

Meine pm-Datei entspricht der aus GitHub ... erweitert um die weiter oben angesprochenen Änderungen.
Diese haben aber das grundsätzliche Einlesen nicht verändert, sondern nur das Auswerten.

Mit dem Holen der nächsten Datei könnte mich das Problem auch erwischen ... ist aber vielleicht auch nur eine Eintagsfliege ... mal schauen ...

fhemfreund

Zitat von: OdfFhem am 07 Januar 2023, 21:49:01
...

Meine pm-Datei entspricht der aus GitHub ... erweitert um die weiter oben angesprochenen Änderungen.
...

Das war der goldene Tip. Scheinbar war meine Version zu alt. Ein


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


hat mir nun die Version


20220311_pre_release


geladen und mit der geht es jetzt.

Danke für den Tip!

Andreas

cocojambo

Ich habe mich schon mal vor einem Jahr hier im Board mit dem Modul beschäftgt . Es ist aber dann sozusagen in den Hintergrund gerückt, weil ich immer wieder neuere Projekte in Angriff genommen habe.
Jetzt bin ich wieder auf das Modul gestossen. Es funktioniert auf Anbieb. Aber mit der Darstellung im Dashboard komme ich nicht klar. Ich möchte im Dashboard nur die Darstellung der "table" Ansicht so wie in der room Darstellung (Anhang:room Darstellung) das sieht aber dann im Dashboard so aus (Anhang:Umschlten ins Dashboard)
klicke ich dann dort auf TVInfo, springt das Ganze aus dem Dashboard zurück in Device Anzeige. (Anlage: Umspringen nach Device).

Gibt es ein Attribut oder eine andere Möglichkeit die ganze Tabelle mit den beiden Feldern "Now" und "Prime" Time im Dashboard, so wie in der room Ansicht, anzuzeigen?

Gruß aus Köln
Norbert
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000

benedikt-wue

Bezuglich dieses Moduls, allerdings nicht ganz on-topic:
ich habe mir aus den Readings des Moduls eine ReadingsGroup erstellt... nun möchte ich mir in dieser nur die Einträge beginnend mit "x_" anzeigen lassen, sprich die Readings der Sender, um diese dann in eine FTUI - Oberfläche anzeigen zu lassen...
Das hier habe ich in die DEF der Readingsgroup eingetragen, allerdings führt das nicht zum gewünschten Ergebnis
Für Hilfe wäre ich dankbar ebenso für andere "Vorlagen" zum Einpflegen in die FTUI3...
Schöne Grüße
Ben