huidige versie

This commit is contained in:
bart
2026-11-11 18:52:40 +01:00
parent f206365b9d
commit 0b17034b68
11 changed files with 28937 additions and 0 deletions
Executable
+135
View File
@@ -0,0 +1,135 @@
from queue import SimpleQueue
import time
import threading
import configparser
import atexit
import logging
import logging.handlers
import tibberclient
import victronclient
import controller
import mqtthandler
queue = SimpleQueue()
queue_handler = logging.handlers.QueueHandler(queue)
listener = logging.handlers.QueueListener(
queue,
logging.StreamHandler(),
)
logger = logging.getLogger('main')
logger.addHandler(queue_handler)
formatter = logging.Formatter('[%(asctime)s] %(message)s')
queue_handler.setFormatter(formatter)
logging.basicConfig(level=logging.INFO)
logger.info("Chargeman v0.2 starting")
config = configparser.ConfigParser()
config.read('config.ini')
if not 'tibber' in config:
raise Exception("Missing section tibber in config")
if not 'key' in config['tibber']:
raise Exception("Missing tibber key in config")
victronconn = victronclient.client()
tibber = tibberclient.client(config['tibber']['key'])
cm = controller.chargeman_controller(victronconn,tibber)
mqtt = mqtthandler.handler(cm)
if 'battery_total' in config:
try:
cm.set_battery_total_net_delivery(float(config['battery_total']['net_delivery']))
except:
logger.error("Unable to load net_delivery {}".format(config['battery_total']['net_delivery']))
exit()
try:
cm.set_battery_total_net_usage(float(config['battery_total']['net_usage']))
except:
logger.error("Unable to load net_usage {}".format(config['battery_total']['net_usage']))
exit()
if 'status' in config:
logger.info("Chargemode loaded: {}".format(int(config['status']['chargemode'])))
cm.set_chargemode(controller.Chargemode(int(config['status']['chargemode'])))
if 'chargevalue' in config['status']:
logger.info("Chargevalue loaded: {}".format(int(config['status']['chargevalue'])))
cm.set_chargevalue(int(config['status']['chargevalue']))
if 'valuekwh' in config['status']:
logger.info("valuekwh loaded: {}".format(float(config['status']['valuekwh'])))
cm.set_chargevaluekwh(float(config['status']['valuekwh']))
lasthour = -1
lock = threading.Lock()
def update():
logger.debug("Run update")
victronconn.update()
cm.update()
config['battery_total'] = {}
config['battery_total']['net_usage'] = str(cm.get_battery_total_net_usage())
config['battery_total']['net_delivery'] = str(cm.get_battery_total_net_delivery())
config['status'] = {}
config['status']['chargemode'] = str(cm.get_chargemode_int())
config['status']['chargevalue'] = str(cm.get_chargevalue())
config['status']['valuekwh'] = str(cm.get_chargevaluekwh())
with open('config.ini', 'w') as configfile:
config.write(configfile)
pass
def main():
while True:
update()
time.sleep(10)
#pub=threading.Thread(target=publishing)
sub=threading.Thread(target=mqtt.subscribing)
main=threading.Thread(target=main)
listener.start()
sub.start()
tibber.start()
main.start()
atexit.register(listener.stop)