Hallo zusammen,
ich weiß, dass das Interface eigentlich einen hier http://forum.fhem.de/index.php/topic,18996.0.html (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 (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 (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...
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
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.
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?
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