Modul für ENIGMA2 Receiver

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

Vorheriges Thema - Nächstes Thema

Loredo

Zitat von: franky08 schrieb am Do, 19 September 2013 21:39Also, wenn ich Zeile 454 bis 460 auskommentiere crasht fhem immer noch. Sehe gerade, ist das der Abschnitt:


# Tuner
      #foreach my $key (keys %{ $boxinfo->{e2about}{e2tunerinfo}{e2nim} }) {
      #my $tuner_name=lc($key);
      #$tuner_name =~ s/\s/_/g;
      #my $tuner_type=$boxinfo->{e2about}{e2tunerinfo}{e2nim}{$key}{type};

      #ENIGMA2_SetReading($hash, $tuner_name, $tuner_type);
      #}
sind bei mir die Zeilen 452 bis 459 in der letzten 30_Enigma2.pm version

Der Fehler bei der Fritzbox liegt leider woanders.
Such mal im Forum nach "Can't locate unicore/Heavy.pl". Das ist erstmal wohl nicht so direkt lösbar.
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: DannyP schrieb am Do, 19 September 2013 20:47Hi,

ich habe das Debuggen einfach mal übernommen und bin auf das Problem "Not a HASH reference" gestoßen.
Der Abbruch kommt, wenn mehr als eine Festplatte angeschlossen ist, neben der internen also noch weitere externe Festplatten an USB angeschlossen sind.

Die Variable $boxinfo sieht für den Key e2about, e2hddinfo wie folgt aus wenn eine interne Festplatte und eine externe Festplatte mit USB angeschlossen ist:
'e2hddinfo' => [
  {
    'free' => '744.479 GB',
    'model' => 'ATA-HGST HTS541010A9',
    'capacity' => '1000.204 GB'
  },
  {
    'free' => '-1 MB',
    'model' => 'ST2000DL-001-9VT156',
    'capacity' => '2000.398 GB'
  }
],




Bei nur einer internen Festplatte sieht es wie folgt aus:
'e2hddinfo' => {
  'free' => '744.304 GB',
  'model' => 'ATA-HGST HTS541010A9',
  'capacity' => '1000.204 GB'
},



Zum Nachvollziehen also einfach eine USB Platte anschließen. Dann sollte der Abbruch kommen. Die Perl Version dürfte dabei egal sein.
Somit gäbe es ja dann auch eine Möglichkeit, den Status weiterer Festplatten auszugeben, wie ich in meinem ersten post in diesem Thread schon mal geschrieben hatte ;-)

Schöne Grüße
Daniel


Danke! Ich hab an meine VUplusDuo2 einen USB Stick angesteckt und gemountet, der jedoch auch nach Neustart nicht über die Web-API sichtbar ist. Ich kann es daher so nicht nachvollziehen.
Kannst du mir die Ausgabe von http://<deine-box>/web/about schicken? Ggf. mit Chrome o.ä. öffnen, nicht jeder Browser stellt das XML direkt dar.

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

Loredo

Zitat von: CicakDOS schrieb am Do, 19 September 2013 21:11Hi,

die Sache mit "use 5.012;" streichen - hatte es falsch in Erinnerung.

Sonst bleibt es dabei, wenn ich Zeile 454 bis 460 auskommentiere, funktioniert Modul perfekt.

Habe auch eine interne HDD und kann den Hinweis von Daniel nicht ganz nachvollziehen, daran liegt es bei mir definitiv nicht.

Grüßle


Hast du vielleicht stattdessen nur einen Tuner?
Kannst du mir die Ausgabe von http://<deine-box>/web/about schicken? Ggf. mit Chrome o.ä. öffnen, nicht jeder Browser stellt das XML direkt dar.
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

franky08

Hallo Loredo das ist von meiner 7020HD
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<e2abouts>
<e2about>
<e2enigmaversion>2012-11-03-3.2</e2enigmaversion>
<e2imageversion>Release 3.2.2 2012-03-30</e2imageversion>
<e2webifversion>1.7.1</e2webifversion>
<e2fpversion>3</e2fpversion>
<e2model>dm7020hd</e2model>
<e2lanmac>00:09:34:2d:50:95</e2lanmac>
<e2landhcp>False</e2landhcp>
<e2lanip>192.168.2.35</e2lanip>
<e2lanmask>255.255.255.0</e2lanmask>
<e2langw>192.168.2.1</e2langw>
<e2hddinfo>
<model>ATA-ST1000DL002-9TT1</model>
<capacity>1000.204 GB</capacity>
<free>325.172 GB</free>
</e2hddinfo>
<e2hddinfo>
<model>USB-Flash Disk</model>
<capacity>0.519 GB</capacity>
<free>356 MB</free>
</e2hddinfo>
<e2tunerinfo>
<e2nim>
<name>Tuner A</name>
<type>BCM4505 (DVB-S2)</type>
</e2nim>
<e2nim>
<name>Tuner B</name>
<type>BCM4505 (DVB-S2)</type>
</e2nim>
</e2tunerinfo>
<e2servicename>Das Erste HD</e2servicename>
<e2servicenamespace/>
<e2serviceaspect/>
<e2serviceprovider>ARD</e2serviceprovider>
<e2videowidth>1280</e2videowidth>
<e2videoheight>720</e2videoheight>
<e2servicevideosize>1280x720</e2servicevideosize>
<e2apid>5102</e2apid>
<e2vpid>5101</e2vpid>
<e2pcrpid>5101</e2pcrpid>
<e2pmtpid>5100</e2pmtpid>
<e2txtpid>5104</e2txtpid>
<e2tsid>1019</e2tsid>
<e2onid>1</e2onid>
<e2sid>10301</e2sid>
</e2about>
</e2abouts>
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

