huidige versie
This commit is contained in:
Executable
+135
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user