Aktuelles TV-Programm in FHEM

Begonnen von Kuzl, 20 Oktober 2014, 20:41:43

Vorheriges Thema - Nächstes Thema

Franz Tenbrock

wenn ich das hier eingebe
set LG_TV one
schaltet er auch
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

Franz Tenbrock

das hier jetzt meine cfg
################################################################
########       Dummy Senderwechsel                   ###########
####    http://forum.fhem.de/index.php/topic,28123.150.html  ###
################################################################

define Senderwechsel dummy
attr Senderwechsel room TV
attr Senderwechsel setList one two three four

define LG_TV.Senderwechsel.nf notify LG_remote.Senderwechsel.* {switchChannel('%EVENT')}
attr LG_TV.Senderwechsel.nf room TV

define LG_TV.Programm.RG readingsGroup ...
attr LG_TV.Programm.RG commands {"set LG_TV.Senderwechsel %READING"}


und das hier in der 99_myUtils.pm
sub
switchChannel($)
{
  my %channellist = (
    pro7 => 'seven',
    rtl => 'four',
ard => 'one',
    kabel_1 => 'one',
sat1 => 'five',
    rtl2 => 'nine',
    vox => 'six',
zdf => 'two',
  );
 
  my $TVDevice = 'LG_remote';

  my ($channel) = @_;
  $channel =~ s/_time//g; 
  my $next = 0;
  if ($channel =~ /_next/)
  {
    my @array = split('_next', $channel);
    $channel = $array[0];
    $next = 1;
  }
  my $lcchannel = lc $channel;
  my $command = '';
 
  $command = 'set '.$TVDevice.' channel '.$channellist{$lcchannel};

  if ($command ne '')
  {
    if ($next == 1)
    {
      $command =~ s/;/;;/g;
      fhem('delete '.$TVDevice.'.Senderwechsel.at');
      fhem('define '.$TVDevice.'.Senderwechsel.at at '.ReadingsVal('TV_Programme_next', $channel.'_next_time', '00:00').' '.$command);
      fhem('attr '.$TVDevice.'.Senderwechsel.at room Wohnzimmer');
    }
    else
    {
      fhem($command);
    }
  }
  else
  {
    Log(1, 'Channelnumber not found for channel: '.$channel);
  }
}


wenn ich nun in meiner Programmanzeige auf einen Sender klicke
wird mir als dummy senderwechsel das Logo des ausgewählten Senders angezeigt.
im event monitor kommt das dann
2015-01-01 13:16:58 dummy Senderwechsel dmax

nun müsste dmax übersetzt werden in nine
und das Kommando
set LG_TV nine
müßte erzeugt werden
das läuft dann wohl über das notify?!
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

RoBra81

So, probier mal das in der myUtils:

sub
switchChannel($)
{
  my %channellist = (
    ard => 'one',
    zdf => 'two',
    wdr => 'three',
    rtl => 'four',
    rtl1 => 'four',
    rtl2 => 'eight',
    vox => 'six',
    sat1 => 'five',
    pro7 => 'four,seven',
    kabel1 => 'four,eight',
    dmax => 'nine'
  );
 
  my $TVDevice = 'LG_TV';

  my ($channel) = @_;
 
  if ($channel eq 'closebutton')
  {
    fhem('set DG.wz.TV.Programm.RG visibility hide');
    return;
  }

  $channel =~ s/_time//g;
  $channel = lc $channel;
  my $next = 0;
  if ($channel =~ /_next/)
  {
    my @array = split(/_/, $channel);
    $channel = $array[0];
    $next = 1;
  }
  my $command = '';
 
  my @digits = split(",", $channellist{$channel});
 
  foreach (@digits)
  {
    if ($command ne '')
    {
      $command = $command.'; ';
    }
    $command = $command.'set '.$TVDevice.' '.$_;
  }
 
  if ($command ne '')
  {
    if ($next == 1)
    {
      $command =~ s/;/;;/g;
      fhem('delete '.$TVDevice.'.Senderwechsel.at');
      fhem('define '.$TVDevice.'.Senderwechsel.at at '.ReadingsVal('DG.wz.TV.Programm', $channel.'_next_time', '00:00').' '.$command);
      fhem('attr '.$TVDevice.'.Senderwechsel.at room Wohnzimmer');
    }
    else
    {
      fhem($command);
    }
  }
  else
  {
    Log(1, 'Channelnumber not found for channel: '.$channel);
  }
}

Franz Tenbrock

