Modul für ENIGMA2 Receiver

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

Vorheriges Thema - Nächstes Thema

fhainz

Hallo!

Ich hab hier auch einen Bug in der neuen version, vor 30min vom svn geladen. Anbei 2 screenshots.

Grüße

Loredo

Zitat von: Christoph am 22 Dezember 2013, 16:07:10
Wäre es möglich Switch Mute einzubauen ?
Bisher hab ich nur Mute on/off gefunden oder ist sowas schon eingebaut ?
set SATReceiver mute toggle
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Loredo

Zitat von: fhainz am 22 Dezember 2013, 16:44:14
Ich hab hier auch einen Bug in der neuen version, vor 30min vom svn geladen. Anbei 2 screenshots.




Ist in der SVN Version behoben, die du ab morgen laden kannst.
Alternativ manueller Download:
http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/FHEM/70_ENIGMA2.pm?format=raw
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

fhainz

Komisch, genau diese Version hab ich geladen. Egal, nun funktionierts.
Danke!

pappn

Hallo,

hab jetzt die aktuellste Version runtergeladen. Leider sind die Event Readings immer noch nicht da. Es scheint, dass es keine saubere Antwort auf die epgservicenow Abfrage gibt.
Habe die Zeile 1447 mit:
Log3 $name, 2, "ENIGMA2 device $name Response on $URL is: $response";
ergänzt.
Bei der Abfrage: /web/powerstate? kommt korrekt:
<?xml version="1.0" encoding="UTF-8"?>
<e2powerstate>
<e2instandby>false</e2instandby>
</e2powerstate>


bei /web/about?
<?xml version="1.0" encoding="UTF-8"?>
<e2abouts>
<e2about>
<e2enigmaversion>2013-12-16-vti-master</e2enigmaversion>
<e2imageversion>Release 6.0.4 2013-07-03</e2imageversion>
<e2webifversion>1.7.5</e2webifversion>
<e2fpversion>0</e2fpversion>
<e2model>solo</e2model>


<e2lanmac>00:1d:ec:03:46:92</e2lanmac>
<e2landhcp>False</e2landhcp>
<e2lanip>192.168.178.205</e2lanip>
<e2lanmask>255.255.255.0</e2lanmask>
<e2langw>192.168.178.1</e2langw>



<e2tunerinfo>
<e2nim>
<name>Tuner A</name>
<type> BCM7325 DVB-S2 NIM (internal) (DVB-S2)</type>
</e2nim>
</e2tunerinfo>
<e2servicename>ORF III</e2servicename>
<e2servicenamespace></e2servicenamespace>
<e2serviceaspect></e2serviceaspect>
<e2serviceprovider>ORF</e2serviceprovider>
<e2videowidth>720</e2videowidth>
<e2videoheight>576</e2videoheight>
<e2servicevideosize>720x576</e2servicevideosize>
<e2apid>1011</e2apid>
<e2vpid>1010</e2vpid>
<e2pcrpid>1010</e2pcrpid>
<e2pmtpid>1101</e2pmtpid>
<e2txtpid>1013</e2txtpid>
<e2tsid>1115</e2tsid>
<e2onid>1</e2onid>
<e2sid>13101</e2sid>
</e2about>
</e2abouts>


Bei /web/subservices?
<?xml version="1.0" encoding="UTF-8"?>
<e2servicelist>
<e2service>
<e2servicereference>1:0:1:332D:45B:1:C00000:0:0:0::ORF III</e2servicereference>
<e2servicename>ORF III</e2servicename>
</e2service>

</e2servicelist>


Bei /web/signal?
<?xml version="1.0" encoding="UTF-8"?>
<e2frontendstatus>
<e2snrdb>
67 %
</e2snrdb>
<e2snr>
67 %
</e2snr>
<e2ber>
0
</e2ber>
<e2acg>
45 %
</e2acg>
</e2frontendstatus>


Auch für /web/vol? eine korrekte XML Antwort.

