Controller 1-Wire to Ethernet und socat will nicht

Begonnen von Tino.Glatzel, 19 Juli 2015, 10:38:34

Vorheriges Thema - Nächstes Thema

Tino.Glatzel


Hallo Liste,

ich habe den oben genannten Controller bei eservice-online gekauft, im Netz integriert und nach der Anleitung http://www.fhemwiki.de/wiki/1W-IF-ETH konfiguriert.

Der Controller behält aber immer den state "failed".

Folgendes habe ich konfiguriert:

/opt/fhem/fhem.cfg:

define testcontroller OWX /dev/vmodem0


/etc/init.d/fhem:

'start')
        /usr/bin/socat PTY,link=/dev/vmodem0,raw,echo=0,waitslave,setgid=1 TCP:x.y.z.8:23 &
        sleep 2
        chmod 666 `ls -la /dev/vmodem0 | sed 's/.*-> //'`
        echo "Starting fhem..."
        perl fhem.pl fhem.cfg
        RETVAL=$?
        ;;
'stop')
        echo "Stopping fhem..."
        perl fhem.pl $port "shutdown"
        RETVAL=$?
        killall -15 socat
        ;;

Das Device hat auch die passenden Rechte:

ls -la /dev/vmodem0
lrwxrwxrwx 1 root root 10 Jul 19 09:33 /dev/vmodem0 -> /dev/pts/1

ls -la /dev/pts/1
crw-rw-rw- 1 root tty 136, 1 Jul 19 09:37 /dev/pts/1

Ich hänge noch die Screeshot des Konfigurators an.

Hat mir jemand einen Tip was ich falsch mache?


Tino

UweH

Versuch's mal mit der ursprünglichen Definition von pah:

        socat -s PTY,link=/dev/vmodem0,raw,echo=0,waitslave TCP4:blabla:23 &
        sleep 2
        pty=`ls -l /dev/vmodem0 | grep -oE '[^ ]+$'`
        chmod 666 $pty
        sleep 1

        echo "Starting fhem..."
        $fhz $conf
        pidof perl > /var/run/fhem.pid
        pidof socat > var/run/socat.pid
        RETVAL=$?
        ;;
'stop')
        echo "Stopping fhem..."
        $fhz $port "shutdown"
        pid=`ps -eo fname,pid | grep socat | grep -oE '[^ ]+$'`
        kill -9 $pid 
        RETVAL=$?
        ;;


Gruß
Uwe

smurfix

#2
Zitat von: UweH am 19 Juli 2015, 13:54:16
socat -s PTY,link=/dev/vmodem0,raw,echo=0,waitslave TCP4:blabla:23 &
...
pidof socat > var/run/socat.pid
...
pid=`ps -eo fname,pid | grep socat | grep -oE '[^ ]+$'`
kill -9 $pid
Bitte programmiert solche Skripte sauberer. Das geht so:

socat -s PTY,link=/dev/vmodem0,raw,echo=0,waitslave TCP4:blabla:23 &
echo $! > /var/run/socat.pid
...
if test -s /var/run/socat.pid ; then
  read pid < /var/run/socat.pid
  kill -9 $pid
  rm -f /var/run/socat.pid
fi

Dito bei fhem.

"pidof" ist immer eine schlechte Idee, "pidof perl" sowieso.
Wenn ich schon die PID speichere, sollte ich sie im Nachgang auch verwenden ...

EDIT: Statt des "ls ... grep"-Konstrukts gibt es readlink.

UweH

Oha, das ist direkt von pah, ich hab's nur geklaut. Da bin ich mal auf seine Antwort gespannt...

UweH

Übrigens benutze ich socat seit OWX_ASYNC nicht mehr, da OWX_ASYNC die Verbindung selbst aufbaut (was pah in seinem OWX auch machen will...).

define 1wire OWX_ASYNC <IP>:23

Versuch's doch vielleicht mal damit.

Prof. Dr. Peter Henning

Och, das sehe ich ganz locker, bei Shellskripten ist es wie beim Sex: Erlaubt ist, was gefällt ;D ;D

Allerdings empfehle ich smurfix etwas mehr Zurückhaltung, denn etwa 12.000 Fhem-User verwenden das mit Fhem ausgelieferte Startskript mit "pidof perl" und finden daran Gefallen. Und wenn mich nicht alles täuscht, habe ich die zitierten Zeilen darin für meinen Tipp einfach verdoppelt.

Verwendet habe ich das selbst nicht, weil bei mir die socat-Steuerung über watchdog lief.

Aber seit einem halben Jahr auch nicht mehr, socat habe ich ausgemustert. Die hier in diesem Thread http://forum.fhem.de/index.php/topic,37122.0.html gepostete Version ist zwar "beta", macht aber ihre TCP/IP-Verbindung ebenfalls selbst auf.

LG

pah

smurfix

Zitat von: Prof. Dr. Peter Henning am 20 Juli 2015, 04:01:05
etwa 12.000 Fhem-User verwenden das mit Fhem ausgelieferte Startskript mit "pidof perl" und finden daran Gefallen.
Was hat die Nutzerzahl damit zu tun, dass das ein Bug ist?

Sorry, wenn du dich da auf den Schlips getreten fühlst – aber ich bin der Meinung, dass wir den Forum-Usern langfristig keinen Gefallen tun, wenn solche Programmierfehler unwidersprochen stehen bleiben.
Diese Verwendung von "pidof perl" bringt nunmal sämtliche anderen Perl-Prozesse mit um, wenn FHEM gestoppt wird. Das ist in den seltensten Fällen Absicht.

