diff options
author | makefu <github@syntax-fehler.de> | 2011-10-25 14:07:27 +0200 |
---|---|---|
committer | makefu <github@syntax-fehler.de> | 2011-10-25 14:07:27 +0200 |
commit | 4a6e81116aa81468b8d748c02ba74f3630512ccc (patch) | |
tree | 0439f7dff8b29434f4e93965d8ea16a0520c3d7b | |
parent | 450241b97f7b6c3cc290797a0b9a46957f7a6afe (diff) | |
parent | b1fc61c5a6f819a7e6840f73eb57ca33c5af461c (diff) |
Merge branch 'master' of github.com:krebscode/painload
-rw-r--r-- | retiolum/Makefile | 3 | ||||
-rw-r--r-- | retiolum/hosts/euer (renamed from retiolum/hosts/EUcancER) | 0 | ||||
-rw-r--r-- | shack/strom/main.py | 50 | ||||
-rw-r--r-- | shack/strom/testdata | 24 | ||||
-rw-r--r-- | shack/strom/testdatacomment | 24 | ||||
-rwxr-xr-x | util/bin/magic | 20 |
6 files changed, 120 insertions, 1 deletions
diff --git a/retiolum/Makefile b/retiolum/Makefile index 83c4ac12..effdbfb8 100644 --- a/retiolum/Makefile +++ b/retiolum/Makefile @@ -22,7 +22,8 @@ update: hosts @echo adding hosts bin/update_tinc_hosts restart @echo reloading tincd - pkill -HUP tincd || true + sudo pkill -HUP tincd || true + sudo pkill -ALRM tincd || true arch-install: update install arch-autostart autohosts diff --git a/retiolum/hosts/EUcancER b/retiolum/hosts/euer index ae2d5f9d..ae2d5f9d 100644 --- a/retiolum/hosts/EUcancER +++ b/retiolum/hosts/euer diff --git a/shack/strom/main.py b/shack/strom/main.py new file mode 100644 index 00000000..e1a85d02 --- /dev/null +++ b/shack/strom/main.py @@ -0,0 +1,50 @@ +#! /usr/bin/python +# -*- coding utf-8 -*- + +from __future__ import division + +import re + + +class Reader(object): + _re = re.compile(r'^(?P<field>\d-\d:\d+\.\d+\.\d+\*\d+)\((?P<value>\S+?)(?:\*[VAW])?\)$') + + def _convert_periode(value): + return int(value, 16) / 100 + + fields = { + '1-0:1.8.0*255': ('overall', float), + '1-0:31.7.0*255': ('l1_strom', float), + '1-0:32.7.0*255': ('l1_spannung', float), + '1-0:51.7.0*255': ('l2_strom', float), + '1-0:52.7.0*255': ('l2_spannung', float), + '1-0:71.7.0*255': ('l3_strom', float), + '1-0:72.7.0*255': ('l3_spannung', float), + '1-0:96.50.0*1': ('periode', _convert_periode), + } + + def __init__(self, f): + self._file = f + + def __iter__(self): + data = {} + for line in self._file: + line = line.strip() + if line == '!': + yield data + data = {} + continue + r = self._re.match(line) + if not r: + continue + field = self.fields.get(r.group('field')) + if field: + data[field[0]] = field[1](r.group('value')) + #uncomment to print unmapped values + #else: + # print r.groups() + + +data_file = open('testdata') +for data in Reader(data_file): + print data diff --git a/shack/strom/testdata b/shack/strom/testdata new file mode 100644 index 00000000..c4db6b5d --- /dev/null +++ b/shack/strom/testdata @@ -0,0 +1,24 @@ +/HAG5eHZ010C_IEnBWA02 + +1-0:0.0.0*255(20745965) +1-0:1.8.0*255(011107.1314) +1-0:96.5.5*255(82) +0-0:96.1.255*255(0000120120) +1-0:32.7.0*255(233.90*V) +1-0:52.7.0*255(233.07*V) +1-0:72.7.0*255(236.50*V) +1-0:31.7.0*255(004.99*A) +1-0:51.7.0*255(005.02*A) +1-0:71.7.0*255(007.14*A) +1-0:21.7.0*255(+00984*W) +1-0:41.7.0*255(+00966*W) +1-0:61.7.0*255(+01640*W) +1-0:96.50.0*0(EF) +1-0:96.50.0*1(07CE) +1-0:96.50.0*2(10) +1-0:96.50.0*3(0B) +1-0:96.50.0*4(28) +1-0:96.50.0*5(1D) +1-0:96.50.0*6(003D381B260A16F1F6FE560200009F80) +1-0:96.50.0*7(00) +! diff --git a/shack/strom/testdatacomment b/shack/strom/testdatacomment new file mode 100644 index 00000000..e453b98b --- /dev/null +++ b/shack/strom/testdatacomment @@ -0,0 +1,24 @@ +/HAG5eHZ010C_IEnBWA02 + +1-0:0.0.0*255(20745965) #Eigentumsnummer +1-0:1.8.0*255(011107.1314) #Zählerstand Bezug +1-0:96.5.5*255(82) #Zählerstand Lieferg +0-0:96.1.255*255(0000120120) #Status +1-0:32.7.0*255(233.90*V) #Spannung L1 +1-0:52.7.0*255(233.07*V) #Spannung L2 +1-0:72.7.0*255(236.50*V) #Spannung L3 +1-0:31.7.0*255(004.99*A) #Strom L1 +1-0:51.7.0*255(005.02*A) #Strom L2 +1-0:71.7.0*255(007.14*A) #Strom L3 +1-0:21.7.0*255(+00984*W) #Leistung L1 +1-0:41.7.0*255(+00966*W) #Leistung L2 +1-0:61.7.0*255(+01640*W) #Leistung L3 +1-0:96.50.0*0(EF) #Netzstatus +1-0:96.50.0*1(07CE) #Netzperiode (1/100ms) +1-0:96.50.0*2(10) #aktuelle Chiptemp. Zähler (hex, in °C) +1-0:96.50.0*3(0B) #min Chiptemp +1-0:96.50.0*4(28) #gemittelte Chiptemp +1-0:96.50.0*5(1D) #max. Chiptemp. +1-0:96.50.0*6(003D381B260A16F1F6FE560200009F80) #Kontrollnummer +1-0:96.50.0*7(00) #Diagnose +! #ENTE diff --git a/util/bin/magic b/util/bin/magic index d3e86120..cb9cee6e 100755 --- a/util/bin/magic +++ b/util/bin/magic @@ -35,13 +35,33 @@ destroy() { echo "$cache" | sed "/^$bs$/,/^$es$/d" >$3 fi } +help() { +cat <<EOF +Usage: $0 DELIMITER_NAME FUNCTION FILE +$0 creates,updates or destroys magic inside a file. +It can be used to reliably add or remove custom lines. +For example add own lines in /etc/rc.local to auto-load +scripts. +FUNCTION: + create -- creates new magic in file, takes stdin as content in magic + update -- updates already existing magic with text from stdin + destroy -- destroys magic boundary + retrieve -- retrieve the content of magic and writes to stdout + +Not yet implemented is the handling of magic not starting with the +shell comment symbol "#". + +EOF + +} case $2 in (create) create "$@" ;; (retrieve) retrieve "$@" ;; (update) update "$@" ;; (destroy) destroy "$@" ;; (*) + help >&2 echo 'Error 1: You are made of stupid!' >&2 exit 23 esac |