[vz-users] S0 an RS232 auswerten
Altmarkweb
b.schulz at altmarkweb.de
Mon Feb 18 23:29:49 CET 2013
Mit freundlichen Grüßen
Bernd Schulz
AltmarkWeb
Grüner Stegel 4
38489 Rohrberg
Tel.: 039007 91000
Mail:b.schulz at altmarkweb.de
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