neues modul fakeRoku um einzelne tasten von einer harmony an fhem zu senden

Begonnen von justme1968, 31 März 2016, 14:17:58

Vorheriges Thema - Nächstes Thema

kennymc.c

Hab leider nach Einbinden des fakeRoku Moduls immer noch den Fehler:

reload: Error:Modul 37_fakeRoku deactivated:
Can't locate XML/Simple.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl . ./FHEM) at ./FHEM/37_fakeRoku.pm line 14, <$fh> line 96.
BEGIN failed--compilation aborted at ./FHEM/37_fakeRoku.pm line 14, <$fh> line 96.

Der Perl Multicast Mode ist installiert.
Hab dann versucht XML::Simple zu installieren, wozu ich aber laut Install Log anscheinend noch XML::SAX::Expat, XML::Perser und YAML brauchte. Und selbst jetzt schlägt die Installation am Ende noch fehl. Was mache ich falsch bzw. wo liegt der Fehler, dass das Modul nicht geladen werden kann?

hermann1514

Hi,

auch ich finde das Modul SuperToll. Danke.

Aber ein Problem habe ich festgestellt: Als ich das erstemal das Modul definiert habe, ist mein FHEM nach 10 sekunden abgestürzt.
Habe dann im LOGFILE einen Zusammenhang mit folgender Zeile gefunden:

2016.05.20 13:17:15 3: roku: listener started
No value specified for 'ForceArray' option in call to XMLin() at ./FHEM/98_EDIPLUG.pm line 223.


Nachdem ich alle EDIPLUG Geräte temporär aus der Config entfernt habe, lief FHEM mit dem fakeRoket einwandfrei.
Zum testen habe ich dann die EDIPLUG Geräte wieder eingetragen und FHEM stürzte danache wieder ab.

Idee?

Gruß
Hermann

justme1968

das ediplug modul muss die xml lib mit der gleichen strict option einbinden wie das fakeRoku und andere Module und dann den aufruf anpassen das ForceAray verwendet wird oder einen eigenen namespace verwenden.

leider sind in perl die per use eingebunden module nicht unanhängig da sie im gleichen namespace landen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

hermann1514

 ;D ;D ;D ;D ;D ;D ;D ;D

Klingt gut - aber was soll mir das sagen?

