1W-IF-ETH

Begonnen von Bruno07, 26 Mai 2014, 10:51:58

Vorheriges Thema - Nächstes Thema

Bruno07

Hallo zusammen,
ich weiß, dass das Interface eigentlich einen hier http://forum.fhem.de/index.php/topic,18996.0.html behandelt wird. Allerdings sind das bereits 16 Seiten, die zeitweise Platinenbestellungen behandeln und zum teil auch schon nicht mehr aktuell sind. So befindet sich das Wiki dazu hier: http://www.fhemwiki.de/wiki/1W-IF-ETH

Nun zu meinem Problem:
Ich habe das Interface auf der Platine von Tobias aufgebaut und die Widerstände gegen eine Drahtbrücke ausgetauscht. Als LAN-Modul habe ich dieses http://www.ebay.de/itm/251457851002?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649 verwendet und entsprechend konfiguriert (s. Anhang)
Mein /etc/init.d/fhem sieht jetzt so aus:
set -e
cd /opt/fhem
port=7072

case "$1" in
'start')
        echo "Starting fhem..."
        perl fhem.pl fhem.cfg
        socat -s PTY,link=/dev/vmodem0,raw,echo=0,waitslave TCP4:192.168.0.120:23 &
        sleep 2
        pty=`ls -l /dev/vmodem0 | grep -oE '[^ ]+$'`
        chmod 666 $pty
        socat -s PTY,link=/dev/vmodem1,raw,echo=0,waitslave TCP4:192.168.0.120:26 &
        sleep 2
        pty=`ls -l /dev/vmodem1 | grep -oE '[^ ]+$'`
        chmod 666 $pty
        RETVAL=$?
        ;;
'stop')
        echo "Stopping fhem..."
        perl fhem.pl $port "shutdown"
        pid=`ps -eo fname,pid | grep socat | grep -oE '[^ ]+$'`
        kill -9 $pid
        RETVAL=$?
        ;;
'status')
        cnt=`ps -ef | grep "fhem.pl" | grep -v grep | wc -l`
        if [ "$cnt" -eq "0" ] ; then
                echo "fhem is not running"
        else
                echo "fhem is running"
        fi
        ;;
*)
        echo "Usage: $0 { start | stop | status }"
        RETVAL=1
        ;;
esac
exit $RETVAL


Mein Probleme: Nach "sudo /etc/init.d/fhem start" wird immer nur das erste Interface erkannt, dass eingerichtet wird.
lrwxrwxrwx 1 root root          10 Mai 26 10:07 vmodem0 -> /dev/pts/1
lrwxrwxrwx 1 root root          10 Mai 26 10:07 vmodem1 -> /dev/pts/2

und
crw-rw-rw- 1 root tty 136, 1 Mai 26 10:07 1
crw-rw-rw- 1 root tty 136, 2 Mai 26 10:07 2

Fehlermeldung:
OWX: Can't open serial device /dev/vmodem1: Keine Berechtigung
Kommentiere ich das erste aus wird das zweite Fehlerfrei erkannt.

Starte ich den RPi jedoch komplett neu werden beide erkannt...






eldrik

Hi,

aus meiner Sicht, startest du Fhem und legst dann erst die Devices an, daher wird OWX wahrscheinlich auch schon vorher mit einer Fehlermeldung aussteigen, da noch kein dev/vmodem device erzeugt wurde.

Ich würde daher perl fhem.pl fhem.cfg mit einem sleep 1 hinter das letzte chmod 666 setzen.

Greetz
Eldrik

Bruno07

#2
Danke! So funktionieren beide:

[case "$1" in
'start')
        echo "Starting fhem..."
        socat -s PTY,link=/dev/vmodem0,raw,echo=0,waitslave TCP4:192.168.0.120:23 &
        sleep 2
        pty=`ls -l /dev/vmodem0 | grep -oE '[^ ]+$'`
        chmod 666 $pty
        socat -s PTY,link=/dev/vmodem1,raw,echo=0,waitslave TCP4:192.168.0.120:26 &
        sleep 2
        pty=`ls -l /dev/vmodem1 | grep -oE '[^ ]+$'`
        chmod 666 $pty
        sleep 1
        perl fhem.pl fhem.cfg
        RETVAL=$?
        ;;

Rest wie oben.

Bruno07

#3
Nachdem das Interface nun schön vor sich hin arbeitet habe ich versucht es zu benutzen. Die ID-Chips wurden ja schon richtig erkannt - jetzt also DS18B20 und ein I-Button.
Auf dem einen Kanal wird der ein DS18B20 korrekt erkannt und liefert Temperaturwerte.
Auf dem anderen Kanal wird der I-Button und ein DS18B20 zuverlässig erkannt. Der DS18B20 liefert allerdings keine Temperatur sondern:
OWTHERM: Could not get values from device OWX_28_9CCC29050000, return was invalid CRC

Hat jemand eine Idee woran das liegen kann? Es liegt jedenfalls scheinbar nicht am DS18B20, da auch ein weitere neuer DS18B20 erkannt wird aber den gleichen Fehler liefert.

Update: Schließe ich einen DS2408S+ an, wird der nicht erkannt. Muss ich da noch andere Module laden bevor der erkannt wird? 

Prof. Dr. Peter Henning

Möglicherweise liegt der CRC-Fehler daran, dass Norbert Truchsess in den Modulen bei der ASync-Version noch irgendeinen Fehler drin hat - CRC-Fehler werden auch von anderen Benutzern gemeldet. Da ich nicht derzeit nicht einmal dazu komme, diese Module bei mir zu installieren, ggf. einfach noch etwas warten.

DS2408S+ sollte sich bei der Erkennung nicht vom DS2408 unterscheiden (gleiche Family ID). Wenn er nicht erkannt wird: Fehler im Bus.

LG

pah