Modul für ENIGMA2 Receiver

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

Vorheriges Thema - Nächstes Thema

fhainz

 ;D
Ich hör am TV kein Radio, deswegen leer ;)

Danke für den fix, klappt!


Grüße und ein schönes Weihnachtsfest

pappn

Zitat von: Loredo am 23 Dezember 2013, 21:42:44
Da hat sich aber einer in den Code eingelesen, was  ;D

Man will ja schließlich auch etwas lernen.  8)

Schönes Feiertage
"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: Loredo am 22 Dezember 2013, 23:31:52
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...


Und da haben wir den Salat... per PM erreichte mich ein Mail eines Users mit einer alten WebIf Version 1.6.2.
Diese alten Versionen können offenbar die Anfragen nur per GET entgegen nehmen und nicht per POST...  :'(


Für die Abwärtskompatibilität müsste ich also wieder auf GET umstellen. Ich habe aber noch keine Idee, wie ich dann die Fritzboxen weiter unterstütze. Vermutlich muss in FHEM's HttpUtils.pm was gemacht werden...
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

Ich habe jetzt mal eine Version hochgeladen, die POST und GET parallel macht (glaub das hatte ich schonmal so  ::) ). Vielleicht befriedigt es ja damit dann alle Gemüter, bitte mal testen  8)
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 26 Dezember 2013, 00:09:39
Und da haben wir den Salat... per PM erreichte mich ein Mail eines Users mit einer alten WebIf Version 1.6.2.
Diese alten Versionen können offenbar die Anfragen nur per GET entgegen nehmen und nicht per POST...  :'(
So ein Mist. Wäre es hier nicht möglich mit einem Attribut zu arbeiten oder die FB Abfrage in etwas anderer Weise zu verwenden und abhängig davon die Abfrage mit POST oder GET zu machen?
Ggf. könnte man ja auch die WebIF Version abfragen und darauf basierend abfragen, oder?

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

fhainz

@pappn

Zitat von: Loredo am 26 Dezember 2013, 00:23:40
Ich habe jetzt mal eine Version hochgeladen, die POST und GET parallel macht (glaub das hatte ich schonmal so  ::) ). Vielleicht befriedigt es ja damit dann alle Gemüter, bitte mal testen  8)

pappn

@fhainz
Hast recht, hab ich gesehen. Ich schau's mir mal an.
"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

Zitat von: Loredo am 26 Dezember 2013, 00:23:40
Ich habe jetzt mal eine Version hochgeladen, die POST und GET parallel macht (glaub das hatte ich schonmal so  ::) ). Vielleicht befriedigt es ja damit dann alle Gemüter, bitte mal testen  8)

Hallo LOredo,

diese Version funktioniert bei mir überhaupt nicht. Umschalten geht nicht und Readings gibts auch keine. Insbesondere die neue Zeile$cmd = "?" . $cmd;
macht Probleme, da das ? wohl an der falschen Stelle steht.

Wenn es denn tatsächlich mit der FB zusammenhängt, sollten die Abfragen FB speziefisch gemacht werden. Daher mein Vorschlag wie folgt. Zumindest fuinktioniert es so bei mir.
    if ( !defined($cmd) || $cmd eq "" ) {
        Log3 $name, 4, "ENIGMA2 $name: REQ $service";
    }
    else {
        Log3 $name, 4, "ENIGMA2 $name: REQ $service/" . urlDecode($cmd);
#        $cmd = "?" . $cmd;
    }

    if ( defined($http_user) && defined($http_passwd) ) {
        $URL =
            $http_proto . "://"
          . $http_user . ":"
          . $http_passwd . "@"
          . $address . ":"
          . $port . "/web/"
          . $service;
#          . $cmd;
    }
    elsif ( defined($http_user) ) {
        $URL =
            $http_proto . "://"
          . $http_user . "@"
          . $address . ":"
          . $port . "/web/"
          . $service;
#          . $cmd;
    }
    else {
        $URL =
            $http_proto . "://"
          . $address . ":"
          . $port . "/web/"
          . $service;
#          . $cmd;
    }

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

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

    # detect a FritzBOX envirnoment
    $fritzbox = 1
      if ( exists $ENV{CONFIG_PRODUKT_NAME}
        && defined $ENV{CONFIG_PRODUKT_NAME} );

