FYI: OWFS 2.9p9 schreibt nicht mehr, vmtl. Bug in perl lib

Begonnen von joe42, 12 Januar 2015, 00:23:35

Vorheriges Thema - Nächstes Thema

joe42

Hallo *,

Ich habe mit meinem FHEM (Update vor wenigen Tagen) mit OWFS 2.9.p9 (selbst-compiliert unter Ubuntu 14.04 latest) folgendes Verhalten beobachtet:
- Leseoperationen und Bus-Scan funktionieren einwandfrei
- Schreiboperationen haben keinen Effekt mehr (z.B. auf eine PIO) (funktionierte unter Ubuntu-Package 2.8p15 noch)

Habt ihr das auch schon beobachtet?
Falls ja, ich denke nicht, dass es ein FHEM Bug ist.
Ich hab das ganze mal innerhalb FHEM debugged und es sieht bis zum Aufruf der OWFS Lib alles gut aus.

Deshalb habe ich folgendes Experiment gemacht: Es funktioniert alles wieder durch folgende Radikalmassnahme in 10_OWServer.pm:
Ersetze
  return $hash->{fhem}{owserver}->write($path,$value);
Durch
  system( "/opt/owfs/bin/owwrite -s localhost $path $value");
  return 1;

Ja, ich weiss, das ist ein Hack. (Hart-codierter Pfad, geht nur mit einem lokalen owserver, startet neuen Prozess, keine Fehlerbehandlung ...
... und ist auch sonst grottenhässlich). Soll einfach nur zeigen, dass es ein Bug in der Perl Lib ist.

Wenn mir noch jemand das Problem bestätigt, schreib ich mal die OWFS Maintainer an. Oder ihr sagt mir wo ich Mist gebaut habe ;-)

Danke für Feedback,
Harald

PS: Ich bin neu in diesem Forum. Wenn es etwas in Sachen lokale Etikette/Gepflogenheiten für mich zu verbessern gibt, bitte gebt mir nen Tip ;-)

PPS: Die Contributors und die ganze FHEM-Community machen einen Klasse-Job! Ich möchte einfach mal auf diesem Weg DANKE! sagen.

eldrik

Hi,

ich hatte denselben Effekt auch vor einigen Monaten, da habe ich auch die zu dem Zeitpunkt neueste OWFS Version compiliert (ob es die 2.9.p9 weiß ich nicht mehr) und konnte meine per DS2408 gesteuerten LEDs nicht mehr schalten (PIO)!

Bin danach wieder auf die OWFS Version gegangen, welche mit Rasbian ausgeliefert wurde und der Fehler trat nicht mehr auf.

Greetz
Eldrik

smurfix

Das finde ich ausreichend strange. Die einzige Änderung in der OWNet.pm der letzten Jahre ist diese hier:

@ -245,6 +253,11 @@ sub _new($$) {
                $format = 0x1000000 , last FORMAT if $addr =~ /-fi/ ;
        }

+       my $trim = 0 ;
+       TRIM: {
+               $trim = 0x00000040 , last TRIM if $addr =~ /-trim/ ;
+       }
+
        # Verbose flag
        $self->{VERBOSE} = 1 if $addr =~ /-v/i ;
       
@@ -267,7 +280,7 @@ sub _new($$) {

        $self->{ADDR} = $addr ;
        $self->{PORT} = $port ;
-       $self->{SG} = $DEFAULT_SG + $tempscale + $presscale + $format ;
+       $self->{SG} = $DEFAULT_SG + $tempscale + $presscale + $format + $trim ;
        $self->{VER} = 0 ;
}


Kannst du diese Änderungen in deinem System rückgängig machen, und testen ob das das Problem behebt?