Lesen von Stromzähler IR-Kopf hängt nach Reboot

  • Hallo zusammen,


    ich bin das 1. Mal hier im Forum. Mein Problem hat nichts mit der Volkszähler-Software zu tun, ist aber verwandt...


    Ich verwende zur Gas- und Stromzählermessung die Sensoren von volkszaehler.org an einem Raspberry Pi. Im Detail diesen für Strom (Stromzähler ist ACE3000 Typ 260) und diesen für Gas.


    Ich lese die Gas-Impulse bzw. die Strom-Absolutwerte mit PHP aus. Das funktioniert soweit sehr gut und stabil. Allerdings für den IR-Kopf am Stromzähler nicht unmittelbar nach einem Reboot des Pi. Dann muss ich das PHP Skript 1x manuell starten und gleich wieder abbrechen, damit das automatische Lesen (alle 10 min. per cron job) funktioniert. Beim 1. Lesen gleich nach dem Reboot hängt das Skript beim Lesen der Daten.


    Hier der wesentliche PHP Code Ausschnitt:


    Das USB Device an dem der IR-Lesekopf hängt initialisiere ich bei jedem Start des Skripts mit stty mit folgendem Init-String:

    Code
    300 sane raw evenp -cstopb -echo


    Das ergibt diese Einstellungen:

    Code
    speed 300 baud; rows 0; columns 0; line = 0;
    intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>;
    swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O;
    min = 1; time = 0;
    parenb -parodd -cmspar cs7 hupcl -cstopb cread clocal -crtscts
    -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany
    -imaxbel -iutf8
    -opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
    -isig -icanon iexten -echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke


    Hat jemand eine Idee warum das Skript beim 1. Lesen hängt, danach aber wunderbar funktioniert? Ich verdächtige das Linux USB Device. Da aber die ausgelesenen Parameter vor und nach dem 2. Lauf des Skripts gleich sind (wie oben gezeigt), weiß ich nicht mehr weiter.


    Danke für Tipps und viele Grüße
    mdrmdr

  • Wie so oft ist der Ehrgeiz das Problem selbst zu lösen kurz nach dem Einstellen einer Frage in einem Forum am größten :wink:


    Nach einer halben Nacht Recherche, habe ich eine Lösung gefunden:
    Direkt nach dem Reboot schreibe ich in jedes USB Device 2x Ascii NUL (in PHP "chr(0)"). Das soll die UART Chips der USB Verbindung resetten. Damit funktioniert mein Lesen auch nach einem Reboot.


    Ob das jetzt eine "saubere" Lösung oder eher ein Hack ist weiß ich nicht. Zumindest funktioniert es :D


    Viele Grüße