# Request Info depending on whether FB detected or not
  if ($fritzbox == 1) {
$response = CustomGetFileFromURL( 0, $URL, $timeout, $cmd, 0, 5 );
Log3 $name, 2, "ENIGMA2 device $name FB=$fritzbox Response on $URL $cmd is: $response";
  } else {
        $cmd = "?" . $cmd;
$URL = $URL . $cmd;
        $response = CustomGetFileFromURL( 0, $URL, $timeout, undef, 0, 5 );
Log3 $name, 2, "ENIGMA2 device $name FB=$fritzbox Response on $URL is: $response";
  }


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

Zitat von: pappn am 26 Dezember 2013, 10:58:38
So ein Mist. Wäre es hier nicht möglich mit einem Attribut zu arbeiten oder die FB Abfrage in etwas anderer Weise zu verwenden und abhängig davon die Abfrage mit POST oder GET zu machen?
Ggf. könnte man ja auch die WebIF Version abfragen und darauf basierend abfragen, oder?

Pappn


Prinzipiell richtig. Allerdings wäre dann die Kombination Fritzbox und älteres ENIGMA2-Webif nicht möglich. Und irgendwie klingt es für mich nach einem Klassiker, dass jemand, der seine Dreambox nicht updaten mag, auch eine Fritzbox verwendet statt eines RPi  ;D


Ich verstehe noch immer nicht, weshalb auf der Fritzbox nur bei einigen Abfragen unbedingt POST genutzt werden muss. Schließlich funktioniert GET ja dort auch für viele der Abfragen.  :-\


Zitat von: pappn am 26 Dezember 2013, 12:59:29
diese Version funktioniert bei mir überhaupt nicht. Umschalten geht nicht und Readings gibts auch keine. Insbesondere die neue Zeile$cmd = "?" . $cmd;
macht Probleme, da das ? wohl an der falschen Stelle steht.
Nee, tut es nicht. Sieht man hier ganz hervorragend:



2013.12.26 13:30:22 5: ENIGMA2 LR_SAT: GET http://192.168.6.50:80/web/getservices?sRef=1:7:2:0:0:0:0:0:0:0:FROM BOUQUET "userbouquet.favourites.radio" ORDER BY bouquet



Ich denk mal weiter nach.
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

Ich habe gerade eine Version hochgeladen, die ein neues Attribut "http-method" bereitstellt. Damit kann man wählen, ob man GET oder POST verwenden möchte.
Default ist GET, auf allen Fritzboxen sollte POST jedoch automatisch vorausgewählt werden. Wer möchte/muss, kann aber auch auf Fritzboxen explizit GET setzen und verwenden, falls die Webif Version das erfordert. Falls GET auf Fritzboxen generell nicht funktioniert, liegt es nun zumindest nicht mehr am ENIGMA2 Modul  8)
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 26 Dezember 2013, 14:33:55
Ich habe gerade eine Version hochgeladen, die ein neues Attribut "http-method" bereitstellt. Damit kann man wählen, ob man GET oder POST verwenden möchte.
Default ist GET, auf allen Fritzboxen sollte POST jedoch automatisch vorausgewählt werden. Wer möchte/muss, kann aber auch auf Fritzboxen explizit GET setzen und verwenden, falls die Webif Version das erfordert. Falls GET auf Fritzboxen generell nicht funktioniert, liegt es nun zumindest nicht mehr am ENIGMA2 Modul  8)

Coole Sache. Vielen Dank, "et löppt".
"When all else fails, read the instructions."

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

maxritti

Hallo,

ich hänge mich hier einfach mal dran, denn ich habe eine DM600PVR und dass die mit FHEM steuerbar ist, ist ja mal lustig.
Kommt ja auf einen Versuch drauf an.  :)
Die habe ich mal mit dem neuesten Image enigma2 versehen.

Dann die 30_ENIGMA2.PM nach /opt/fhem/FHEM/ kopiert.

