Fernsehprogramm DOIF (aktuell und primetime | non blocking | minimaler traffic)

Begonnen von mumpitzstuff, 12 Juni 2020, 21:47:48

Vorheriges Thema - Nächstes Thema

amenomade

Zitat von: Invers am 14 Juni 2020, 18:29:07
Nochmal kurz zu meiner Zusatzfrage von vorhin:
Wo finde ich die Namen der TV-Sender, z.B. für Tele 5?
Kann ja tele5, TELE5, Tele_5 usw. sein.

Bin dankbar für einen Tipp.
Diese Frage habe ich hier bereits geantwortet: https://forum.fhem.de/index.php/topic,112081.msg1064249.html#msg1064249
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Invers

Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Invers

Ich muss doch nochmal nerven:
Wenn ich Sender im Attribut UITable lösche, verschiebt sich die Liste der Sender.
Wo ist denn die Anzahl der Tabellenzeilen hinterlegt?
Ich möchte Sender entfernen und hinzufügen.
Ich finde die entsprechende Stelle nicht.

Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

amenomade

Du hast einmal ein Filter:
  ### CONFIG AREA ###\
  $_channelFilter = qr/^(?:ARD\.|ZDF\.|Sat1\.|RTL2?\.|Pro(?:7|SiebenMaxx)\.|DMax\.|Vox\.|Kabel(?:EinsClassic|EinsDoku)?\.|ntv\.|Sixx\.|TLC\.|N24Doku\.|SonyEntertainmentTV\.|AandE\.|TNT(?:Serie|Film)\.|AnimalPlanet\.|History\.|Kinowelt\.|NatGeoHD\.|PLANET\.|Silverline\.|13thStreet\.|AXN\.|SciFi\.)/;;\


und dann 2 uiTables Einträge pro Kanal:

"Sender"|"ab"|"Aktuelle Sendung"|"ab"|"Nächste Sendung"|"ab"|"Sendung"\
TPL_TV($SELF,next,ARD,ard)\
(...)
" ;"|" ;"|" ;"|" ;"|" ;"|" ;"|" ;"\
"Sender"|"ab"|"Sendung"|"ab"|"Sendung"|"ab"|"Sendung"\
TPL_TV($SELF,prime,ARD,ard)\
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Invers

Das hatte ich beides schon gefunden, aber nur im Attribut die Sender gelöscht, die ich nicht wollte.
Ich werde sie nun auch im Filter löschen.
Ich danke dir.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

cwagner

Das mit dem korrigierten Logo-Pfad passt schon  und das funktioniert jetzt :-)

Ich finde in meinem Verzeichnis /opt/fhem auch die Dateien rytecDE_Basic und rytecDE_Common, doch leider bleiben bei mir alle Spalten der Programmtabelle leer. Offenbar werden die erfolgreich heruntergeladenen Daten nicht verarbeitet.

Gehe ich in das DOIF, wird offenbar doch ein blocking call ausgelöst, der mir das Web-Interface so blockiert, dass ich booten muss, um wieder ranzukommen (Fhem läuft und die Systemlast ist auch passabel). Aber ein Modul meiner 1-Wire Sensoren wird blockiert (OWX_SER), was sämtliche Steuerungsprozesse hängen lässt, es werden hundertfach diese Zeilen erzeugt:
2020.06.14 18:54:53 1: OWX_SER::Query OWio1:  0 of 1 bytes in last attempt and state opened, this is an unrecoverable error

und beim Abbrechen gibt es diese Zeile im Log:
2020.06.14 18:54:56 1: Timeout for DOIF::doParse reached, terminated process 1245
2020.06.14 18:54:56 1: doif_TEST: Blocking call aborted (parse).


Im Betrieb gibt es häufiger diese Fehler im Log:
an't locate object method "strptime" via package "Time::Piece" (perhaps you forgot to load "Time::Piece"?) at (eval 163) line 36.
2020.06.14 19:11:51 1: doif_TEST: Blocking call aborted (parse).
2020.06.14 19:11:51 2: DbLog logdb -> DbLog_PushAsync Process died prematurely

und auch:
2020.06.14 19:12:51 1: FRITZBOX Fritzbox: Readout_Aborted.1931 Error: Timeout when reading Fritz!Box data.

2020.06.14 19:16:45 1: Timeout for DOIF::doParse reached, terminated process 1275
2020.06.14 19:16:45 1: doif_TEST: Blocking call aborted (parse).

2020.06.14 19:58:56 1: Timeout for SYSMON_blockingCall reached, terminated process 1517

Alles Fehler, die ohne das DOIF nicht existier(t)en.

Auch nach dem Hinzufügen des Package Time::Piece auf dem Console des Linux-Systems (cpan install Time::Piece) verschwanden diese Fehler nicht und:  Immer noch leere Spalten.

Christian
PI 2B+/3B+ Raspbian 12, Perl 5.36.0, FHEM 6.3: 295 Module in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB

amenomade

Also... BlockingCall, wie ihr Name es nicht sagt, ist eine Funktion, die eigentlich non-blocking Calls macht, durch ein Fork des Haupt Fhem Prozess.

Hast Du vielleicht das Attribut "blockingCallMax" auf global gesetzt? (bzw. ist dein Fhem Rechner ein Windows Rechner?)

Relevant wäre ein "ps aux |grep perl" aus einem Terminal, wenn Fhem hängt
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

mumpitzstuff

Hast du nach der Installation von Time::Piece den Rechner mal rebootet? Ich könnte die Verwendung der Bibliothek aber auch vermeiden, das wäre dann langsamer aber kompatibler.

PS: Im ersten Beitrag habe ich das DOIF noch mal geändert, so das man Time::Piece nicht mehr braucht. Man kann es aber manuell in der Funktion xmltv2epoch einschalten, wenn man es möchte.

cwagner

Zitat von: amenomade am 14 Juni 2020, 20:59:45
Hast Du vielleicht das Attribut "blockingCallMax" auf global gesetzt? (bzw. ist dein Fhem Rechner ein Windows Rechner?)

Relevant wäre ein "ps aux |grep perl" aus einem Terminal, wenn Fhem hängt

Also: Es ist ein PI und das Attribut ist nicht gesetzt.
Dem anderen Hinweis werde ich nachgehen, aber erst morgen...

Danke für die Hinweise

Christian
PI 2B+/3B+ Raspbian 12, Perl 5.36.0, FHEM 6.3: 295 Module in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB

cwagner

Zitat von: mumpitzstuff am 14 Juni 2020, 21:15:02
Hast du nach der Installation von Time::Piece den Rechner mal rebootet? Ich könnte die Verwendung der Bibliothek aber auch vermeiden, das wäre dann langsamer aber kompatibler.

Ja, ich habe (notgedrungen sogar mehrfach) neu gebootet. Die Fehlerhinweise in dieser Richtung sind nun ja auch weg. Lediglich die BlockingCall-Hinweise und vor allem der Ärger mit OWX_SER verleidet mir aktuell die Freude...

Herzliche Grüße

Christian
PI 2B+/3B+ Raspbian 12, Perl 5.36.0, FHEM 6.3: 295 Module in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB

Invers

Ich habe mal 3sat hinzugefügt. Das hat auch geklappt, es wird alles richtig angezeigt.
Nur die 2. Überschrift (also bei prime) wird nicht mehr gelb gefärbt. Ich sehe nicht, was ich da falsch gemacht habe.
Kannst du mir einen Tipp geben?

Besten Dank im Voraus.

