Neue 1-Wire-Module für Raspberry Pi u.a.

Begonnen von Dr. Boris Neubert, 23 Dezember 2012, 17:26:08

Vorheriges Thema - Nächstes Thema

Dr. Boris Neubert

Zitat von: dougie schrieb am So, 13 Januar 2013 17:36Frage:

Ist IODev jetzt eigentlich ein Setting oder ein Attribut? :-)


IODev wird mit attr gesetzt, ist aber technisch weder ein Reading noch ein Attribut sondern eine FHEM-interner Wert (so wie STATE, NR, NAME, ...).

Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

dougie


Danke Boris,

Frage bezog sich darauf, das ich das IODev zwar mit attr gesetzt hatte, fhem aber beharrlich den "anderen" Server als den Richtigen erachtete.
Nach dem zweiten Setzen des attr ist es dann übernommen worden. Irgendwie hat da was gehakt. Der DS2450 ist auch nicht automatisch als solcher erkannt worden.

Jetzt läuft's erst mal und ich teste weiter.

VG
Ralf

dougie


Hier noch ein Hinweis für diejenigen, die einen RPi mit USB/Seriell Interface und FTDI Chip betreiben!

Die Implementierung von USB auf dem RPi (Raspbian Wheezy) ist wohl noch buggy, und mein MP00202 1W USB Busmaster Adapter mit FT232RL brachte den RPi alle paar Stunden unregelmässig zum Absturz.

Danke an Boris mit dem Tipp wo ich fragen kann.

Als Antwort bekam ich den Hinweis, die USB Geschwindigkeit runter zu setzen.

ZitatA quick solution could be adding  dwc_otg.speed=1 to /boot/cmdline.txt it will switch usb to 1.1 only so the network speed will decrease significantly.

Seit dem läuft mein RPi mit owserver stabil.

BR
Ralf

dougie


Zu früh gefreut!

Gerade war der Remote-OWServer wieder "weg" und nicht mehr via ping erreichbar.

Der fhem Prozess auf dem anderen RPi war weg, konnte aber wieder gestartet werden.
Fehlermeldung beim Re-Start von fhem:

Use of uninitialized value $payload_data in addition (+) at /usr/share/fhem/FHEM/lib/OWNet.pm line 357.
Use of uninitialized value $payload_data in pack at /usr/share/fhem/FHEM/lib/OWNet.pm line 359.

Ich glaube 1Wire mit USB/FT232 ist momentan auf dem RPi noch nicht brauchbar.
Sieht wohl so aus, als müsste ich mir doch noch einen i2c Adapter bauen.

VG
Ralf

UweH

Zitat von: dougie schrieb am Mo, 14 Januar 2013 09:42Ich glaube 1Wire mit USB/FT232 ist momentan auf dem RPi noch nicht brauchbar.

Bei mir läuft's damit seit vorgestern ohne Hänger. USB/FT232/DS2480 als Busmaster auf RPi 1 und auf RPi 2 I2C/DS2482-Interface als Busmaster.
Kurioserweise erkennt weder OWX noch OWserver das Display auf RPi 1. Wenn ich den zweiten RPi aus der Konfiguration nehme, klappt's wieder.
Auf RPi 2 wird es in jeder Kombination erkannt... :o

Martin Fischer

> Kurioserweise erkennt weder OWX noch OWserver das Display auf RPi 1.

wenn du ein "Luis Swart" lcd einsetzt, dann findet owserver den familycode "FF" ggf. nur, wenn owserver mit dem argument "--serial_regulartime" gestartet wird. die info kommt direkt von paul.

siehe auch man owserver:
--serial_flextime | --serial_regulartime (DS2480B)
       Changes details of bus timing (see DS2480B datasheet). Some devices, like the Swart LCD cannot work with flextime.

gruss martin
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

dougie


...wird bei mir mit einem "get <owserver> devices" problemlos erkannt.

VG
Ralf


(siehe Anhang / see attachement)

Martin Fischer

Zitat von: dougie schrieb am Mo, 14 Januar 2013 09:42Use of uninitialized value $payload_data in addition (+) at /usr/share/fhem/FHEM/lib/OWNet.pm line 357.
Use of uninitialized value $payload_data in pack at /usr/share/fhem/FHEM/lib/OWNet.pm line 359.

die meldung ist jetzt abgefangen. hatte aber nichts mit dem von dir geschilderten problem zu tun.

gruss martin
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

UweH

Hallo Martin,

Danke für den Tipp.
Die Befehle muss ich sicher in /etc/init.d/owserver eintragen, ich vermute mal, unter d_start(). Wenn ja, wo genau?

Danke

Martin Fischer

hallo uwe,
Zitat von: UweH schrieb am Mo, 14 Januar 2013 18:54Die Befehle muss ich sicher in /etc/init.d/owserver eintragen, ich vermute mal, unter d_start(). Wenn ja, wo genau?

als argument für den aufruf von owserver in deinem /etc/init.d/owserver script.

wenn du nicht genau weisst wo, dann setz hier einfach mal dein script rein. dann zeig ich dir die stelle.. aber hier bitte mittels bbcode code tags einschliessen (macht es lesbarer).

gruss martin
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

UweH

Hi Martin,

das sist so aus:

#!/bin/sh

### BEGIN INIT INFO
# Provides:          owserver
# Required-Start:    $remote_fs $syslog $network $named
# Required-Stop:     $remote_fs $syslog $network $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: 1-wire TCP server
# Description:       Start and stop a TCP server for 1-wire control.
### END INIT INFO