Ich bin mir nur nicht sicher, ob das die aktuelle ist.
Meine aber hier die letzte in dem Fred gepsotete genommen zu haben.

# $Id: 30_ENIGMA2.pm 1 2013-09-16 13:49:43Z loredo $

Dann wollte ich in die fhem.cfg den Eintrag hier vornehmen:

define SATReceiver ENIGMA2 192.168.178.37

allerdings meckert der dann beim speichern das hier:

ERROR:

Cannot load module ENIGMA2


Und das obwohl ich auf meinem Debain Rechner wo fhem läuft das hier gemacht habe.
Sieht auch so aus, als wenn es installiert wäre.

apt-get install libxml-simple-perl
Reading package lists... Done
Building dependency tree       
Reading state information... Done
libxml-simple-perl is already the newest version.
The following packages were automatically installed and are no longer required:
  libfile-copy-recursive-perl update-inetd
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.


Als installierte perl Version gibt's das

This is perl, v5.10.1 (*) built for i486-linux-gnu-thread-multi

Hat jemand eine Idee, wo es bei mir (öhm fhem) klemmt?

Loredo

Zitat von: maxritti am 29 Dezember 2013, 13:48:31
Dann die 30_ENIGMA2.PM nach /opt/fhem/FHEM/ kopiert.

Ich bin mir nur nicht sicher, ob das die aktuelle ist.
Meine aber hier die letzte in dem Fred gepsotete genommen zu haben.

# $Id: 30_ENIGMA2.pm 1 2013-09-16 13:49:43Z loredo $

Bitte nimm die SVN Version, hier im Thread werden keine Versionen mehr veröffentlicht.
Entweder bekommst du die aktuelle Version via "update" Kommando oder kannst sie hier laden:
http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/FHEM/70_ENIGMA2.pm?format=raw


Zitat von: maxritti am 29 Dezember 2013, 13:48:31
Dann wollte ich in die fhem.cfg den Eintrag hier vornehmen:

define SATReceiver ENIGMA2 192.168.178.37

allerdings meckert der dann beim speichern das hier:

ERROR:

Cannot load module ENIGMA2


Und das obwohl ich auf meinem Debain Rechner wo fhem läuft das hier gemacht habe.
Sieht auch so aus, als wenn es installiert wäre.

apt-get install libxml-simple-perl
Reading package lists... Done
Building dependency tree       
Reading state information... Done
libxml-simple-perl is already the newest version.
The following packages were automatically installed and are no longer required:
  libfile-copy-recursive-perl update-inetd
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.


Als installierte perl Version gibt's das

This is perl, v5.10.1 (*) built for i486-linux-gnu-thread-multi

Hat jemand eine Idee, wo es bei mir (öhm fhem) klemmt?


XML::Simple zu installieren ist schonmal richtig.
Im Logfile müsste mehr stehen, weshalb das Device nicht definiert werde kann. Probiere es aber in jedem Fall erstmal mit der aktuellsten Version.
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

maxritti

Okay, nach einem Update taucht ein 70_ENIGMA2.pm in /opt/fhem/FHEM/ auf.
Keine Ahnung, ob das da vorhin auch schon existiert hat.
Egal. Das 30_ENIGMA2.pm gelöscht.

Wenn ich dann wieder per Browser die fhem.cfg mit dem Eintrag versehe kommt die Meldung wieder.

Und das hier im Log.

2013.12.29 14:57:55 1: reload: Error:Modul 70_ENIGMA2 deactivated:
Type of arg 1 to keys must be hash (not array dereference) at ./FHEM/70_ENIGMA2.pm line 209, near "} ) "

2013.12.29 14:57:55 0: Type of arg 1 to keys must be hash (not array dereference) at ./FHEM/70_ENIGMA2.pm line 209, near "} ) "

2013.12.29 14:57:55 1: Including ./log/fhem.save


Any ideas?

Loredo

Ich habe den Eindruck, bei dir ist etwas durcheinander gekommen. Hast du FHEM komplett neu gestartet nachdem du die Module ausgetauscht hast?
Außerdem bin ich unsicher, ob du nun tatsächlich die aktuellste Version aus dem SVN hast. Bitte sicherstellen.
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