[FHZ] SerialPort.pm on OpenWrt Kamikaze trunk

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

Vorheriges Thema - Nächstes Thema

Guest

Originally posted by: <email address deleted>

Habe strace nun durchlaufen lassen. Siehe log.txt.
Sagt mir aber gerade mal nix. Select sagt er nirgendwo. Kanns Du da
was sehen?

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.

Guest

Originally posted by: <email address deleted>

Sagt halt auch timeout:

write(3, "2010.03.07 13:02:31 1: ReadAnswe"...,
50)
= 50
_newselect(8, [], NULL, NULL, {0,
0})
= 0 (Timeout)
write(3, "2010.03.07 13:02:31 1: nfound: 0"...,
101)
= 101
read(7, "3333\r\n",
256)
= 6
time([1267963351])
= 1267963351
open("/etc/TZ",
O_RDONLY)
= 9
read(9, "CET-1CEST,M3.5.0,M10.5.0/3\n",
68)
= 27
read(9, "",
41)
= 0
close(9)
= 0
write(3, "2010.03.07 13:02:31 1: buf: 3333"...,
35)
= 35

und buffer liest er.

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.

Guest

Originally posted by: <email address deleted>

Sagt halt auch timeout
_newselect(0, NULL, NULL, NULL, {0,
1000})
= 0 (Timeout)

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.

rudolfkoenig

                                                   

On Sun, Mar 07, 2010 at 03:27:22AM -0800, lord.kilmarnock@googlemail.com wrote:
> Select sagt er nirgendwo. Kanns Du da was sehen?

Noe. Dieser fhem ist auch nicht hochgefahren wegen:
  bind(5, ..., 16) = -1 EADDRINUSE (Address already in use)


> _newselect(8, [], NULL, NULL, {0, 0})

Schaut komisch aus. Mein "Produktions-fhem" schaut aus (kann man mit strace -p
beobachten):
  select(24, [5 6 15 18 19 20 22], NULL, NULL, {205, 536666}
aber auch ein fhem mit Minimalkonfig hat wenigstens den "telnet" port (attr
global port 7072) im ersten [].  
Kannst Du bitte verifizieren, ob ins select Aufruf was reingesteckt wird ($rin
ist nicht undef oder 0)?

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.

Guest

Originally posted by: <email address deleted>

> Kannst Du bitte verifizieren, ob ins select Aufruf was reingesteckt wird ($rin
> ist nicht undef oder 0)?

Wenn dies zum Erfolg fuehren wuerde:
Log 1, "rin ist undef"  if(!defined($rin));

dann ist es irgendwas (keine Ausgabe):

Log 1, "nfound: $nfound timeleft: $timeleft Wenn nfound = 0 ->
timeout. Timeout ist gesetzt auf $to. rin ist >$rin<";
Log 1, "rin ist undef"  if(!defined($rin));
ergibt
nfound: 0 timeleft: 0 Wenn nfound = 0 -> timeout. Timeout ist gesetzt
auf 0.5. rin ist ><

Habe noch mal die log.txt mit einem durchgefuehrten strace angehaengt.
Das mit dem telnet wundert mich nicht, da ich per telnet zwar
einloggen kann, er aber keinen muks auf Eingaben hin macht.

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.

rudolfkoenig

                                                   

> Log 1, "nfound: $nfound timeleft: $timeleft Wenn nfound = 0 ->
> timeout. Timeout ist gesetzt auf $to. rin ist >$rin<";

$rin ist wahrscheinlich ein kleiner Zahl und damit ein Controlcharacter, was
man nicht so recht sieht. Deswegen sollte es statt "bla...>$rin<" eher "bla..."
. unpack("H*",$rin) . "<" sein. Ansonsten tippe ich auf  ein Problem in Perl
oder evtl in libc.

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.

Guest

Originally posted by: <email address deleted>

Da ich weit ueber das Ende meines Lateins hinaus bin, wuerde ich gerne
das Problem bei OpenWRT publik machen. Muss wohl die test.pl noch mal
ueberarbeiten, damit sie auch ja nicht funktioniert. Wenn es die libc
ist, kann ich das von der Kommandozeile aus testen?

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.

rudolfkoenig

                                                   

On Mon, Mar 08, 2010 at 12:32:55PM -0800, lord.kilmarnock@googlemail.com wrote:
> Wenn es die libc ist, kann ich das von der Kommandozeile aus testen?

Mit folgendem C-Programm (selecttest.c):

=======
#include
#include
#include

int
main(int ac, char *av[])
{
  fd_set fdset;
  int fd, ret;

  fd = open(av[1], O_RDONLY);
  FD_ZERO(&fdset);
  FD_SET(fd, &fdset);
  printf("FD: %d, IN: %08x\n", fd,  *((unsigned int *)&fdset));
  ret = select(fd+1, &fdset, 0, 0, 0);
  printf("RET: %d, OUT: %08x\n", ret, *((unsigned int *)&fdset));
  return 0;
}
=======

Uebersetzen mit "cc -o selecttest selecttest.c", starten mit
./selecttest /dev/ttyUSB0

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.

Guest

Originally posted by: <email address deleted>

> Mit folgendem C-Programm (selecttest.c):
> ./selecttest /dev/ttyUSB0

Habe es kompiliert
1) auf ubuntu:
./selecttest /dev/ttyACM0
FD: 3, IN: 00000008