Thanks
das Jahr fängt ja gut an
nun klappt es
werde mir das morgen mal ansehen, damit ich auch den code verstehe


von dir war auch der Abfallkalender
der seit 1 Stunde auch funktioniert
hat mich zwar einiges an Zeit gekostet
aber sieht nun klasse aus
incl Icons :-)
Bild lade ich gleich hoch

1000 Dank
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

Tommy82

Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

Franz Tenbrock

http://forum.fhem.de/index.php/topic,24646.msg238503.html#msg238503

cool
Hast du ne Ahnung wie ich Programm 1o etc schalten kann
1-9 geht ja nun..
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

RoBra81

Hatte ich in dem Post ein Beispiel drin, das du mal probieren könntest:

    pro7 => 'four,seven',

Tommy82

#322
Bei mir (enigma2) gehts haltt über  die Namen, hätte behauptet er müsste bei dir 10 bzw ten nehmen, hast du es mal mit gross oder Kleinschreibung versucht?

Ansonsten gibts vieleicht in einem LG (war doch ein LG Fernseher?) Forum einen Hinweis wie die 10 usw. codiert werden?!
Oder hier z.b. http://www.fernseh-maul.de/Community/
Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

Franz Tenbrock

mit dem Komma dazwischen klappt es leider noch nicht,
werded as morgen mal in Ruhe checken
oder den LG Spezi hier mal anmailen.
der hat mir damals geholfen das der LG2011 überhaupt per FHEM zu steuern ist.
bin ja heute einen Riesen Schritt weitergekommen
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

Franz Tenbrock

