diff options
Diffstat (limited to 'datasources/de_wettermichel.py')
-rwxr-xr-x | datasources/de_wettermichel.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/datasources/de_wettermichel.py b/datasources/de_wettermichel.py new file mode 100755 index 0000000..cf6a507 --- /dev/null +++ b/datasources/de_wettermichel.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python +# -*- coding:utf8 -*- +import httplib +from StringIO import StringIO +from lxml import objectify + +def read(): + conn = httplib.HTTPConnection("www.wettermichel.de") + conn.request("GET", "/weatherdata/params3.xml") + response = conn.getresponse() + assert response.status == 200, "Site status code == 200" + + xml = objectify.parse( response ) + conn.close() + return xml + +def insert(name, value, valueType): + conn = httplib.HTTPConnection("127.0.0.1:8000") + conn.request("PUT", + "/sensor/{n}".format(n=name), + "value={v}&type={t}".format(v=value, t=valueType)) + response = conn.getresponse() + assert response.status == 200, "put status code == 200" + conn.close() + + + + +for keyval in read().xpath("/data/*"): + if keyval.tag == "entry": + continue + + if isinstance(keyval, objectify.IntElement): + insert("de.wettermichel.{n}".format(n=keyval.tag), + keyval.text, "int") + elif isinstance(keyval, objectify.FloatElement): + insert("de.wettermichel.{n}".format(n=keyval.tag), + keyval.text, "float") + elif isinstance(keyval, objectify.StringElement): + # ignore strings + pass + else: + print "ignore other: %s %s" % (keyval.tag, keyval.__class__) + + +# vim: autoindent tabstop=4 shiftwidth=4 expandtab softtabstop=4 filetype=python |