tbot-with-extras/launcher.py

86 lines
2.4 KiB
Python

# functionality
from bot import main
from clock import cin, cout
from dashboard import dout
import persistence.main
# various
import logging
from threading import Thread
import os
if os.name == "nt":
logging.basicConfig(
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO
)
else:
logging.basicConfig(
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.INFO,
filename='persistence/complete.log',
)
class Launcher:
"""Launches all other submodules"""
def __init__(self):
""""""
self.persistence = persistence.main.PersistentDict("persistence/prst.json")
self.logger = logging.getLogger(__name__)
self.logger.info("Launcher initialized")
if len(self.persistence) == 0:
self.init_persistence()
self.persistence["global"]["reboots"] += 1
self.clock_module = cout.ClockFace(prst=self.persistence)
self.bot_module = main.ChatBot(name="Norbit", version="3.0a", prst=self.persistence)
self.dashboard_module = dout.DashBoard(host_ip="0.0.0.0", prst=self.persistence)
self.sensors = cin.SensorReadout(prst=self.persistence)
self.modules = {
"sensors" : self.sensors,
"bot" : self.bot_module,
"clock" : self.clock_module,
"dashboard" : self.dashboard_module,
}
for module in self.modules.values():
self.logger.info("Starting module "+ module.__class__.__name__)
module.modules = self.modules
module.start()
def init_persistence(self):
self.logger.warning("No persistence found, created a new one")
self.persistence["bot"] = {
"send_activity" : {"hour":[], "count":[]},
"receive_activity" : {"hour":[], "count":[]},
"execute_activity" : {"hour":[], "count":[]},
"log": [],
"chat_members": {},
"aliases" : {}
}
self.persistence["clock"] = {
"sensors" : {
"time" : [],
"temperature":[],
"humidity":[],
"brightness" : [],
}
}
self.persistence["dashboard"] = {}
self.persistence["global"] = {
"lists" : {},
"reboots": 0
}
########################################################################
## Aand liftoff!
Launcher()