Loredo

Update:

- fix for multi-hdd boxes
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

CicakDOS

Zitat von: franky08 schrieb am Do, 19 September 2013 21:21
Zitat von: DannyP schrieb am Do, 19 September 2013 21:16Hi,

ZitatHabe auch eine interne HDD und kann den Hinweis von Daniel nicht ganz nachvollziehen, daran liegt es bei mir definitiv nicht.

Hast du nur eine interne? Dann funktioniert es auch.
Nur wenn du eine interne UND eine USB Platte laufen hast. Oder mehrere USB Platten.

Schöne Grüße
Daniel

oder einen Stick und eine interne hdd

@franky08, Daniel:
Sorry, kam nicht richtig rüber - manchmal soll man nicht mehrere Sachen gleichzeitig tun.
Ich habe eine interne HDD und USB Stick, habe aber das Problem nicht.
Aber wenn bei Euch mehrere Speicher in der Liste auftauchen, wird das Problem sicherlich daran liegen.
Ich werde versuchen nachzuvollziehen, warum mein USB Stick nicht zu sehen ist.

Zitat von: franky08 schrieb am Do, 19 September 2013 21:39Also, wenn ich Zeile 454 bis 460 auskommentiere crasht fhem immer noch. Sehe gerade, ist das der Abschnitt:
# Tuner
      #foreach my $key (keys %{ $boxinfo->{e2about}{e2tunerinfo}{e2nim} }) {
      #my $tuner_name=lc($key);
      #$tuner_name =~ s/\s/_/g;
      #my $tuner_type=$boxinfo->{e2about}{e2tunerinfo}{e2nim}{$key}{type};

      #ENIGMA2_SetReading($hash, $tuner_name, $tuner_type);
      #}
sind bei mir die Zeilen 452 bis 459 in der letzten 30_Enigma2.pm version

sorry franky08, mein Fehler - habe bereits paar Zeilen während der Analyse verändert/zugefügt, dass sich die Zeilennummer um zwei verschoben hat.

Zitat von: Loredo schrieb am Do, 19 September 2013 21:33Danke fürs Herausfinden, dass es an den HDDs liegt.
Den "keys"-Befehl hatte ich in der Manpage so verstanden, dass er mit der Nutzung eines Hashes auch bei älteren Versionen als Perl 5.12 funktioniert und lediglich die Unterstützung für normale Arrays nicht gegeben ist.

Da ich keine alte Perl Version habe: Kann das jemand final bestätigen/widerlegen?