Hallo
der letzte Schritt will mir nicht gelingen :-(
Leider kann nach Aussage des Modulschreibers der LG nicht mit 2 stelligen Sendern umgehen
ok das ist im Moment erst mal nicht schlimm
der Senderwechsel auf das nächste Programm zum folgenden Sendebeginn klappt noch nicht.

Hier einige Infos dazu
(http://senderwechsel1.jpg)

(http://senderwechsel2.jpg)

Dazu folgender code

################################################################
########       Dummy Senderwechsel                   ###########
####    http://forum.fhem.de/index.php/topic,28123.150.html  ###
################################################################

############################################

define Senderwechsel dummy
attr Senderwechsel room TV
attr Senderwechsel setList ARD ZDF MDR Sat1 RTL RTL2 Pro7 VOX Kabel1 DMAX KiKa SuperRTL


define Programm.RG readingsGroup TV_Programme_next.*
attr Programm.RG commands {"Senderwechsel %READING"}
attr Programm.RG room TV

define Senderwechsel.nf notify Senderwechsel.* {switchChannel('%EVENT')}
attr Senderwechsel.nf room TV


das hier in der utils

sub
switchChannel($)
{
  my %channellist = (
    ard => 'one',
    zdf => 'two',
    wdr => 'three',
    rtl => 'four',
    rtl1 => 'four',
    rtl2 => 'eight',
    vox => 'six',
    sat1 => 'five',
    pro7 => 'seven',
    ntv => 'one,zero',
    dmax => 'nine'
  );
 
  my $TVDevice = 'LG_TV';

  my ($channel) = @_;
  $channel =~ s/_time//g;
  $channel = lc $channel;
  my $next = 0;
  if ($channel =~ /_next/)
  {
    my @array = split(/_/, $channel);
    $channel = $array[0];
    $next = 1;
  }
  my $command = '';
 
  my @digits = split("", $channellist{$channel});
 
  foreach (@digits)
  {
    if ($command ne '')
    {
      $command = $command.'; ';
    }
    $command = $command.'set '.$TVDevice.' '.$_;
  }
 
  if ($command ne '')
  {
    $command = $command.'; set '.$TVDevice.' ENTER';
    if ($next == 1)
    {
      $command =~ s/;/;;/g;
      fhem('delete '.$TVDevice.'.Senderwechsel.at');
      fhem('define '.$TVDevice.'.Senderwechsel.at at '.ReadingsVal('TV_Programme_next', $channel.'_next_time', '00:00').' '.$command);
      fhem('attr '.$TVDevice.'.Senderwechsel.at room TV');
    }
    else
    {
      fhem($command);
    }
  }
  else
  {
    Log(1, 'Channelnumber not found for channel: '.$channel);
  }
}


ich tippe mal in der util ist was faul
da kommt halt nicht das richtige Kommando raus
es müsste was in dieser Art um 20:15 ausgeführt werden
set LG_TV one
zB
da fehlt mir noch was Syntax know how, wird ja besser aber reicht wohl noch nicht
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

RoBra81

Das ist aber nicht mein letzter Code - den hatte ich auf deinen LG angepasst...

Franz Tenbrock

Hallo
war den ganzen Thread hin und hergegangen, hab dieses und jenes probiert, geklappt hats mit keinem code bisher
hier kommt wenigstens ein at

Das at soll doch wohl den Senderwechsel anstossen
oder?
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

Franz Tenbrock

#327
so das ist alles was für einen LG 2011 gebruacht wird für die fhem.cfg
enthalten Fernsteuerung und Fernsehprogramm
schalten klappt, schalten auf die nächste Sendung auch, was noch nicht ganz optimal klappt ist die schnelle Aktualisierung des at auf der Bildschirn, wenn man das aber kontrolliert so werden die neuen Zeiten sehr wohl übernommen.
weiter unten die util
Was noch kommt ist das Schalten der Sender über 9 also 2 stellig etc, da hat der LG Modul Ersteller nachgelegt, wenn ich das getestet habe werde ich auch das noch einbauen.

Thanks noch mal an Robra für die Geduld

Schalten von 2 stelligen Sendern geht jetzt auch über die Kommandozeile, dazu wurde das Modul LG2011 angpasst, das werde ich nun hier einarbeiten und wenn es läuft auch posten


###################################################################
###                    TV Programm                        #########
###    http://forum.fhem.de/index.php/topic,28123.0.html  #########
###################################################################

# -------------------------------
# aktuelle Sendung
define TV_Programme HTTPMOD http://www.tvmovie.de/tv-programm-jetzt-im-tv.html?tv-stations-count=150&time=now&form_build_id=form-7f6a9332d4b1e7b5bc6af20e39353673&form_id=dikr_tvm_tv_guide_tv_stations_count_form 240
attr TV_Programme userattr readingsName_ard readingsName_ard_time readingsName_arte readingsName_arte_time readingsName_dmax readingsName_dmax_time readingsName_dreisat readingsName_dreisat_time readingsName_kabel1 readingsName_kabel1_time readingsName_n24 readingsName_n24_time readingsName_ndr readingsName_ndr_time readingsName_ntv readingsName_ntv_time readingsName_phoenix readingsName_phoenix_time readingsName_pro7 readingsName_pro7_time readingsName_rtl1 readingsName_rtl1_time readingsName_rtl2 readingsName_rtl2_time readingsName_rtlnitro readingsName_rtlnitro_time readingsName_sat1 readingsName_sat1_time readingsName_sixx readingsName_sixx_time readingsName_tele5 readingsName_tele5_time readingsName_vox readingsName_vox_time readingsName_wdr readingsName_wdr_time readingsName_zdf readingsName_zdf_time readingsName_zdfinfo readingsName_zdfinfo_time readingsName_zdfkultur readingsName_zdfkultur_time readingsName_zdfneo readingsName_zdfneo_time readingsRegex_ard readingsRegex_ard_time readingsRegex_arte readingsRegex_arte_time readingsRegex_dmax readingsRegex_dmax_time readingsRegex_kabel1 readingsRegex_kabel1_time readingsRegex_n24 readingsRegex_n24_time readingsRegex_ntv readingsRegex_ntv_time readingsRegex_phoenix readingsRegex_phoenix_time readingsRegex_pro7 readingsRegex_pro7_time readingsRegex_rtl1 readingsRegex_rtl1_time readingsRegex_rtl2 readingsRegex_rtl2_time readingsRegex_rtlnitro readingsRegex_rtlnitro_time readingsRegex_sat1 readingsRegex_sat1_time readingsRegex_sixx readingsRegex_sixx_time readingsRegex_tele5 readingsRegex_tele5_time readingsRegex_vox readingsRegex_vox_time readingsRegex_wdr readingsRegex_wdr_time readingsRegex_zdf readingsRegex_zdf_time readingsRegex_zdfinfo readingsRegex_zdfinfo_time stateFormat timeout verbose
attr TV_Programme readingsName_ard ard
attr TV_Programme readingsName_ard_time ard_time
attr TV_Programme readingsName_arte arte
attr TV_Programme readingsName_arte_time arte_time
attr TV_Programme readingsName_dmax dmax
attr TV_Programme readingsName_dmax_time dmax_time
attr TV_Programme readingsName_kabel1 kabel1
attr TV_Programme readingsName_kabel1_time kabel1_time
attr TV_Programme readingsName_n24 n24
attr TV_Programme readingsName_n24_time n24_time
attr TV_Programme readingsName_ndr ndr
attr TV_Programme readingsName_ndr_time ndr_time
attr TV_Programme readingsName_ntv ntv
attr TV_Programme readingsName_ntv_time ntv_time
attr TV_Programme readingsName_phoenix phoenix
attr TV_Programme readingsName_phoenix_time phoenix_time
attr TV_Programme readingsName_pro7 pro7
attr TV_Programme readingsName_pro7_time pro7_time
attr TV_Programme readingsName_rtl1 rtl1
attr TV_Programme readingsName_rtl1_time rtl1_time
attr TV_Programme readingsName_rtl2 rtl2
attr TV_Programme readingsName_rtl2_time rtl2_time
attr TV_Programme readingsName_rtlnitro rtlnitro
attr TV_Programme readingsName_rtlnitro_time rtlnitro_time
attr TV_Programme readingsName_sat1 sat1
attr TV_Programme readingsName_sat1_time sat1_time
attr TV_Programme readingsName_sixx sixx
attr TV_Programme readingsName_sixx_time sixx_time
attr TV_Programme readingsName_tele5 tele5
attr TV_Programme readingsName_tele5_time tele5_time
attr TV_Programme readingsName_vox vox
attr TV_Programme readingsName_vox_time vox_time
attr TV_Programme readingsName_wdr wdr
attr TV_Programme readingsName_wdr_time wdr_time
attr TV_Programme readingsName_zdf zdf
attr TV_Programme readingsName_zdf_time zdf_time
attr TV_Programme readingsName_zdfinfo zdfinfo
attr TV_Programme readingsName_zdfinfo_time zdfinfo_time
attr TV_Programme readingsRegex_ard <span>ARD <[\w\W]*?alt="(.*?)" title=
attr TV_Programme readingsRegex_ard_time <span>ARD <[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme readingsRegex_arte <span>ARTE <[\w\W]*?alt="(.*?)" title=
attr TV_Programme readingsRegex_arte_time <span>ARTE <[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme readingsRegex_dmax <span>DMAX<[\w\W]*?alt="(.*?)" title=
attr TV_Programme readingsRegex_dmax_time <span>DMAX<[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme readingsRegex_kabel1 <span>KABEL1 <[\w\W]*?alt="(.*?)" title=
attr TV_Programme readingsRegex_kabel1_time <span>KABEL1 <[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme readingsRegex_n24 <span>N24 <[\w\W]*?alt="(.*?)" title=
attr TV_Programme readingsRegex_n24_time <span>N24 <[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme readingsRegex_ntv <span>NTV<[\w\W]*?alt="(.*?)" title=
attr TV_Programme readingsRegex_ntv_time <span>NTV<[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme readingsRegex_phoenix <span>Phoenix<[\w\W]*?alt="(.*?)" title=
attr TV_Programme readingsRegex_phoenix_time <span>Phoenix<[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme readingsRegex_pro7 <span>PRO 7 <[\w\W]*?alt="(.*?)" title=
attr TV_Programme readingsRegex_pro7_time <span>PRO 7 <[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme readingsRegex_rtl1 <span>RTL <[\w\W]*?alt="(.*?)" title=
attr TV_Programme readingsRegex_rtl1_time <span>RTL <[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme readingsRegex_rtl2 <span>RTL II <[\w\W]*?alt="(.*?)" title=
attr TV_Programme readingsRegex_rtl2_time <span>RTL II <[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme readingsRegex_rtlnitro <span>RTL NITRO <[\w\W]*?alt="(.*?)" title=
attr TV_Programme readingsRegex_rtlnitro_time <span>RTL NITRO <[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme readingsRegex_sat1 <span>SAT.1 <[\w\W]*?alt="(.*?)" title=
attr TV_Programme readingsRegex_sat1_time <span>SAT.1 <[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme readingsRegex_sixx <span>sixx <[\w\W]*?alt="(.*?)" title=
attr TV_Programme readingsRegex_sixx_time <span>sixx <[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme readingsRegex_tele5 <span>Tele 5 <[\w\W]*?alt="(.*?)" title=
attr TV_Programme readingsRegex_tele5_time <span>Tele 5 <[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme readingsRegex_vox <span>VOX <[\w\W]*?alt="(.*?)" title=
attr TV_Programme readingsRegex_vox_time <span>VOX <[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme readingsRegex_wdr <span>WDR<[\w\W]*?alt="(.*?)" title=
attr TV_Programme readingsRegex_wdr_time <span>WDR<[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme readingsRegex_zdf <span>ZDF <[\w\W]*?alt="(.*?)" title=
attr TV_Programme readingsRegex_zdf_time <span>ZDF <[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme readingsRegex_zdfinfo <span>ZDFinfo<[\w\W]*?alt="(.*?)" title=
attr TV_Programme readingsRegex_zdfinfo_time <span>ZDFinfo<[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme room TV
attr TV_Programme stateFormat mein_TV_programm: Pro7
attr TV_Programme timeout 60
attr TV_Programme verbose 1

##  readingsName
##
##
##
##
##
## nächste Sendung
##
define TV_Programme_next HTTPMOD http://www.tvmovie.de/tv-programm-gleich-im-tv.html?tv-stations-count=150&time=soon&form_build_id=form-6c71e36a9e9651420736eccb5287fdec&form_id=dikr_tvm_tv_guide_tv_stations_count_form 120
attr TV_Programme_next userattr readingsName_ard_next readingsName_ard_next_time readingsName_arte_next readingsName_arte_next_time readingsName_dmax_next readingsName_dmax_next_time readingsName_kabel1_next readingsName_kabel1_next_time readingsName_n24_next readingsName_n24_next_time readingsName_ndr_next readingsName_ndr_next_time readingsName_ntv_next readingsName_ntv_next_time readingsName_phoenix_next readingsName_phoenix_next_time readingsName_pro7_next readingsName_pro7_next_time readingsName_rtl1_next readingsName_rtl1_next_time readingsName_rtl2_next readingsName_rtl2_next_time readingsName_rtlnitro_next readingsName_rtlnitro_next_time readingsName_sat1_next readingsName_sat1_next_time readingsName_sixx_next readingsName_sixx_next_time readingsName_tele5_next readingsName_tele5_next_time readingsName_vox_next readingsName_vox_next_time readingsName_wdr_next readingsName_wdr_next_time readingsName_zdf_next readingsName_zdf_next_time readingsName_zdfinfo_next readingsName_zdfinfo_next_time readingsName_zdfkultur_next readingsName_zdfkultur_next_time readingsRegex_ard_next readingsRegex_ard_next_time readingsRegex_arte_next readingsRegex_arte_next_time readingsRegex_dmax_next readingsRegex_dmax_next_time readingsRegex_dreisat_next readingsRegex_dreisat_next_time readingsRegex_kabel1_next readingsRegex_kabel1_next_time readingsRegex_n24_next readingsRegex_n24_next_time readingsRegex_ndr_next readingsRegex_ndr_next_time readingsRegex_ntv_next readingsRegex_ntv_next_time readingsRegex_phoenix_next readingsRegex_phoenix_next_time readingsRegex_pro7_next readingsRegex_pro7_next_time readingsRegex_rtl1_next readingsRegex_rtl1_next_time readingsRegex_rtl2_next readingsRegex_rtl2_next_time readingsRegex_rtlnitro_next readingsRegex_rtlnitro_next_time readingsRegex_sat1_next readingsRegex_sat1_next_time readingsRegex_sixx_next readingsRegex_sixx_next_time readingsRegex_tele5_next readingsRegex_tele5_next_time readingsRegex_vox_next readingsRegex_vox_next_time readingsRegex_wdr_next readingsRegex_wdr_next_time readingsRegex_zdf_next readingsRegex_zdf_next_time readingsRegex_zdfinfo_next readingsRegex_zdfinfo_next_time readingsRegex_zdfkultur_next readingsRegex_zdfkultur_next_time stateFormat timeout verbose
attr TV_Programme_next readingsName_ard_next ard_next
attr TV_Programme_next readingsName_ard_next_time ard_next_time
attr TV_Programme_next readingsName_arte_next arte_next
attr TV_Programme_next readingsName_arte_next_time arte_next_time
attr TV_Programme_next readingsName_dmax_next dmax_next
attr TV_Programme_next readingsName_dmax_next_time dmax_next_time
attr TV_Programme_next readingsName_kabel1_next kabel1_next
attr TV_Programme_next readingsName_kabel1_next_time kabel1_next_time
attr TV_Programme_next readingsName_n24_next n24_next
attr TV_Programme_next readingsName_n24_next_time n24_next_time
attr TV_Programme_next readingsName_ndr_next ndr_next
attr TV_Programme_next readingsName_ndr_next_time ndr_next_time
attr TV_Programme_next readingsName_ntv_next ntv_next
attr TV_Programme_next readingsName_ntv_next_time ntv_next_time
attr TV_Programme_next readingsName_phoenix_next phoenix_next
attr TV_Programme_next readingsName_phoenix_next_time phoenix_next_time
attr TV_Programme_next readingsName_pro7_next pro7_next
attr TV_Programme_next readingsName_pro7_next_time pro7_next_time
attr TV_Programme_next readingsName_rtl1_next rtl1_next
attr TV_Programme_next readingsName_rtl1_next_time rtl1_next_time
attr TV_Programme_next readingsName_rtl2_next rtl2_next
attr TV_Programme_next readingsName_rtl2_next_time rtl2_next_time
attr TV_Programme_next readingsName_rtlnitro_next rtlnitro_next
attr TV_Programme_next readingsName_rtlnitro_next_time rtlnitro_next_time
attr TV_Programme_next readingsName_sat1_next sat1_next
attr TV_Programme_next readingsName_sat1_next_time sat1_next_time
attr TV_Programme_next readingsName_sixx_next sixx_next
attr TV_Programme_next readingsName_sixx_next_time sixx_next_time
attr TV_Programme_next readingsName_tele5_next tele5_next
attr TV_Programme_next readingsName_tele5_next_time tele5_next_time
attr TV_Programme_next readingsName_vox_next vox_next
attr TV_Programme_next readingsName_vox_next_time vox_next_time
attr TV_Programme_next readingsName_wdr_next wdr_next
attr TV_Programme_next readingsName_wdr_next_time wdr_next_time
attr TV_Programme_next readingsName_zdf_next zdf_next
attr TV_Programme_next readingsName_zdf_next_time zdf_next_time
attr TV_Programme_next readingsName_zdfinfo_next zdfinfo_next
attr TV_Programme_next readingsName_zdfinfo_next_time zdfinfo_next_time
attr TV_Programme_next readingsName_zdfkultur_next zdfkultur_next
attr TV_Programme_next readingsName_zdfkultur_next_time zdfkultur_next_time
attr TV_Programme_next readingsRegex_ard_next <span>ARD <[\w\W]*?alt="(.*?)" title=
attr TV_Programme_next readingsRegex_ard_next_time <span>ARD <[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme_next readingsRegex_arte_next <span>ARTE <[\w\W]*?alt="(.*?)" title=
attr TV_Programme_next readingsRegex_arte_next_time <span>ARTE <[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme_next readingsRegex_dmax_next <span>DMAX<[\w\W]*?alt="(.*?)" title=
attr TV_Programme_next readingsRegex_dmax_next_time <span>DMAX<[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme_next readingsRegex_kabel1_next <span>KABEL1 <[\w\W]*?alt="(.*?)" title=
attr TV_Programme_next readingsRegex_kabel1_next_time <span>KABEL1 <[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme_next readingsRegex_n24_next <span>N24 <[\w\W]*?alt="(.*?)" title=
attr TV_Programme_next readingsRegex_n24_next_time <span>N24 <[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme_next readingsRegex_ndr_next <span>NDR<[\w\W]*?alt="(.*?)" title=
attr TV_Programme_next readingsRegex_ndr_next_time <span>NDR<[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme_next readingsRegex_ntv_next <span>NTV<[\w\W]*?alt="(.*?)" title=
attr TV_Programme_next readingsRegex_ntv_next_time <span>NTV<[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme_next readingsRegex_phoenix_next <span>Phoenix<[\w\W]*?alt="(.*?)" title=
attr TV_Programme_next readingsRegex_phoenix_next_time <span>Phoenix<[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme_next readingsRegex_pro7_next <span>PRO 7 <[\w\W]*?alt="(.*?)" title=
attr TV_Programme_next readingsRegex_pro7_next_time <span>PRO 7 <[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme_next readingsRegex_rtl1_next <span>RTL <[\w\W]*?alt="(.*?)" title=
attr TV_Programme_next readingsRegex_rtl1_next_time <span>RTL <[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme_next readingsRegex_rtl2_next <span>RTL II <[\w\W]*?alt="(.*?)" title=
attr TV_Programme_next readingsRegex_rtl2_next_time <span>RTL II <[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme_next readingsRegex_rtlnitro_next <span>RTL NITRO <[\w\W]*?alt="(.*?)" title=
attr TV_Programme_next readingsRegex_rtlnitro_next_time <span>RTL NITRO <[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme_next readingsRegex_sat1_next <span>SAT.1 <[\w\W]*?alt="(.*?)" title=
attr TV_Programme_next readingsRegex_sat1_next_time <span>SAT.1 <[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme_next readingsRegex_sixx_next <span>sixx <[\w\W]*?alt="(.*?)" title=
attr TV_Programme_next readingsRegex_sixx_next_time <span>sixx <[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme_next readingsRegex_tele5_next <span>Tele 5 <[\w\W]*?alt="(.*?)" title=
attr TV_Programme_next readingsRegex_tele5_next_time <span>Tele 5 <[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme_next readingsRegex_vox_next <span>VOX <[\w\W]*?alt="(.*?)" title=
attr TV_Programme_next readingsRegex_vox_next_time <span>VOX <[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme_next readingsRegex_wdr_next <span>WDR<[\w\W]*?alt="(.*?)" title=
attr TV_Programme_next readingsRegex_wdr_next_time <span>WDR<[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme_next readingsRegex_zdf_next <span>ZDF <[\w\W]*?alt="(.*?)" title=
attr TV_Programme_next readingsRegex_zdf_next_time <span>ZDF <[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme_next readingsRegex_zdfinfo_next <span>ZDFinfo<[\w\W]*?alt="(.*?)" title=
attr TV_Programme_next readingsRegex_zdfinfo_next_time <span>ZDFinfo<[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme_next readingsRegex_zdfkultur_next <span>zdf.kultur<[\w\W]*?alt="(.*?)" title=
attr TV_Programme_next readingsRegex_zdfkultur_next_time <span>zdf.kultur<[\w\W]*?air-time"><strong>(.*?)<\/strong>
attr TV_Programme_next room TV
attr TV_Programme_next stateFormat mein_TV_programm: Pro7_next
attr TV_Programme_next timeout 60
attr TV_Programme_next verbose 1
##
##

# -------------------------------
# Visualisierung


define TV_Programm readingsGroup <Programm>,<seit>,<aktuelle Sendung>,<ab>,<folgende Sendung>\
TV_Programme_next:ard_time@TV_Programme,ard@TV_Programme,ard_next_time,ard_next\
TV_Programme_next:zdf_time@TV_Programme,zdf@TV_Programme,zdf_next_time,zdf_next\
TV_Programme_next:wdr_time@TV_Programme,wdr@TV_Programme,wdr_next_time,wdr_next \
TV_Programme_next:rtl1_time@TV_Programme,rtl1@TV_Programme,rtl1_next_time,rtl1_next \
TV_Programme_next:sat1_time@TV_Programme,sat1@TV_Programme,sat1_next_time,sat1_next\
TV_Programme_next:vox_time@TV_Programme,vox@TV_Programme,vox_next_time,vox_next \
TV_Programme_next:pro7_time@TV_Programme,pro7@TV_Programme,pro7_next_time,pro7_next\
TV_Programme_next:rtl2_time@TV_Programme,rtl2@TV_Programme,rtl2_next_time,rtl2_next \
TV_Programme_next:dmax_time@TV_Programme,dmax@TV_Programme,dmax_next_time,dmax_next \
TV_Programme_next:ntv_time@TV_Programme,ntv@TV_Programme,ntv_next_time,ntv_next \
TV_Programme_next:kabel1_time@TV_Programme,kabel1@TV_Programme,kabel1_next_time,kabel1_next\
TV_Programme_next:n24_time@TV_Programme,n24@TV_Programme,n24_next_time,n24_next\
TV_Programme_next:arte_time@TV_Programme,arte@TV_Programme,arte_next_time,arte_next\
TV_Programme_next:tele5_time@TV_Programme,tele5@TV_Programme,tele5_next_time,tele5_next\
TV_Programme_next:rtlnitro_time@TV_Programme,rtlnitro@TV_Programme,rtlnitro_next_time,rtlnitro_next\
TV_Programme_next:sixx_time@TV_Programme,sixx@TV_Programme,sixx_next_time,sixx_next\
TV_Programme_next:zdfinfo_time@TV_Programme,zdfinfo@TV_Programme,zdfinfo_next_time,zdfinfo_next
attr TV_Programm alias TV Programm
## diese Zeile ermöglich überhaupt erst den Senderwechsel
attr TV_Programm commands {"set Senderwechsel %READING"}
attr TV_Programm group TV_Programm
attr TV_Programm nameIcon { ard_time => 'ard', zdf_time => 'zdf', arte_time => 'arte', pro7_time => 'pro7', kabel1_time => 'kabel1', sat1_time => 'sat1', rtl1_time => 'rtl1', rtl2_time => 'rtl2', sixx_time => 'sixx', dmax_time => 'dmax', ntv_time => 'ntv', n24_time => 'n24', ndr_time => 'ndr', phoenix_time => 'phoenix', zdfinfo_time => 'zdfinfo', rtlnitro_time => 'rtl_nitro', tele5_time => 'tele5', vox_time => 'vox', wdr_time => 'wdr', zdfkultur_time => 'zdf_kultur'}
attr TV_Programm nameStyle style="color:lightgreen;;font-weight:bold"
attr TV_Programm room TV
attr TV_Programm style style="font-size:18px"

##
###
## Icons
###

#attr TV_Programm nameIcon { ServusTV_time => 'servus_tv',DSat_time => '3sat', ARD_time => 'ard', ZDF_time => 'zdf', Pro7_time => 'pro7', Sat1_time => 'sat1', rtl1_time => 'rtl1', Kabel1_time => 'kabel1', VOX_time => 'vox', RTL2_time => 'rtl2', DMAX_time => 'dmax', ZDFNEO_time => 'zdf_neo', RTLNITRO_time => 'rtl_nitro' }



################################################################
########       Dummy Senderwechsel                   ###########
####    http://forum.fhem.de/index.php/topic,28123.150.html  ###
################################################################

define Senderwechsel dummy
attr Senderwechsel room TV
attr Senderwechsel setList ARD ZDF MDR Sat1 RTL RTL2 Pro7 VOX Kabel1 DMAX KiKa SuperRTL

define Senderwechsel.nf notify Senderwechsel.* {switchChannel('%EVENT')}
attr Senderwechsel.nf room TV

define Programm_RG readingsGroup TV_Programm.*: ab
attr Programm_RG commands {"set Senderwechsel %READING"}
attr Programm_RG room TV




Hier der code der in die 99_myutils.pm muss.
Wichtig ist am Anfang der Bereich, hier im Thread auch erklärt.

package main;
use strict;
use warnings;
use POSIX;
use Time::Local;
sub myAbfallTermine_Initialize($$)
{
my ($hash) = @_;
}
sub
switchChannel($)
{
  my %channellist = (
    ard => 'one',
    zdf => 'two',
    wdr => 'three',
    rtl => 'four',
    rtl1 => 'four',
    rtl2 => 'eight',
    vox => 'six',
    sat1 => 'five',
    pro7 => 'four,seven',
    kabel1 => 'four,eight',
    dmax => 'nine'
  );
 
  my $TVDevice = 'LG_TV';

  my ($channel) = @_;
 
  if ($channel eq 'closebutton')
  {
    fhem('set Programm_RG visibility hide');
    return;
  }

  $channel =~ s/_time//g;
  $channel = lc $channel;
  my $next = 0;
  if ($channel =~ /_next/)
  {
    my @array = split(/_/, $channel);
    $channel = $array[0];
    $next = 1;
  }
  my $command = '';
 
  my @digits = split(",", $channellist{$channel});
 
  foreach (@digits)
  {
    if ($command ne '')
    {
      $command = $command.'; ';
    }
    $command = $command.'set '.$TVDevice.' '.$_;
  }
 
  if ($command ne '')
  {
    if ($next == 1)
    {
      $command =~ s/;/;;/g;
      fhem('delete '.$TVDevice.'.Senderwechsel.at');
      fhem('define '.$TVDevice.'.Senderwechsel.at at '.ReadingsVal('TV_Programme_next', $channel.'_next_time', 'ab').' '.$command);
      fhem('attr '.$TVDevice.'.Senderwechsel.at room TV');
    }
    else
    {
      fhem($command);
    }
  }
  else
  {
    Log(1, 'Channelnumber not found for channel: '.$channel);
  }
}
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

coolice

Hallo Franz, sieht super aus. Wo genau müssen die Senderlogos liegen und wie müssen sie heißen?


Gesendet von meinem iPhone mit Tapatalk

HolyMoly

Senderlogos müssen nach /opt/fhem/www/images/default
und heißen wie in attr TV_Programm nameIcon angelegt also z.B. zdf.png
FHEM auf Raspi2 & Radxa Rock