[FHZ] SerialPort.pm on OpenWrt Kamikaze trunk

Begonnen von rudolfkoenig, 01 Januar 2010, 17:59:28

Vorheriges Thema - Nächstes Thema

rudolfkoenig

Originally posted by: <email address deleted>

Hi!
Ich moechte fhem auf einem OpenWrt laufen lassen. Da fuer meine
Architektur keine Pakete vorhanden waren, habe ich das SerialPort.pm
selbst erstellt. Das war (fuer mich) schon eine Herausforderung, aber
nun hat es sich installiert. Leider funzt es nicht mit fhem:

CUL opening CUL device /dev/ttyACM0
Attempt to reload POSIX.pm aborted.
Compilation failed in require at /usr/lib/perl5/5.10/Device/
SerialPort.pm line 6, <$fh> line 26.
BEGIN failed--compilation aborted at /usr/lib/perl5/5.10/Device/
SerialPort.pm line 6, <$fh> line 26.
Compilation failed in require at /usr/local/lib/FHEM/00_CUL.pm line
928, <$fh> line 26.

Zeile 6 in SerialPort.pm ist:
use POSIX qw(:termios_h);

Nun weiss ich nicht recht weiter. Habe termios.h nach /usr/include
geschoben, ohne Erfolg.

Vielleicht kann mir jemand helfen, ich kenne mich mit perl - bis auf
die fhz.cfg Kommandos - nicht aus. Ist vielleicht ganz einfach?

Gruesse
Felix

--

You received this message because you are subscribed to the Google Groups "FHEM users" group.
To post to this group, send email to fhem-users@googlegroups.com.
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en.

rudolfkoenig

                                                   

> Nun weiss ich nicht recht weiter. Habe termios.h nach /usr/include
> geschoben, ohne Erfolg.

Das ist natuerelich ... suboptimal. termios.h & co muss man mit h2ph
installieren, perl schaut nicht nach /usr/include, und C-Header liest er auch
ungern.

--

You received this message because you are subscribed to the Google Groups "FHEM users" group.
To post to this group, send email to fhem-users@googlegroups.com.
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en.

UliM

Originally posted by: <email address deleted>

Hm. Danke. Wie gut, dass ich gefragt habe, da waere ich _niemals_
drauf gekommen.

Habe jetzt mit h2ph gespielt, die includes zusammengesammelt und
(tataa)

perl -e 'require "termios.ph"';  liefert keine Fehler mehr.

Aber: Er will das Objekt nicht laden:
CUL opening CUL device /dev/ttyACM0
Can't locate loadable object for module Device::SerialPort in @INC
(@INC contains: /usr/lib/perl5/5.10 .) at /usr/local/lib/FHEM/
00_CUL.pm line 928


perl /usr/lib/perl5/5.10/Device/SerialPort.pm
Can't locate loadable object for module Device::SerialPort in @INC
(@INC contains: /usr/lib/perl5/5.10 .) at /usr/lib/perl5/5.10/
DynaLoader.pm line 69
   DynaLoader::croak('Can\'t locate loadable object for module
Device::SerialPort i...') called at /usr/lib/perl5/5.10/DynaLoader.pm
line 135
   DynaLoader::bootstrap('Device::SerialPort', 1.002) called at /usr/lib/
perl5/5.10/XSLoader.pm line 97
   XSLoader::bootstrap_inherit('Device::SerialPort', 1.002) called at /
usr/lib/perl5/5.10/Device/SerialPort.pm line 37

Zeile 37 ist XSLoader::load('Device::SerialPort', $VERSION);

Nun meine Anschlussfrage:
Ist die Abfrage (perl ...SerialPort.pm) ueberhaupt sinnvoll?
Laedt der sich in der Zeile selbst?
Die Header verweisen auf irgendwas / müssen irgendwo auch
implementiert sein. Wohl in einem KernelModul. Welches wuerde ich denn
benoetigen?

Habe das Gefuehl, ich bin auf dem Holzweg. Verstehe es einfach zu
wenig.
Angenommen, ich wuerde das CUN besorgen, dann kann ich auf dieses via
TCP/IP zugreifen. Wuerde das Modul 00_CUL.pm dann auf SerialPort.pm
verzichten?

Viele Gruesse
Felix


--

You received this message because you are subscribed to the Google Groups "FHEM users" group.
To post to this group, send email to fhem-users@googlegroups.com.
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en.
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

rudolfkoenig

                                                   

> Can't locate loadable object for module Device::SerialPort in @INC
> (@INC contains: /usr/lib/perl5/5.10 .) at /usr/local/lib/FHEM/
> 00_CUL.pm line 928

Vielleicht fehlt SerialPort.so? Ich habe es in
.../lib/site_perl/5.8.3/i686-linux/auto/Device/SerialPort/SerialPort.so


> Angenommen, ich wuerde das CUN besorgen, dann kann ich auf dieses via
> TCP/IP zugreifen. Wuerde das Modul 00_CUL.pm dann auf SerialPort.pm
> verzichten?

Ja, bei TCP/IP kann man darauf verzichten. Eigentlich kann man auf SerialPort
auch sonst verzichten, man muesste in 00_CUL.pm "nur" new/input/write/etc mit
open/sysread/syswrite/etc ersetzen, alle IO Funktionen sind in 4 Funktionen
zusammengefasst. Ich hatte das auch schon vor, weil mich die staendigen
SerialPort Probleme nerven, und das CUL Protokoll (genau deswegen) 7-bit ist.
Die Baudrate wird ausserdem ignoriert. Weiss jemand, ob das auch unter Windows
funktioniert?

Gruss,
  Rudi

--

You received this message because you are subscribed to the Google Groups "FHEM users" group.
To post to this group, send email to fhem-users@googlegroups.com.
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en.

Guest

Originally posted by: <email address deleted>

> Vielleicht fehlt SerialPort.so?

Scheint so :-)

