Modul für ENIGMA2 Receiver

Begonnen von Loredo, 16 September 2013, 22:34:57

Vorheriges Thema - Nächstes Thema

cocojambo

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
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000

psycho160

#961
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)
- 2013@FHEM - 2020 Setup: Pi 4 4GB Systeme: Shelly, Tasmota, Zigbee und mittlerweile nur noch wenig Homematic. Entwicker von: tado-FHEM Modul (perlcritic 3 ^^)(https://git.wolfmajer.at/Public/FHEM-Tado)

balli1187

moin,

Ich nutze as Modul hauptsächlich um mir Nachrichten auf dem TV asuzugeben.
Wäre es möglich die Funktion Modul so zu gestallten, dass die Nachricht nur dann angezeigt wird, wenn die Box auch läuft? Bei ausgeschalteter Box (Stand-by) wird mir die nachricht auf dem kleinen Display meiner Vu+ Solo4K angezeigt aber da kann ich nichts damit anfangen.

Bisher bin ich den umweg gegangen die anzuzeigenden Nachrichten in ein Reading zu schreiben und dann dann beim einschalten der Box dieses über ein weiteres notify zu prüfen.

Grüße, Stephan
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero

kabanett

Hallo,
falls du DOIF verwendest. Ich mache das so:
([BLABLA:"BLA"] and [SAT_Wohnzimmer] eq "on") (set SAT_Wohnzimmer msg info 4 Deine Nachricht!)
Ich denke, dass es im Notify und co auch funktioniert.

Gruß

Hardware: Fhem auf Raspi3 / selbtsbau CUL 433 und 868 MHz / MAX Thermostate / IT-Dosen nur noch Weihnachten / diverse ESP Aktoren/Sensoren / X10 Fernbedienung / Shelly 1, 1L, 2, 2.5, Dimmer, RGB2 / LaCrosseGateway / Zigbee2531 / diverse Zigbee Aktoren/Sensoren

Otto123

so in der Art:
defmod nty_AnrufKlingelt notify FBMon:.*ring {\
  my $box="VUPLUS1";;\
  my $patt="123456[7,8]";;\
  my $number = ReadingsVal($NAME,"internal_number",99);;\
  if (($number =~ m/$patt/) and Value($box) eq "on"){ \
    fhem ("set $box showtext Anruf von [$NAME:external_name] [$NAME:external_number]")\
  } \
}
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

balli1187

Danke ihr zwei. Eine solche Lösung hab ich ja auch und die funktioniert ausgezeichnet.

Ich bin nur gerade dabei auf das msg-Modul für die zentrale Verwaltung  umzustellen und dabei ist mir dann aufgefallen, dass es dann am Ende 4 Instanzen sind bis die Nachricht mal angespielt wird....
Und da dachte ich "eigentlich" könnte man das doch direkt ins Modul integrieren, dann letztlich brauch doch niemand die Nachricht, wenn die Box im Stand-by ist ;-)


Gesendet von iPhone mit Tapatalk
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero

kabanett

Zitat von: balli1187 am 20 März 2020, 20:17:36
Ich bin nur gerade dabei auf das msg-Modul für die zentrale Verwaltung  umzustellen
Kannte ich noch nicht. Mal schauen, vielleicht ist das auch was für mich.  ;)

Zitat von: balli1187 am 20 März 2020, 20:17:36
letztlich brauch doch niemand die Nachricht, wenn die Box im Stand-by ist ;-)
Scheinbar bastelt sich jeder selbst eine Lösung. Von daher, gebe ich dir recht!
Hardware: Fhem auf Raspi3 / selbtsbau CUL 433 und 868 MHz / MAX Thermostate / IT-Dosen nur noch Weihnachten / diverse ESP Aktoren/Sensoren / X10 Fernbedienung / Shelly 1, 1L, 2, 2.5, Dimmer, RGB2 / LaCrosseGateway / Zigbee2531 / diverse Zigbee Aktoren/Sensoren

balli1187

Zitat von: Otto123 am 20 März 2020, 20:02:40
so in der Art:
defmod nty_AnrufKlingelt notify FBMon:.*ring {\
  my $box="VUPLUS1";;\
  my $patt="123456[7,8]";;\
  my $number = ReadingsVal($NAME,"internal_number",99);;\
  if (($number =~ m/$patt/) and Value($box) eq "on"){ \
    fhem ("set $box showtext Anruf von [$NAME:external_name] [$NAME:external_number]")\
  } \
}

