44_S7.pm funktioniert nach Update auf Fhem 5.8 nicht mehr

Begonnen von Ajuba, 19 April 2017, 21:56:53

Vorheriges Thema - Nächstes Thema

Ajuba

Nach dem Update auf Fhem 5.8 funktioniert 44_S7.pm nicht mehr.
Das Update wurde auf meinem Testsystem, das auf einem Windows PC läuft gemacht.
Nach dem Update habe ich entsprechend schon folgendes versucht
attr WEB.* csrfToken none
attr global featurelevel 5.7


Genauer gesagt ist der S7-Aufruf komplett aus der Config verschwunden.
define PLC S7 192.168.1.200 0 2
Beim Versuch es neu zu definieren kommt folgende Fehlermeldung: Cannot load module S7

Nach dem direkten Eintragen in die Config während Fhem abgeschaltet ist kommen beim Neustart folgende Meldungen
Terminating on signal SIGINT(2)
2017.04.19 21:41:19 1: starting in console mode
2017.04.19 21:41:19 1: Including fhem.cfg
2017.04.19 21:41:19 3: telnetPort: port 7072 opened
2017.04.19 21:41:19 3: WEB: port 8083 opened
2017.04.19 21:41:19 3: WEBphone: port 8084 opened
2017.04.19 21:41:19 3: WEBtablet: port 8085 opened
2017.04.19 21:41:19 2: eventTypes: loaded 264 events from ./log/eventTypes.txt
2017.04.19 21:41:19 1: reload: Error:Modul 44_S7 deactivated:
Can't locate Device/SerialPort.pm in @INC (you may need to install the Device::SerialPort module) (@INC contains: . C:/Perl/site/lib C:/Perl/lib ./FHEM) at FHEM/44_S7_S5Client.pm line 13, <$fh> line 44.
BEGIN failed--compilation aborted at FHEM/44_S7_S5Client.pm line 13, <$fh> line 44.
Compilation failed in require at ./FHEM/44_S7.pm line 12, <$fh> line 44.

2017.04.19 21:41:19 0: Can't locate Device/SerialPort.pm in @INC (you may need to install the Device::SerialPort module) (@INC contains: . C:/Perl/site/lib C:/Perl/lib ./FHEM) at FHEM/44_S7_S5Client.pm line 13, <$fh> line 44.
BEGIN failed--compilation aborted at FHEM/44_S7_S5Client.pm line 13, <$fh> line 44.
Compilation failed in require at ./FHEM/44_S7.pm line 12, <$fh> line 44.

2017.04.19 21:41:19 1: PERL WARNING: Subroutine S7_Initialize redefined at ./FHEM/44_S7.pm line 38, <$fh> line 45.
2017.04.19 21:41:19 1: PERL WARNING: Subroutine S7_connect redefined at ./FHEM/44_S7.pm line 66, <$fh> line 45.
2017.04.19 21:41:19 1: PERL WARNING: Subroutine S7_disconnect redefined at ./FHEM/44_S7.pm line 139, <$fh> line 45.
2017.04.19 21:41:19 1: PERL WARNING: Subroutine S7_reconnect redefined at ./FHEM/44_S7.pm line 156, <$fh> line 45.
2017.04.19 21:41:19 1: PERL WARNING: Subroutine S7_Define redefined at ./FHEM/44_S7.pm line 171, <$fh> line 45.
2017.04.19 21:41:19 1: PERL WARNING: Subroutine S7_Undef redefined at ./FHEM/44_S7.pm line 258, <$fh> line 45.
2017.04.19 21:41:19 1: PERL WARNING: Subroutine S7_Set redefined at ./FHEM/44_S7.pm line 272, <$fh> line 45.
2017.04.19 21:41:19 1: PERL WARNING: Subroutine S7_Get redefined at ./FHEM/44_S7.pm line 279, <$fh> line 45.
2017.04.19 21:41:19 1: PERL WARNING: Subroutine S7_Attr redefined at ./FHEM/44_S7.pm line 303, <$fh> line 45.