[code]defmod doif_TEST DOIF subs\
{\
  use utf8;;\
  use Date::Parse;;\
  # sudo apt-get install libxml-bare-perl\
  use XML::Bare 0.53 qw(forcearray);;\
  use Blocking;;\
  \
  ### CONFIG AREA ###\
  $_channelFilter = qr/^(?:ARD\.|ZDF\.|Sat1\.|3sat\.|RTL2?\.|Pro(?:7|SiebenMaxx)\.|DMax\.|Vox\.|Kabel(?:EinsClassic|EinsDoku)?\.|ntv\.|Sixx\.|TLC\.|N24Doku\.|SonyEntertainmentTV\.|AandE\.|TNT(?:Serie|Film)\.|AnimalPlanet\.|History\.|Kinowelt\.|NatGeoHD\.|PLANET\.|Silverline\.|13thStreet\.|AXN\.|SciFi\.)/;;\
  # telnet port must not be password protected (open)\
  $_telnetPort = 7072;;\
  $_timeAdjust = 0;;\
  $_path = '/opt/fhem/';;\
  $_dataFile = $_path.'rytecDE_Basic';;\
  # enable/disable unused channel filtering on filemerge (enabled = small file = faster)\
  $_filterChannels = 1;;\
  # enable/disable updates based on starttimes (enabled = update channels only if needed = faster)\
  $_updateBasedOnStarttimes = 1;;\
  \
  # internal variables\
  $_startTimes;;\
  \
  sub filterText($)\
  {\
    my $text = shift;;\
\
    $text =~ s/["`;;'\r]//g;;\
    $text =~ s/[\n]/<br>/g;;\
\
    return $text;;\
  }\
  \
  sub xmltv2epoch($)\
  {\
    my $t = shift;;\
\
    return Time::Piece->strptime($t, '%Y%m%d%H%M%S %z')->epoch;;\
  }\
\
  sub FmtDateTime($)\
  {\
    my @t = localtime(shift);;\
    return sprintf("%04d-%02d-%02d %02d:%02d:%02d", $t[5]+1900, $t[4]+1, $t[3], $t[2], $t[1], $t[0]);;\
  }\
\
  sub tvParse($$)\
  {\
    my ($device, $mode) = @_;;\
    my $obj;;\
    my $xml;;\
    my $lastChannel = '';;\
    my $reading = '';;\
    my $i = 999;;\
    my $n = 999;;\
    my $k = 0;;\
    my $primeTime = substr(FmtDateTime(time() + $_timeAdjust), 0, 11).'20:14:00';;\
    my $sendTelnet = '';;\
    \
    $obj = XML::Bare->new(file => $_dataFile);;\
    $xml = $obj->parse();;\
\
    if (!$@)\
    {\
      my $old = time() + $_timeAdjust;;\
\
      foreach (@{forcearray($xml->{'tv'}{'programme'})})\
      {\
        if ((0 != $_filterChannels) ||\
            ($_->{'channel'}{'value'} =~ $_channelFilter))\
        {\
          my $stop = xmltv2epoch($_->{'stop'}{'value'});;\
\
          # filter old stuff\
          if ($stop > $old)\
          {\
            if ($lastChannel ne $_->{'channel'}{'value'})\
            {\
              $lastChannel = $_->{'channel'}{'value'};;\
              $reading = $_->{'channel'}{'value'};;\
              $reading =~ s/[\.\s]//g;;\
              $reading =~ s/de$//;;\
              $n = 0;;\
              \
              if ((0 == $_updateBasedOnStarttimes) || !exists($_startTimes{$reading}) || ($_startTimes{$reading} <= $old))\
              {\
                $i = 0;;\
\
                if (0 != $_updateBasedOnStarttimes)\
                {\
                  $_startTimes{$reading} = $stop;;\
                }\
              }\
            }\
\
            if ($i < 3 && 'next' eq $mode)\
            {\
              my $fi = sprintf("%03d", $i);;\
              my $start = xmltv2epoch($_->{'start'}{'value'});;\
              my $readingName;;\
              my $readingValue;;\
\
              $readingName = 'next_'.$reading.'_'.$fi.'_bdate';;\
              $readingValue = substr(FmtDateTime($start), 0, 10);;\
              $sendTelnet .= ";;setreading $device $readingName $readingValue";;\
\
              $readingName = 'next_'.$reading.'_'.$fi.'_btime';;\
              $readingValue = substr(FmtDateTime($start), 11, 8);;\
              $sendTelnet .= ";;setreading $device $readingName $readingValue";;\
\
              $readingName = 'next_'.$reading.'_'.$fi.'_title';;\
              $readingValue = filterText(@{forcearray($_->{'title'})}[0]->{'value'});;\
              $sendTelnet .= ";;setreading $device $readingName $readingValue";;\
\
              $readingName = 'next_'.$reading.'_'.$fi.'_stitle';;\
              if (exists($_->{'sub-title'}{'value'}))\
              {\
                $readingValue = filterText($_->{'sub-title'}{'value'});;\
              }\
              else\
              {\
                $readingValue = 'na';;\
              }\
              $sendTelnet .= ";;setreading $device $readingName $readingValue";;\
\
              $readingName = 'next_'.$reading.'_'.$fi.'_desc';;\
              if (exists($_->{'desc'}{'value'}))\
              {\
                $readingValue = filterText($_->{'desc'}{'value'});;\
              }\
              else\
              {\
                $readingValue = 'na';;\
              }\
              $sendTelnet .= ";;setreading $device $readingName $readingValue";;\
\
              $k++;;\
              $i++;;\
            }\
\
            if ($n < 3 && 'prime' eq $mode)\
            {\
              my $start = xmltv2epoch($_->{'start'}{'value'});;\
              my $fmtStart = FmtDateTime($start);;\
              my $bdate = substr($fmtStart, 0, 10);;\
              my $btime = substr($fmtStart, 11, 8);;\
\
              if ($bdate.' '.$btime gt $primeTime)\
              {\
                my $fn = sprintf("%03d", $n);;\
                my $readingName;;\
                my $readingValue;;\
\
                $readingName = 'prime_'.$reading.'_'.$fn.'_bdate';;\
                $readingValue = substr(FmtDateTime($start), 0, 10);;\
                $sendTelnet .= ";;setreading $device $readingName $readingValue";;\
\
                $readingName = 'prime_'.$reading.'_'.$fn.'_btime';;\
                $readingValue = substr(FmtDateTime($start), 11, 8);;\
                $sendTelnet .= ";;setreading $device $readingName $readingValue";;\
\
                $readingName = 'prime_'.$reading.'_'.$fn.'_title';;\
                $readingValue = filterText(@{forcearray($_->{'title'})}[0]->{'value'});;\
                $sendTelnet .= ";;setreading $device $readingName $readingValue";;\
\
                $readingName = 'prime_'.$reading.'_'.$fn.'_stitle';;\
                if (exists($_->{'sub-title'}{'value'}))\
                {\
                  $readingValue = filterText($_->{'sub-title'}{'value'});;\
                }\
                else\
                {\
                  $readingValue = 'na';;\
                }\
                $sendTelnet .= ";;setreading $device $readingName $readingValue";;\
\
                $readingName = 'prime_'.$reading.'_'.$fn.'_desc';;\
                if (exists($_->{'desc'}{'value'}))\
                {\
                  $readingValue = filterText($_->{'desc'}{'value'});;\
                }\
                else\
                {\
                  $readingValue = 'na';;\
                }\
                $sendTelnet .= ";;setreading $device $readingName $readingValue";;\
\
                $k++;;\
                $n++;;\
              }\
            }\
\
            if ($k >= 10)\
            {\
              `perl /opt/fhem/fhem.pl $_telnetPort "$sendTelnet"`;;\
\
              $k = 0;;\
              $sendTelnet = '';;\
            }\
          }\
        }\
      }\
\
      if ('' ne $sendTelnet)\
      {\
        `perl /opt/fhem/fhem.pl $_telnetPort "$sendTelnet"`;;\
      }\
    }\
    \
    return %{$_startTimes};;\
  }\
  \
  sub tvMerge($;;$)\
  {\
    my ($dstName, $srcName) = @_;;\
    my $fh;;\
    my $dst;;\
    my $src;;\
    my $start = '';;\
    my $channels1 = '';;\
    my $channels1_flt = '';;\
    my $channels2 = '';;\
    my $channels2_flt = '';;\
    my $programms1 = '';;\
    my $programms1_flt = '';;\
    my $programms2 = '';;\
    my $programms2_flt = '';;\
    my $end = '';;\
    my $pos;;\
\
    open($fh, '<', $dstName) or die "Can't open file $!";;\
    read($fh, $dst, -s $fh);;\
    close($fh);;\
\
    if (defined($srcName))\
    {\
      open($fh, '<', $srcName) or die "Can't open file $!";;\
      read($fh, $src, -s $fh);;\
      close($fh);;\
    }\
\
    if (-1 != ($pos = index($dst, '<channel ')))\
    {\
      $start = substr($dst, 0, $pos);;\
    }\
\
    if (-1 != ($pos = rindex($dst, '</programme>')))\
    {\
      $end = substr($dst, $pos + 12);;\
    }\
\
    while ($dst =~ /(\s*<channel\s.*?id="(.*?)".*?<\/channel>)/sg)\
    {\
      if (0 != $_filterChannels)\
      {\
        $_ = $1;;\
\
        if ($2 =~ $_channelFilter)\
        {\
          $channels1_flt .= $_;;\
        }\
      }\
      else\
      {\
        $channels1 .= $1;;\
      }\
    }\
\
    while ($dst =~ /(\s*<programme\s.*?channel="(.*?)".*?<\/programme>)/sg)\
    {\
      if (0 != $_filterChannels)\
      {\
        $_ = $1;;\
\
        if ($2 =~ $_channelFilter)\
        {\
          $programms1_flt .= $_;;\
        }\
      }\
      else\
      {\
        $programms1 .= $1;;\
      }\
    }\
\
    if (defined($srcName))\
    {\
      while ($src =~ /(\s*<channel\s.*?id="(.*?)".*?<\/channel>)/sg)\
      {\
        if (0 != $_filterChannels)\
        {\
          $_ = $1;;\
\
          if ($2 =~ $_channelFilter)\
          {\
            $channels2_flt .= $_;;\
          }\
        }\
        else\
        {\
          $channels2 .= $1;;\
        }\
      }\
\
      while ($src =~ /(\s*<programme\s.*?channel="(.*?)".*?<\/programme>)/sg)\
      {\
        if (0 != $_filterChannels)\
        {\
          $_ = $1;;\
\
          if ($2 =~ $_channelFilter)\
          {\
            $programms2_flt .= $_;;\
          }\
        }\
        else\
        {\
          $programms2 .= $1;;\
        }\
      }\
    }\
\
    if (0 != $_filterChannels)\
    {\
      open($fh, '>', $dstName) or die "Can't open file $!";;\
\
      if (defined($srcName))\
      {\
        print $fh $start.$channels1_flt.$channels2_flt.$programms1_flt.$programms2_flt.$end;;\
      }\
      else\
      {\
        print $fh $start.$channels1_flt.$programms1_flt.$end;;\
      }\
\
      close($fh);;\
    }\
    else\
    {\
      open($fh, '>', $dstName) or die "Can't open file $!";;\
\
      if (defined($srcName))\
      {\
        print $fh $start.$channels1.$channels2.$programms1.$programms2.$end;;\
      }\
      else\
      {\
        print $fh $start.$channels1.$programms1.$end;;\
      }\
\
      close($fh);;\
    }\
  }\
\
  sub tvDownload()\
  {\
    my $output = '';; \
    \
    # other server\
    # http://www.xmltvepg.nl/rytecDE_Basic.xz\
    # http://91.121.106.172/~rytecepg/epg_data/rytecDE_Basic.xz\
    # http://www.vuplus-community.net/rytec/rytecDE_Common.xz\
    # http://www.xmltvepg.nl/rytecDE_Common.xz\
    # http://91.121.106.172/~rytecepg/epg_data/rytecDE_Common.xz\
    # http://www.vuplus-community.net/rytec/rytecDE_SportMovies.xz\
    # http://www.xmltvepg.nl/rytecDE_SportMovies.xz\
    # http://91.121.106.172/~rytecepg/epg_data/rytecDE_SportMovies.xz\
    $output .= qx(wget http://www.vuplus-community.net/rytec/rytecDE_Basic.xz -O /opt/fhem/rytecDE_Basic.xz 2>&1);;\
    $output .= qx(xz -df /opt/fhem/rytecDE_Basic.xz 2>&1);;\
\
    if (0 != $_filterChannels)\
    {\
      tvMerge($_dataFile);;\
    }\
    \
    return $output;;\
  }\
\
  sub tvDownloadMerge()\
  {\
    my $output = '';; \
    \
    # other server\
    # http://www.xmltvepg.nl/rytecDE_Basic.xz\
    # http://91.121.106.172/~rytecepg/epg_data/rytecDE_Basic.xz\
    # http://www.vuplus-community.net/rytec/rytecDE_Common.xz\
    # http://www.xmltvepg.nl/rytecDE_Common.xz\
    # http://91.121.106.172/~rytecepg/epg_data/rytecDE_Common.xz\
    # http://www.vuplus-community.net/rytec/rytecDE_SportMovies.xz\
    # http://www.xmltvepg.nl/rytecDE_SportMovies.xz\
    # http://91.121.106.172/~rytecepg/epg_data/rytecDE_SportMovies.xz\
    $output .= qx(wget http://www.vuplus-community.net/rytec/rytecDE_Basic.xz -O /opt/fhem/rytecDE_Basic.xz 2>&1);;\
    $output .= qx(xz -df /opt/fhem/rytecDE_Basic.xz 2>&1);;\
    $output .= qx(wget http://www.vuplus-community.net/rytec/rytecDE_Common.xz -O /opt/fhem/rytecDE_Common.xz 2>&1);;\
    $output .= qx(xz -df /opt/fhem/rytecDE_Common.xz 2>&1);;\
    \
    tvMerge($_dataFile, $_path.'rytecDE_Common');;\
\
    # download and merge other files here if needed\
    \
    return $output;;\
  }\
  \
  \
  sub startDownload($)\
  {\
    my $name = shift;;\
    \
    if (defined($_blockingcalls{PID_DOWNLOAD}))\
    {\
      ::Log3 $name, 3, $name.': Blocking call already running (download).';;\
\
      ::BlockingKill($_blockingcalls{PID_DOWNLOAD});;\
    }\
\
    $_blockingcalls{PID_DOWNLOAD} = ::BlockingCall('DOIF::doDownload', $name, 'DOIF::endDownload', 300, 'DOIF::abortDownload', $name);;\
  }\
  \
  sub DOIF::doDownload($)\
  {\
    my $name = shift;;\
    my $output = '';;\
    \
    $output = tvDownloadMerge();;\
    \
    return $name.'|'.$output;;\
  }\
  \
  sub DOIF::endDownload($)\
  {\
    my ($name, $output) = split("\\|", shift);;\
    \
    ::Log3 $name, 5, $name.': Blocking call finished to download tv data.';;\
    \
    delete($_blockingcalls{PID_DOWNLOAD});;\
  }\
  \
  sub DOIF::abortDownload($)\
  {\
    my $name = shift;;\
    \
    delete($_blockingcalls{PID_DOWNLOAD});;\
    \
    ::Log3 $name, 1, $name.': Blocking call aborted (download).';;\
  }\
  \
  sub startParse($$)\
  {\
    my ($name, $mode) = @_;;\
    \
    if (defined($_blockingcalls{PID_PARSE}))\
    {\
      ::Log3 $name, 3, $name.': Blocking call already running (parse).';;\
\
      ::BlockingKill($_blockingcalls{PID_PARSE});;\
    }\
    \
    $_blockingcalls{PID_PARSE} = ::BlockingCall('DOIF::doParse', $name.'|'.$mode, 'DOIF::endParse', 300, 'DOIF::abortParse', $name);;\
  }\
  \
  sub DOIF::doParse($)\
  {\
    my ($name, $mode) = split("\\|", shift);;\
    my $ret = $name;;\
    my %startTimes = tvParse($name, $mode);;\
    \
    foreach (keys(%startTimes))\
    {\
      $ret .= '|'.$_.'|'.$startTimes{$_};;\
    }\
    \
    return $ret;;\
  }\
  \
  sub DOIF::endParse($)\
  {\
    my ($name, @startTimes) = split("\\|", shift);;\
        \
    for (my $i = 0;; $i < (scalar(@startTimes) / 2);; $i += 2)\
    {\
      $_startTimes{$startTimes[$i]} = $startTimes[$i + 1];;\
    }\
    \
    ::Log3 $name, 5, $name.': Blocking call finished to parse tv data.';;\
    \
    delete($_blockingcalls{PID_PARSE});;\
  }\
  \
  sub DOIF::abortParse($)\
  {\
    my $name = shift;;\
    \
    delete($_blockingcalls{PID_PARSE});;\
    \
    ::Log3 $name, 1, $name.': Blocking call aborted (parse).';;\
  }\
}\
init\
{\
  startDownload("$SELF");;\
}\
{\
  if ([00:05|Mo Do])\
  {\
    startDownload("$SELF");;\
  }\
  \
  if ([+00:15]) \
  {\
    startParse("$SELF", 'next');;\
  }\
  \
  if ([00:30])\
  {\
    startParse("$SELF", 'prime');;\
  }\
}
attr doif_TEST alias Aktuelles TV-Programm
attr doif_TEST room TEST
attr doif_TEST uiTable {\
  package ui_Table;;\
\
  $SHOWNOSTATE=1;;\
\
  $TR{0,31} = "style='color:yellow;;text-align:center;;font-weight:bold;;font-size:18px'";;\
  $TD{0..29,31..60}{2,4} = "style='font-size:16px;;border-right-style:solid;;border-color:#CCCCCC;;border-right-width:1px;;'";;\
  $TD{0..29,31..60}{0} = "align='center' style='border-right-style:solid;;border-color:#CCCCCC;;border-right-width:1px;;'";;\
  $TD{0..60}{1,3,5,6} = "style='font-size:16px;;'";;\
  $TD{30}{1..6} = "border-top-style:solid;;border-bottom-style:solid;;border-color:#CCCCCC;;border-top-width:1px;;border-bottom-width:1px;;'";;\
\
  sub rgUnfold\
  {\
    my ($title, $desc) = @_;;\
    $title = 'na' if (!defined($title));;\
    $desc = 'na'."\n\n".'na' if (!defined($desc));;\
\
    $title =~ s/(.{1,45}|\S{46,})(?:\s[^\S\r\n]*|\Z)/$1<br>/g;;\
    $desc =~ s/<br>/\n/g;;\
    $desc =~ s/(.{1,65}|\S{66,})(?:\s[^\S\r\n]*|\Z)/$1<br>/g;; \
    $desc =~ s/[\r\'\"]/ /g;;\
    $desc =~ s/[\n]|\\n/<br>/g;;\
    return "<a href=\"#!\" onclick=\"FW_okDialog('".$desc."')\">".$title."</a>";;\
  }\
}\
\
DEF TPL_TV(ICON("tv/$4")|substr([$1:$2_$3_000_btime],0,5)|rgUnfold([$1:$2_$3_000_title],[$1:$2_$3_000_stitle]."\n\n".[$1:$2_$3_000_desc])|substr([$1:$2_$3_001_btime],0,5)|rgUnfold([$1:$2_$3_001_title],[$1:$2_$3_001_stitle]."\n\n".[$1:$2_$3_001_desc])|substr([$1:$2_$3_002_btime],0,5)|rgUnfold([$1:$2_$3_002_title],[$1:$2_$3_002_stitle]."\n\n".[$1:$2_$3_002_desc]))\
\
"Sender"|"ab"|"Aktuelle Sendung"|"ab"|"Nächste Sendung"|"ab"|"Sendung"\
TPL_TV($SELF,next,3sat,3SAT)\
TPL_TV($SELF,next,ARD,ard)\
TPL_TV($SELF,next,ZDF,zdf)\
TPL_TV($SELF,next,Sat1,sat1)\
TPL_TV($SELF,next,RTL,rtl)\
TPL_TV($SELF,next,RTL2,rtl2)\
TPL_TV($SELF,next,Pro7,pro7)\
TPL_TV($SELF,next,DMax,dmax)\
TPL_TV($SELF,next,Vox,vox)\
TPL_TV($SELF,next,Kabel,kabel1)\
TPL_TV($SELF,next,KabelEinsClassic,kabel1classic)\
TPL_TV($SELF,next,13thStreet,13thstreet)\
TPL_TV($SELF,next,Silverline,silverline)\
TPL_TV($SELF,next,TNTFilm,tntfilm)\
TPL_TV($SELF,next,AXN,axn)\
TPL_TV($SELF,next,SonyEntertainmentTV,sonytv)\
TPL_TV($SELF,next,Kinowelt,kinowelt)\
TPL_TV($SELF,next,ProSiebenMaxx,pro7maxx)\
TPL_TV($SELF,next,Sixx,sixx)\
TPL_TV($SELF,next,TNTSerie,tntserie)\
TPL_TV($SELF,next,SciFi,syfy)\
TPL_TV($SELF,next,ntv,ntv)\
TPL_TV($SELF,next,N24Doku,n24)\
TPL_TV($SELF,next,History,history)\
TPL_TV($SELF,next,PLANET,planet)\
TPL_TV($SELF,next,KabelEinsDoku,kabel1doku)\
TPL_TV($SELF,next,AnimalPlanet,animalplanet)\
TPL_TV($SELF,next,NatGeoHD,natgeo)\
TPL_TV($SELF,next,TLC,tlc)\
TPL_TV($SELF,next,AandE,ae)\
"&nbsp;;"|"&nbsp;;"|"&nbsp;;"|"&nbsp;;"|"&nbsp;;"|"&nbsp;;"|"&nbsp;;"\
"Sender"|"ab"|"Sendung"|"ab"|"Sendung"|"ab"|"Sendung"\
TPL_TV($SELF,prime,3sat,3SAT)\
TPL_TV($SELF,prime,ARD,ard)\
TPL_TV($SELF,prime,ZDF,zdf)\
TPL_TV($SELF,prime,Sat1,sat1)\
TPL_TV($SELF,prime,RTL,rtl)\
TPL_TV($SELF,prime,RTL2,rtl2)\
TPL_TV($SELF,prime,Pro7,pro7)\
TPL_TV($SELF,prime,DMax,dmax)\
TPL_TV($SELF,prime,Vox,vox)\
TPL_TV($SELF,prime,Kabel,kabel1)\
TPL_TV($SELF,prime,KabelEinsClassic,kabel1classic)\
TPL_TV($SELF,prime,13thStreet,13thstreet)\
TPL_TV($SELF,prime,Silverline,silverline)\
TPL_TV($SELF,prime,TNTFilm,tntfilm)\
TPL_TV($SELF,prime,AXN,axn)\
TPL_TV($SELF,prime,SonyEntertainmentTV,sonytv)\
TPL_TV($SELF,prime,Kinowelt,kinowelt)\
TPL_TV($SELF,prime,ProSiebenMaxx,pro7maxx)\
TPL_TV($SELF,prime,Sixx,sixx)\
TPL_TV($SELF,prime,TNTSerie,tntserie)\
TPL_TV($SELF,prime,SciFi,syfy)\
TPL_TV($SELF,prime,ntv,ntv)\
TPL_TV($SELF,prime,N24Doku,n24)\
TPL_TV($SELF,prime,History,history)\
TPL_TV($SELF,prime,PLANET,planet)\
TPL_TV($SELF,prime,KabelEinsDoku,kabel1doku)\
TPL_TV($SELF,prime,AnimalPlanet,animalplanet)\
TPL_TV($SELF,prime,NatGeoHD,natgeo)\
TPL_TV($SELF,prime,TLC,tlc)\
TPL_TV($SELF,prime,AandE,ae)\


setstate doif_TEST cmd_2
setstate doif_TEST 2020-06-15 07:40:32 block_02 executed
setstate doif_TEST 2020-06-15 07:52:17 block_init executed
setstate doif_TEST 2020-06-14 20:28:50 cmd 2
setstate doif_TEST 2020-06-14 20:28:50 cmd_event set_cmd_2
setstate doif_TEST 2020-06-14 20:28:50 cmd_nr 2
setstate doif_TEST 2020-06-14 20:25:32 mode enabled
setstate doif_TEST 2020-06-15 07:40:42 next_13thStreet_000_bdate 2020-06-15
setstate doif_TEST 2020-06-15 07:40:42 next_13thStreet_000_btime 07:15:00
setstate doif_TEST 2020-06-15 07:40:42 next_13thStreet_000_desc In Johannesburg sind die amerikanischen Brüder Timothy und Brandon verschwunden die in den Semesterferien in der Bar ihrer Tante gearbeitet hatten. Timothy wird tot und nach einem Brauch der Zulu verstümmelt aufgefunden. Kurz zuvor war es schon einer jungen Frau genauso ergangen. Dem IRT wird eine Spezialeinheit der südafrikanischen Armee und die Profilerin Doshi zur Seite gestellt.<br>Laura Belsey<br>Gary Sinise<br>Alana De La Garza<br>Daniel Henney<br>Tyler James Williams<br>Annie Funke<br>Arnold Vosloo<br>Mykelti Williamson<br>Bahni Turpin<br>Cliff Simon<br>Brenda Bakke<br>Dayo Ade<br>Austin M. James<br>Musetta Vander<br>Sean Michael<br>Skyler Seymour<br>Garikayi Mutambirwa<br>Jacqueline Jandrell<br>Mike Falkow<br>Kegn Matungulu
setstate doif_TEST 2020-06-15 07:40:42 next_13thStreet_000_stitle Mord verjährt nicht (2016) [16+]
setstate doif_TEST 2020-06-15 07:40:42 next_13thStreet_000_title Criminal Minds: Beyond Borders
setstate doif_TEST 2020-06-15 07:40:42 next_13thStreet_001_bdate 2020-06-15
setstate doif_TEST 2020-06-15 07:40:42 next_13thStreet_001_btime 08:00:00
setstate doif_TEST 2020-06-15 07:40:42 next_13thStreet_001_desc Kristin erlitt eine Fehlgeburt und wurde von ihrem Mann verlassen. Trotz dieser traumatischen Erlebnisse werden sie und ihre beste Freundin Ashley fast gleichzeitig schwanger. Eine Woche nach der Geburt ihres Kindes stirbt Ashley bei einem Autounfall das Neugeborene bleibt unauffindbar. Als auch Kristin verschwindet befürchtet Ashleys Mann Brian dass Kristin hinter Ashleys Tod steckt.<br>Michael Feifer<br>Kaitlyn Black<br>David Gallagher<br>Vanessa Evigan<br>Alexandra Paul<br>Mark Famiglietti<br>Caia Coley<br>Betsy Russell<br>Ardeshir Radpour<br>Emily Branum<br>Mark Hapka<br>Samm Enman<br>Camille Balsamo<br>Shawn Tira<br>Sharon M. Bell<br>Duke Van Patten<br>Penny Dill<br>Siena Milian<br>Maverick Murray Adcox<br>Marc Abbink
setstate doif_TEST 2020-06-15 07:40:42 next_13thStreet_001_stitle (Born and Missing) (2017) [12+]
setstate doif_TEST 2020-06-15 07:40:42 next_13thStreet_001_title Das Baby meiner toten Freundin
setstate doif_TEST 2020-06-15 07:40:42 next_13thStreet_002_bdate 2020-06-15
setstate doif_TEST 2020-06-15 07:40:42 next_13thStreet_002_btime 09:35:00
setstate doif_TEST 2020-06-15 07:40:43 next_13thStreet_002_desc Ein allseits beliebter Hausmeister wird erschossen. Es gibt keine sichtbaren Beweise und kein Motiv. Die einzige Besonderheit an dem Fall ist dass der Mörder handgefertigte Kugeln benutzte die Quecksilber enthalten. Die Polizisten müssen bei diesem Fall die Hilfe eines in die Jahre gekommenen Gauners in Anspruch nehmen.<br>Christopher Misiano<br>Jerry Orbach<br>Benjamin Bratt<br>Sam Waterston<br>Steven Hill<br>S. Epatha Merkerson<br>Mark Bateman<br>Carey Lowell<br>John Bedford Lloyd<br>Tom ORourke<br>Richard Hamilton<br>E. Katherine Kerr<br>Dan Ziskie<br>Jennifer Van Dyck<br>Vivienne Benesch<br>Randle Mell<br>Victor Anthony<br>Larry Attile<br>D.C. Benny<br>Susan Blommaert
setstate doif_TEST 2020-06-15 07:40:42 next_13thStreet_002_stitle Leitfaden für Attentäter (1996) [18+]
setstate doif_TEST 2020-06-15 07:40:42 next_13thStreet_002_title Law &amp Order
setstate doif_TEST 2020-06-15 07:40:32 next_3sat_000_bdate 2020-06-15
setstate doif_TEST 2020-06-15 07:40:32 next_3sat_000_btime 07:30:00
setstate doif_TEST 2020-06-15 07:40:33 next_3sat_000_desc Alpenpanorama zeigt über zahlreiche Web- und Panoramakameras täglich Livebilder aus ausgewählten Urlaubsorten.Die Sendung informiert auch über Temperatur- und Wetterbedingungen vor Ort
setstate doif_TEST 2020-06-15 07:40:32 next_3sat_000_stitle Kamerafahrt
setstate doif_TEST 2020-06-15 07:40:32 next_3sat_000_title Alpenpanorama
setstate doif_TEST 2020-06-15 07:40:33 next_3sat_001_bdate 2020-06-15
setstate doif_TEST 2020-06-15 07:40:33 next_3sat_001_btime 08:00:00
setstate doif_TEST 2020-06-15 07:40:33 next_3sat_001_desc Die Früh-ZIB informiert von Montag bis Freitag über das aktuelle Geschehen aus Innen- und Außenpolitik, Wirtschaft, Wissenschaft, Kultur und Chronik.Reportagen und Hintergrundberichte vertiefen das Verständnis der aktuellen Ereignisse
setstate doif_TEST 2020-06-15 07:40:33 next_3sat_001_stitle Nachrichten
setstate doif_TEST 2020-06-15 07:40:33 next_3sat_001_title ZIB
setstate doif_TEST 2020-06-15 07:40:33 next_3sat_002_bdate 2020-06-15
setstate doif_TEST 2020-06-15 07:40:33 next_3sat_002_btime 08:05:00
setstate doif_TEST 2020-06-15 07:40:33 next_3sat_002_desc Alpenpanorama zeigt über zahlreiche Web- und Panoramakameras täglich Livebilder aus ausgewählten Urlaubsorten.Die Sendung informiert auch über Temperatur- und Wetterbedingungen vor Ort
setstate doif_TEST 2020-06-15 07:40:33 next_3sat_002_stitle Kamerafahrt
setstate doif_TEST 2020-06-15 07:40:33 next_3sat_002_title Alpenpanorama
setstate doif_TEST 2020-06-15 05:40:40 next_ARD_000_bdate 2020-06-15
setstate doif_TEST 2020-06-15 05:40:40 next_ARD_000_btime 05:30:00
setstate doif_TEST 2020-06-15 05:40:41 next_ARD_000_desc Das ZDF-Morgenmagazin - der Blick in den Tag mit aktuellen hintergründigen Berichten und Gesprächen aus Politik Wirtschaft Sport und Kultur. Live aus dem ZDF-Hauptstadtstudio. Halbstündlich informiert die heute Xpress aus Mainz. Hinzu kommen Service-Beiträge mit Verbrauchertipps. Im Moma-Café treten Musiker live vor Publikum auf
setstate doif_TEST 2020-06-15 05:40:40 next_ARD_000_stitle [Frühmagazin, Infomagazin]
setstate doif_TEST 2020-06-15 05:40:40 next_ARD_000_title ZDF-Morgenmagazin
setstate doif_TEST 2020-06-15 05:40:41 next_ARD_001_bdate 2020-06-15
setstate doif_TEST 2020-06-15 05:40:41 next_ARD_001_btime 09:00:00
setstate doif_TEST 2020-06-15 05:40:41 next_ARD_001_desc Aktuelle Themen aus Politik Wirtschaft Kultur Sport Gesellschaft und Wissenschaft aus dem In- und Ausland werden in ausführlichen Hintergrundberichten beleuchtet. In Stellungnahmen und Meinungsäusserungen wird auch unterschiedlichne Standpunkten Raum gegeben
setstate doif_TEST 2020-06-15 05:40:41 next_ARD_001_stitle Mit Wetter
setstate doif_TEST 2020-06-15 05:40:41 next_ARD_001_title Tagesschau
setstate doif_TEST 2020-06-15 05:40:41 next_ARD_002_bdate 2020-06-15
setstate doif_TEST 2020-06-15 05:40:41 next_ARD_002_btime 09:05:00
setstate doif_TEST 2020-06-15 05:40:41 next_ARD_002_desc Das Vormittagsformat geht raus ins Leben Mit Live-Schalten zu den Menschen auf dem Land und in den Städten – immer auf der Suche nach Alltagshelden und Anpackern Menschen die unser Land am Laufen halten
setstate doif_TEST 2020-06-15 05:40:41 next_ARD_002_stitle [Magazin, Infomagazin] Raus ins Leben
setstate doif_TEST 2020-06-15 05:40:41 next_ARD_002_title Live nach Neun
setstate doif_TEST 2020-06-15 07:40:43 next_AXN_000_bdate 2020-06-15
setstate doif_TEST 2020-06-15 07:40:43 next_AXN_000_btime 07:30:00
setstate doif_TEST 2020-06-15 07:40:44 next_AXN_000_desc Jean-Marc Brouillard kehrt zur Wache 19 zurück und nimmt dort seine Rolle als Gewerkschaftsvertreter wieder auf. Das ist auch dringend notwendig da die Provinzregierung beschlossen hat die Renten im öffentlichen Sektor drastisch zu beschneiden. Dagegen will sich die Einheit zur Wehr setzen. Ben Chartier sieht sich währenddessen zu einer erneuten Konfrontation mit seiner Familie gezwungen.<br>Daniel Grou<br>Benz Antoine<br>Krista Bridges<br>Mikael Conde<br>Alexander De Jordy<br>Mylène Dinh-Robic<br>Marianne Farley<br>Juliette Gosselin<br>Adrian Holmes<br>Tattiawna Jones<br>Jared Keeso<br>Darcy Laurie<br>Laurence Leboeuf<br>Neil Napier<br>Dan Petronijevic<br>Joe Pingue<br>Bruce Ramsay<br>Chris Sandiford<br>Linda Smith<br>Vlasta Vrana
setstate doif_TEST 2020-06-15 07:40:44 next_AXN_000_stitle Demonstration (2016) [16+]
setstate doif_TEST 2020-06-15 07:40:43 next_AXN_000_title 19-2
setstate doif_TEST 2020-06-15 07:40:44 next_AXN_001_bdate 2020-06-15
setstate doif_TEST 2020-06-15 07:40:44 next_AXN_001_btime 08:20:00
setstate doif_TEST 2020-06-15 07:40:44 next_AXN_001_desc Bens familiäre Situation verschlechtert sich weiterhin während Nick nicht aufhört nach dem Mörder seines Cousins zu suchen - er findet den angeblichen Mörder schliesslich in einem Striplokal. Martine erkennt ihn nicht wieder wohl aber dessen Begleiter...<br>Daniel Grou<br>Benz Antoine<br>Krista Bridges<br>Sabrina Campilii<br>Alexander De Jordy<br>Mylène Dinh-Robic<br>Juliette Gosselin<br>Samantha Hodhod<br>Adrian Holmes<br>Tattiawna Jones<br>Jared Keeso<br>Darcy Laurie<br>Laurence Leboeuf<br>Neil Napier<br>Dan Petronijevic<br>Joe Pingue<br>Bruce Ramsay<br>Linda Smith<br>Vlasta Vrana
setstate doif_TEST 2020-06-15 07:40:44 next_AXN_001_stitle Verschwunden (2016) [16+]
setstate doif_TEST 2020-06-15 07:40:44 next_AXN_001_title 19-2
setstate doif_TEST 2020-06-15 07:40:44 next_AXN_002_bdate 2020-06-15
setstate doif_TEST 2020-06-15 07:40:44 next_AXN_002_btime 09:10:00
setstate doif_TEST 2020-06-15 07:40:44 next_AXN_002_desc Albert und seine Freunde haben weder Gold noch Geld als sie sich auf den Weg zurück zum Haus von Norman machen. Kurz nachdem sie dort angekommen sind geben sich Albert und Vic gegenseitig die Schuld an ihrer misslichen Lage. Lily gelingt es den Streitereien ein Ende zu bereiten. Dann hat Albert eine Idee woraufhin er mit seinen Freunden und Vics Gang gemeinsam einen Plan schmiedet.<br>Nicholas Renton<br>Rupert Grint<br>Luke Pasqualino<br>Lucien Laviscount<br>Marc Warren<br>Stephanie Leonidas<br>Phoebe Dynevor<br>Juliet Aubrey<br>Tamer Hassan<br>Dougray Scott<br>Claire Cooper<br>Russ Bain<br>Vincent Regan<br>Johann Myers<br>Ian Gelder<br>Duncan Watkinson<br>Tarrick Benham
setstate doif_TEST 2020-06-15 07:40:44 next_AXN_002_stitle Goldrausch (2017) [16+]
setstate doif_TEST 2020-06-15 07:40:44 next_AXN_002_title Snatch
setstate doif_TEST 2020-06-15 07:40:39 next_AandE_000_bdate 2020-06-15
setstate doif_TEST 2020-06-15 07:40:39 next_AandE_000_btime 07:35:00
setstate doif_TEST 2020-06-15 07:40:39 next_AandE_000_desc na
setstate doif_TEST 2020-06-15 07:40:39 next_AandE_000_stitle (Live Rescue)Alligatoren-Rettung in Florida (2018) [12+]
setstate doif_TEST 2020-06-15 07:40:39 next_AandE_000_title Live Rescue - Immer im Einsatz
setstate doif_TEST 2020-06-15 07:40:39 next_AandE_001_bdate 2020-06-15
setstate doif_TEST 2020-06-15 07:40:39 next_AandE_001_btime 08:00:00
setstate doif_TEST 2020-06-15 07:40:39 next_AandE_001_desc Mord scheint die geschäftliche Basis aller Aktivitäten der Mafia zu sein. Dies ist das Ergebnis einer Analyse bislang geheim gehaltener Akten des FBI. Die Fahnder haben nun ihre Archive geöffnet um deutlich zu machen dass die Mafia hinter zahllosen lange unaufgeklärten Todesfällen steckt. In dieser Episode berichten sie vom Aufstieg und Fall des Chicagoer Mafioso Sam Momo Giancana.<br>Martin Hughes<br>Sam Giancana<br>Fabio Vassallo.
setstate doif_TEST 2020-06-15 07:40:39 next_AandE_001_stitle [Dokumentation, Zeitgeschichte]  (Mafias Greatest Hits)Der Strippenzieher: Sam Giancana (langeunaufgeklärtenTodesfällensteckt.IndieserEberichtensievomAufstiegu
setstate doif_TEST 2020-06-15 07:40:39 next_AandE_001_title Im Netz der Mafia - Die Geheimakten des FBI
setstate doif_TEST 2020-06-15 07:40:39 next_AandE_002_bdate 2020-06-15
setstate doif_TEST 2020-06-15 07:40:39 next_AandE_002_btime 08:50:00
setstate doif_TEST 2020-06-15 07:40:40 next_AandE_002_desc Mord scheint die geschäftliche Basis aller Aktivitäten der Mafia zu sein. Dies ist das Ergebnis einer Analyse bislang geheim gehaltener Akten des FBI. Die Fahnder haben ihre Archive geöffnet um deutlich zu machen dass die Mafia hinter zahllosen lange unaufgeklärten Todesfällen steckt. Die Reihe lässt nun die FBI-Agenten zu Wort kommen die die Morde des organisierten Verbrechens aufdeckten.
setstate doif_TEST 2020-06-15 07:40:40 next_AandE_002_stitle [Dokumentation, Zeitgeschichte]  (Mafias Greatest Hits)Der Reformer - Lucky Luciano (2012) [12+]
setstate doif_TEST 2020-06-15 07:40:40 next_AandE_002_title Im Netz der Mafia - Die Geheimakten des FBI
setstate doif_TEST 2020-06-15 07:40:40 next_AnimalPlanet_000_bdate 2020-06-15
setstate doif_TEST 2020-06-15 07:40:40 next_AnimalPlanet_000_btime 07:15:00
setstate doif_TEST 2020-06-15 07:40:40 next_AnimalPlanet_000_desc Katzen sind dafür bekannt, dass sie gerne mal ungefragt um die Häuser stromern. Aber Princess Utah ist schon ein besonderer Fall. Der abtrünnige Stubentiger war immerhin für anderthalb Jahre verschwunden! Jetzt ist die Samtpfote wieder zurück zuhause, allerdings schwer verletzt. Kann das mehrfach gebrochene Bein des Rumtreibers noch gerettet werden? Oder bleibt am Ende nur die Amputation? Tierärztin Dr. Petra Young steht vor einer schwierigen Entscheidung. Außerdem in dieser Folge: Hausschwein Winnie muss unters Messer und Labrador Charlie hat den Werkzeuggürtel seines Besitzers verputzt. Jetzt befürchtet Dr. Jeff eine lebensbedrohliche Metallvergiftung bei dem gefräßigen Rüden
setstate doif_TEST 2020-06-15 07:40:40 next_AnimalPlanet_000_stitle Reality-Soap
setstate doif_TEST 2020-06-15 07:40:40 next_AnimalPlanet_000_title Tierarzt Dr. Jeff - Der Rocky Mountain Doc: Episode 35
setstate doif_TEST 2020-06-15 07:40:40 next_AnimalPlanet_001_bdate 2020-06-15
setstate doif_TEST 2020-06-15 07:40:40 next_AnimalPlanet_001_btime 08:00:00
setstate doif_TEST 2020-06-15 07:40:40 next_AnimalPlanet_001_desc Das Tierarzt-Team aus Denver startet zu einem abenteuerlichen Auslandseinsatz. Im mexikanischen Bundesstaat Yucatan bieten die Veterinäre kostenlose Behandlungen an. Entsprechend groß ist der Andrang, und die Reise mutiert zum reinsten Sterilisierungsmarathon. Für Managerin Melody ist es der erste Trip in das lateinamerikanische Land. Prompt wird sie ins kalte Wasser geworfen: In einem Hinterhof soll die gelernte Tierarztassistentin eine Horde herrenloser Katzen zähmen. Gemeinsam mit Dr. Andrés versucht sie die Unruhestifter zu bändigen - keine Chance! Später besucht Dr. Jeff ein Maya-Dorf in der Nähe von Valladolid. Doch die Wachhunde hier haben noch nie einen Tierarzt aus der Nähe gesehen
setstate doif_TEST 2020-06-15 07:40:40 next_AnimalPlanet_001_stitle Reality-Soap
setstate doif_TEST 2020-06-15 07:40:40 next_AnimalPlanet_001_title Tierarzt Dr. Jeff - Der Rocky Mountain Doc: Into the Jungle
setstate doif_TEST 2020-06-15 07:40:40 next_AnimalPlanet_002_bdate 2020-06-15
setstate doif_TEST 2020-06-15 07:40:40 next_AnimalPlanet_002_btime 08:45:00
setstate doif_TEST 2020-06-15 07:40:40 next_AnimalPlanet_002_desc Dr. Jeff Young ist immer dann zur Stelle, wenn Tiere in Not geraten, oder sich ihre Besitzer keinen Besuch beim Veterinär leisten können. Letzteres ist in South Dakota der Fall. Das Indianer-Reservat Rosebud wurde bereits vor über 120 Jahren gegründet und zählt heute zu den ärmsten Gebieten des Landes. Da die Menschen schlichtweg kein Geld für teure Tierarztrechnungen haben, bietet Dr. Jeff seine Behandlungen zum Nulltarif an. Ein Segen für die Lakota-Sioux-Gemeinde, die gemeinsam mit den Helfern ein Gebet zum Himmel schickt, bevor es an die Arbeit geht. Außerdem in dieser Episode: Bergkatze Nala hat ein ernstes Pfotenproblem und ein übergroßes Opossum hält die Tierärzte in Denver auf Trab
setstate doif_TEST 2020-06-15 07:40:40 next_AnimalPlanet_002_stitle Reality-Soap
setstate doif_TEST 2020-06-15 07:40:40 next_AnimalPlanet_002_title Tierarzt Dr. Jeff - Der Rocky Mountain Doc: The Dog Who Won Jeffs Heart
setstate doif_TEST 2020-06-15 06:55:32 next_DMax_000_bdate 2020-06-15
setstate doif_TEST 2020-06-15 06:55:32 next_DMax_000_btime 06:50:00
setstate doif_TEST 2020-06-15 06:55:33 next_DMax_000_desc Das TV-Shopping Erlebnis bietet innovative, qualitativ hochwertige Produkte die den Alltag erleichtern zu einem sehr attraktiven Preis. Innovationen aus aller Welt werden zu einem unterhaltsamen Einkaufserlebnis. Das umfassende Produktportfolio beinhaltet die neuesten Produkte aus den Bereichen: Küche, Haushalt, Freizeit, Fitness, Wellness und Beauty. Die im Fernsehen gezeigten Produkte können telefonisch und auf der Website des Anbieters bestellt werden
setstate doif_TEST 2020-06-15 06:55:33 next_DMax_000_stitle Werbesendung
setstate doif_TEST 2020-06-15 06:55:32 next_DMax_000_title Infomercial
setstate doif_TEST 2020-06-15 06:55:33 next_DMax_001_bdate 2020-06-15
setstate doif_TEST 2020-06-15 06:55:33 next_DMax_001_btime 08:50:00
setstate doif_TEST 2020-06-15 06:55:33 next_DMax_001_desc In dieser Episode von Hardcore Pawn wird einer Kundin im American Jewelry and Loan die 90-Tage-Frist zum Verhängnis. Werden verpfändete Wertgegenstände nach dieser vereinbarten Frist nicht abgeholt, geben Les Gold und seine Angestellten die Ware zum Verkauf frei, und der Besitzer hat keinen Anspruch auf Rückerstattung. Die Geschäftsbedingungen sind der betreffenden Dame durchaus bekannt, trotzdem macht sie im Laden heftig Krawall
setstate doif_TEST 2020-06-15 06:55:33 next_DMax_001_stitle Doku-Soap
setstate doif_TEST 2020-06-15 06:55:33 next_DMax_001_title Hardcore Pawn - Das härteste Pfandhaus Detroits: Episode 9
setstate doif_TEST 2020-06-15 06:55:33 next_DMax_002_bdate 2020-06-15
setstate doif_TEST 2020-06-15 06:55:33 next_DMax_002_btime 09:20:00
setstate doif_TEST 2020-06-15 06:55:33 next_DMax_002_desc Eine Kunde möchte im American Jewelry and Loan ein Akkordeon zu Geld machen. Doch das Musikinstrument befindet sich in miserablem Zustand, deshalb kann ihm Les Gold nicht den gewünschten Betrag ausbezahlen. Der Mann scheint sich in einer akuten finanziellen Notlage zu befinden, deshalb bietet er den Pfandleihern anschließend sogar seine Prothese an. Doch auch diese ist leider nicht viel wert
setstate doif_TEST 2020-06-15 06:55:33 next_DMax_002_stitle Doku-Soap
setstate doif_TEST 2020-06-15 06:55:33 next_DMax_002_title Hardcore Pawn - Das härteste Pfandhaus Detroits: Episode 10
setstate doif_TEST 2020-06-15 07:40:43 next_History_000_bdate 2020-06-15
setstate doif_TEST 2020-06-15 07:40:43 next_History_000_btime 07:15:00
setstate doif_TEST 2020-06-15 07:40:43 next_History_000_desc Der Autor Seifer der Astrophysiker Taylor und der Journalist Stapleton wollten das Rätsel um den Tod des Erfinders Tesla entschlüsseln. Stapleton und Taylor untersuchten eine Verbindung zwischen Teslas letztem Patent und einem der fortschrittlichsten Flugzeuge der Air Force. Schliesslich stellten sie einen Zusammenhang zwischen dem Wardenclyffe Tower und dem Hotel The New Yorker fest
setstate doif_TEST 2020-06-15 07:40:43 next_History_000_stitle [Doku-Serie]  (The Tesla Files)Militärischer Nutzen (2018) [12+]
setstate doif_TEST 2020-06-15 07:40:43 next_History_000_title Das Tesla-Vermächtnis
setstate doif_TEST 2020-06-15 07:40:43 next_History_001_bdate 2020-06-15
setstate doif_TEST 2020-06-15 07:40:43 next_History_001_btime 08:00:00
setstate doif_TEST 2020-06-15 07:40:43 next_History_001_desc Der österreichische Oscar-Preisträger Maximilian Schell erzählt von dem Aufstieg und dem Fall der europäischen Ritter. Die gepanzerten Kämpfer waren zu ihrer Zeit die Helden des Mittelalters furchtlose Kämpfer für Kaiser und Kirche kurzum die militärische Elite des Abendlandes. Die Ritter wurden in den Krieg gegen moslemische Glaubenskämpfer geschickt die den Islam in die Welt tragen wollten
setstate doif_TEST 2020-06-15 07:40:43 next_History_001_stitle [Doku-Serie] Der letzte Kampf der Ritter (2011) [12+]
setstate doif_TEST 2020-06-15 07:40:43 next_History_001_title Imperium
setstate doif_TEST 2020-06-15 07:40:43 next_History_002_bdate 2020-06-15
setstate doif_TEST 2020-06-15 07:40:43 next_History_002_btime 08:45:00
setstate doif_TEST 2020-06-15 07:40:43 next_History_002_desc Der Oscar-Preisträger Maximilian Schell stellt so berüchtigte Seeräuber wie Sir Francis Drake Blackbeard William Kidd und Olivier Levasseur vor furchtlose Piraten die im 16. und 17. Jahrhundert zu Recht von Schiffsreisenden gefürchtet wurden. Die legendären Schatzräuber waren aber oftmals im Namen einer Majestät unterwegs um die beladenen Handelsschiffe der politischen Gegener zu kapern
setstate doif_TEST 2020-06-15 07:40:43 next_History_002_stitle [Doku-Serie] Das Gold der Piraten (2011) [12+]
setstate doif_TEST 2020-06-15 07:40:43 next_History_002_title Imperium
setstate doif_TEST 2020-06-15 07:10:34 next_KabelEinsClassic_000_bdate 2020-06-15
setstate doif_TEST 2020-06-15 07:10:34 next_KabelEinsClassic_000_btime 07:10:00
setstate doif_TEST 2020-06-15 07:10:34 next_KabelEinsClassic_000_desc Einst teilten sich die Menschen mit mächtigen Göttern des Tierreichs die Erde. Doch das friedliche Zusammensein findet ein jähes Ende, als die Menschen versuchen, sich immer mehr Lebensraum der Tiere anzueignen. Ein erbitterter Kampf entsteht, dessen Folgen unter anderem ein junger Prinz namens Ashitaka tragen muss. Er wurde mit einem tödlichen Fluch belegt und muss nun auf Hilfe des Waldgottes hoffen, wenn er überleben will. Das von Wölfen adoptierte Mädchen San hilft ihm dabei
setstate doif_TEST 2020-06-15 07:10:34 next_KabelEinsClassic_000_stitle Animefilm
setstate doif_TEST 2020-06-15 07:10:34 next_KabelEinsClassic_000_title Prinzessin Mononoke
setstate doif_TEST 2020-06-15 07:10:34 next_KabelEinsClassic_001_bdate 2020-06-15
setstate doif_TEST 2020-06-15 07:10:34 next_KabelEinsClassic_001_btime 09:20:00
setstate doif_TEST 2020-06-15 07:10:34 next_KabelEinsClassic_001_desc Wer bin ich? - Mit diesem Aufsatzthema lässt Rektor Vernon fünf seiner missratenen Schüler an einem Samstagmorgen in der Bibliothek zum Nachsitzen zurück. Brian, John, Andrew, Claire und Allison sind grundverschieden und alles andere als Freunde, doch eingepfercht in der Institution, die sie auf das wahre Leben vorbereiten soll, lernen sie einander kennen, ihre Ängste, Probleme und ihre Sehnsüchte. Doch wird das, was die jungen Erwachsenen an diesem Samstag verbindet, andauern
setstate doif_TEST 2020-06-15 07:10:34 next_KabelEinsClassic_001_stitle Drama
setstate doif_TEST 2020-06-15 07:10:34 next_KabelEinsClassic_001_title Breakfast Club - Der Frühstücksclub
setstate doif_TEST 2020-06-15 07:10:35 next_KabelEinsClassic_002_bdate 2020-06-15
setstate doif_TEST 2020-06-15 07:10:35 next_KabelEinsClassic_002_btime 10:55:00
setstate doif_TEST 2020-06-15 07:10:35 next_KabelEinsClassic_002_desc Psychodrama nach einer wahren Begebenheit: Die Hausfrau und fürsorgliche Mutter Peggy Blankenship wird mit über 40 Axthieben brutal ermordet. Bereits nach kurzer Zeit steht fest, dass eine Bekannte der Familie, Candy Morrison, die Täterin ist. Alles deutet auf ein entsetzliches Verbrechen hin, jedoch plädiert Morrison auf Notwehr. Nun liegt ihr Schicksal in den Händen der Jury .
setstate doif_TEST 2020-06-15 07:10:35 next_KabelEinsClassic_002_stitle Kriminalfilm
setstate doif_TEST 2020-06-15 07:10:35 next_KabelEinsClassic_002_title Die Axtmörderin
setstate doif_TEST 2020-06-15 07:40:33 next_KabelEinsDoku_000_bdate 2020-06-15
setstate doif_TEST 2020-06-15 07:40:33 next_KabelEinsDoku_000_btime 07:00:00
setstate doif_TEST 2020-06-15 07:40:33 next_KabelEinsDoku_000_desc Die Doku-Reihe begleitet ein Familienbusiness von Transportspezialisten mit einer anspruchsvollen Aufgabe: dem Transport der weltweit schwersten, längsten und wertvollsten Züge und Lokomotiven
setstate doif_TEST 2020-06-15 07:40:33 next_KabelEinsDoku_000_stitle Reality-Soap
setstate doif_TEST 2020-06-15 07:40:33 next_KabelEinsDoku_000_title Mission Schwertransport - Züge: Der gigantische Kran
setstate doif_TEST 2020-06-15 07:40:33 next_KabelEinsDoku_001_bdate 2020-06-15
setstate doif_TEST 2020-06-15 07:40:33 next_KabelEinsDoku_001_btime 07:45:00
setstate doif_TEST 2020-06-15 07:40:34 next_KabelEinsDoku_001_desc Die Doku-Reihe begleitet ein Familienbusiness von Transportspezialisten mit einer anspruchsvollen Aufgabe: dem Transport der weltweit schwersten, längsten und wertvollsten Züge und Lokomotiven
setstate doif_TEST 2020-06-15 07:40:33 next_KabelEinsDoku_001_stitle Reality-Soap
setstate doif_TEST 2020-06-15 07:40:33 next_KabelEinsDoku_001_title Mission Schwertransport - Züge: Hochgeschwindigkeitszug
setstate doif_TEST 2020-06-15 07:40:34 next_KabelEinsDoku_002_bdate 2020-06-15
setstate doif_TEST 2020-06-15 07:40:34 next_KabelEinsDoku_002_btime 08:35:00
setstate doif_TEST 2020-06-15 07:40:34 next_KabelEinsDoku_002_desc Die Crew transportiert heute eine gigantische Gleisbaumaschine über Land- und Seewege sowie einen tonnenschweren Dieselmotor quer durch die Republik
setstate doif_TEST 2020-06-15 07:40:34 next_KabelEinsDoku_002_stitle Reality-Soap
setstate doif_TEST 2020-06-15 07:40:34 next_KabelEinsDoku_002_title Mission Schwertransport - Züge: Die Gleisbaumaschine auf Reisen
setstate doif_TEST 2020-06-15 07:25:33 next_Kabel_000_bdate 2020-06-15
setstate doif_TEST 2020-06-15 07:25:33 next_Kabel_000_btime 06:55:00
setstate doif_TEST 2020-06-15 07:25:33 next_Kabel_000_desc Laura Ingalls hat sich Hals über Kopf in ihren wesentlich älteren Mitschüler Johnny Johnson verliebt. Obwohl Johnny sie in keiner Weise ermutigt, versucht Laura alles, um ihren Schwarm auf sich aufmerksam zu machen. Doch Johnny interessiert sich mehr für eine andere - und das ist ausgerechnet Lauras Schwester Mary. Schließlich bittet Johnny Mary darum, ihm Nachhilfeunterricht im Lesen und Schreiben zu geben. Zwischen den Schwestern kommt es zu einer heftigen Krise
setstate doif_TEST 2020-06-15 07:25:33 next_Kabel_000_stitle Familienserie
setstate doif_TEST 2020-06-15 07:25:33 next_Kabel_000_title Unsere kleine Farm: Erste Liebe
setstate doif_TEST 2020-06-15 07:25:33 next_Kabel_001_bdate 2020-06-15
setstate doif_TEST 2020-06-15 07:25:33 next_Kabel_001_btime 07:55:00
setstate doif_TEST 2020-06-15 07:25:34 next_Kabel_001_desc Der Mord an einem Diplomaten führt Sam und Callen nach Mexico: Der ehemalige Killer Tuhon, mit dem es das Duo in seinem allerersten Fall zu tun hatte, soll in das Verbrechen verwickelt sein. Nun gilt es, den Mann aufzuspüren und herauszufinden, inwieweit er wirklich in die Sache involviert ist. Unterdessen versucht Kensi in Afghanistan immer noch aufzuklären, was es mit White Ghost auf sich hat
setstate doif_TEST 2020-06-15 07:25:34 next_Kabel_001_stitle Krimiserie
setstate doif_TEST 2020-06-15 07:25:34 next_Kabel_001_title Navy CIS: L.A.: Tuhon
setstate doif_TEST 2020-06-15 07:25:34 next_Kabel_002_bdate 2020-06-15
setstate doif_TEST 2020-06-15 07:25:34 next_Kabel_002_btime 08:45:00
setstate doif_TEST 2020-06-15 07:25:34 next_Kabel_002_desc Auf einem Schiff der Navy wird der zuständige Mannschaftsarzt tot aufgefunden. Während des Verhörs der Crew macht McGee eine unliebsame Entdeckung: Sein Vater, Admiral McGee, ist ebenfalls Mitglied der Besatzung und strebt eine politische Karriere in Washington an. Da das gemeinsame Verhör nicht gut läuft, nimmt Gibbs McGee Senior zur Seite und erfährt, dass er Krebs im Endstadium hat, wovon der tote Arzt wusste. Wurde ihm das zum Verhängnis
setstate doif_TEST 2020-06-15 07:25:34 next_Kabel_002_stitle Krimiserie
setstate doif_TEST 2020-06-15 07:25:34 next_Kabel_002_title Navy CIS: Die weiße Bö
setstate doif_TEST 2020-06-15 07:40:40 next_Kinowelt_000_bdate 2020-06-15
setstate doif_TEST 2020-06-15 07:40:41 next_Kinowelt_000_btime 07:20:00
setstate doif_TEST 2020-06-15 07:40:41 next_Kinowelt_000_desc Spezialpreis der Jury, Cannes Nominiert für die Goldene Palme, Cannes Die junge Vittoria verlässt ihren Freund Riccardo nach einer langen Nacht im Streit. Vittoria sehnt sich nach wahrer Liebe. Als sie ihre Mutter, die sich als Spekulantin an der römischen Börse, versucht besucht, begegnet Vittoria dem attraktiven Spekulanten Piero. Langsam kommen sie sich näher. Aber sind beide fähig, das Wagnis der Liebe einzugehen? Michelangelo Antonionis Melodrama erzählt von der Unfähigkeit zu lieben. In starken, symbolisch aufgeladenen Bildern durchleben Alain Delon und Monica Vitti die ganze Brüchigkeit menschlicher Beziehungen. In Cannes wurde der Film mit dem Sonderpreis der Jury ausgezeichnet. Am Beispiel eines aus kleinen Verhältnissen stammenden römischen Mädchens, das zwischen zwei Männern steht, greift Michelangelo Antonioni das Thema der Kontaktlosigkeit und Liebesunfähigkeit des modernen Menschen auf. (Quelle: VideoMarkt) kino-zeit.de schreibt: Das, was hier unaussprechlich transportiert wird, lässt sich schwerlich in Verbales übersetzen, so dass eine ausgesprochen eindringliche Macht der Bilder und Bewegungen entsteht, die Michelangelo Antonioni als wahres Regie-Talent auszeichnen, das damit die Verfinsterungen der Liebe äußerst ansprechend visualisiert hat
setstate doif_TEST 2020-06-15 07:40:41 next_Kinowelt_000_stitle Liebesfilm
setstate doif_TEST 2020-06-15 07:40:41 next_Kinowelt_000_title Liebe 1962
setstate doif_TEST 2020-06-15 07:40:41 next_Kinowelt_001_bdate 2020-06-15
setstate doif_TEST 2020-06-15 07:40:41 next_Kinowelt_001_btime 09:20:00
setstate doif_TEST 2020-06-15 07:40:41 next_Kinowelt_001_desc Nachdem Michael Faraday seine Frau bei einem FBI-Einsatz verloren hat, versucht er trotz seiner obsessiven Beschäftigung mit Terrorismus mit seinem Sohn ein normales Leben zu führen. Dabei helfen könnte ihm auch die Freundschaft zum neuen Nachbar Oliver Lang. Der aber verfolgt Pläne, die nicht nur für Faraday verhängnisvolle Folgen haben könnten. Terror is coming home! Und er nistet sich direkt in der Nachbarschaft einer ganz normalen US-Familie ein. Bereits vor 9/11, 24 und Homeland hat die Terrorparanoia tiefe Wunden ins amerikanische Sozialgefüge gerissen und im sensationell spannenden Thriller von Mark Pellington stargespickten und verstörenden Ausdruck gefunden
setstate doif_TEST 2020-06-15 07:40:41 next_Kinowelt_001_stitle Psychothriller
setstate doif_TEST 2020-06-15 07:40:41 next_Kinowelt_001_title Arlington Road
setstate doif_TEST 2020-06-15 07:40:41 next_Kinowelt_002_bdate 2020-06-15
setstate doif_TEST 2020-06-15 07:40:41 next_Kinowelt_002_btime 11:15:00
setstate doif_TEST 2020-06-15 07:40:41 next_Kinowelt_002_desc Hollywoods Best Film Directors erzählt die Geschichten der herausragendsten Regisseure der letzten Jahrzehnte und offenbart das Geheimnis ihres Erfolgs! In dieser Episode geht es auf einen Trip in den hochintelligenten und kreativen Kopf von Danny Boyle. Durch seinen Kultklassiker Trainspotting mit Ewan McGregor wurde er 1996 mit einem Schlag berühmt. Danach fuhr er mit Leonardo DiCaprio für The Beach ins thailändische Paradies, das keines war, und stellte sich bei der Realisierung von 127 Hours der Herausforderung, mit nur einem einzigen Schauspieler, James Franco, einen ganzen Film zu drehen. Der biografische Film, der auf dem Buch von Bergsteiger Aron Ralston basiert, wurde für sechs Academy Awards nominiert. Darauf folgte das beeindruckende Biopic über den Apple Gründer Steve Jobs mit einem herausragenden Cast. Den meisten Zuschauern wird Danny Boyle jedoch bekannt sein durch seine berührende Geschichte über den Slumdog Millionär
setstate doif_TEST 2020-06-15 07:40:41 next_Kinowelt_002_stitle Film/Kino/TV
setstate doif_TEST 2020-06-15 07:40:41 next_Kinowelt_002_title Hollywoods Best Film Directors - Danny Boyle
setstate doif_TEST 2020-06-15 07:10:42 next_N24Doku_000_bdate 2020-06-15
setstate doif_TEST 2020-06-15 07:10:43 next_N24Doku_000_btime 07:05:00
setstate doif_TEST 2020-06-15 07:10:43 next_N24Doku_000_desc Wo Wohnraum knapp ist wird in die Höhe gebaut. In vielen Metropolen prägen gigantische Wohnblöcke das Stadtbild. Oft befinden sie sich in städtischen Brennpunkten. Neue Bauten sollen die sozialen Ungleichheiten innerhalb der Ballungsr
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

mumpitzstuff

Du must die Formatierung hier anpassen:

$TR{0,31} = "style='color:yellow;;text-align:center;;font-weight:bold;;font-size:18px'";;\
  $TD{0..29,31..60}{2,4} = "style='font-size:16px;;border-right-style:solid;;border-color:#CCCCCC;;border-right-width:1px;;'";;\
  $TD{0..29,31..60}{0} = "align='center' style='border-right-style:solid;;border-color:#CCCCCC;;border-right-width:1px;;'";;\
  $TD{0..60}{1,3,5,6} = "style='font-size:16px;;'";;\
  $TD{30}{1..6} = "border-top-style:solid;;border-bottom-style:solid;;border-color:#CCCCCC;;border-top-width:1px;;border-bottom-width:1px;;'";;\


Wenn du also lediglich einen Sender eingefügt hast müsste es so aussehen:

$TR{0,32} = "style='color:yellow;;text-align:center;;font-weight:bold;;font-size:18px'";;\
  $TD{0..30,32..60}{2,4} = "style='font-size:16px;;border-right-style:solid;;border-color:#CCCCCC;;border-right-width:1px;;'";;\
  $TD{0..30,32..60}{0} = "align='center' style='border-right-style:solid;;border-color:#CCCCCC;;border-right-width:1px;;'";;\
  $TD{0..61}{1,3,5,6} = "style='font-size:16px;;'";;\
  $TD{31}{1..6} = "border-top-style:solid;;border-bottom-style:solid;;border-color:#CCCCCC;;border-top-width:1px;;border-bottom-width:1px;;'";;\

Invers

Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

mumpitzstuff

@Cwagner: Wenn du Fehlermeldungen wie blocking call aborted im logfile siehst, dann stimmt da was grundsätzlich nicht und dein System rennt in einer Dauerschleife rum. Dann ist es auch nicht verwunderlich wenn andere Prozesse Probleme bekommen. Hast du noch mal die angepasste Version aus dem ersten Beitrag verwendet?

Damian

Zitat von: mumpitzstuff am 15 Juni 2020, 09:49:30
@Cwagner: Wenn du Fehlermeldungen wie blocking call aborted im logfile siehst, dann stimmt da was grundsätzlich nicht und dein System rennt in einer Dauerschleife rum. Dann ist es auch nicht verwunderlich wenn andere Prozesse Probleme bekommen. Hast du noch mal die angepasste Version aus dem ersten Beitrag verwendet?

Als ich noch OWX-Module einsetzte war pro 1820-Device eine "Sendepause" von ca. einer Sekunde (mit apptime nachweisbar). Ich habe das Problem lange Zeit auf mein FHEM-System unter Windows geschoben. Nachdem ich auf pi4 umgestiegen bin, war das Problem immer noch da. Daraufhin habe ich 1-Wire über ESP-Easy eingebunden und die Probleme waren weg (ebenfalls über apptime nachweisbar).

@Cwagner du kannst mit apptime sehen, wie viel Zeit sich ein Modul mit seiner Abarbeitung lässt, dann hast du schnell den Schuldigen, dann kannst du ihn vorübergehend abschalten und schauen, ob es immer noch zu Abbrüchen bei blocking call kommt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF