Output sieht so aus
Code: Alles auswählen
09/18/2022 11:30 Aus/Inn 14.00/23.02 Ku 1.19 Vor 56.50 H1 i/s 50.50/49.90 H2 i/s 27.10/27.10 Pu i/s 50.50/49.90 ww i/s 48.30/50.00 sg 1 Sw1 1 heiz/ww 1/0 abt/not 0/0 p1/p2 1/1 com 1 som 0 Zl 3582 Zw 9328 Jaz 2.60
09/18/2022 11:00 Aus/Inn 13.30/23.02 Ku 2.98 Vor 47.40 H1 i/s 43.30/49.60 H2 i/s 27.70/27.60 Pu i/s 43.30/49.60 ww i/s 48.40/50.00 sg 1 Sw1 1 heiz/ww 1/0 abt/not 0/0 p1/p2 1/1 com 1 som 0 Zl 3582 Zw 9328 Jaz 2.60
09/18/2022 10:30 Aus/Inn 12.40/23.02 Ku 2.72 Vor 40.60 H1 i/s 37.00/49.60 H2 i/s 28.20/28.20 Pu i/s 37.00/49.60 ww i/s 48.40/50.00 sg 1 Sw1 1 heiz/ww 1/0 abt/not 0/0 p1/p2 1/1 com 1 som 0 Zl 3582 Zw 9328 Jaz 2.60
09/18/2022 10:00 Aus/Inn 11.20/23.02 Ku 2.44 Vor 29.30 H1 i/s 28.70/49.60 H2 i/s 29.10/29.00 Pu i/s 28.70/49.60 ww i/s 48.40/50.00 sg 1 Sw1 1 heiz/ww 0/0 abt/not 0/0 p1/p2 0/1 com 0 som 0 Zl 3582 Zw 9328 Jaz 2.60
09/18/2022 09:30 Aus/Inn 10.80/23.02 Ku 0.70 Vor 31.60 H1 i/s 29.90/29.80 H2 i/s 29.10/29.20 Pu i/s 29.90/29.80 ww i/s 48.60/50.00 sg 1 Sw1 0 heiz/ww 0/0 abt/not 0/0 p1/p2 0/1 com 0 som 0 Zl 3582 Zw 9328 Jaz 2.60
09/18/2022 09:00 Aus/Inn 10.50/23.02 Ku 0.70 Vor 34.40 H1 i/s 35.30/30.00 H2 i/s 29.10/29.40 Pu i/s 35.30/30.00 ww i/s 48.70/50.00 sg 1 Sw1 0 heiz/ww 0/0 abt/not 0/0 p1/p2 0/1 com 0 som 0 Zl 3582 Zw 9328 Jaz 2.60
09/18/2022 08:30 Aus/Inn 10.00/23.02 Ku 0.70 Vor 34.40 H1 i/s 31.10/30.30 H2 i/s 28.60/29.70 Pu i/s 30.70/30.30 ww i/s 48.80/50.00 sg 1 Sw1 0 heiz/ww 1/0 abt/not 0/0 p1/p2 1/1 com 1 som 0 Zl 3582 Zw 9328 Jaz 2.60
Code: Alles auswählen
#!/usr/bin/python
import sys
import os
import time
import getopt
import socket
import ConfigParser
import struct
import binascii
from pymodbus.client.sync import ModbusTcpClient
debug = str(sys.argv[1])
named_tuple = time.localtime() # get struct_time
time_string = time.strftime("%m/%d/%Y %H:%M", named_tuple)
file_string = time.strftime("/var/www/html/prod/dataStiebel%Y", named_tuple)
ipaddress = '192.168.1.244'
client = ModbusTcpClient(ipaddress, port=502)
#Waermeenergie
resp= client.read_input_registers(3522,6,unit=1)
if debug == "1": print(time_string, ' start T3522', resp.registers)
# vd heizen summe in kwh 3524 wp 1
value1 = resp.registers[1]
all = format(value1, '04x')
hdwall1= int(struct.unpack('>h', all.decode('hex'))[0])
# vd heizen summe in mwh 3525 wp 1
value1 = resp.registers[2]
all = format(value1, '04x')
hdwallm1= int(struct.unpack('>h', all.decode('hex'))[0])
# vd ww summe in kwh 3527 wp 1
value1 = resp.registers[4]
all = format(value1, '04x')
wwwall1= int(struct.unpack('>h', all.decode('hex'))[0])
# vd heizen summe in mwh 3528 wp 1
value1 = resp.registers[5]
all = format(value1, '04x')
wwwallm1 = int(struct.unpack('>h', all.decode('hex'))[0])
totalwwh = (hdwall1 + (hdwallm1 * 1000) + wwwall1 + (wwwallm1 * 1000)) * 1000
#
# leistungsaufnahme
resp= client.read_input_registers(3532,6,unit=1)
if debug == "1": print(time_string, ' start T3532', resp.registers)
# vd heizen tag in mwh 3533 wp 1
value1 = resp.registers[0]
all = format(value1, '04x')
hdtag1 = int(struct.unpack('>h', all.decode('hex'))[0])
# vd heizen summe in kwh 3534 wp 1
value1 = resp.registers[1]
all = format(value1, '04x')
hdall1= int(struct.unpack('>h', all.decode('hex'))[0])
# vd heizen summe in mwh 3535 wp 1
value1 = resp.registers[2]
all = format(value1, '04x')
hdallm1= int(struct.unpack('>h', all.decode('hex'))[0])
# vd ww tag in mwh 3536 wp 1
value1 = resp.registers[3]
all = format(value1, '04x')
wwtag1 = int(struct.unpack('>h', all.decode('hex'))[0])
# vd ww summe in kwh 3537 wp 1
value1 = resp.registers[4]
all = format(value1, '04x')
wwall1= int(struct.unpack('>h', all.decode('hex'))[0])
# vd heizen summe in mwh 3538 wp 1
value1 = resp.registers[5]
all = format(value1, '04x')
wwallm1 = int(struct.unpack('>h', all.decode('hex'))[0])
totalwh = (hdall1 + (hdallm1 * 1000) + wwall1 + (wwallm1 * 1000)) * 1000
# jahresanfanhzaehler 2021
totalkwhst = 5090
totalkwwhst = 14275
jaz = 2.80
#
# jahresanfanhzaehler 2022
totalkwhst = totalkwhst + 7097
totalkwwhst = totalkwwhst + 19104
jaz = 2.69
#
# jahresanfanhzaehler 2023
totalkwhst = totalkwhst + 0
totalkwwhst = totalkwwhst + 0
jaz = 0.0
#
totalkwh = (totalwh / 1000) - totalkwhst
totalkwwh = (totalwwh / 1000) - totalkwwhst
if totalkwh > 0:
jaz = float(totalkwwh) / float(totalkwh)
#
if debug == "1":
print(time_string,' vd tag %.2f vd all k / m %.2f/%.2f ww tag %.2f ww all k/m %.2f/%.2f' % (hdtag1,hdall1,hdallm1,wwtag1,wwall1,wwallm1))
print(time_string,'total in watt',totalwh)
count1=1
if count1 > 0:
count1=0
#manual ab 507
resp= client.read_input_registers(506,18,unit=1)
#print(time_string, ' start T506', resp.registers)
# temp aussen 597
value1 = resp.registers[0]
all = format(value1, '04x')
aussen = float(struct.unpack('>h', all.decode('hex'))[0]) / 10
#print (aussen)
if aussen >= 0x8000: aussen -= 0x10000
# temp ist hk1 508
value1 = resp.registers[1]
all = format(value1, '04x')
hk1ist= float(struct.unpack('>h', all.decode('hex'))[0]) / 10
# temp soll hk1 509/510
value1 = resp.registers[3]
all = format(value1, '04x')
hk1soll= float(struct.unpack('>h', all.decode('hex'))[0]) / 10
# temp ist hk2 511
value1 = resp.registers[4]
all = format(value1, '04x')
hk2ist = float(struct.unpack('>h', all.decode('hex'))[0]) / 10
# temp soll hk2 512
value1 = resp.registers[5]
all = format(value1, '04x')
hk2soll= float(struct.unpack('>h', all.decode('hex'))[0]) / 10
# temp ist vorlauf 515
value1 = resp.registers[8]
all = format(value1, '04x')
vorlauf = float(struct.unpack('>h', all.decode('hex'))[0]) / 10
# temp ist puffer 518
value1 = resp.registers[11]
all = format(value1, '04x')
puffist = float(struct.unpack('>h', all.decode('hex'))[0]) / 10
# temp soll puffer 518
value1 = resp.registers[12]
all = format(value1, '04x')
puffsoll = float(struct.unpack('>h', all.decode('hex'))[0]) / 10
# temp ist wasser 522
value1 = resp.registers[15]
all = format(value1, '04x')
wasist = float(struct.unpack('>h', all.decode('hex'))[0]) / 10
# temp soll wasser 523
value1 = resp.registers[16]
all = format(value1, '04x')
wassoll = float(struct.unpack('>h', all.decode('hex'))[0]) / 10
#
sg= client.read_holding_registers(4000,1,unit=1)
value1 = sg.registers[0]
all = format(value1, '04x')
sgready = int(struct.unpack('>h', all.decode('hex'))[0])
sg1= client.read_holding_registers(4001,1,unit=1)
value1 = sg1.registers[0]
all = format(value1, '04x')
sgreadys1 = int(struct.unpack('>h', all.decode('hex'))[0])
st= client.read_input_registers(2500,1,unit=1)
value1 = st.registers[0]
all = format(value1, '04x')
status= int(struct.unpack('>h', all.decode('hex'))[0])
#wp heizen, wp wasser
if (status & 16):
swheiz=1
else:
swheiz=0
#wp wasser
if (status & 32):
swheizww=1
else:
swheizww=0
#wp notheiz
if (status & 8):
swnot=1
else:
swnot=0
#wp pump1
if (status & 1):
swp1=1
else:
swp1=0
#wp pump2
if (status & 2):
swp2=1
else:
swp2=0
#wp comp
if (status & 64):
swcomp=1
else:
swcomp=0
#wp summer
if (status & 128):
swsomm=1
else:
swsomm=0
# abtauen setztwn heizen auf 0
if (status & 512):
swabt = 1
swheiz=0
swheizww=0
else:
swabt = 0
realwatth=0
swrohr=0
luft=0
count5=0
innen = 0.0
kurve=0.0
if os.path.isfile('/var/www/html/openWB/ramdisk/stiebelinnen9'):
f = open('/var/www/html/openWB/ramdisk/stiebelinnen9', 'r')
innen=float(f.read())
f.close()
#manual ab 1503
resp= client.read_holding_registers(1503,1,unit=1)
value1 = resp.registers[0]
all = format(value1, '04x')
kurve = float(struct.unpack('>h', all.decode('hex'))[0]) / 100
f = open(/var/www/html/prod/data/Stiebel.log', 'a')
print >>f,('%s Aus/Inn %.2f/%.2f Ku %.2f Vor %.2f H1 i/s %.2f/%.2f H2 i/s %.2f/%.2f Pu i/s %.2f/%.2f ww i/s %.2f/%.2f sg %1d Sw1 %1d heiz/ww %1d/%1d abt/not %1d/%1d p1/p2 %1d/%1d com %1d som %1d Zl %6d Zw %6d Jaz %.2f' % (time_string,aussen,innen,kurve,vorlauf,hk1ist,hk1soll,hk2ist,hk2soll,puffist,puffsoll,wasist,wassoll,sgready,sgreadys1,swheiz,swheizww,swabt,swnot,swp1,swp2,swcomp,swsomm, totalkwh ,totalkwwh,jaz))
f.close()
header1 = 'date,Aussentemp,Innentemp,Kurve,Vorlauftemp,Hk1ist,Hk1soll,Hk2ist,Hk2soll,Pufferist,Puffersoll,Wasserist,Wassersoll,sgready,Switch1,heizlauft,Wasserlauft,Abtaulauft,Notheizlauft,Pumpe1,Pumpe2,Compressor,Compresserzaehl,Sommer,Rohrheizung,Luefterleistung,aktuelleLeistung,TotalLeistung,Totalwaerme,Jaz'
if os.path.isfile(file_string):
f = open( file_string , 'a')
else:
f = open( file_string , 'w')
print >> f,(header1)
print >>f,('%s,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%1d,%1d,%1d,%1d,%1d,%1d,%1d,%1d,%1d,%3d,%1d,%1d,%3d,%6d,%6d,%6d,%.2f' % (time_string,aussen,innen,kurve,vorlauf,hk1ist,hk1soll,hk2ist,hk2soll,puffist,puffsoll,wasist,wassoll,sgready,sgreadys1,swheiz,swheizww,swabt,swnot,swp1,swp2,swcomp,count5,swsomm,swrohr,luft,realwatth, totalkwh ,totalkwwh,jaz))
f.close()
Gruss Oliver