NB: Dumme Frage am Rande: Wo finde ich dieses Skript eigentlich? im fhem.git-Repository jedenfalls nicht. (aktuelles SVN kann ich nicht nachsehen, sourceforge ist offline)

Prof. Dr. Peter Henning

Erstens trage ich keine Krawatten, zweitens kannst Du das Geschwätz von wegen "Bug" sein lassen. Bugs sehen anders aus.

Dieses Fhem-Startskript wird seit Jahren mit dem Fhem Package ausgeliefert, frag Rudi König, von wem es stammt.

pah

Tino.Glatzel

Hallo,

ich habe jetzt mal die Sache mit socat rausgeworfen, und die drei Files 00_OWX.pm, 11_OWX_SER.pm, und 11_OWX_TCP.pm nach /opt/fhem/FHEM kopiert und das Device entsprechend angelegt: define testcontroller OWX x.y.z.8:23

Das Resultat war nicht wie gewünscht. Nach einem Start von fhem "/etc/init.d/fhem start" bekam ich fas nur Fehlermeldungen und meine sonstige Konfiguration war fast komplett weg. Ich hänge mal die Fehlermeldungen an. Ich glaube, ich werde erst mal einen Testraspi zusammennageln bevor ich weiter teste.

Tino

smurfix

Zitat von: Prof. Dr. Peter Henning am 20 Juli 2015, 07:57:26
das Geschwätz von wegen "Bug"
Ach. "Ich stoppe FHEM und mein Backupsystem wird auch abgeschossen" ist also kein Bug?
Wie nennst du sowas sonst?

Kein hypothetisches Problem übrigens. backuppc ist in Perl geschrieben.

Prof. Dr. Peter Henning

Wie ich das nenne, habe ich oben schon geschrieben.

Mach doch einfach einen neuen Tread irgendwo anders auf und schreibe dort hinein, dass alle Fhem-Installationen, die das unveränderte Startskript verwenden, einen "Bug haben":

pah

Prof. Dr. Peter Henning

@Tino.Glatzel: Erstens stammen die Fehlermeldungen überwiegend nicht von OWX. Und zweitens bezweifele ich, dass das richtig installiert wurde - sonst wäre nicht in der letzten Zeile zu lesen, dass eine sehr wohl in OWX enthaltene subroutine nicht gefunden wird.

LG

pah

Tino.Glatzel

Hallo pah,

dass ich das falsch installiert habe, kann gut möglich sein. Wie ist denn der richtige Weg? Ich habe den fhem gestopt, die Dateien nach /opt/fhem/FHEM kopiert, die Rechte angepasst und den fhem wieder gestartet. Danach sah ich die Fehler. Als ich die originale Datei wieder eingbaut hatte, waren zumindest die Fehlermeldungen weg.


Tino

ritchie

Hi,

Zitat
NB: Dumme Frage am Rande: Wo finde ich dieses Skript eigentlich? im fhem.git-Repository jedenfalls nicht. (aktuelles SVN kann ich nicht nachsehen, sourceforge ist offline)

Ich habe den Script damals hier her und diesen aber abgewandelt.

http://www.fhemwiki.de/wiki/Linux_Initscript

Hier wurde auch mal darüber geschrieben: http://forum.fhem.de/index.php?topic=9777.0

Viele Grüße

R.

IPU662  Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv

Tino.Glatzel

Hallo,

ich habe jetzt mal ein Testsystem aufgebaut und einen neuen FHEM mit der aktuellsen Software installiert. Ich habe jetzt noch einmal die drei Dateien, 00_OWX.pm  11_OWX_SER.pm  11_OWX_TCP.pm, nach /opt/fhem/FHEM/ kopiert, die Rechte und die fhem.cfg angepasst. "define interface OWX x.y.z.254:23"
Wenn ich den FHEM starte, sehe ich folgendes im Log:
2015.07.23 20:27:16 0: Featurelevel: 5.6
2015.07.23 20:27:16 0: Server started with 10 defined entities (version $Id: fhem.pl 8952 2015-07-13 12:30:26Z rudolfkoenig $, os linux, user fhem, pid 7801)
Undefined subroutine &main::OWX_Read called at fhem.pl line 3041.

Um auf den Controller zugreifen zu können und die Ausgaben zu erkennen, musste ich die Übertragungsgeschwindigkeit von 9600 Bd auf 19200 Bd umstellen. Das hat sich zumindest von der bisherigen Anleitung unterschieden.

Bei einem Zugriff per Telnet auf den Controller sehe ich eine fortlaufende Ausgabe die alle 10 Sekunden neue Werte ausgibt:

1_EVT|20:35:02
1_OWD1_1|3004
1_OWD1_2|495
1_OWD1_3|495
1_OWD1_4|0
1_EVT|20:35:12
1_OWD1_1|3014
1_OWD1_2|495
1_OWD1_3|495
1_OWD1_4|0
1_EVT|20:35:22
1_KAL|1
1_EVT|20:35:22
1_OWD1_1|3015
1_OWD1_2|495
1_OWD1_3|495
1_OWD1_4|0
1_EVT|20:35:32
1_OWD1_1|3004
1_OWD1_2|495
1_OWD1_3|495
1_OWD1_4|0


Somit scheint der Controller zu funktionieren.
Hat mir jemand einen Tipp wie weiter komme?. Wie ich ja schon gelesen habe, gibt es einige die diesen Controller von eservice-online im Einsatz haben.


Tino