Habe nun eine "funktionierende" Version.

CUL opened /dev/ttyACM0 for MyCUL
Use of uninitialized value $ver in pattern match (m//) at /usr/local/
lib/FHEM/00_CUL.pm line 442, <$fh> line 26.

Zeile 442 in 00_CUL.pm
  while($try++ < 3 && $ver !~ m/^V/) {
    CUL_SimpleWrite($hash, "V");
    ($err, $ver) = CUL_ReadAnswer($hash, "Version", 0);
    return "$name: $err" if($err && ($err !~ m/Timeout/ || $try ==
3));           <---442
  }

Was <$fh> line 26 ist, faellt mir gerade nicht ein ;-)

Habe Version 4.8 und die aktuellen Quellen versucht. Die 4.8 ging
bislang auf meinem Ubuntu-System. Deshalb nehme ich an, es ist nicht
der Fehler der Zeile 442.
Kann ich davon ausgehen, dass ich alle Abhaengigkeiten erfuellt habe?

Gruesse
Felix

--

You received this message because you are subscribed to the Google Groups "FHEM users" group.
To post to this group, send email to fhem-users@googlegroups.com.
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en.

Guest

Originally posted by: <email address deleted>

Ein Workaround:

ser2net (http://ser2net.sourceforge.net/)

Mit der Zeile:
27073:raw:300:/dev/ttyACM0:115200 NONE 1STOPBIT 7DATABITS
in ser2net.conf
und
define MyCUL CUL 127.0.0.1:27073 3333
in fhz.cfg

tut es prima. Supi eigentlich, leider tritt auf dem o.g. Router immer
noch der selbe Fehler auf:
CUL opened 127.0.0.1:27073 for MyCUL
Use of uninitialized value $ver in pattern match (m//) at /usr/local/
lib/FHEM/00_CUL.pm line 442, <$fh> line 27.
Use of uninitialized value $ver in pattern match (m//) at /usr/local/
lib/FHEM/00_CUL.pm line 442, <$fh> line 27.
2010.01.02 17:45:32 1: Cannot init 127.0.0.1:27073, ignoring it

Genau dieselben Einstellungen, habe nochmal dieselbe fhem 4.8
installiert.
Auf dem Router ist uebrigens Perl 5.10

Gruesse
Felix

--

You received this message because you are subscribed to the Google Groups "FHEM users" group.
To post to this group, send email to fhem-users@googlegroups.com.
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en.

Guest

Originally posted by: <email address deleted>

Weitere Beobachtung:

Ich kann von meinem Rechner aus auf den ser2net port des Routers
zugreifen, und alles laeuft wie gehabt:

define MyCUL CUL 192.168.1.1:27073 3333

Es liegt also nicht am SerialPort.

Viele Gruesse
Felix

--

You received this message because you are subscribed to the Google Groups "FHEM users" group.
To post to this group, send email to fhem-users@googlegroups.com.
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en.

Tobias

                                                   

> tut es prima. Supi eigentlich, leider tritt auf dem o.g. Router immer
> noch der selbe Fehler auf:
[...]
> 2010.01.02 17:45:32 1: Cannot init 127.0.0.1:27073, ignoring it

Ich bin verwirrt. Tut es oder nicht?

Koenntest Du es wieder ohne ser2net mit maximalen loglevel (attr global verbose
5) versuchen, und dabei nach der ominoese Zeile 442 (nach CUL_ReadAnswer) die
Ergebnisse protokollieren mit sowas wie:

  Log 0, "ERR: $err";
  Log 0, "VER: $ver";

--

You received this message because you are subscribed to the Google Groups "FHEM users" group.
To post to this group, send email to fhem-users@googlegroups.com.
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en.
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Tobias

Originally posted by: <email address deleted>

Hi!
Bevor ich es vergesse: Vielen Dank fuer Deine Hilfe.

Es tut nicht. Nicht auf dem Router (Perl 5.10, 192.168.1.1) . Es
funktioniert auf dem Ubuntu Rechner, egal wo ich das CUL reinstoepsel,
per ser2net lokal und remote und auch (lokal) per SerialPort. Nur auf
dem Router funzt der code nicht. Weder ser2net noch SerialPort.

Ich denke, es ist ein Perl-Problem. Ich habe ein bisserl debuggt (kann
nix, nur Logeintraege).
Ich habe mit ngrep herausgefunden, dass V die Version auch
tatsaechlich zurückliefert. In der Zeile

my $nfound = select($rin, undef, undef, $to);

kommot $nfound als 0 zurueck. Folgerichtig springt er nach

return ("Timeout reading answer for get $arg", undef)

gilt fuer $arg = Clear und Version

Ich weiss leider nicht, wo select definiert ist, was es tut und warum
es 0 zurueckgibt.

Der obige Test gibt:
ERR: Timeout reading answer for get Version
VER ist leer.

Das selbe gilt fuer den Vesuch mit /dev/ttyACM0.
Ich finde merkwuerdig, dass das Log exakt genauso aussieht, wie beim
TCP Versuch.
vec($rin, $hash->{FD}, 1) = 1;   Hat dieselben Werte ($rin konnte ich
nicht sehen), und $to in der select Anweisung ist auch gleich.





--

You received this message because you are subscribed to the Google Groups "FHEM users" group.
To post to this group, send email to fhem-users@googlegroups.com.
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en.
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

rudolfkoenig

                                                   

> Ich habe mit ngrep herausgefunden, dass V die Version auch tatsaechlich
> zurückliefert.

Koenntest Du "telnet CUL-Rechner ser2net-port" starten, und mit V,
X21, etc versuchen, CUL direkt zum Reden zu bringen? Danach kann man
gezielt weiter suchen.



> Ich weiss leider nicht, wo select definiert ist, was es tut und warum
> es 0 zurueckgibt.

Select ist "builtin" bzw. System-Call, und liefert 0 zurueck, wenn es auf
keinem der spezifizierten Kanaele (FileDescriptoren) innerhalb der angegebenen
Zeit was angekommen ist.

--

You received this message because you are subscribed to the Google Groups "FHEM users" group.
To post to this group, send email to fhem-users@googlegroups.com.
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en.

Hausautomat

Originally posted by: <email address deleted>

> Koenntest Du "telnet CUL-Rechner ser2net-port" starten...

Ja, das geht. Alles. ngrep zeigt, dass es auch beim fhem init geht.

> Select ist "builtin" bzw. System-Call, und liefert 0 zurueck, wenn es auf
> keinem der spezifizierten Kanaele (FileDescriptoren) innerhalb der angegebenen
> Zeit was angekommen ist.

Hier liegt wohl der Hund begraben. Es liefert nix zurück.

--

You received this message because you are subscribed to the Google Groups "FHEM users" group.
To post to this group, send email to fhem-users@googlegroups.com.
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en.

Guest

Originally posted by: <email address deleted>

was ich auch merkwuerdig finde:

return "$name: $err" if($err && ($err !~ m/Timeout/ || $try == 3));

verwendet $ver gar nicht. Use of uninitialized value $ver in pattern
match (m//)  ist doch Quark?

--

You received this message because you are subscribed to the Google Groups "FHEM users" group.
To post to this group, send email to fhem-users@googlegroups.com.
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en.

rudolfkoenig

                                                   

> Hier liegt wohl der Hund begraben. Es liefert nix zurück.

Ich wuerde das Problem nicht beim select suchen, das ist so elementar, der
"muss" funktionieren. Eher beim Verbindugsaufbau zum ser2net. Koenntest Du
ser2net auf dem FB und fhem auf einem anderen Rechner starten?

--

You received this message because you are subscribed to the Google Groups "FHEM users" group.
To post to this group, send email to fhem-users@googlegroups.com.
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en.

rudolfkoenig

                                                   

> verwendet $ver gar nicht. Use of uninitialized value $ver in pattern
> match (m//)  ist doch Quark?

Eher ist der Zeilennummer Quark. Ich vermute die Meldung kommt aus dem
while(.., paar Zeilen hoeher.

--

You received this message because you are subscribed to the Google Groups "FHEM users" group.
To post to this group, send email to fhem-users@googlegroups.com.
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en.

Hausautomat

Originally posted by: <email address deleted>

> ser2net auf dem FB und fhem auf einem anderen Rechner starten?

Habe ich schon. Mehrmals wechselseitig:

fhem auf ubuntu->CUL an OpenWrt geht
fhem auf ubuntu->CUL an ubuntu geht
fhem auf OpenWRT->CUL an Ubuntu geht nicht
fhem auf OpenWRT->CUL an OpenWRT geht nicht

Habe perl noch mal deinstalliert (wegen den o.g. h2ph Vesuchen), die /
usr/lib/perl5/... weggeworfen, neu installiert, selbes Ergebnis

--

You received this message because you are subscribed to the Google Groups "FHEM users" group.
To post to this group, send email to fhem-users@googlegroups.com.
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en.