[FHZ] SerialPort.pm on OpenWrt Kamikaze trunk

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

Vorheriges Thema - Nächstes Thema

rudolfkoenig

                                                   

> Habe ich schon. Mehrmals wechselseitig:

Hmm, dann ist wahrscheinlich perl@OpenWRT putt. Ich fuerchte da ist ernsthaftes
Perl-Debuggen notwendig.

Eine Anekdote in diesem Zusammenhang: Ich habe fuer den FB erst perl 5.8.8
uebersetzt, der hatte aber grundsaetzliche Probleme, deswegen habe ich dann
5.6.2 genommen.  Kannst Du folgendes auf dem OpenWRT fhem im telnet Prompt
eingeben:
{ $x=3;; Log 0, "X is: ".$x }

--

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>

> { $x=3;; Log 0, "X is: ".$x }

Er gibt mir keinen prompt. telnet connected nicht. Das Log sagt:
Server started(...
Warum bekomme ich keinen telnet prompt?

--

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.

Matthias Gehre

                                                   

> Er gibt mir keinen prompt. telnet connected nicht.
Was heisst das genau? Connection refused?

> Warum bekomme ich keinen telnet prompt?
Perl kaputt? Was sagt denn lokal auf OpenWRT

perl -e '$x=3; print "Hello " . $x . "\n"'

--

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 heisst das genau? Connection refused?
sorry, nein, telnet bleibt einfach haengen.

> perl -e '$x=3; print "Hello " . $x . "\n"'
Hello 3

Perl geht scho, im log kommt er bis zum
: Server started (version =VERS= from =DATE= ($Id: fhem.pl,v 1.97
2010/01/01 15:18:09 rudolfkoenig Exp $), pid 6323)

Da geht mehr als Hallo Welt.

--

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>

Habe nun alles noch mal kompiliert, aktuelle kernel version 2.6.32.8
und alle perl librarys. Das Problem ist immer noch das Selbe.

--
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.

Matthias Gehre

Originally posted by: <email address deleted>

Durchbruch!
Ich habe aus den koeniglichen Quellen ein Testprogramm geschustert. Da
ich kein perl spreche, sieht es wild aus. Aber: Es funktioniert auch
auf dem Openwrt. Liegt wohl doch nicht am perl. Ich werde den
Quellcode anhängen, sobald ich rausgefunden habe, wie das geht.



On 21 Feb., 14:39, "lord.kilmarn...@googlemail.com"
wrote:
> Habe nun alles noch mal kompiliert, aktuelle kernel version 2.6.32.8
> und alle perl librarys. Das Problem ist immer noch das Selbe.

--
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>

Die Datei liegt in den Google Groops Dateien, heißt test.pl.

Die Antwort ist beides mal, also auf openwrt und ubuntu:

hier! >$test fehler: Kein Fehler

Das Proggie greift auf ser2net auf port 27073 zu, wo das CUL lauscht.
Sorry fuer den schlechten Aufbau. Ich weiss jetzt auch nicht, wie ich
das in fhem einbaue. Und auch nicht, wo der Fehler eigentlich lag.
Vielleicht kann das ja hier jemand sagen, bitte.

--
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>

Die Funktionen stammen alle aus 00_CUL.pm. Alles USB und WIN Zeug habe
ich rausgenommen.

--
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>

Es liegt wohl daran, wie ich den socket oeffne. Wenn ich den socket
oeffnen code direkt reinarbeite, funktioniert er nicht, bzw. er baut
nicht auf. Kann es sein, dass das CUL einfach schneller antwortet, als
der Read Socket aufgebaut ist?
Ich stochere im Trueben, komme nicht weiter, bin gespannt auf Eure
Antwort.

--
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

                                                   

> Wenn ich den socket oeffnen code direkt reinarbeite, funktioniert er nicht,
> bzw. er baut nicht auf.

Verstehe ich nicht...

> Kann es sein, dass das CUL einfach schneller antwortet, als
> der Read Socket aufgebaut ist?

Ja, das macht aber (theoretisch) nichts.

--
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>

Ich habe es noch mal am Original 00_CUL.pm versucht: Mit 2 Aenderungen
empfaengt es:

1) aufruf von CUL_Clear  raus

