summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormakefu <github@syntax-fehler.de>2011-10-25 14:07:27 +0200
committermakefu <github@syntax-fehler.de>2011-10-25 14:07:27 +0200
commit4a6e81116aa81468b8d748c02ba74f3630512ccc (patch)
tree0439f7dff8b29434f4e93965d8ea16a0520c3d7b
parent450241b97f7b6c3cc290797a0b9a46957f7a6afe (diff)
parentb1fc61c5a6f819a7e6840f73eb57ca33c5af461c (diff)
Merge branch 'master' of github.com:krebscode/painload
-rw-r--r--retiolum/Makefile3
-rw-r--r--retiolum/hosts/euer (renamed from retiolum/hosts/EUcancER)0
-rw-r--r--shack/strom/main.py50
-rw-r--r--shack/strom/testdata24
-rw-r--r--shack/strom/testdatacomment24
-rwxr-xr-xutil/bin/magic20
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