import time from datetime import datetime from data_base_influx import DataBaseInflux from heat_pump import HeatPump from pv_inverter import PvInverter from solaredge_meter import SolaredgeMeter from shelly_pro_3m import ShellyPro3m from energysystem import EnergySystem from sg_ready_controller import SgReadyController # For dev-System run in terminal: ssh -N -L 127.0.0.1:8111:10.0.0.10:502 pi@192.168.1.146 # For productive-System change IP-adress in heatpump to '10.0.0.10' and port to 502 interval_seconds = 10 es = EnergySystem() db = DataBaseInflux( url="http://192.168.1.146:8086", token="Cw_naEZyvJ3isiAh1P4Eq3TsjcHmzzDFS7SlbKDsS6ZWL04fMEYixWqtNxGThDdG27S9aW5g7FP9eiq5z1rsGA==", org="allmende", bucket="allmende_db" ) hp = HeatPump(device_name='hp_master', ip_address='10.0.0.10', port=502) shelly = ShellyPro3m(device_name='wohnung_2_6', ip_address='192.168.1.121') wr = PvInverter(device_name='solaredge_master', ip_address='192.168.1.112') meter = SolaredgeMeter(device_name='solaredge_meter', ip_address='192.168.1.112') es.add_components(hp, shelly, wr, meter) controller = SgReadyController(es) while True: now = datetime.now() if now.second % interval_seconds == 0 and now.microsecond < 100_000: state = es.get_state_and_store_to_database(db) mode = controller.perform_action(heat_pump_name='hp_master', meter_name='solaredge_meter', state=state) db.store_data('sg_ready', {'mode': mode}) time.sleep(0.1)