Sparometer - Linux

af Hans Schou

ALPHA-software: Nogle gange sker det at der er fejl i kommunikationen og der bliver skrevet "error" til skærm. Det skyldes nok noget timing der er lidt for tæt på hvad Spar-o-meteret kan klare. Der arbejdes på at håndtere dette (2008-09-13).

Elsparefonden har valgt at kilde-koden (source code) til Spar-o-meter Windows programmet skal være under GPL licensen. Dermed har det været muligt at se hvad programmet gør og dernæst fremstille et program til Linux der kan kommunikere med sparometeret. Programmet til Linux virker på en lidt anden måde end Windows-programmet, da det er typisk for Linux-programmer at fungere ved kommandolinjen. Linux-programmet kan ca. sample 16 målinger pr. sekund.

Hardware

Nyttige kommandoer

Skriv og aflæs intern valgfri tekst:

$ ./sparometer --device=/dev/ttyS0 --set-text=abc123
$ ./sparometer --device=/dev/ttyS0 --get-text
abc123

Aflæs forbrug:

$ ./sparometer --get-sample-effect
0006.1W

Aflæs forbrug og se rådata:

$ ./sparometer --get-sample-effect --verbose
Open device: /dev/ttyS0
Command 'get-productid':
"/nzr4SEM16_S_v1.12" "\x0d" "\x0a" 
Command 'programming-mode9600':
Write: "\x06" "051" "\x0d" "\x0a" 
Read : "~" 
Command 'get-sample-effect':
Write: "\x01" "R1" "\x02" "1.7.1()" "\x03" 
Read : "\x02" "1.7.1(0006.1*W)" "\x03" 
Command 'programming-mode300':
Write: "\x06" "001" "\x0d" "\x0a" 
Read : "\x00"

Aflæs watt, ampere og volt løbende 10 gange med tidsangivelse hvert 0.2 sekund:

$ ./sparometer --get-sample-effect --get-sample-current --get-sample-voltage --loop=10 --time-stamp --delay=0.2
2008-09-13 15:33:47.392547 0006.0W 00.081A 224V
2008-09-13 15:33:47.562509 0006.0W 00.081A 224V
2008-09-13 15:33:47.762477 0006.0W 00.081A 224V
...

Sæt logningsinterval, dato og tid - samt aflæs de satte værdier.

$ ./sparometer --stop-log --set-interval=01*min --set-date=$(date +%y%m%d) --set-time=$(date +%H%M%S) --get-date --get-time

Start logning. Sluk forbrugsenhed. Slet alle gamle data.

$ ./sparometer --reset-log --start-log

Aflæs de opsamlede data. Tænd forbrugsenhed - vent et par minutter.

$ ./sparometer --get-logdata
1080913081238 00 01 3 1.5 W 11.5 A 12.5 V
0167.4 00.925 224
0166.7 00.922 224
0166.1 00.918 224
0164.1 00.909 224
0140.0 00.777 224
0140.1 00.777 224
0139.8 00.778 223
0140.9 00.782 224

Aflæs opsamlede data og konverter med TAB-adskiller.

$ ./sparometer --get-logdata | ./logdataformat.pl
DateTime	Watt	Amp	Volt
2008-09-13 08:12:38	0167.4	00.925	224
2008-09-13 08:13:38	0166.7	00.922	224
2008-09-13 08:14:38	0166.1	00.918	224
2008-09-13 08:15:38	0164.1	00.909	224
2008-09-13 08:16:38	0140.0	00.777	224
2008-09-13 08:17:38	0140.1	00.777	224
2008-09-13 08:18:38	0139.8	00.778	223
2008-09-13 08:19:38	0140.9	00.782	224

Hjælp

