Cannot load module OWTHERM

Begonnen von Starkstrombastler, 16 September 2014, 23:59:56

Vorheriges Thema - Nächstes Thema

Starkstrombastler

Hallo,
ich möchte einige OneWire-Sensoren via meiner FritzBox 7270 einlesen.

Fhem wurde via fhem-5.5-fb7270.zip installiert und ist jetzt aktuell, "nothing to do". version liefert:
# $Id: fhem.pl 6542 2014-09-12 09:03:55Z rudolfkoenig $
# $Id: 01_FHEMWEB.pm 6545 2014-09-12 17:46:39Z rudolfkoenig $
# $Id: 92_FileLog.pm 5876 2014-05-16 19:54:51Z rudolfkoenig $
# $Id: 00_OWX.pm 6392 2014-08-11 15:25:00Z ntruchsess $
# $Id: 99_SUNRISE_EL.pm 5851 2014-05-13 19:39:03Z rudolfkoenig $
# $Id: 98_SVG.pm 6542 2014-09-12 09:03:55Z rudolfkoenig $
# $Id: 99_Utils.pm 6446 2014-08-23 10:09:44Z rudolfkoenig $
# $Id: 90_at.pm 5319 2014-03-25 10:11:47Z rudolfkoenig $
# $Id: 98_autocreate.pm 6505 2014-09-06 12:24:48Z rudolfkoenig $
# $Id: 98_dummy.pm 4934 2014-02-15 08:23:12Z rudolfkoenig $
# $Id: 91_eventTypes.pm 6428 2014-08-20 11:51:27Z rudolfkoenig $
# $Id: 91_notify.pm 6371 2014-08-07 05:33:37Z rudolfkoenig $
# $Id: 98_telnet.pm 6484 2014-08-31 07:45:45Z rudolfkoenig $


OWX funktioniert und liefert auf get devices die korrekten 1W-IDs, kann aber nicht autocreate:
OWX: 1-Wire devices found on bus OWusb
OWX: Error autocreating with OWX_28_E510E1040000 OWTHERM DS18B20 E510E1040000: Cannot load module OWTHERM

Das manuelle Define gelingt auch nicht:
OWX_28_E510E1040000 OWTHERM DS18B20 E510E1040000 liefert Cannot load module OWTHERM
Reload:
reload 21_OWTHERM
liefert
Attempt to reload ProtoThreads.pm aborted.
Compilation failed in require at ./FHEM/21_OWTHERM.pm line 84, <FH> line 26476.
BEGIN failed--compilation aborted at ./FHEM/21_OWTHERM.pm line 84, <FH> line 26476.


Die Meldung im Logfile lautet:
2014.09.16 23:40:22 1: reload: Error:Modul 21_OWTHERM deactivated:
Attempt to reload ProtoThreads.pm aborted.
Compilation failed in require at ./FHEM/21_OWTHERM.pm line 84, <FH> line 26476.
BEGIN failed--compilation aborted at ./FHEM/21_OWTHERM.pm line 84, <FH> line 26476.


Die Moduldateien sind aber im Dateisystem vorhanden und die Rechte lauten "777". Ich weiß hier erstmal nicht weiter.
IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200

Prof. Dr. Peter Henning

Offenbar wird hier als Backendmodul OWX_ASYNC verwendet, das braucht ein Perl-Modul Protothreads.pm.

Bitte entweder dieses nachinstallieren, oder das "alte" OWX verwenden.

LG

pah

ntruchsess

#2
da fehlt die FHEM/lib/ProtoThreads.pm. (Unabhängig davon, ob OWX oder OWX_ASYNC verwendet wird, wird die Protothreads-library auch von den Device-modulen zur compiletime benötigt, auch wenn der code mit OWX (ohne ASYNC) nachher gar nicht ausgeführt wird). Warum die in das Fritzbox-zipfile nicht eingepackt wird, weiß ich nicht, das habe ich mir noch nie angeschaut (hab keine FB). Im SVN ist die Datei jedenfalls drinnen und kommt nach meinen Test bei einem normalen Update auch mit.

Gruß,

Norbert
while (!asleep()) {sheep++};

Starkstrombastler

wenn ProtoThreads bei OWX garnicht gebraucht wird, liegt es nahe dieses in 21_OWTHERM.pm probeweise auszukommentieren.
Nachdem ich auch "use strict" auskommentiert hatte (!??), konnte der Temp-Sensor definiert werden und lieferte auch gleich Werte.

Die Datei ProtoThreads.pm ist aber definitiv im Zip-File vorhanden und wurde in meinem System installiert.
Wurde halt nur nicht gefunden.