sub
CUL_DoInit($)
{
  my $hash = shift;
  my $name = $hash->{NAME};
  my $err;
  my $msg = undef;
 # CUL_Clear($hash);

2) sub
CUL_ReadAnswer($$$)
{
...
#      return ("Timeout reading answer for get $arg", undef)
#        if($nfound == 0);
...

Warum, weiss ich nicht. Die Ausgabe von $buf ist ohne clear:

buf ist T0C6000A600F7
T585800A6FF1A
T0C6000A600F8
TDV 1.35 CUL868

im zweiten Aufruf
 buf ist V 1.35 CUL868

oder er haengt noch mal was sinnloses dran.

Befehle empfaengt fhem bisher auch so nicht.

--
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>

er initialisiert genau dann, wenn

in CUL_DoInit()
 CUL_Clear($hash);

ausgetauscht wird und in

CUL_ReadAnswer

return ("Timeout reading answer for get $arg", undef)
        if($nfound == 0);


auskommentiert wird.

Allerdings geht es dann auch noch nicht, dass fhem Befehle emfängt.

--
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>

Probelauf:
CUL_ReadAnswer($$$)
...
 Log 1, "nfound: $nfound Wenn nfound = 0 -> timeout. Timeout ist
gesetzt auf $to";
 $buf = CUL_SimpleRead($hash);
  Log 1, "buf: $buf";
...
ergibt:
ReadAnswer: Command: Version
nfound: 0 Wenn nfound = 0 -> timeout. Timeout ist gesetzt auf 0.5
2010.03.06 12:13:05 1: buf: V 1.35 CUL868

also ist nfound 0, der buffer aber voll.
wenn ich also den timeout ausschalte, faehrt der server hoch.  Er
fuehr vorher sogar noch einmal CUL_ReadAnswer aus:

ReadAnswer: Command: FHTID
2010.03.06 12:13:05 1: nfound: 0 Wenn nfound = 0 -> timeout. Timeout
ist gesetzt auf 0.5
2010.03.06 12:13:05 1: buf: 3333

CUL_Clear habe ich auskommentiert.

Nach dem Hochfahren fuehrt
telnet localhost 7072 zwar dazu, dass telnet connected, er reagiert
aber nicht auf Kommandos. Genausowenig auf irgendwelche Befehle. Wenn
ich eine Taste drücke, sehe ich, dass der Befehl an fhem geschickt
wird, aber es reagiert nicht.

Warum ist nfound 0? Scheint genau das Problem zu sein: Daten kommen
an, aber fhem fängt sie nicht. Warum ist $buf gesetzt und $nfound 0?
Nix, gefunden, nur was es soll?
Kann das mit irdendwelchen Konsoleeinstellungen zu tun haben?

--
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

                                                   

> nfound: 0 Wenn nfound = 0 -> timeout. Timeout ist gesetzt auf 0.5
> 2010.03.06 12:13:05 1: buf: V 1.35 CUL868
>
> also ist nfound 0, der buffer aber voll.

Mini-Zusammenfassung von "man 2 select":
  select() kriegt eine Liste von Filedesriptoren (netzwerk/geraet/etc) und ein
  Timeout. Es blockiert solange, bis auf einem der Descriptoren Daten anstehen
  oder der Timeout abgelaufen ist. Wenn (im perl) der timeout undef ist (nicht
  0!), dann ist die Timeout Funktionalitaet abgeschaltet.

Verstehe ich es richtig: select() meldet in deinem Fall nie, dass Daten
anstehen (nfound ist nie > 0), aber Daten sind da, man kann sie auslesen.

Wenn das stimmt, dann ist die select() Implementation in dem installierten
perl, libc oder linux-kernel kaputt (in dieser abnehmender Wahrscheinlichkeits-
Reihenfolge :).  Falls man das debuggen moechte, dann waere interessant die
Parameter des select() Systemcalls (== libc -> kernel) zu sehen, z.Bsp. mit
strace.

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.

Tobias

Originally posted by: <email address deleted>

Ja, so ist es, nfound ist immer 0. Wenn nfound 0 ist, werden die Daten
dann mit sysread auch gefunden.

Ich kompiliere strace gerade und schaue dann mal, ob mir der output
etwas sagt.

Gäbe es einen Workaround um select? Immerhin liest sysread ja.



--
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.
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