Ich vermute das Hauptproblem hier
reload: Error:Modul 44_S7 deactivated:
Can't locate Device/SerialPort.pm in @INC (you may need to install the Device::SerialPort module) (@INC contains: . C:/Perl/site/lib C:/Perl/lib ./FHEM) at FHEM/44_S7_S5Client.pm line 13, <$fh> line 44.
BEGIN failed--compilation aborted at FHEM/44_S7_S5Client.pm line 13, <$fh> line 44.
Compilation failed in require at ./FHEM/44_S7.pm line 12, <$fh> line 44.

Anscheinend werden nun irgendwelche Perl Elemente benötigt.
Ist das wirklich so oder verstehe ich es falsch?
Warum jetzt auf einmal?
Woher bekomme ich sie gegebenenfalls und wie installiere ich sie?
Hierbei handelt es sich "nur" um mein Windows Testsystem aber ich traue mich nicht ans Update auf meinem Produktiv-Raspi bis das geklärt ist.


FHEM auf RPi3, Homematic CCU3 mit Cuxd und CUL 868 für FS20, Siemens S7 über CP343-1,
DbLog zu MySQL auf NAS QNAP TS-253D,
Yeelight

rudolfkoenig


rudolfkoenig

Sorry, habs uebersehen, dass es Windows ist. Unter Windows heisst es leider "Win32::SerialPort", aus irgendeinem Grund hat der Modulautor die Abfrage in 44_S7_S5Client.pm auskommentiert.

Ajuba

Danke für die rasche Antwort. Am Abend kann ich es ausprobieren.

Noch mal nachgefragt, um die 2 Antworten richtig zu verstehen:
- Ich muss also nichts nachinstallieren sondern z.B. im Atomeditor in der Datei "44_S7_S5Client.pm" nach "Win32::SerialPort" suchen, die Auskommentierung entfernen und speichern?
- Beim Produktiv-Raspi Update sollte das Problem gar nicht auftreten sondern das passiert nur unter Windows?

FHEM auf RPi3, Homematic CCU3 mit Cuxd und CUL 868 für FS20, Siemens S7 über CP343-1,
DbLog zu MySQL auf NAS QNAP TS-253D,
Yeelight

rudolfkoenig

Zitat- Ich muss also nichts nachinstallieren sondern z.B. im Atomeditor in der Datei "44_S7_S5Client.pm" nach "Win32::SerialPort" suchen, die Auskommentierung entfernen und speichern?
Im Prinzip ja, aber evtl. hat der Maintainer beim Auskommentieren was gedacht.

Zitat- Beim Produktiv-Raspi Update sollte das Problem gar nicht auftreten sondern das passiert nur unter Windows?
Ja, dieses Problem betrifft nur Windows.

Ajuba

"Win32::SerialPort" kommt 2 mal vor. Mit der Entfernung der Auskommentierung ist es noch nicht getan. Im Gegenzug musste ich natürlich noch das "use Device::SerialPort;" von Linux auskommentieren. Das ganze if-Konstrukt zur automatischen Umschaltung zwischen den Betriebssystemen war sowieso nicht aktiv.

Hier meine geänderte Variante
#if ( OS_Linux() ) {
# use Device::SerialPort;
#}
#else {
use Win32::SerialPort;
#}

.....

#if ( OS_Linux() ) {
# $self->{serial} = new Device::SerialPort($portName);
#}
#else {
  $ttyPort = new Win32::SerialPort( $portName );
#}


Nun scheint alles wieder zu funktionieren.

Trotzdem wäre es gut, wenn sich der Modulautor die Sache ansieht, denn bei der ursprünglichen Installation (unter Fhem 5.7) gab es diese Probleme noch nicht.

Danke nochmal an Rudi für die schnelle und professionelle Hilfe.
FHEM auf RPi3, Homematic CCU3 mit Cuxd und CUL 868 für FS20, Siemens S7 über CP343-1,
DbLog zu MySQL auf NAS QNAP TS-253D,
Yeelight