Autor Thema: Modul für ENIGMA2 Receiver  (Gelesen 269014 mal)

Offline cocojambo

  • Full Member
  • ***
  • Beiträge: 494
Antw:Modul für ENIGMA2 Receiver
« Antwort #960 am: 15 Juni 2019, 13:29:42 »
Ich möchte in der room Liste den Status der Dreambaox angezeigt bekommen. Stattdessen erscheinen aber die Schaltoptionen.Ich lasse mir den Status aller im LAN und in FHEM exitierenden Verbindungen anzeigen. Siehe Foto(ich hoffe das geht mit jpg Bildern).
Alle Staten werden angezeigt, nur der Status der Dreambox über das Enigma2 Modul wird nicht angezeigt. Dort steht der Status und die Schaltoptionen.
Wie kann ich das ändern, das nur der Status so wie bei den anderen Komponenten angezeigt wird?

Gruß aus Köln
Norbert
FHEM5.9|FB7490|FB7430|3xraspi|2xHM-LAN-CFG|CUL868 v3|CUNO868 V1.55|HUE-Bridge|Harmony-Hub|5xHM-LC-Sw-PI-2|3xHM-WDS30-T2-SN|1xHM-LC_Sw4-DR|3xHM-ES-PMSw1-PI 3xF20S20|2xFS20S4|8xFS20ST|7xFS20SIG2|2xFS20S4U|2xFS20SU|6xFS20KSE|2xFS20DI|2xFS20SM8|2xFS20WS|5xS300TH|1xASH2200|1xEM1000

Offline psycho160

  • New Member
  • *
  • Beiträge: 31
Antw:Modul für ENIGMA2 Receiver
« Antwort #961 am: 07 November 2019, 10:15:51 »
In der früh schaltet mein Wecker den Fernseher mit einem bestimmten Sender ein. Manchmal brauche ich etwas länger zum Aufstehen , darum möchte ich nicht das FHEM zu einer bestimmten Zeit den Fernseher abschaltet (manchmal läuft auch gerade etwas spannendes).

Darum habe ich eine Funktion geschieben, die den internen Sleeptimer der Enigma Box aktiviert. Da wird man dann auch gefragt ob sich der Fernseher in 30 Sekunden abschalten soll oder nicht.
So hat man die Möglichkeit, noch weiter fernzusehen.

99_myUtils.pm
# Enigma2 Sleeptimer
sub enigmaSleepTimer($$$$$$) {
my ($NAME,$host,$username,$password,$duration,$setting)=@_;

#debug
my $log=5;

# Settings
my $URL         = qq{http://$host/web/sleeptimer};

my $param = {
  url           => $URL,
  method        => 'POST',
  user        => $username,
  pwd        => $password,
  hideurl => 1,
  boxname => $NAME,
  data => {'cmd' => 'set', 'time' => $duration, 'action' => 'standby', 'enabled' => $setting, 'confirmed' => 'False'},
  timeout       =>  4,
  callback   => \&EnigmaSleepTimer_ParseHttpResponse
};

  Log3 $NAME, $log, 'Blocking GET: ' . Dumper($param);
  HttpUtils_NonblockingGet($param);
}

# Callback for Enigma Timer
sub EnigmaSleepTimer_ParseHttpResponse($)
{
    my ($param, $err, $data) = @_;
    my $name = $param->{boxname};

    if($err ne "")
    {
        Log3 $name, 3, "$name : error while requesting ".$param->{url}." - $err";
    }

    elsif($data ne "")
    {
        Log3 $name, 5, "url ".$param->{url}." returned: $data";
my $xml = $data;
my $encodedXml = encode("UTF-8", $xml);
my $doc = XML::LibXML->load_xml( string => $encodedXml );
my ($status) = $doc->documentElement->getChildrenByTagName('e2text');

Log3 $name, 3,"Enigma-Timer: $name - BoxInfo: " . $status->textContent;
    }
}


Hier ein Beispiel eines Dummy mit dem man den Timer ein und ausschalten kann.

Syntax ist: [Name (beliebig)],[IP der Box],[Username],[Passwort],[Dauer des Timers],[Timer ein oder ausschalten (True, False)],[Loglevel (optional)]

Notify Aufruf
test.* {
if($EVENT eq "on"){
enigmaSleepTimer("BoxName","192.168.1.20","user","passwort",35,"True");
}elsif ($EVENT eq "off"){
enigmaSleepTimer("BoxName","192.168.1.20","user","passwort",0,"False");
}
}


Eventuell könnte der Modulentwickler das ja direkt ins Modul aufnehmen?

EDIT: Aktualisierte Version des Codes (jetzt mit HttpUtils)
« Letzte Änderung: 02 Dezember 2019, 11:49:07 von psycho160 »