Files
ha-addon-energa-meter-gh-fork/srcdev/run.py
TC c3678fd6d6 renamed: src.dev/CHANGELOG.md -> srcdev/CHANGELOG.md
renamed:    src.dev/README.md -> srcdev/README.md
	renamed:    src.dev/api.py -> srcdev/api.py
	renamed:    src.dev/config.yaml -> srcdev/config.yaml
	renamed:    src.dev/cron.py -> srcdev/cron.py
	renamed:    src.dev/icon.png -> srcdev/icon.png
	renamed:    src.dev/img/addon.png -> srcdev/img/addon.png
	renamed:    src.dev/img/grafana_01.png -> srcdev/img/grafana_01.png
	renamed:    src.dev/img/grafana_02.png -> srcdev/img/grafana_02.png
	renamed:    src.dev/img/grafana_03.png -> srcdev/img/grafana_03.png
	renamed:    src.dev/img/grafana_04.png -> srcdev/img/grafana_04.png
	renamed:    src.dev/img/grafana_05.png -> srcdev/img/grafana_05.png
	renamed:    src.dev/img/grafana_06.png -> srcdev/img/grafana_06.png
	renamed:    src.dev/img/grafana_07.png -> srcdev/img/grafana_07.png
	renamed:    src.dev/log_config.py -> srcdev/log_config.py
	renamed:    src.dev/logo.png -> srcdev/logo.png
	renamed:    src.dev/moj_licznik.py -> srcdev/moj_licznik.py
	renamed:    src.dev/requirements.txt -> srcdev/requirements.txt
	renamed:    src.dev/run.py -> srcdev/run.py
	renamed:    src.dev/run.sh -> srcdev/run.sh
	renamed:    src.dev/rund.sh -> srcdev/rund.sh
2023-11-02 22:34:27 +01:00

97 lines
3.2 KiB
Python

import threading
import time, os, datetime
from api import app
from waitress import serve
import logging, configparser
from pathlib import Path
from moj_licznik import MojLicznik
from log_config import configure_logging
startup_task_completed = threading.Event()
def http_server():
serve(app, host="0.0.0.0", port=8000, threads=8)
# Jednorazowe zadanie przy starcie
def startup_task():
mojLicznik = MojLicznik()
logger.info("Rozpoczynam logowanie do Mój licznik.")
logger.debug(f"Logowanie użytkownika {username}.")
mojLicznik.login(username, password)
if mojLicznik.loginStatus:
logger.info(f"Aktualizacja liczników...")
mojLicznik.update_countners()
logger.info(f"Wyszukiwanie najstarszych danych...")
mojLicznik.update_first_date()
logger.info(f"Pobieranie danych...")
mojLicznik.download_charts(full_mode=True)
mojLicznik.update_last_days()
#mojLicznik.set_daily_zones()
logger.debug(f"Wylogowanie użytkownika.")
mojLicznik.logout()
startup_task_completed.set()
# Moduł 3: Cykliczne zadanie
def periodic_task():
startup_task_completed.wait()
while True:
try:
waiting_seconds = 600
logger.info(f"Oczekianie...")
logger.debug(f"Czekam {waiting_seconds} sekund.")
time.sleep(waiting_seconds)
mojLicznik = MojLicznik()
logger.info(f"Update...{datetime.datetime.now()}")
logger.info(f"Logowanie...")
mojLicznik.login(username, password)
if mojLicznik.loginStatus:
logger.info(f"Aktualizacja danych bieżących...")
mojLicznik.update_countners()
mojLicznik.update_last_days()
mojLicznik.download_charts(full_mode=False)
# mojLicznik.set_daily_zones()
mojLicznik.logout()
except:
logger.error("PT001: Błąd aktualizacji danych...")
# Uruchomienie wątków dla każdego modułu
if __name__ == "__main__":
plik = Path('config.ini')
username = None
password = None
log_level = None
if plik.is_file():
config = configparser.ConfigParser()
config.read("config.ini")
username = config.get("Credentials", "username")
password = config.get("Credentials", "password")
log_level = config.get("Logger", "log_level")
else:
username = os.getenv("USERNAME")
password = os.getenv("PASSWORD")
log_level = os.getenv("LOGLEVEL")
logger_name = "energaMeter"
configure_logging(log_level, logger_name)
logger = logging.getLogger(logger_name)
peewee_logger = logging.getLogger('peewee')
peewee_logger.setLevel(logging.ERROR) # Ustaw poziom na ERROR lub inny poziom, który jest wyższy niż ustawiony w configure_logging
logger.info("Inicjalizacja OK.")
http_server_thread = threading.Thread(target=http_server)
startup_task_thread = threading.Thread(target=startup_task)
periodic_task_thread = threading.Thread(target=periodic_task)
http_server_thread.start()
startup_task_thread.start()
periodic_task_thread.start()
http_server_thread.join()
startup_task_thread.join()
periodic_task_thread.join()