Beim Experimentieren mit anderen Definitionen stelle ich fest, dass auch bei anderen Modulen benötigte Dateien nicht gefunden werden, also kein spezielles OneWire-Problem.

Im Logfile finde ich noch folgenden Eintrag (hier etwas aufbereitet):
@INC contains:
/var/InternerSpeicher/Verbatim-STORENGO-11/fhem/lib/perl
/var/InternerSpeicher/Verbatim-STORENGO-11/fhem/lib/perl/arch
/home/rudi/fbperl/lib/perl/arch
/home/rudi/fbperl/lib/perl
.
./FHEM
./FHEM/lib


Hat jemand eine Idee?

IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200

ntruchsess

ja, beim Start von fhem ist das aktuelle Direktory möglicherweise nicht das fhem directory, so dass die relativen Pfade './FHEM' und './FHEM/lib' nicht korrekt aufgelöst werden.
while (!asleep()) {sheep++};

Starkstrombastler


Das Startskript enthält:
home=/var/media/ftp/Verbatim-STORENGO-01/fhem
echo $home
cd $home
export home
HOME=$home
export HOME

Und frage das über die fhem-Kommandozeile ab:
{$ENV{"HOME"}}
Antwort:
/var/media/ftp/Verbatim-STORENGO-01/fhem
Das sieht soweit korrekt aus, ist das aber wirklich das Home-Direktory für das laufende fhem ?

Kann ich das noch irgendwie anders kontrollieren?
IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200

ntruchsess

was findet sich denn in /var/media/ftp/Verbatim-STORENGO-01/fhem/FHEM/lib ?
while (!asleep()) {sheep++};

Starkstrombastler

Ich habe dieses Thema erstmal ein paar Tage liegen gelassen.
Und weil ich so viel in den Modulen gespielt habe, habe ich nochmal komplett von vorne angefangen und neu installiert.

In FHEM/lib findet sich nach "update" folgendes:
drwxrwxrwx    3 root     root          4096 Sep 21 22:04 Device
-rwxrwxrwx    1 root     root         10421 Sep 21 22:04 LiquidCrystal_I2C.pm
-rwxrwxrwx    1 root     root         21407 Sep 21 22:04 OWNet.pm
-rwxrwxrwx    1 root     root          1162 Sep 21 22:04 README.perl-firmata
drwxrwxrwx    4 root     root          4096 Sep 21 22:04 SWAP


D.h. ProtoThreads.pm fehlt. Ist auch nicht im Installations-Zip-File fhem-5.5-fb7270.zip.
IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200

ntruchsess

In der fhem-5.5-fb7270.zip kann ProtoThreads.pm kaum drinnen sein, das ist ja Version 5.5 vom 29.09.2013, also fast 1 Jahr alt - da gab's noch kein OWX_ASYNC oder Protothreads (siehe fhem.de/fhem.html: Last released version: (as of 2013-09-29): fhem-5.5.tar.gz, fhem-5.5.deb, fhem-5.5-fb7390.image, fhem-5.5-fb7270.zip).

Warum die ProtoThreads.pm beim Update nicht rüberkommt ist mir unklar. In der aktuellen controls_fhem.txt steht die Datei jedenfalls korrekt drin.

Gruß,

Norbert
while (!asleep()) {sheep++};

Starkstrombastler

Im Zusammenhang mit einem anderen Module habe ich erfahren, dass es mindestens  folgende zwei Gründe geben kann, dass ein Modul nicht geladen wird:
1)  das Modul wird nicht gefunden (nicht in der Pfadliste @INC eingetragen oder einfach nicht vorhanden)
2)  es wird ein nicht vorhandenes Library benötigt.

Da die Moduldatei vorhanden ist, vermute ich, dass an irgendeiner Stelle eine bei mir nicht vorhandene Bibliothek aufgerufen wird.
Wie kann ich feststellen, ob alle von den One-Wire-Modulen benötigten Librarys bei mir vorhanden sind?
IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200

znbrain

Hallo,

ich möchte das Thema noch einmal aufwärmen.
Ich habe das gleiche Problem wenn ich auf die Version 5.6 updaten möchte. Die Datei ProtoThreads.pm ist allerdings bei mir vorhanden und liegt in Verzeichnis /FHEM/lib unterhalb des Home-Verzeichnisses.

Gibt es mittlerweile neuere Erkenntnisse?

Gruß znbrain

Starkstrombastler

Hallo znbrain,

ich habe mich von der FritzBox als fhem-Server verabschiedet, vor allem aber aus anderen Gründen.

Auf meinem Ubuntu-IPC hatte ich nie solche Probleme.

Gruß
Starkstrombastler
IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200