Files
elwa-dc/ext/stab.py

68 lines
2.5 KiB
Python

# import serial
# import io
# import time
# import os
import time
from stab_reader import StabReader
from stab_display import StabDisplay
I2C_ADDRESS_O = 0x3C # 011110+SA0+RW - 0x3C or 0x3D
I2C_ADDRESS_U = 0x3D # 011110+SA0+RW - 0x3C or 0x3D
if __name__ == '__main__':
# create objects
sr1 = StabReader(port='/dev/ttyUSB0')
sr2 = StabReader(port='/dev/ttyUSB1')
sao = StabDisplay(i2c_address=I2C_ADDRESS_O)
sau = StabDisplay(i2c_address=I2C_ADDRESS_U)
# wait until at least one stab is online
while True:
sr1.read_state()
sr2.read_state()
if sr1.is_online() or sr2.is_online():
break
# check which stab device is the upper and which the lower
# SN oben: 1234567890123456
# SN unten: 2345678901234567
print('sr1 SN: ' + sr1.get_value('Seriennummer'))
print('sr2 SN: ' + sr2.get_value('Seriennummer'))
if sr1.get_value('Seriennummer') == '1234567890123456' or sr2.get_value('Seriennummer') == '2345678901234567':
sro = sr1
sru = sr2
else:
sro = sr2
sru = sr1
# main loop
count = 4
while True:
if count >= 4:
# read devices every 2 seconds
sro.read_state()
sru.read_state()
count = 0
# update displays every 500 ms
sao.set_values(v=sro.get_value('Solarspannung'), c=sro.get_value('Solarstrom'),
w=sro.get_value('Solarleistung'), d=sro.get_value('SolarenergieHeute'),
s=sro.get_value('SolarenergieGesammt'), wt=sro.get_value('Wassertemp'),
gt=sro.get_value('GeraeteTemp'))
# sao.set_values(v=sro.get_dummy('Solarspannung'), c=sro.get_dummy('Solarstrom'),
# w=sro.get_dummy('Solarleistung'), d=sro.get_dummy('SolarenergieHeute'),
# s=sro.get_dummy('SolarenergieGesammt'), wt=sro.get_dummy('Wassertemp'),
# gt=sro.get_dummy('GeraeteTemp'))
# sao.set_values(v='260.8', c='10.3276', w='2000.00', d='10000', s='999999', wt='33', gt='66')
sao.update()
sau.set_values(v=sru.get_value('Solarspannung'), c=sro.get_value('Solarstrom'),
w=sru.get_value('Solarleistung'), d=sru.get_value('SolarenergieHeute'),
s=sru.get_value('SolarenergieGesammt'), wt=sru.get_value('Wassertemp'),
gt=sru.get_value('GeraeteTemp'))
sau.update()
time.sleep(0.5) # wait 500 ms
count = count + 1