smart_brain/smart_brain.py

55 lines
1.6 KiB
Python
Raw Normal View History

import config
import function
2023-02-09 14:33:25 +01:00
import json
import logging
import mqtt
2023-02-09 14:33:25 +01:00
import os
import report
2023-02-09 14:33:25 +01:00
import subprocess
import time
logger = logging.getLogger(config.APP_NAME)
2023-01-28 14:32:52 +01:00
2023-02-09 14:33:25 +01:00
VERS_MAJOR = 1
2023-02-15 07:11:32 +01:00
VERS_MINOR = 2
2023-02-22 07:34:06 +01:00
VERS_PATCH = 4
2023-02-09 14:33:25 +01:00
INFO_TOPIC = "__info__"
INFO_DATA = {
"app_name": os.path.splitext(os.path.basename(__file__))[0],
"version": {
"readable": "%d.%d.%d" % (VERS_MAJOR, VERS_MINOR, VERS_PATCH),
"major": VERS_MAJOR,
"minor": VERS_MINOR,
"patch": VERS_PATCH
},
"git": {
"url": subprocess.check_output(["git", "config", "--get", "remote.origin.url"])[:-1].decode("utf-8"),
2023-02-09 15:55:21 +01:00
"ref": subprocess.check_output(["git", "log", "-1", '--format="%H"'])[1:-2].decode("utf-8")
2023-02-09 14:33:25 +01:00
}
}
def __info_publisher__(client, userdata, message):
data = json.loads(message.payload)
if data != INFO_DATA:
client.publish(INFO_TOPIC, json.dumps(INFO_DATA))
if __name__ == "__main__":
if config.DEBUG:
report.appLoggingConfigure(None, 'stdout', ((config.APP_NAME, logging.DEBUG), ),
target_level=logging.WARNING, fmt=report.SHORT_FMT, host='localhost', port=19996)
else:
report.stdoutLoggingConfigure(((config.APP_NAME, logging.WARNING), ), report.SHORT_FMT)
#
mc = mqtt.mqtt_client(host=config.MQTT_SERVER, port=config.MQTT_PORT, username=config.MQTT_USER,
password=config.MQTT_PASSWORD, name=config.APP_NAME)
2023-02-09 14:33:25 +01:00
mc.add_callback(INFO_TOPIC, __info_publisher__)
2022-12-19 16:11:35 +01:00
func = function.all_functions(mc)
while (True):
time.sleep(1)