OWX nach update am 10.01.2013: Can't locate Win32/SerialPort.pm

Begonnen von kct-networx, 11 Januar 2013, 12:21:17

Vorheriges Thema - Nächstes Thema

kct-networx

Guten Tag zusammen,

gestern abend war ich so frei und ließ einen update laufen.
Seither quittiert das OWX-Modul seinen Dienst mit der unten stehenden Meldung.

2013.01.11 12:09:00 1: Including fhem.cfg
2013.01.11 12:09:00 3: telnetPort: port 7072 opened
2013.01.11 12:09:00 3: WEB: port 8083 opened
2013.01.11 12:09:01 3: WEBphone: port 8084 opened
2013.01.11 12:09:01 3: WEBtablet: port 8085 opened
2013.01.11 12:09:01 3: Opening CUNO_2 device 192.168.1.10:2323
2013.01.11 12:09:01 3: CUNO_2 device opened
2013.01.11 12:09:02 3: CUNO_2: Possible commands: mBCFiAIGMRTVWXOefltuxEcq
2013.01.11 12:09:02 1: reload: Error:Modul 00_OWX deactivated:
 Can't locate Win32/SerialPort.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int /usr/lib/perl5/site_perl/5.14 /usr/lib/perl5/vendor_perl/5.14/i686-cygwin-threads-64int /usr/lib/perl5/vendor_perl/5.14 /usr/lib/perl5/5.14/i686-cygwin-threads-64int /usr/lib/perl5/5.14 /usr/lib/perl5/site_perl/5.10 /usr/lib/perl5/vendor_perl/5.10 /usr/lib/perl5/site_perl/5.8 . ./FHEM) at ./FHEM/00_OWX.pm line 69, <$fh> line 45.

2013.01.11 12:09:02 0: Can't locate Win32/SerialPort.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int /usr/lib/perl5/site_perl/5.14 /usr/lib/perl5/vendor_perl/5.14/i686-cygwin-threads-64int /usr/lib/perl5/vendor_perl/5.14 /usr/lib/perl5/5.14/i686-cygwin-threads-64int /usr/lib/perl5/5.14 /usr/lib/perl5/site_perl/5.10 /usr/lib/perl5/vendor_perl/5.10 /usr/lib/perl5/site_perl/5.8 . ./FHEM) at ./FHEM/00_OWX.pm line 69, <$fh> line 45.


Ich nutze seit etwa 4 Monaten erfolgreich eine CYGWIN Installation mit OWX erfolgreich.
Das bedeutet es wurde "cpan Device::SerialPort" durchgeführt. (Wäre ja sonst auch nicht gelaufen)
Habe es auch sicherheitshalber nochmal gemacht mit cpan - ohne erfolg.

Ist euch was bekannt ob hier was geändert wurde was den SerialPort betrifft?
Hat jemand eine Idee wie ich das wieder zum laufen bewege?

Wenn nicht: Ist so ein Restore auf die vorherige Version kompliziert?

Danke und Grüße,
Markus

dougie



Hi Markus,

ich hab mir angewöhnt, immer ein (Extra-) Backup vor einem Update anzulegen ... aber eventuell hat fhem bei dir automatisch eins angelegt. Schau mal bitte nach.
Da ich meine Konfiguration auch in einem einzelnen Bereich eingefroren habe, mag der Tipp für dich hilfreich sein:

Folgender Befehl sorgt bei mir dafür, das sich die momentan noch vorhandene 1W Konfig nicht weiter ändert.

attr global exclude_from_update 00_OWX.pm 21_OWID.pm 21_OWTHERM.pm 21_OWSWITCH.pm

Ich hab mir zuvor mein System auch schon mehr als ein mal mit einem update lahm gelegt.

VG
Ralf

kct-networx

Hallo Ralf,

ich habe gerade das "downgrade" durchgeführt und werde in Zukunft vorsichtiger sein.

Jetzt läuft alles wie vorher.

Hab' Dank!!

Grüße,
Markus

Prof. Dr. Peter Henning

Die Erweiterung auf Windows-Systeme wurde auf ausdrückliche Bitte von Nutzern angelegt - die hinterher geschrieben haben, "Danke" es sei alles Bestens.

Es mag also an der Spezialität von CygWin liegen, dass hier die USB-Devices anders bereit gestellt werden. Lässt sich einfach beheben: In den Zeilen 59-67 von 00_OWX.pm steht der Code

#-- unfortunately some things OS-dependent
my $owgdevregexp;
if ($^O=~m/linux/i) {
  require Device::SerialPort;
  $owgdevregexp= "/dev/";
} else {
  require Win32::SerialPort;
  $owgdevregexp= "com";
}

Hier bitte alles auskommentieren (oder löschen) bis auf die Zeilen

 require Device::SerialPort;
 $owgdevregexp= "/dev/";
 
- das entspräche dann dem "alten" OWX.

Außerdem würde ich gerne wissen, was in dieser CygWin-Installation in der Variablen $^O steht - dann kann man diesen Spezialfall abfangen.

LG

pah

Damian

Zitat von: Prof. Dr. Peter Henning schrieb am Sa, 12 Januar 2013 08:32Die Erweiterung auf Windows-Systeme wurde auf ausdrückliche Bitte von Nutzern angelegt - die hinterher geschrieben haben, "Danke" es sei alles Bestens.
pah

Unter Windows ohne CygWin funktioniert es auch.

Mein Vorschlag war allerdings vielmehr:

Zitat:

"Abfrage des OS:

if ($^O=~/Win/) { "

statt

if ($^O=~m/linux/i) {


denn diese Abfrage funktioniert schon länger in DevIo.pm ohne Probleme und hätte auch hier funktioniert;)

CygWin liefert offenbar kein "linux"

Gruß

Damian


Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Prof. Dr. Peter Henning

Sieht so aus.

Bitte für CygWin-Nutzer: auf die oben geschilderte Weise selbst helfen und wenn möglich meine Frage beantworten.

Ein "Zwischenupdate" gibt es nämlich nicht, ich baue da gerade weitere Dinge um.

LG

pah

kct-networx

Tag zusammen!

zum Thema:
Zitat von: Prof. Dr. Peter Henning schrieb am Sa, 12 Januar 2013 17:43... wenn möglich meine Frage beantworten....

Ich hab mal unter CYGWIN ein "print $^O" mit perl ausgeben lassen. Das "print $^O" stand dabei in einer Datei mit Namen test.txt.
Ich hoffe so geht das mit dem Ausgeben von Variablen... ;-)

Administrator@BRIMAR /var/fhem
$ perl test.txt
cygwin
Administrator@BRIMAR /var/fhem
$


Das Ergebnis lautete plump: cygwin

Grüße,
Markus

Prof. Dr. Peter Henning


kct-networx

Besten Dank!

PS: Die Modifikation brachte den gewünschten Erfolg! Auch hierfür meinen Dank.