Off-Topic:
Sorry für diese absolute Einsteiger Frage, die hier eigentlich nicht hingehört aber:
Kannst du mir kurz erklären warum das mit den eckigen Klammern in deinem notify funktioniert?
Ich kenn die [] nur aus dem DOIF und in der Kommandozeile funktioniert die Agfrage von Readings auf diese Weise bei mir leider auch nicht.


Gesendet von iPhone mit Tapatalk
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero

Otto123

klar - gerne: steht in der Doku https://fhem.de/commandref_DE.html#set und nennt sich set magic :)
Und richtig: funktioniert so nur beim set und nicht bei der Abfrage in der Kommandozeile ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

balli1187

Zitat von: Otto123 am 30 März 2020, 14:09:03
klar - gerne: steht in der Doku https://fhem.de/commandref_DE.html#set und nennt sich set magic :)
Und richtig: funktioniert so nur beim set und nicht bei der Abfrage in der Kommandozeile ;)
Wieder was gelernt - danke.
Du bist ja schon ein bisschen länger dabei... wurde schon mal diskutiert die Schreibweise generell zum Abfragen von Readings zu übernehmen?
Bisher kenn ich nur die Variante mit ReadingsVal und "Umweg" über Perl. Das macht Befehle teilweise elend lang und unlesbar....


Gesendet von iPhone mit Tapatalk
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero

Otto123

Dieser Syntax funktioniert für die Abfrage in IF (FHEM Befehl, nicht zu verwechseln mit Perl if) und DOIF.
Das mit elend lang und nicht lesbar ist immer relativ ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

iHome

Zitat von: franky08 am 14 März 2019, 21:52:13
Läuft :-)

Webif auf der Box zickt mit der default Einstellung


VG
Frank

Habe genau das gleiche Problem mit meiner DB920. Könntest Du den Lösungsweg posten? Was meinst Du mit Webif zickt. Welche Einstellungen müssten angepasst werden?

bschatz

Das Enigma2 Modul sendet POSTs welche von der dreambox dm520 nicht akzeptiert werden:
2020.05.07 17:54:41 5: ENIGMA2 dreambox: called function ENIGMA2_ReceiveCommand()
2020.05.07 17:54:41 4: ENIGMA2 dreambox: RCV powerstate/?newstate=4&
2020.05.07 17:54:41 5: ENIGMA2 dreambox: RES ERROR powerstate/?newstate=4& - not in XML format

<html>
  <head><title>405 - Invalid method: GET!</title></head>
  <body>
    <h1>Invalid method: GET!</h1>
    <p>GET is not allowed here, please use POST</p>
  </body>
</html>


Direkt mit curl:
(1) curl -X GET  http://192.168.1.200/web/powerstate?newstate=5

<html>
  <head><title>405 - Invalid method: GET!</title></head>
  <body>
    <h1>Invalid method: GET!</h1>
    <p>GET is not allowed here, please use POST</p>
  </body>
</html>

(2) curl -X POST  http://192.168.1.200/web/powerstate?newstate=5
<?xml version="1.0" encoding="UTF-8"?>
<e2powerstate>
   <e2instandby>false</e2instandby>
</e2powerstate>


Kann man irgendwo ein issue einstellen ? (In github ist ja nur ein mirror)




kabanett

Hallo
@Loredo
Siehst du eine Möglichkeit die seit Ende letzten Jahres verfügbare HDMI-CEC Steuerung zu implementieren?
Das wäre für entsprechende Szenen usw. eine tolle Sache. Mit Putty oder dem Terminal im OpenWebIf funktioniert es sehr zuverlässig. Dafür aber auch sehr umständlich.
Leider habe ich in der OpenWebIf- API Dokumentation nichts dazu gefunden. Ich selbst verstehe zu wenig davon, daher die Nachfrage.

Vielen Dank und Gruß
Hier ein Link zum Thema:
https://www.opena.tv/skripte/49116-ehdmicec-via-command-line-post414804.html#post414804
Hardware: Fhem auf Raspi3 / selbtsbau CUL 433 und 868 MHz / MAX Thermostate / IT-Dosen nur noch Weihnachten / diverse ESP Aktoren/Sensoren / X10 Fernbedienung / Shelly 1, 1L, 2, 2.5, Dimmer, RGB2 / LaCrosseGateway / Zigbee2531 / diverse Zigbee Aktoren/Sensoren

marvin78

So wie ich das sehe, gibt das die API nicht her.

Besser als diese Frickeltechnologie (HDMO-CEC): Harmony Hub.