68 lines
2.5 KiB
Python
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
|