2) auf openwrt:
./selecttest /dev/ttyACM0
FD: 3, IN: 00000008

Nehme mal an, ich schicke ein falsches Kommando? Zumindest kommt kein
OUT:....

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.

rudolfkoenig

                                                   

> Nehme mal an, ich schicke ein falsches Kommando? Zumindest kommt kein
> OUT:....

Wenn der CUL nichts zu sagen hat, dann kommt auch kein OUT. Man koennte es mit
einem
  write(fd, "V\n", 2);
vor dem select() zum reden bringen.

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.

Guest

Originally posted by: <email address deleted>

>   write(fd, "V\n", 2);

sagt auch nix. ubuntu & openwrt.

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.

Guest

Originally posted by: <email address deleted>

Wenn ich ihn was sagen lasse (via perl), dann erscheint

./selecttest /dev/ttyACM0
FD: 3, IN: 00000008
RET: 1, OUT: 00000008

Merkwuerdigerweise erst nach mehreren Wiederholungen.
Ist das jetzt ein gutes Zeichen? Ist jetzt select() ok?

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.

rudolfkoenig

                                                   

> Ist das jetzt ein gutes Zeichen? Ist jetzt select() ok?

Ja, was auch zu erwarten war. Und write() hat nicht funktioniert, da open mit
O_RDONLY durchgefuehrt wurde. Das Ganze also nochmal komplett:

======
#include
#include
#include

int
main(int ac, char *av[])
{
  fd_set fdset;
  int fd, ret;

  fd = open(av[1], O_RDWR);
  FD_ZERO(&fdset);
  FD_SET(fd, &fdset);
  write(fd, "V\n", 2);
  printf("FD: %d, IN: %08x\n", fd,  *((unsigned int *)&fdset));
  ret = select(fd+1, &fdset, 0, 0, 0);
  printf("RET: %d, OUT: %08x\n", ret, *((unsigned int *)&fdset));
  return 0;
}
========

% cc -o selecttest selecttest.c
% ./selecttest /dev/ttyACM0
FD: 3, IN: 00000008
RET: 1, OUT: 00000008

(getestet mit einem angeschlossenen CUL)

Es ueberrascht mich nicht, dass hier kein Fehler vorliegt, da select eine der
zentralen Funktionen ist. Mit perl hatte ich auf dem Fritzbox vor zwei Jahren
auch schon Probleme, deswegen bin ich damals von 5.8.9 auch 5.6.2
"umgestiegen".
Offensichtlich wird perl auf ucLibc Systemen nicht so gruendlich getestet, was
ich auch nachvollziehen kann.

Gruss,
  Rudi

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.

Guest

Originally posted by: <email address deleted>

Danke, das funktioniert auf beiden Systemen.
Ich habe bereits versucht, perl in einer anderen Version zu
installieren, leider funktionieren dann die openwrt patches nicht
mehr. Ich werde den bug jetzt zusammen mit dem test.pl bei openwrt
melden und das Beste hoffen.

Gruesse
Felix

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.

Guest

Originally posted by: <email address deleted>

Hallo und Guten Tag,

Ich möchte mich mal hier mit meinem Problem anhängen da ich denke es
ist hier richtig.
Ich habe ieinen CUL_V2 und bekomme Fhem einfach nicht mit ihm zu
laufen.

Ich benutze das Ubuntu 10.04 mit perl 5.10.1.
Der CUL wird vom Betriebssystem erkannt und ist mit screen /dev/
ttyACM0 ansprechbar.
V meldet V 1.37 CUL868
Ich habe mit einem S555 getestet und der CUL liefert die Rohwerte.

Hier ist meine fehm.cfg:

#
# pgm2 / autocreate configfile. Take a look at the other examples for
more.
#
attr global logfile /var/log/fhem/fhem-%Y-%m.log
attr global modpath /usr/local/lib                  # where our FHEM
directory is
attr global port 7072                  # our TCP/IP port (localhost
only)
attr global statefile /var/log/fhem/fhem.save   # where to save the
state of the devices
attr global verbose 3                  # "normal" verbosity (min 1,
max 5)



define WEB FHEMWEB 8084 global
attr WEB plotmode SVG
attr WEB plotsize 800,160


define CUL CUL /dev/ttyACM0 1234

# Fake logfile, to access the global log
define Logfile FileLog /var/log/fhem/fhem-%Y-%m.log fakelog

define autocreate autocreate
attr autocreate autosave
attr autocreate device_room %TYPE
attr autocreate filelog /var/log/fhem/%NAME-%Y.log
attr autocreate weblink
attr autocreate weblink_room Plots


In dieser Konfiguration startet fhem einfach nicht. Wenn ich die
Zeile: "define CUL CUL /dev/ttyACM0 1234" auskomentiere, funktioniert
es.

hier ist die fehm.log

2010.05.15 19:50:40 2: FHEMWEB port 8084 opened
2010.05.15 19:50:40 3: CUL opening CUL device /dev/ttyACM0
Can't locate Device/SerialPort.pm in @INC (@INC contains: /etc/perl /
usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/
site_perl .) at /usr/local/lib/FHEM/00_CUL.pm line 966, <$fh> line 17.

Danke
kawa0815

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.