Aber dann bei /web/epgservicenow?sRef=1%3a0%3a1%3a332D%3a45B%3a1%3aC00000%3a0%3a0%3a0%3a%3aORF%20III gibt es keine Antwort. $response bleibt leer. Daher kommt es dann wohl auch zum presence Reading "absent".
Den Weblink in ein Broweserfenster kopiert liefert aber ein Ergebnis.
<e2eventlist>
<e2event>
<e2eventid>14900</e2eventid>
<e2eventstart>1387739700</e2eventstart>
<e2eventduration>5400</e2eventduration>
<e2eventcurrenttime>1387743374</e2eventcurrenttime>
<e2eventtitle>Tatort</e2eventtitle>
<e2eventdescription>[Krimi. Spielfilm] (Tatort) (Allmächtig) (2013)</e2eventdescription>
<e2eventdescriptionextended>
Albert A. Anast ......
</e2eventdescriptionextended>
<e2eventservicereference>1:0:19:283D:3FB:1:C00000:0:0:0:</e2eventservicereference>
<e2eventservicename>Das Erste HD</e2eventservicename>
</e2event>
</e2eventlist>


Woran liegt es, dass ich auf diese Abfrage keine Antwort bekomme? Kann das an der Fritzbox liegen?
"When all else fails, read the instructions."

CUL868, RFXTFX433 und CCU3
FS20, S300TH, UNIRoll, Homematic IP, OZW672, diverse HOMEEASY, IT kompatible und China Zeugs

Loredo

Zitat von: pappn am 22 Dezember 2013, 21:50:11
Habe die Zeile 1447 mit:
Log3 $name, 2, "ENIGMA2 device $name Response on $URL is: $response";
ergänzt.


Gar nicht nötig, mit verbose=5 kriegst du die response Ausgaben auch alle ;)


Zitat von: pappn am 22 Dezember 2013, 21:50:11Aber dann bei /web/epgservicenow?sRef=1%3a0%3a1%3a332D%3a45B%3a1%3aC00000%3a0%3a0%3a0%3a%3aORF%20III gibt es keine Antwort. $response bleibt leer. Daher kommt es dann wohl auch zum presence Reading "absent".Den Weblink in ein Broweserfenster kopiert liefert aber ein Ergebnis.<e2eventlist><e2event><e2eventid>14900</e2eventid><e2eventstart>1387739700</e2eventstart><e2eventduration>5400</e2eventduration><e2eventcurrenttime>1387743374</e2eventcurrenttime><e2eventtitle>Tatort</e2eventtitle><e2eventdescription>[Krimi. Spielfilm] (Tatort) (Allmächtig) (2013)</e2eventdescription><e2eventdescriptionextended>Albert A. Anast ......</e2eventdescriptionextended><e2eventservicereference>1:0:19:283D:3FB:1:C00000:0:0:0:</e2eventservicereference><e2eventservicename>Das Erste HD</e2eventservicename></e2event></e2eventlist>Woran liegt es, dass ich auf diese Abfrage keine Antwort bekomme? Kann das an der Fritzbox liegen?


Da es beim RPi und anderen Systemen funktioniert, tendenziell ja.
Ich hätte spontan auf das HttpUtils Modul von FHEM getippt, welches für die Abfragen verwendet wird. Dagegen spräche, dass es ansonsten ja funktioniert. Das Modul könnte die URL womöglich anders parsen und sich dabei verschlucken. Aber wie gesagt, dann wäre es bei allen so.
Ich finde keinen Ansatzpunkt für eine Lösung.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

pappn

Zitat von: Loredo am 22 Dezember 2013, 21:59:07
Gar nicht nötig, mit verbose=5 kriegst du die response Ausgaben auch alle ;)

Ich weis, aber ich wollte halt nur das sehen, was in dieser Zeile passiert. Die anderen Meldungen auf der Ebene schienen mir hier nicht interessant. Das spart mir dann das suchen.