PATH=/sbin:/bin:/usr/sbin:/usr/bin
CONFFILE=/etc/owfs.conf
DESC="1-Wire TCP Server"
NAME="owserver"
DAEMON=/usr/bin/$NAME
PIDDIR=/var/run/owfs
PIDFILE=$PIDDIR/$NAME.pid

# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0

. /lib/lsb/init-functions

d_start() {
    [ -d $PIDDIR ] || {
    mkdir -m 0775 -p $PIDDIR
    chown root:root $PIDDIR >/dev/null 2>&1
    }
    start-stop-daemon --start --quiet --oknodo --exec $DAEMON -- -c $CONFFILE \
        --pid-file $PIDFILE
    # ensure the daemon has been started
    sleep 1
    pidofproc -p $PIDFILE $DAEMON >/dev/null
}

d_stop() {
    start-stop-daemon --stop --quiet --oknodo --exec $DAEMON
    sleep 1
    if [ -f $PIDFILE ] && ! ps h `cat $PIDFILE` > /dev/null
    then
        # Stale PID file (owserver was successfilly stoped),
        #remove it
        rm -f $PIDFILE
    fi
}

d_status() {
    pidofproc -p $PIDFILE $DAEMON > /dev/null
}

case "$1" in
    start)
        log_daemon_msg "Starting $DESC" "$NAME"
        d_start
        log_end_msg $?
        ;;
    stop)
        log_daemon_msg "Stopping $DESC" "$NAME"
        d_stop
        log_end_msg $?
        ;;
    restart|force-reload)
        log_daemon_msg "Restarting $DESC" "$NAME"
        d_status && d_stop
        d_start
        log_end_msg $?
        ;;
    status)
        d_status
        if [ $? -eq 0 ];then
            log_success_msg "$NAME is running"
        else
            log_failure_msg "$NAME is not running"
        fi
        ;;
    *)
        echo "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload|status}" >&2
        exit 1
        ;;
esac

exit 0

Martin Fischer

#!/bin/sh
[...]
d_start() {
    [ -d $PIDDIR ] || {
    mkdir -m 0775 -p $PIDDIR
    chown root:root $PIDDIR >/dev/null 2>&1
    }
    start-stop-daemon --start --quiet --oknodo --exec $DAEMON -- -c $CONFFILE \
        --serial_regulartime --pid-file $PIDFILE
    # ensure the daemon has been started
[...]

schreibe es einfach vor "--pid-file $PIDFILE". siehe oben..

gruss martin
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

thoweiss

Also ich habe einen Link45 Busmaster mit RS232 über einen billigen USB->Seriell Konverter mit Profilinc Chipsatz im Einsatz.

Läuft seit einigen Tagen ohne Probleme...

Ich hoffe ich bekomme meinen RS485 Adapter (HS485 BUS) zum laufen... der hat einen FTDI-Chip


Zitat von: dougie schrieb am Mo, 14 Januar 2013 08:04Hier noch ein Hinweis für diejenigen, die einen RPi mit USB/Seriell Interface und FTDI Chip betreiben!

Die Implementierung von USB auf dem RPi (Raspbian Wheezy) ist wohl noch buggy, und mein MP00202 1W USB Busmaster Adapter mit FT232RL brachte den RPi alle paar Stunden unregelmässig zum Absturz.

Danke an Boris mit dem Tipp wo ich fragen kann.

Als Antwort bekam ich den Hinweis, die USB Geschwindigkeit runter zu setzen.

ZitatA quick solution could be adding  dwc_otg.speed=1 to /boot/cmdline.txt it will switch usb to 1.1 only so the network speed will decrease significantly.

Seit dem läuft mein RPi mit owserver stabil.

BR
Ralf

dougie


Ich bin hier die ganzen Tage noch am Testen, und das herabsetzen der USB Geschwindigkeit hilft auf jeden Fall!!

Das Ganze hat aber einen kleinen Haken: ich hab mir den Schaltplan vom RPi mal genauer angesehen, und der 9512 LAN Interface Chip des RPi ist auch ein USB Device, das auf dem gleichen Bus/Controller  wie die externen Ports hängt. Daher würgt man mit dem Setting auch die Netzwerkgeschwindigkeit auf USB 1.1 Niaveau ab.

Ist bei mir nicht so wild, weil das Ding nur owserver spielt, aber sollte man vielleich im Hinterkopf behalten.
Ich bin zuversichtlich, das es da aber irgendwann nen Fix für Raspbian gibt.

VG
Ralf



Zitat von: thoweiss schrieb am Di, 15 Januar 2013 07:47Also ich habe einen Link45 Busmaster mit RS232 über einen billigen USB->Seriell Konverter mit Profilinc Chipsatz im Einsatz.

Läuft seit einigen Tagen ohne Probleme...

Ich hoffe ich bekomme meinen RS485 Adapter (HS485 BUS) zum laufen... der hat einen FTDI-Chip


dougie



...manchmal beisse ich mich auch an Sachen fest. :-)
Diese FTDI FT232 USB/seriell Sache ist so was. Es wäre sicher einfacher, eben einen i2c Adapter zu bauen, aber das würde ja keinen weiter bringen.
Ich hab hier diese Story gefunden, nachder der dwc_otg Driver (mindestens) einen Bug hat.

http://www.raspberrypi.org/phpBB3/viewtopic.php?f=28&t=23544&start=125

Bevor jetzt alle ihren Kernel updaten: ich hab das mal gerade bei mir gemacht und USB wieder auf Full-Speed gesetzt.

Ich werde berichten, ob sich was verbessert hat.

VG
Ralf