-
Notifications
You must be signed in to change notification settings - Fork 0
/
P1.py
123 lines (110 loc) · 4.28 KB
/
P1.py
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#
# DSMR P1 uitlezer
# (c) 11-2017 2016 - GJ - gratis te kopieren en te plakken
versie = "1.0"
import sys
import serial
from influxdb import InfluxDBClient
################
#Error display #
################
def show_error():
ft = sys.exc_info()[0]
fv = sys.exc_info()[1]
print("Fout type: %s" % ft )
print("Fout waarde: %s" % fv )
return
################################################################################################################################################
#Main program
################################################################################################################################################
print ("DSMR 2.2 P1 uitlezer", versie)
print ("Control-C om te stoppen")
# client = InfluxDBClient(host='192.168.1.2', port=8086)
# print (client.get_list_database())
# client.switch_database('energie')
#Set COM port config
ser = serial.Serial()
ser.baudrate = 9600
ser.bytesize=serial.SEVENBITS
ser.parity=serial.PARITY_EQUAL
ser.stopbits=serial.STOPBITS_ONE
ser.xonxoff=0
ser.rtscts=0
ser.timeout=20
ser.port="/dev/ttyUSB0"
#Open COM port
try:
ser.open()
except:
sys.exit ("Fout bij het openen van %s. Programma afgebroken." % ser.name)
#Initialize
# stack is mijn list met de 26 regeltjes.
p1_teller=0
stack=[]
# interval waarin data weggeschreven wordt -> 1 cyclus vanuit meter is ~1 sec --> 60 *1 = 1 minuut
# huidig verbruik elke 10 cycli, totaalwaardes elke 60 cycli.
cycle = 0
while 1:
p1_raw = ser.readline()
p1_str=str(p1_raw)
# print (p1_str)
if "ISK5" in p1_str:
# print ("reset teller naar 0")
p1_teller = 0
if cycle ==10:
# json_body_10s = [
# {
# "measurement": "P1_PB22",
# "tags": {
# "device": "P1-meterkast",
# },
# "fields": {
# "verbruik_nu": verbruik_in_watt,
# "teruglevering_nu": terug_in_watt,
# "laag_tarief_verbruik_totaal": laag_tarief_verbruik_totaal,
# "hoog_tarief_verbruik_totaal": hoog_tarief_verbruik_totaal,
# "laag_tarief_opbrengst_totaal": laag_tarief_opbrengst_totaal,
# "hoog_tarief_opbrengst_totaal": hoog_tarief_opbrengst_totaal,
# "gas_totaal": gas_totaal
# }
# }
# ]
# client.write_points(json_body_10s)
cycle = 1
else:
cycle += 1
print ("Cyclus: ",cycle)
# print (p1_teller)
else:
p1_teller = p1_teller +1
# if "1-0:1.7.0" in p1_str:
# print(p1_str[12:18])
# verbruik_in_watt = float(p1_str[12:18])*1000
# print ("Verbruik Nu: ", verbruik_in_watt, "W")
# search_for item and print result"
if "1-0:1.8.1" in p1_str:
laag_tarief_verbruik_totaal = float(p1_str[13:22])
print ("Laag Tarief Verbruik Totaal: ", laag_tarief_verbruik_totaal, " kWh")
elif "1.8.2" in p1_str:
hoog_tarief_verbruik_totaal = float(p1_str[13:22])
print ("Hoog Tarief Verbruik Totaal: ", hoog_tarief_verbruik_totaal, " kWh")
elif "1-0:2.8.1" in p1_str:
laag_tarief_opbrengst_totaal = float(p1_str[13:22])
print ("Laag Tarief Opbrengst Totaal: ", laag_tarief_opbrengst_totaal, " kWh")
elif "1-0:2.8.2" in p1_str:
hoog_tarief_opbrengst_totaal = float(p1_str[13:22])
print ("Hoog Tarief Opbrengst Totaal: ", hoog_tarief_opbrengst_totaal, " kWh")
elif "1-0:1.7.0" in p1_str:
verbruik_in_watt = float(p1_str[12:18])*1000
print ("Verbruik Nu: ", verbruik_in_watt, "W")
elif "1-0:2.7.0" in p1_str:
terug_in_watt = float(p1_str[12:18])*1000
print ("Teruglevering Nu: ", terug_in_watt, " W")
elif "0-1:24.2.1" in p1_str:
gas_totaal = float(p1_str[28:36])
print ("Gas Totaal: ", gas_totaal, " m3 \n")
#Close port and show status
try:
ser.close()
except:
sys.exit ("Oops %s. Programma afgebroken." % ser.name )