Aktuelles TV-Programm in FHEM

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

Vorheriges Thema - Nächstes Thema

Paul

Der Kanal hat sicher nichts da zu suchen, wo du die Zeit auslesen willst
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

Tommy82

Zitat von: Paul am 13 November 2014, 20:56:52
Der Kanal hat sicher nichts da zu suchen, wo du die Zeit auslesen willst

Aber so hat es RoBra81 ja geschrieben würde es bei ihm funktionieren!? Und woher soll das at sonst wissen wo es hinschalten soll?

WIe müsste es deiner meinung nach ausehen?
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

RoBra81

#242
Doch, der channel ist richtig dort, da auf jedem Sender die nächste Sendung zu einem anderen Zeitpunkt anfängt. Es soll also zum Beispiel der Startzeitpunkt der nächsten Sendung auf RTL aus dem Reading rtl_time_next ausgelesen werden...

Wenn er bei dir um 00:00 Uhr versucht umzuschalten, dann scheint das at ja definiert worden zu sein (das müsstest du ja nach einem klick auf die nächste Sendung auch im fhem finden). Ist nur noch die Frage, warum er die Zeit nicht findet... Kannst du mal versuchen, den ReadingsVal-Befehl (mit einem richtigen channel) in geschweiften Klammern im Kommandofeld einzugeben?

Tommy82

Wie meinst du soll das aussehen?
So?
.ReadingsVal('TV_Programme_next', $Das_Erste_HD'_next_time', '00:00')
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

RoBra81

So:
{ReadingsVal('TV_Programme_next','Das_Erste_HD_next_time','00:00')}
Der Sender (in dem Fall Das_Erste_HD muss demzufolge so im HTTPMOD vom TV_Programm_next existierten)

Tommy82

Hab ich gemacht, es wird dann ein 00:00 zugrückgegeben
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

RoBra81

Heißt das HTTPMOD bei dir TV_Programme_next und gibt es da ein Reading Das_Erste_HD_next_time (Groß- und Kleinschreibung beachten)?

RoBra81

Ich habe beim durchsehen meines Codes noch einen Fehler gefunden (der aber erstmal nix mit deinem Problem zu tun haben dürfte). Ersetze mal bitte die Zeilen


    my @array = split(/_/, $channel);
    $channel = $array[0];


mit der Zeile


$channel =~ s/_next//g;


sonst kann Probleme bei Sendern mit _ im Namen geben...

Tommy82

#248
Zitat von: RoBra81 am 13 November 2014, 23:33:26
Heißt das HTTPMOD bei dir TV_Programme_next und gibt es da ein Reading Das_Erste_HD_next_time (Groß- und Kleinschreibung beachten)?

JaEin :D
ZitatTV_Programme_next
und
readingsRegex_ARD_next_time

Der Channel auf den dann umgeschaltet werden soll heißt im Enigma2 Modul
Das_Erste_HD
Da könnte ja schon ein fehler liegen!?
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

RoBra81

Nein, das ist kein Fehler, dafür gibt es ja das Mapping. Ich habe aber das Problem erkannt - kannst du mal die komplette Funktion (das sub) posten, da korrigiere ich es mal...

Tommy82

#250
Hier mein sub
############################################
sub
switchChannel($)
{
  my %channellist = (
    pro7 => 'ProSieben_HD',
    rtl => 'RTL',
ard => 'Das_Erste_HD',
    kabel_1 => 'kabel_eins_HD',
sat1 => 'SAT.1_HD',
    rtl2 => 'RTL_II',
sport1 => '',
    vox => 'VOX',
zdf => 'ZDF_HD',


  );
 
  my $TVDevice = 'VU_Ultimo';

  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 = '';
 
  $command = 'set '.$TVDevice.' channel '.$channellist{$channel};

  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
{
    Log(1, 'Channelnumber not found for channel: '.$channel);
  }
}


Hoffe ich hab alles richtig kopiert, bin unterwegs und konnte Grad nur übers Handy zugreifen
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

RoBra81

Das Problem war, dass bei mir die Readings alle mit Kleinbuchstaben sind und daher geht's bei mir. Bei dir ist ARD z.B. groß geschrieben. Ich habe es mal geändert, aber nicht getestet. So könnte es u.U. funktionieren - kannst du es mal probieren?:

############################################
sub
switchChannel($)
{
  my %channellist = (
    pro7 => 'ProSieben_HD',
    rtl => 'RTL',
ard => 'Das_Erste_HD',
    kabel_1 => 'kabel_eins_HD',
sat1 => 'SAT.1_HD',
    rtl2 => 'RTL_II',
sport1 => '',
    vox => 'VOX',
zdf => 'ZDF_HD',


  );
 
  my $TVDevice = 'VU_Ultimo';

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

  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
{
    Log(1, 'Channelnumber not found for channel: '.$channel);
  }
}

Tommy82

Ja aber erst heute Abend, meld mich dann. Danke schon mal
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

Tommy82

#253
Wenn ich das in meine myutils eingebe kommt beim speichern
ERROR:

Missing right curly or square bracket at ./FHEM/99_myUtils.pm line 145, at end of line syntax error at ./FHEM/99_myUtils.pm line 145, at EOF

In line 145 ist nur die geschweifte Klammer
Zitat}
Also hab ich noch eine } dahinter gesetzt, hoffe das war richtig?

Der nächste Sendungswechsel ist um 11:40, hab den mal angeklickt, dann sollte automatisch von jetzt Pro7 auf Sat1 gewechselt werden, mal sehn obs jetzt klappt:-)

Allerdings hab ich grade schon festgestellt das das normale Umschalten jetzt wieder nicht mehr klappt, im Log gibts jetzt den Fehler:
2014.11.16 11:20:16.287 1: Channelnumber not found for channel: Sat1

Denn gabs doch am anfang mal, denn hattest du doch eigentlich korregiert!?
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

Tommy82

#254
So, habs jetzt nochmal so abgeändert, jetzt klappt das normale Umschalten wieder, allerdings das Umschalten auf das "next" Programm geht nicht

############################################
sub
switchChannel($)
{
  my %channellist = (
    pro7 => 'ProSieben_HD',
    rtl => 'RTL',
ard => 'Das_Erste_HD',
    kabel_1 => 'kabel_eins_HD',
sat1 => 'SAT.1_HD',
    rtl2 => 'RTL_II',
sport1 => '',
    vox => 'VOX',
zdf => 'ZDF_HD',
  );
 
  my $TVDevice = 'VU_Ultimo';

  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 = '';
 
  $command = 'set '.$TVDevice.' channel '.$channellist{$channel};

  if ($command ne '')
  {
    if ($next == 1)
    {
      $command =~ s/;/;;/g;
      fhem('delete '.$TVDevice.'.Senderwechsel.at');
      fhem('define '.$TVDevice.'.Senderwechsel.at at '.ReadingsVal('TV_Programm.dann', $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);
  }
}


Bekomme im Log dann diesen Fehler:
2014.11.16 15:33:29.303 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/99_myUtils.pm line 130.
2014.11.16 15:33:29.322 3: delete VU_Ultimo.Senderwechsel.at : Please define VU_Ultimo.Senderwechsel.at first


In Zeile 130 steht
$command = 'set '.$TVDevice.' channel '.$channellist{$channel};
und das at heisst bei mir
ZitatVU_Ultimo.Senderwechsel.at
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