B@rt_d@_M@n schreef op dinsdag 26 februari 2019 @ 23:36:
[...]
Ik gebruik een python script van Nicky Bulthuis:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
| # encoding: utf-8
'''
mindergas -- Upload meterstand van Domoticz naar MinderGas.nl
Instructies:
An P1 Smart Meter krijgt elk uur een update van de Gas meter. Voer
dit script daarom in het eerste uur na middennacht uit. Bijvoorbeeld om
00:14. Hierdoor wordt de laatste meterstand van de vorige dag correct
geregistreerd onder de datum van de vorige dag.
@author: Nicky Bulthuis
@copyright: 2014 Nicky Bulthuis. All rights reserved.
@license: BSD
@deffield updated: Updated
'''
import sys, json, urllib2
from datetime import datetime, timedelta
from argparse import ArgumentParser
def main(argv=None):
parser = ArgumentParser(description='Upload meterstand van Domoticz naar MinderGas.nl')
parser.add_argument("-a", "--apikey", dest="apikey", help="MinderGas.nl API Key", required=True)
parser.add_argument("-u", "--url", dest="url", help="URL naar Domoticz, eg: http://localhost:8080", default='http://localhost:8080')
parser.add_argument("-d", "--device-id", dest="device", help="Device id voor de P1 Gas Smart Meter", type=int, required=True)
args = parser.parse_args()
device_data = json.load(urllib2.urlopen("%s/json.htm?type=devices&rid=%s" % (args.url, args.device), timeout=5))
meterstand = device_data['result'][0]['Counter']
code = upload_meterstand(meterstand, args.apikey)
if code == 201:
return 0
else:
return code
def upload_meterstand(meterstand, apikey):
"""
Upload meterstand naar mindergas.nl
"""
data = {
'date': (datetime.now().date() - timedelta(days=1)).strftime("%Y-%m-%d"),
'reading': meterstand
}
req = urllib2.Request('https://www.mindergas.nl/api/gas_meter_readings')
req.add_header('Content-Type', 'application/json')
req.add_header('AUTH-TOKEN', apikey)
return urllib2.urlopen(req, json.dumps(data)).getcode()
if __name__ == "__main__":
sys.exit(main()) |
Dat script roep ik elke dag na middernacht op via een regel in crontab:
15 1 * * * python /home/pi/domoticz/scripts/python/mindergas.py -a JOUWAPISLEUTEL -d DOMOTICZIDX
Het uploaden lukt nog wel..
Maar die Dummy gasmeter is nog niet werkend.
Ik heb een dummy, die gevoed wordt door een script.
Alleen start de teller elke dag opnieuw..
Met DZ vets heb ik dit:
return {
on = { timer = { "every 1 minutes"}}, --at 21:52 every minute
execute = function(dz)
local WarmtepompKWH = dz.devices('Z: WP Tot').counterToday
dz.log(WarmtepompKWH)
local WP_gas = dz.devices('D.M.: WP naar Gas')
local usage = WarmtepompKWH * 500
dz.log(usage)
WP_gas.updateGas(usage)
dz.openURL('http://192.168.5.70:8080/json.htm?type=command¶m=udevice&idx=12268&nvalue=0&svalue='..usage)
end
}
Lijkt te werken.
Maar toch elke dag start de dummy gasmeter op 0, terwijl hij eigenlijk door moet tellen. [ totaalteller ]
ps:
Wat ik hier doe is een Kwh meter die op de Warmtepomp zit, delen zodat het stroomverbruik vergelijkbaar is met mijn gas.
Hierdoor kan ik stroom en oud gasverbruik vergelijk...
En als ik dit automatisch upload.
Kan ik vergelijken over jaren.
zonneboiler, pelletkachel, 36 panels, Atlantic Wpb, pana 5 Kw H, Heishamon, Domoticz, Grafana, Solarmeters, PVO: https://pvoutput.org/list.jsp?id=15321&sid=19520