$ ./sparometer --help --verbose
sparometer version 0.0.4.
Copyright (C) 2008 by Hans Schou
Build date: 2008-09-14

  --data-readout
	Spar-o-meter internal command: "\x06" "030" "\x0d" "\x0a" 
	Mode: data-readout 300 baud
	data_readout

  -d, --get-date
	Spar-o-meter internal command: "\x01" "R1" "\x02" "0.9.2()" "\x03" 
	Mode: programming 300 baud
	get_date

  -I, --get-interval
	Spar-o-meter internal command: "\x01" "R1" "\x02" "0.8.4()" "\x03" 
	Mode: programming 300 baud
	get_interval

  -H, --get-kwh
	Spar-o-meter internal command: "\x01" "R1" "\x02" "1.8.1()" "\x03" 
	Mode: programming 300 baud
	get_kwh

  --get-log-time
	Spar-o-meter internal command: "\x01" "R1" "\x02" "130.130()" "\x03" 
	Mode: programming 300 baud
	get_log_time

  -l, --get-logdata
	Spar-o-meter internal command: "\x01" "R5" "\x02" "P.01(;)" "\x03" 
	Mode: programming 9600 baud
	get_logdata

  -X, --get-max-effect
	Spar-o-meter internal command: "\x01" "R1" "\x02" "1.6.1()" "\x03" 
	Mode: programming 300 baud
	get_max_effect

  -N, --get-min-effect
	Spar-o-meter internal command: "\x01" "R1" "\x02" "1.3.1()" "\x03" 
	Mode: programming 300 baud
	get_min_effect

  -O, --get-owner-nr
	Spar-o-meter internal command: "\x01" "R1" "\x02" "0.0.0()" "\x03" 
	Mode: programming 300 baud
	get_owner_nr

  -E, --get-periode-effect
	Spar-o-meter internal command: "\x01" "R1" "\x02" "130.128()" "\x03" 
	Mode: programming 300 baud
	get_periode_effect

  -P, --get-price-periode
	Spar-o-meter internal command: "\x01" "R1" "\x02" "129.130()" "\x03" 
	Mode: programming 300 baud
	get_price_periode

  -Y, --get-price-year
	Spar-o-meter internal command: "\x01" "R1" "\x02" "129.129()" "\x03" 
	Mode: programming 300 baud
	get_price_year

  -i, --get-productid
	Spar-o-meter internal command:  "/?!" "\x0d" "\x0a" 
	Mode: programming 300 baud
	get_productID '/nzr4SEM16_S_v1.12'

  -A, --get-sample-current
	Spar-o-meter internal command: "\x01" "R1" "\x02" "11.7()" "\x03" 
	Mode: programming 9600 baud
	get_sample_current

  -w, --get-sample-effect
	Spar-o-meter internal command: "\x01" "R1" "\x02" "1.7.1()" "\x03" 
	Mode: programming 9600 baud
	get_sample_effect --get-sample-effect --loop=3 --delay=1

  -f, --get-sample-freq
	Spar-o-meter internal command: "\x01" "R1" "\x02" "14.7()" "\x03" 
	Mode: programming 9600 baud
	get_sample_freq

  -v, --get-sample-voltage
	Spar-o-meter internal command: "\x01" "R1" "\x02" "12.7()" "\x03" 
	Mode: programming 9600 baud
	get_sample_voltage

  -s, --get-serial
	Spar-o-meter internal command: "\x01" "R1" "\x02" "96.1.0()" "\x03" 
	Mode: programming 300 baud
	get_serial

  --get-software-version
	Spar-o-meter internal command: "\x01" "R1" "\x02" "0.2.0()" "\x03" 
	Mode: programming 300 baud
	get_software_version

  -F, --get-tarif
	Spar-o-meter internal command: "\x01" "R1" "\x02" "129.128()" "\x03" 
	Mode: programming 300 baud
	get_tarif

  -t, --get-text
	Spar-o-meter internal command: "\x01" "R1" "\x02" "128.128()" "\x03" 
	Mode: programming 300 baud
	get_text

  -M, --get-time
	Spar-o-meter internal command: "\x01" "R1" "\x02" "0.9.1()" "\x03" 
	Mode: programming 300 baud
	get_time

  -U, --get-up-time
	Spar-o-meter internal command: "\x01" "R1" "\x02" "130.131()" "\x03" 
	Mode: programming 300 baud
	get_up_time

  -y, --get-weekday
	Spar-o-meter internal command: "\x01" "R1" "\x02" "0.9.5()" "\x03" 
	Mode: programming 300 baud
	get_weekday

  --init-end
	Spar-o-meter internal command: "\x01" "B0" "\x03" 
	Mode: programming 300 baud
	init_end

  -m, --manufacturer-mode
	Spar-o-meter internal command: "\x06" "056" "\x0d" "\x0a" 
	Mode: manufactor 9600 baud
	manufacturer_mode

  --periode-log
	Spar-o-meter internal command: "\x01" "W1" "\x02" "130.128(0*Tage)" "\x03" 
	Mode: programming 9600 baud
	periode_log

  -2, --programming-mode2400
	Spar-o-meter internal command: "\x06" "031" "\x0d" "\x0a" 
	Mode: programming 300 baud
	programming_mode2400

  -3, --programming-mode300
	Spar-o-meter internal command: "\x06" "001" "\x0d" "\x0a" 
	Mode: programming 300 baud
	programming_mode300

  -4, --programming-mode4800
	Spar-o-meter internal command: "\x06" "041" "\x0d" "\x0a" 
	Mode: programming 300 baud
	programming_mode4800

  -9, --programming-mode9600
	Spar-o-meter internal command: "\x06" "051" "\x0d" "\x0a" 
	Mode: programming 300 baud
	programming_mode9600

  -r, --reset-log
	Spar-o-meter internal command: "\x01" "E1" "\x02" "131.132(zero)" "\x03" 
	Mode: manufactor 9600 baud
	reset_log

  -D <080914>, --set-date[=<080914>]
	Spar-o-meter internal command: "\x01" "W1" "\x02" "0.9.2(%-6s)" "\x03" 
	Mode: programming 300 baud
	Set date in YYMMDD format. If no date given current day will be used. Syntax: --set-date[=<YYMMDD>]. --set-date=$(date +%y%m%d)

  --set-interval=<60*min>
	Spar-o-meter internal command: "\x01" "W1" "\x02" "0.8.4(%-6s)" "\x03" 
	Mode: programming 300 baud
	set_interval

  --set-owner-nr=<99>
	Spar-o-meter internal command: "\x01" "W1" "\x02" "96.1.0(%s)" "\x03" 
	Mode: programming 300 baud
	set_owner_nr

  -S <1>, --set-periode-effect=<1>
	Spar-o-meter internal command: "\x01" "W1" "\x02" "130.128()" "\x03" 
	Mode: programming 300 baud
	set_periode_effect

  -R <1.550>, --set-tarif=<1.550>
	Spar-o-meter internal command: "\x01" "W1" "\x02" "129.128(%s)" "\x03" 
	Mode: programming 300 baud
	set_tarif

  -T <SPAROMETER>, --set-text=<SPAROMETER>
	Spar-o-meter internal command: "\x01" "W1" "\x02" "128.128(%s)" "\x03" 
	Mode: programming 300 baud
	set_text max 30 ASCII characters except '()'. --set-text=$(hostname -f)

  -1 <211034>, --set-time[=<211034>]
	Spar-o-meter internal command: "\x01" "W1" "\x02" "0.9.1(%-6s)" "\x03" 
	Mode: programming 300 baud
	Set time in HHMMSS format. If no time given current time will be used. Syntax: --set-time[=<HHMMSS>]. Example: --set-time=$(date +%H%M%S)

  -a, --start-log
	Spar-o-meter internal command: "\x01" "E1" "\x02" "131.130(start)" "\x03" 
	Mode: manufactor 9600 baud
	start_log

  -o, --stop-log
	Spar-o-meter internal command: "\x01" "E1" "\x02" "131.131(stop)" "\x03" 
	Mode: manufactor 9600 baud
	stop_log

  --delay=<0.0>
	Delay in seconds between executing commands. Example: --delay=1.234567. If no delay is given together with the 'loop' command, there will be no delay. Due to slow communication and A/D conversion the minimum delay is about 0.125 seconds at 9600 baud.

  --device=</dev/ttyS0>
	List of serial port devices to try to open. --device=<serial>[:<serial>]. Example: --device=/dev/ttyS0:/dev/ttyS1

  --debug[=<0>]
	Turn on debug.

  -h, --help
	This help.

  --loop[=<1>]
	Loop commands given. 'loop=0' equals loop for ever.

  --time-stamp
	Prefix each line with a time stamp. 0=false, 1=true.

  --verbose[=<1>]
	Turn on verbose.

ENVIRONMENT
Set environment variable to 'sparometer=/dev/ttyS0' for default serial port instead of the one specified during './configure --enable-serial-device=/dev/ttyS0'.

Send bug reports to: <chlor@schou.dk>

Sparometer kan gemme 16000 målinger. Med kommandoen --set-interval=01*min kan intervallet mellem hver måling sættes til fx 1 minut. Elsparefonden foreslår 15 min.

Log-interval
Log
min
Længde
dage
111
222
333
444
555
666
10110
15165
30330
60660

Producent NZR.de Se Elektronische Zähler, SEM-LOG 16+ Artikel-Nr.: 08030301 Standby-Energy-Monitor SEM-LOG 16+

SEM-LOG 16+

Standby-Energy-Monitor SEM-LOG 16+


Powered by: Linux, Apache, Hans Schou

ISO/IEC 15445