[vz-users] S0 an RS232 auswerten

Altmarkweb b.schulz at altmarkweb.de
Thu Feb 21 19:09:17 CET 2013


Jetzt klappt es wie gewünscht. Das Shellscript:

stty time 1 min 1 -icanon < /dev/ttyUSB0
( strace -ttt -e read cat  < /dev/ttyUSB0 > /dev/null ) 2>&1 | gawk 
'NR==1{t0=$1;next}{t=$1; system("wget 
\"http://192.168.111.70/zaehler/insert.php?z=\"" 3600e3/(t-t1)/800 " # 
 >& /dev/null");t1=t;}'

Der Verbrauch in Watt wird nun in die DB geschaufelt.
Wie es weitergeht werde ich zu gegebener Zeit hier veröffentlichen.

Mit freundlichen Grüßen

Bernd Schulz

Am 18.02.2013 23:29, schrieb Altmarkweb:
>
> Mit freundlichen Grüßen
>
> Bernd Schulz
>
>
> Am 17.02.2013 20:40, schrieb Altmarkweb:
>> Am 09.02.2013 21:27, schrieb Paul Muster:
>>> On 09.02.2013 21:23, Altmarkweb wrote:
>>>
>>>> habe einen Drehstromzähler mit S0-Anschluß (siehe
>>>> http://www.elektroladen24.eu/artikeldet.php?proid=341).
>>>> Diesen möchte ich wie hier beschrieben (siehe
>>>> http://wiki.volkszaehler.org/hardware/controllers/s0-an-rs232) 
>>>> auslesen.
>>>> Ein alter Laptop mit Linux (Puppy) soll probeweise herhalten bis die
>>>> Rapsberrys da sind.
>>>>
>>>> stty time 1 min 1 -icanon < /dev/ttyS0
>>>>
>>>> ( strace -ttt -e read cat  < /dev/ttyUSB0 > /dev/null ) 2>&1 | awk
>>>> 'NR==1{t0=$1;next}{t=$1; print 3600e3 /(t-t1)/2000 , 
>>>> t-t0,t-t1,$0;t1=t}'
>>>> Kann mir das mal jemand "übersetzen"? So richtig verstehe ich das 
>>>> nicht.
>>>> 366 Watt kann nicht stimmen, der 4.8 sek Rythmus und der Timestaamp 
>>>> passen.
>>> Dann musst du wohl den Faktor 2000, der beschreibt, wie viele Impuls 
>>> pro
>>> kWh kommen, anpassen.
>>>
>> Mit dem alten PIII und Puppy-Linux hat ist der s0 ausgelesen worden, 
>> auch mit dem USB-Seriell-Adapter.
>> Mit dem Raspberry klappt es nicht wirklich.
>>
>> pi at raspberrypi ~ $ strace -ttt -e read cat  < /dev/ttyUSB0 > /dev/null
>> 1361128365.776660 read(3, 
>> "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\10\4\0\0004\0\0\0"..., 512) 
>> = 512
>> 1361128365.780240 read(3, 
>> "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1240) 
>> = 1240
>> 1361128365.783141 read(3, 
>> "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\24\1\25"..., 
>> 47) = 47
>> 1361128365.788542 read(3, 
>> "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\214y\1\0004\0\0\0"..., 512) 
>> = 512
>> 1361128365.791591 read(3, 
>> "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1360) 
>> = 1360
>> 1361128365.794358 read(3, 
>> "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\24\1\25"..., 
>> 47) = 47
>> 1361128365.804673 read(0, "\0", 32768)  = 1
>> 1361128394.323445 read(0, "\0", 32768)  = 1
>> 1361128399.193820 read(0, "\0", 32768)  = 1
>>
>> Meistens bleibt die Ausgabe nach der 6.Zeile stehen.
>> Auf dem Raspberry ist standardmäßig mawk installiert. Damit erfolgt 
>> keine Ausgabe.
>> Habe dann apt-get install gawk aufgerufen.
>>
>> pi at raspberrypi ~ $ ( strace -ttt -e read cat  < /dev/ttyUSB0 > 
>> /dev/null ) 2>&1 | gawk 'NR==1{t0=$1;next}{t=$1; print 
>> 3600e3/(t-t1)/800,t-t0,t-t1,$0;t1=t}'
>> 3.30608e-06 0.00165701 1.36113e+09 1361128645.886707 read(3, 
>> "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1240) 
>> = 1240
>> 1.35709e+06 0.00497293 0.00331593 1361128645.890023 read(3, 
>> "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\24\1\25"..., 
>> 47) = 47
>> 831653 0.0103838 0.00541091 1361128645.895434 read(3, 
>> "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\214y\1\0004\0\0\0"..., 512) 
>> = 512
>> 1572864 0.0132449 0.00286102 1361128645.898295 read(3, 
>> "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1360) 
>> = 1360
>> 1.4409e+06 0.0163679 0.00312304 1361128645.901418 read(3, 
>> "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\24\1\25"..., 
>> 47) = 47
>>
>> Weiter geht es nicht.
>>
>> Gruß Bernd
>>
>
> Nun scheint es zu klappen, warum auch immer.
>
> pi at raspberrypi ~ $ ( strace -ttt -read cat  < /dev/ttyUSB0 > /dev/null 
> ) 2>&1 | gawk 'NR==1{t0=$1;next}{t=$1; print 
> 3600e3/(t-t1)/800,$0;t1=t;}');
> 3.30584e-06 1361225901.382526 read(3, 
> "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 
> 1240) = 1240
> 1.38629e+06 1361225901.385772 read(3, 
> "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\24\1\25"..., 
> 47) = 47
> 848897 1361225901.391073 read(3, 
> "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\214y\1\0004\0\0\0"..., 
> 512) = 512
> 1.66118e+06 1361225901.393782 read(3, 
> "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 
> 1360) = 1360
> 1.57391e+06 1361225901.396641 read(3, 
> "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\24\1\25"..., 
> 47) = 47
> 435455 1361225901.406975 read(0, "\0", 32768)  = 1
> 733.318 1361225907.543471 read(0, "\0", 32768)  = 1
> 672.893 1361225914.231016 read(0, "\0", 32768)  = 1
> 669.77 1361225920.949739 read(0, "\0", 32768)  = 1
> 685.382 1361225927.515417 read(0, "\0", 32768)  = 1
> 680.516 1361225934.128043 read(0, "\0", 32768)  = 1
> 677.165 1361225940.773400 read(0, "\0", 32768)  = 1
> 678.939 1361225947.401387 read(0, "\0", 32768)  = 1
> 678.347 1361225954.035159 read(0, "\0", 32768)  = 1
> 671.983 1361225960.731758 read(0, "\0", 32768)  = 1
> 672.977 1361225967.418467 read(0, "\0", 32768)  = 1
> 677.744 1361225974.058140 read(0, "\0", 32768)  = 1
> 680.616 1361225980.669802 read(0, "\0", 32768)  = 1
> 675.607 1361225987.330483 read(0, "\0", 32768)  = 1
>
> Ich möchte diese Angaben (675.607 Watt, ...) in eine DB speichern mit 
> einer Spalte für die augenblickliche Leistung und einer timestamp Spalte.
> Wie bekomme ich den Wert übergeben?
>
> ( strace -ttt -e write cat < /dev/ttyUSB0 > /dev/null ) 2>&1 | gawk 
> 'NR==1{t0=$1;next}{t=$1; print 3600e3/(t-t1)/800,$0;t1=t; system("wget 
> -O- \"http://localhost/zaehler/insert.php?z=\"" ((t-t1)/800) " # >& 
> /dev/null"); }'
>
> liefert
>
> 758.137 1361226439.228896 write(1, "\0", 1)     = 1
> --2013-02-18 23:27:19--  http://localhost/zaehler/insert.php?z=0
> Auflösen des Hostnamen »localhost (localhost)«... 127.0.0.1, ::1
> Verbindungsaufbau zu localhost (localhost)|127.0.0.1|:80... verbunden.
> HTTP-Anforderung gesendet, warte auf Antwort... 200 OK
> Länge: 47 [text/html]
> In »»STDOUT«« speichern.
>
>  0% [ ] 0           --.-K/s 
> I100%[====================================================================================================================================================================>] 
> 47          --.-K/s   in 0s
>
> 2013-02-18 23:27:19 (567 KB/s) - auf die Standardausgabe geschrieben 
> [47/47]
>
>
>



More information about the volkszaehler-users mailing list