diff --git a/PKGBUILD b/PKGBUILD index c274bf6..cb3e41e 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,7 +1,7 @@ pkgname="freiland-solardata-forwarder" pkgdesc="Copies Data from FreilandSolar to Opensensemap" -pkgver=1.0 -pkgrel=3 +pkgver=1.1 +pkgrel=2 arch=("x86_64") source=('solar-forwarder.py' 'solar-forwarder.service') depends=('python-paho-mqtt' 'python-requests' 'python') @@ -12,5 +12,5 @@ package() { install -Dm755 solar-forwarder.py "${pkgdir}/usr/bin/solar-forwarder" } -sha256sums=('f5886f7921935c8bf04ffd5cd81d8f5690342c935c2f81d87b74d343713f29db' +sha256sums=('ac6062571ecb8ecf249082ac2854358e8c431ed4cfe98e167f18ca3f7b0d1181' '481243ff3c4ff019c3d31c1b6dbd8d70308402efef5a5b22f7b21b08312bc70c') diff --git a/solar-forwarder.py b/solar-forwarder.py index a3738e8..1cb9004 100644 --- a/solar-forwarder.py +++ b/solar-forwarder.py @@ -12,17 +12,27 @@ def on_connect(client, userdata, flags, rc): # The callback for when a PUBLISH message is received from the server. def on_message(client, userdata, msg): print(msg.topic+" "+ msg.payload.decode("utf-8")) - HEADERS = { "Authorization" : "43d3886948451157f1b03bfc7db18c1ed4e4950bc77ffac3e70dff422574b204", "content-type":"application/json" } - + HEADERS = { "Authorization" : "43d3886948451157f1b03bfc7db18c1ed4e4950bc77ffac3e70dff422574b204", "content-type":"application/json" } URL = "" - if "power" in msg.topic: URL = "https://api.opensensemap.org/boxes/63f26d484fbabe0007d105d2/63f26d484fbabe0007d105d3" - if "energy" in msg.topic: URL = "https://api.opensensemap.org/boxes/63f26d484fbabe0007d105d2/63f2778a4fbabe0007d68fd9" - BODY = "" - if "power" in msg.topic: BODY = '{"value":' + msg.payload.decode("utf-8")+"}" - if "energy" in msg.topic: BODY = '{"value":' + str(float(msg.payload.decode("utf-8"))/60.0/1000.0) + "}" - print(BODY) - result = requests.post(url = URL, headers = HEADERS, data = BODY) + #power + if "power" in msg.topic: + URL = "https://api.opensensemap.org/boxes/63f26d484fbabe0007d105d2/63f26d484fbabe0007d105d3" + BODY = '{"value":' + msg.payload.decode("utf-8")+"}" + result = requests.post(url = URL, headers = HEADERS, data = BODY) + #energy & savings + if "energy" in msg.topic: + URL = "https://api.opensensemap.org/boxes/63f26d484fbabe0007d105d2/data" + #calculate energy from Watt-minutes + energy = float(msg.payload.decode("utf-8"))/60.0/1000.0 + BODY = '[' + BODY = BODY + '{"sensor":"63f2778a4fbabe0007d68fd9", "value":' + ("{:.1f}".format(energy)) + "}," + #calculate savings + savings = energy * 0.45 + BODY = BODY + '{"sensor":"63f3482c4fbabe000746658e", "value":' + ("{:.2f}".format(savings)) + "}" + BODY = BODY + ']' + print(BODY) + result = requests.post(url = URL, headers = HEADERS, data = BODY) print(result.text) client = mqtt.Client()