Danke für deine Unterstützung. Sollte sich bei mir doch noch eine Idee entwickeln, melde ich mich. Es hat vorher schließlich auch funktioniert.

Pappn
"When all else fails, read the instructions."

CUL868, RFXTFX433 und CCU3
FS20, S300TH, UNIRoll, Homematic IP, OZW672, diverse HOMEEASY, IT kompatible und China Zeugs

pappn

#142
So, da scheinen wir die Lösung zu haben, auch wenn ich es nicht ganz verstehe; aber es funktioniert.
Im alten Modul wurde erfolgte der Aufruf mit:
$response = CustomGetFileFromURL(0, $URL, 4, $cmd, 0, 5);

im aktuellen Modul erfolgt der Aufruf mit:
$response = CustomGetFileFromURL( 0, $URL, $timeout, undef, $fritzbox, 5 );

Nimmt man nun den $cmd Anteil aus $URL herraus und ruft wie vorher
$response = CustomGetFileFromURL( 0, $URL, $timeout, $cmd, $fritzbox, 5 );auf, dann sind alle readings da.
Darüber hinaus funktioniert dann auch das Umschalten über die Channel Liste.

Das Problem scheint daher wohl in der CustomGetFileFromURL des HttpUtils Modul von FHEM zu liegen.
Die Anfrage auf Fritz!Box und das setzen von $fritzbox kann dann wohl auch wegfallen.

@Loredo würde es dir etwas ausmachen dein Modul entsprechend anzupassen?
Die Zeilen ab 1404 könnten dann so aussehen:
    if ( defined($http_user) && defined($http_passwd) ) {
        $URL =
            $http_proto . "://"
          . $http_user . ":"
          . $http_passwd . "@"
          . $address . ":"
          . $port . "/web/"
          . $service . "?";
    }
    elsif ( defined($http_user) ) {
        $URL =
            $http_proto . "://"
          . $http_user . "@"
          . $address . ":"
          . $port . "/web/"
          . $service . "?";
    }
    else {
        $URL =
            $http_proto . "://"
          . $address . ":"
          . $port . "/web/"
          . $service . "?";
    }

    Log3 $name, 5, "ENIGMA2 $name: GET " . urlDecode($URL);

    if ( defined( $attr{$name}{timeout} ) && $attr{$name}{timeout} =~ /^\d+$/ )
    {
        $timeout = $attr{$name}{timeout};
    }
    else {
        $timeout = 6;
    }

    $response = CustomGetFileFromURL( 0, $URL, $timeout, $cmd, 0, 5 );

"When all else fails, read the instructions."

CUL868, RFXTFX433 und CCU3
FS20, S300TH, UNIRoll, Homematic IP, OZW672, diverse HOMEEASY, IT kompatible und China Zeugs

Loredo

Danke fürs nachforschen, patche ich so.


Allerdings hab ich da kein gutes Gefühl bei, weil jetzt alle Abfragen per POST statt GET gemacht werden und das laut der API Doku eigentlich GET sein sollte. Wenn einer bei den Jungs da auf die Idee kommt die Programmierung etwas "sauberer" zu machen und die Variablen nur noch per GET zulässt, bricht das Modul wieder... irgend etwas ist im HttpUtil Modul aber wirklich komisch, es läuft parallel auch schon eine Diskussion zum Thema https im Dev Forum...
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Mr. P

Zitat von: Loredo am 22 Dezember 2013, 14:09:24Zeile 161:



                  . $services->{e2service}{e2servicereference};

Thx a lot! :-)
Greetz,
   Mr. P

pappn

"When all else fails, read the instructions."

CUL868, RFXTFX433 und CCU3
FS20, S300TH, UNIRoll, Homematic IP, OZW672, diverse HOMEEASY, IT kompatible und China Zeugs

pappn

Guten Morgen,

mir ist heute aufgefallen, dass doch noch ein paar Reardings nicht befüllt sind, da sie im Modul nicht gesetzt werden.