Du hast Recht, keys vielleicht nicht, aber der Konstrukt
foreach my $key (keys %{ $boxinfo->{e2about}{e2tunerinfo}{e2nim} }) {
funktioniert bei mir nicht. Ich habe Perl 5.10 und wenn diese Zeile im Coding behalte, FHEM startet nicht.

Dagegen hätte ich eine Bitte, könntest Du die "Tuner"-Zeilen gegen das hier austauschen:
   
    my %tuner= %{$boxinfo->{e2about}{e2tunerinfo}{e2nim}};
    for (keys %tuner) {
 my $tuner_name=lc($tuner{"name"});
      $tuner_name =~ s/\s/_/g;
      my $tuner_type=$tuner{"type"};

      ENIGMA2_SetReading($hash, $tuner_name, $tuner_type);
    }

und schauen, in wie weit sich das Ergebnis von deinem Coding unterscheidet ?
Sorry, ich habe keine weitere Möglichkeit dies zu testen.

Danke und Grüße
Dejan

Loredo

Zitat von: CicakDOS schrieb am Do, 19 September 2013 23:14Dagegen hätte ich eine Bitte, könntest Du die "Tuner"-Zeilen gegen das hier austauschen:
   
    my %tuner= %{$boxinfo->{e2about}{e2tunerinfo}{e2nim}};
    for (keys %tuner) {
 my $tuner_name=lc($tuner{"name"});
      $tuner_name =~ s/\s/_/g;
      my $tuner_type=$tuner{"type"};

      ENIGMA2_SetReading($hash, $tuner_name, $tuner_type);
    }

und schauen, in wie weit sich das Ergebnis von deinem Coding unterscheidet ?

Das wäre so nicht ganz richtig, es muss wohl so lauten:

     my %tuner= %{ $boxinfo->{e2about}{e2tunerinfo}{e2nim} };
      for (keys %tuner) {
        my $tuner_name=lc($_);
        $tuner_name =~ s/\s/_/g;
        my $tuner_type=$tuner{$_}{type};

        ENIGMA2_SetReading($hash, $tuner_name, $tuner_type);
      }


Da der keys Befehl ja aber auch dort immer noch enthalten ist, bitte einmal selbst testen, ob das auch mit Perl 5.10 funktioniert.
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

CicakDOS

Ich habe zwischenzeitlich einen weiteren Tuner an Dreambox angeschlossen und kann jetzt die Problematik besser nachvollziehen.

Hier wäre Code für beide Optionen:

Zitat# Tuner
    my %tuner= %{ $boxinfo->{e2about}{e2tunerinfo}{e2nim} };
   # single
   if ( (keys %tuner) == 1 )
   {
     my $tunerRef = \%tuner;
      my $tuner_name=lc($$tunerRef{name});
         $tuner_name =~ s/\s/_/g;   
     
     ENIGMA2_SetReading($hash, $tuner_name, $$tunerRef{type});
    # multiple     
   } else {
     for (keys %tuner) {
      my $tuner_name=lc($_);
      $tuner_name =~ s/\s/_/g;
      my $tuner_type=$tuner{$_}{type};

      ENIGMA2_SetReading($hash, $tuner_name, $tuner_type);
     }
   }

Sorry wegen der entstandenen Verwirrung!

Grüßle

DannyP

Guten Morgen,

Zitat von: Loredo schrieb am Do, 19 September 2013 23:02Update:

- fix for multi-hdd boxes

Super! Klappt jetzt ohne Abbruch und ich sehe nun in den Readings die Infos zu allen Festplatten / Sticks.

Schöne Grüße
Daniel

Loredo

Update:

- added basic documentation
- fix for single-tuner boxes
- minor improvements
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

CicakDOS

Ich habe die vorgeschlagene Abfrage:

     
      # single
      if ( (keys %tuner) == 1 ) {


gegen

     
      # single
      if (exists $tuner{type}) {


So ist eher richtig und habe in deiner letzten Version "use 5.012" auskommentiert - jetzt FHEM bricht nicht mehr ab, egal ob single oder multiple Tuner.

Grüßle


(siehe Anhang / see attachement)


(siehe Anhang / see attachement)

franky08

Zum crash auf der Fritzbox folgendes:

http://www.fhemwiki.de/wiki/Unicode_FritzBox

Versuche das heute Abend mal zu testen, da ich jetzt noch auf Arbeit bin.

Zitat aus WIKI:
Lösung

Datei heavy.pl runterladen [3]
Verzeichnis "unicore" erstellen unter /var/InternerSpeicher/fhem/lib/perl5/5.12.2/
Datei heavy.pl erstellen in /var/InternerSpeicher/fhem/lib/perl5/5.12.2/unicore/
ggf. Dateirechte ändern
fhem restart

Gruß Frank

P.S. Crasht immer noch
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

Loredo

Update:

- refactoring
- optimizations
- use standard routines for reading updates
- complete documentation
- add more shortcuts to commands
- rename module from 30_ENIGMA2.pm to 70_ENIGMA2.pm

Möglicherweise muss das Device einmal gelöscht und neu angelegt werden, damit der interne Status und die Readings korrekt sind.
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: franky08 schrieb am Fr, 20 September 2013 14:04Zum crash auf der Fritzbox folgendes:

http://www.fhemwiki.de/wiki/Unicode_FritzBox

Versuche das heute Abend mal zu testen, da ich jetzt noch auf Arbeit bin.

Zitat aus WIKI:
Lösung

Datei heavy.pl runterladen [3]
Verzeichnis "unicore" erstellen unter /var/InternerSpeicher/fhem/lib/perl5/5.12.2/
Datei heavy.pl erstellen in /var/InternerSpeicher/fhem/lib/perl5/5.12.2/unicore/
ggf. Dateirechte ändern
fhem restart

Gruß Frank

P.S. Crasht immer noch

Ich fürchte du wirst es auf deiner Fritzbox nicht verwenden können.
Ich brauche XML::Simple zum Auslesen des Status von der Box und dieses Modul gibt es nicht für die Fritzbox. Aber wenn es klappen sollte freut es mich natürlich :-)
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

betateilchen

Zitat von: Loredo schrieb am Fr, 20 September 2013 18:37Ich brauche XML::Simple zum Auslesen des Status von der Box und dieses Modul gibt es nicht für die Fritzbox.

Das halte ich für ein Gerücht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!