Bin nich tso der PERL Profi  :'( :'( :'( :'(

Gruß
Hermann

justme1968

der/die modul autoren müssen das modul anpassen.

es gibt einen einen älteren thread dazu: https://forum.fhem.de/index.php/topic,29136.msg219310.html#msg219310.

leider ohne endgültiges ergebnis.

die ganz unten vorgeschlagenen lösung sollte auch bei dir funktionieren. also im EDIPLUG modul erst mal in zeile 44 das use XML::Simple;durch package EDIPLUG;
use XML::Simple;
package main;
ersetzen

und in zeile 223 my $xmlres = XMLin($buffer);durchmy $xmlres = EDIPLUG::XMLin($buffer);

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

hermann1514

Hi,

danke für die Info - hat aber leider nicht den gewünschten Erfolg gebracht. Hier mal ein Auszug vom LOGFile:

2016.05.23 08:37:22 1: PERL WARNING: Bareword found where operator expected at ./FHEM/98_EDIPLUG.pm line 228, near "EDIPLUG ::XMLin"
2016.05.23 08:37:22 1: PERL WARNING: (Do you need to predeclare EDIPLUG?)
2016.05.23 08:37:22 1: reload: Error:Modul 98_EDIPLUG deactivated:
syntax error at ./FHEM/98_EDIPLUG.pm line 228, near "EDIPLUG ::XMLin"
Global symbol "$xmlres" requires explicit package name at ./FHEM/98_EDIPLUG.pm line 232, <$fh> line 67.
Global symbol "$xmlres" requires explicit package name at ./FHEM/98_EDIPLUG.pm line 236, <$fh> line 67.
Global symbol "$xmlres" requires explicit package name at ./FHEM/98_EDIPLUG.pm line 242, <$fh> line 67.

2016.05.23 08:37:22 0: syntax error at ./FHEM/98_EDIPLUG.pm line 228, near "EDIPLUG ::XMLin"
Global symbol "$xmlres" requires explicit package name at ./FHEM/98_EDIPLUG.pm line 232, <$fh> line 67.
Global symbol "$xmlres" requires explicit package name at ./FHEM/98_EDIPLUG.pm line 236, <$fh> line 67.
Global symbol "$xmlres" requires explicit package name at ./FHEM/98_EDIPLUG.pm line 242, <$fh> line 67.




hermann1514

Habe noch mal das Modul libxml-libxml-simple-perl nachinstalliert.

Danach ließ sich das Modul wieder starten, jedoch stürzt FHEM wieder nach 10 Sekunden ab mit der Fehlermeldung:

No value specified for 'ForceArray' option in call to XMLin() at ./FHEM/98_EDIPLUG.pm line 227.





justme1968

mir ist oben ein leerzeichen mit rein gerutscht: EDIPLUG ::XMLindas gehört da nicht hin. es muss so aussehen:EDIPLUG::XMLin

schau mal ob es so dann geht.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

hermann1514

Nö....gleiches Problem.

FHEM stürzt wieder mit  No value specified for 'ForceArray' option in call to XMLin() at ./FHEM/98_EDIPLUG.pm line 228. ab.


Gruß
Hermann

Wzut

@hermann1514 , lass die ersten Änderungen die Andre vorgeschlagen hat mal so drin , aber hier :
Zitat von: justme1968 am 20 Mai 2016, 14:45:16
durchmy $xmlres = EDIPLUG::XMLin($buffer);
setzte bitte zwei Zeilen ein :

my $xml = XML::Simple->new(ForceArray => ['entry', 'link'], KeyAttr => []);
my $xmlres = $xml->EDIPLUG::XMLin($buffer);

damit sollte der ForceArray Fehler weg sein und gleich der nächste der sonst kommt mit KeyAttr
Wenn das so zum Erfolg mit dem fakeRoku führt kann ich das einchecken.




Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

hermann1514

Hey Wzut,

sieht gut aus. Nach den Änderungen und einen Neustart sind jetzt schon 10 Minuten vergangen und FHEM läuft noch.

DANKESCHÖN.  :D

Gruß
Hermann

justme1968

wenn ForceArray und KeyAttr gesetzt wird kann man den namespace komplett wieder weg lassen und die xml lib am anfang mituse XML::Simple qw(:strict); einbinden.

der namespace vorschlag war nur drin damit das modul lokal eine version ohne strikt verwendet und es keinen konflikt gibt. ich bin mir nicht sicher warum das hier nicht funktioniert.

man kann das ganze auch ohne new dann so aufrufen:my $xmlres XMLin($buffer, KeyAttr => { }, ForceArray => [ 'entry', 'link' ]);

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

hermann1514

Ich nochmal....

ich habe jetzt ein weiteres Modul, welches sich nicht mit dem fakeRoku verträgt.
Bin ich der einzige der das Problem hat?

Das Modul ist nun das rddFeed Modul.

Als Fehlermeldung kommt nun:


2016.05.24 09:30:12 5: rss_1: unzipError:
2016.05.24 09:30:12 5: rss_1: unzipError:This is ok! It only means that response is not gzipped.
2016.05.24 09:30:12 5: rss_1: Trying to convert xml to array...
2016.05.24 09:30:12 3: rss_1: ERROR can't convert feed response
2016.05.24 09:30:12 4: rss_1: No value specified for 'KeyAttr' option in call to XMLin() at ./FHEM/98_rssFeed.pm line 497.



Gibt es hier auch eine Lösung?

Danke.
Gruß
Hermann



Benni

Hallo Hermann,

das muss ich mir mal anschauen, ich kann mir im Moment nicht wirklich einen Zusammenhang vorstellen. Ich stecke allerdings bereits mitten in den Urlaubsvorbereitungen, von daher komme ich wahrscheinlich erst nach meinem Urlaub dazu  8)

Gruß Benni.

justme1968

der zusammenhang ist der gleiche der hier: https://forum.fhem.de/index.php/topic,51619.msg452766.html#msg452766 und in dem dort verlinkten beitrag beschrieben ist.

alle fhem module müssen perl module mit den gleichen optionen einbinden weil der namespace geshared ist.

die schnelle lösung ist die her: https://forum.fhem.de/index.php/topic,51619.msg453672.html#msg453672.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968