Ich habe daher die Schleife  # Event um  eventcurrenttime ergänzt.
        # Event ## missing reading eventcurrenttime added
        if ( ref($eventinfo) eq "HASH" && defined( $eventinfo->{e2event} ) ) {
            foreach ( "eventstart", "eventduration", "eventcurrenttime" ,"eventdescription", ) {
........


Dann ist mir noch aufgefallen, dass nur eventstart_hr gesetzt wurde, aber nicht eventcurrenttime_hr. Da es mir ganz hilfreich erscheint die Laufzeit der Sendung auch im Format hh:mm:ss zu haben, ist ein reading eventduration_hr auch mit eingebaut.
            # eventstart_hr ## missing reading eventcurrenttime_hr added also eventduration_hr added for conversion from sec in hh:mm:ss
foreach ( "eventstart", "eventcurrenttime", "eventduration" ) {
                $reading   = $_ . "_hr";
                $e2reading = "e2" . $_;
if ( defined( $eventinfo->{e2event}{$e2reading} )
&& $eventinfo->{e2event}{$e2reading} ne "0" )
{
my $timestring =
  substr( FmtDateTime( $eventinfo->{e2event}{$e2reading} ), 10);
if ( !defined( $hash->{READINGS}{$reading}{VAL} )
|| $hash->{READINGS}{$reading}{VAL} ne $timestring )
{
readingsBulkUpdate( $hash, $reading, $timestring, 1 );
}
}
else {
if ( !defined( $hash->{READINGS}{$reading}{VAL} )
|| $hash->{READINGS}{$reading}{VAL} ne "-" )
{
readingsBulkUpdate( $hash, $reading, "-", 1 );
}
}
}


Da eventduration_hr neu ist, war auch eine Ergänzung bei den off-line settings erforderlich.
        # Set ENIGMA2 online-only readings to "-" in case box is in
        # offline or in standby mode
        foreach (
            'servicename',      'servicenamespace',    'serviceaspect',
            'serviceprovider',  'servicereference',    'videowidth',
            'videoheight',      'servicevideosize',    'apid',
            'vpid',             'pcrpid',              'pmtpid',
            'txtpid',           'tsid',                'onid',
            'sid',              'mute',                'volume',
            'channel',          'currentTitle',        'input',
            'eventcurrenttime', 'eventcurrenttime_hr', 'eventdescription',
            'eventduration',    'eventduration_hr',    'eventstart',         
            'eventstart_hr', 'eventtitle',         'currentMedia',
................


@Loredo: Wenn du mit der Ergänzung leben kannst, bau es doch bitte noch mit ein.

beste Grüße
Pappn
"When all else fails, read the instructions."

CUL868, RFXTFX433 und CCU3
FS20, S300TH, UNIRoll, Homematic IP, OZW672, diverse HOMEEASY, IT kompatible und China Zeugs

Loredo

Da hat sich aber einer in den Code eingelesen, was  ;D


Habe ich gerade mit in ein Update aufgenommen.



Gruß
Julian
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

fhainz

Hallo!

Ich hab jetzt im Log diesen Fehler:
2013.12.24 10:50:29.634 3: ENIGMA2 wzReceiver: ERROR: Unable to read radio bouquet '1:7:2:0:0:0:0:0:0:0:FROM BOUQUET "userbouquet.favourites.radio" ORDER BY bouquet' from device

Dieser Fehler kommt alle regelmäßig alle 30 Sekunden  8)

Ich hab nun einen Radiosender zu der bouquets/favouriten hinzugefügt. Jetzt stürzt FHEM gleich beim booten mit der Meldung
Not an ARRAY reference at ./FHEM/70_ENIGMA2.pm line 195.
ab.
ENIGMA define auskommentiert und FHEM startet wieder.

Frohe Weihnachten und ein paar erholsame Tage.

Grüße

Loredo

Wer hat denn leere Bouquets oder gar nur einen einzelnen Sender drin? Tz tz tz  8)
Sollte in der gerade hochgeladenen SVN Version gefixt sein!


Gruß
Julian
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER