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

Offline fhainz

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1263
Antw:Fertiges Modul 30_ENIGMA2.pm
« Antwort #150 am: 24 Dezember 2013, 12:54:42 »
 ;D
Ich hör am TV kein Radio, deswegen leer ;)

Danke für den fix, klappt!


Grüße und ein schönes Weihnachtsfest

Offline pappn

  • Full Member
  • ***
  • Beiträge: 158
Antw:Fertiges Modul 30_ENIGMA2.pm
« Antwort #151 am: 24 Dezember 2013, 14:06:30 »
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."

BananaPi mit CUL868 und RFXTFX433
FHT80B, FS20, S300TH, UNIRoll, IPCAM, KD101, OZW672, diverse HOMEEASY, IT kompatible und China Zeugs

Offline Loredo

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3633
  • ~ Challenging Innovation ~
Antw:Fertiges Modul 30_ENIGMA2.pm
« Antwort #152 am: 26 Dezember 2013, 00:09:39 »
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

Offline Loredo

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3633
  • ~ Challenging Innovation ~
Antw:Fertiges Modul 30_ENIGMA2.pm
« Antwort #153 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)
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

Offline pappn

  • Full Member
  • ***
  • Beiträge: 158
Antw:Fertiges Modul 30_ENIGMA2.pm
« Antwort #154 am: 26 Dezember 2013, 10:58:38 »
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."

BananaPi mit CUL868 und RFXTFX433
FHT80B, FS20, S300TH, UNIRoll, IPCAM, KD101, OZW672, diverse HOMEEASY, IT kompatible und China Zeugs

Offline fhainz

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1263
Antw:Fertiges Modul 30_ENIGMA2.pm
« Antwort #155 am: 26 Dezember 2013, 10:59:27 »
@pappn

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)

Offline pappn

  • Full Member
  • ***
  • Beiträge: 158
Antw:Fertiges Modul 30_ENIGMA2.pm
« Antwort #156 am: 26 Dezember 2013, 11:09:46 »
@fhainz
Hast recht, hab ich gesehen. Ich schau's mir mal an.
"When all else fails, read the instructions."

BananaPi mit CUL868 und RFXTFX433
FHT80B, FS20, S300TH, UNIRoll, IPCAM, KD101, OZW672, diverse HOMEEASY, IT kompatible und China Zeugs

Offline pappn

  • Full Member
  • ***
  • Beiträge: 158
Antw:Fertiges Modul 30_ENIGMA2.pm
« Antwort #157 am: 26 Dezember 2013, 12:59:29 »
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."

BananaPi mit CUL868 und RFXTFX433
FHT80B, FS20, S300TH, UNIRoll, IPCAM, KD101, OZW672, diverse HOMEEASY, IT kompatible und China Zeugs

Offline Loredo

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3633
  • ~ Challenging Innovation ~
Antw:Fertiges Modul 30_ENIGMA2.pm
« Antwort #158 am: 26 Dezember 2013, 13:40:22 »
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.  :-\


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

Offline Loredo

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3633
  • ~ Challenging Innovation ~
Antw:Fertiges Modul 30_ENIGMA2.pm
« Antwort #159 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)
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

Offline pappn

  • Full Member
  • ***
  • Beiträge: 158
Antw:Fertiges Modul 30_ENIGMA2.pm
« Antwort #160 am: 26 Dezember 2013, 15:56:34 »
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."

BananaPi mit CUL868 und RFXTFX433
FHT80B, FS20, S300TH, UNIRoll, IPCAM, KD101, OZW672, diverse HOMEEASY, IT kompatible und China Zeugs

Offline maxritti

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 800
Antw:Fertiges Modul 30_ENIGMA2.pm
« Antwort #161 am: 29 Dezember 2013, 13:48:31 »
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?

Offline Loredo

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3633
  • ~ Challenging Innovation ~
Antw:Fertiges Modul 30_ENIGMA2.pm
« Antwort #162 am: 29 Dezember 2013, 14:11:56 »
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


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

Offline maxritti

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 800
Antw:Fertiges Modul 30_ENIGMA2.pm
« Antwort #163 am: 29 Dezember 2013, 14:59:52 »
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?

Offline Loredo

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3633
  • ~ Challenging Innovation ~
Antw:Fertiges Modul 30_ENIGMA2.pm
« Antwort #164 am: 29 Dezember 2013, 15:04:01 »
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