Replace prints with logger
This commit is contained in:
parent
9747010caf
commit
4c6689007d
@ -38,7 +38,7 @@ FROM python:3.12-alpine3.20
|
||||
WORKDIR /src
|
||||
COPY ./python/src/ .
|
||||
COPY ./python/docker_entrypoint.sh /
|
||||
RUN mkdir data
|
||||
RUN mkdir -p data/log
|
||||
VOLUME /src/data
|
||||
|
||||
RUN apk add --no-cache sudo bluez tzdata
|
||||
|
||||
@ -3,6 +3,8 @@ from bluepy.btle import Scanner
|
||||
|
||||
from data_class import Data
|
||||
from devices import get_device
|
||||
from logger import get_logger
|
||||
logger = get_logger(__name__)
|
||||
|
||||
# This is the list, where the responses will be stored from the `handleDiscovery`
|
||||
devices = []
|
||||
@ -38,9 +40,9 @@ class ScanDelegate(DefaultDelegate):
|
||||
|
||||
device_from_config = get_device(dev)
|
||||
|
||||
try:print(f"Device: {dev.addr.upper()} ({dev.addrType}), RSSI: {dev.rssi}dB, Room: {device_from_config.room}")
|
||||
except:print(f"Device: {dev.addr.upper()} ({dev.addrType}), RSSI: {dev.rssi}dB, Room: ?")
|
||||
print(f'\tTemp: {data_obj.temperature}°C, Humid: {data_obj.humidity}%, Batt: {data_obj.battery_percent}%\n')
|
||||
try:logger.info(f"Device: {dev.addr.upper()} ({dev.addrType}), RSSI: {dev.rssi}dB, Room: {device_from_config.room}")
|
||||
except:logger.info(f"Device: {dev.addr.upper()} ({dev.addrType}), RSSI: {dev.rssi}dB, Room: ?")
|
||||
logger.info(f'\tTemp: {data_obj.temperature}°C, Humid: {data_obj.humidity}%, Batt: {data_obj.battery_percent}%')
|
||||
return True
|
||||
|
||||
|
||||
@ -52,7 +54,7 @@ def cleanup():
|
||||
def start_discovery(timeout=20):
|
||||
cleanup()
|
||||
global devices
|
||||
print(f'Start discovery with timout {timeout}s...')
|
||||
logger.info(f'Start discovery with timout {timeout}s...')
|
||||
|
||||
scanner = Scanner().withDelegate(ScanDelegate())
|
||||
scanner.scan(timeout=timeout, passive=False)
|
||||
|
||||
@ -1,8 +1,10 @@
|
||||
import os
|
||||
import json
|
||||
import requests
|
||||
from logger import get_logger
|
||||
|
||||
DEBUG = True if os.environ.get('DEBUG') is not None else False
|
||||
DEBUG = os.getenv('DEBUG') == 'true'
|
||||
logger = get_logger(__name__)
|
||||
|
||||
|
||||
class State:
|
||||
@ -28,7 +30,7 @@ class Release:
|
||||
def check_for_update():
|
||||
try: version_current = int(os.getenv('VERSION').replace("-", ""))
|
||||
except:
|
||||
print("Error getting current version")
|
||||
logger.error("Error getting current version")
|
||||
return
|
||||
project_id = 58341398
|
||||
request = f"https://gitlab.com/api/v4/projects/{project_id}/releases"
|
||||
@ -43,7 +45,7 @@ def check_for_update():
|
||||
if release.version_int > latest[0]:
|
||||
latest[0] = release.version_int
|
||||
latest[1] = release
|
||||
print(repr(latest)) if DEBUG else {}
|
||||
logger.debug(repr(latest))
|
||||
|
||||
release = latest[1]
|
||||
if release.version_int > version_current:
|
||||
@ -64,11 +66,10 @@ def check_for_update():
|
||||
|
||||
def print_state(state:State):
|
||||
if state is None: return
|
||||
print(f"Current version: {os.getenv('VERSION')}")
|
||||
logger.info(f"Current version: {os.getenv('VERSION')}")
|
||||
if state.update_available:
|
||||
print(f"Update available: {state.version_str}")
|
||||
logger.info(f"Update available: {state.version_str}")
|
||||
if state.up_to_date:
|
||||
print(f"Up to date")
|
||||
logger.info(f"Up to date")
|
||||
if state.development:
|
||||
print(f"Development Version")
|
||||
print("")
|
||||
logger.info(f"Development Version")
|
||||
|
||||
@ -4,18 +4,20 @@ import os
|
||||
import FindMyIP
|
||||
from socket import *
|
||||
from helpers import get_unix_time
|
||||
from logger import get_logger
|
||||
|
||||
DEBUG = True if os.environ.get('DEBUG') is not None else False
|
||||
DISCOVERY_ACK = 'IP_DISCOVERY_ACK'.encode() # ACK for broadcast
|
||||
DISCOVERY_RSP_GTW = 'IP_DISCOVERY_RSP_GTW'.encode() # RSP for gateway
|
||||
DISCOVERY_RSP_MSH = 'IP_DISCOVERY_RSP_MSH'.encode() # RSP for mesh
|
||||
DISCOVERY_TIMEOUT = 20
|
||||
SOCKET_TIMEOUT = 5
|
||||
DISCOVERY_TIMEOUT = 1
|
||||
SOCKET_TIMEOUT = 0.2
|
||||
PORT_SERVER = 9434
|
||||
PORT_CLIENT = 9435
|
||||
|
||||
|
||||
def start_discovery_server():
|
||||
logger = get_logger(__name__)
|
||||
sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)
|
||||
sock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
|
||||
sock.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
|
||||
@ -23,22 +25,22 @@ def start_discovery_server():
|
||||
local_ip = FindMyIP.internal()
|
||||
try:
|
||||
sock.bind(server_address)
|
||||
print("Started discovery socket")
|
||||
logger.info("Started discovery socket")
|
||||
while True:
|
||||
data, addr = sock.recvfrom(4096)
|
||||
print(f"Received a packet from {addr}")
|
||||
print(f"{addr[0]} | {local_ip}")
|
||||
print(f"{data} | {DISCOVERY_ACK}")
|
||||
logger.debug(f"Received a packet from {addr}")
|
||||
logger.debug(f"{addr[0]} | {local_ip}")
|
||||
logger.debug(f"{data} | {DISCOVERY_ACK}")
|
||||
|
||||
if data == DISCOVERY_ACK:
|
||||
print("ACK accepted")
|
||||
logger.debug("ACK accepted")
|
||||
if str(addr[0]) == str(local_ip): continue
|
||||
print("IP accepted")
|
||||
logger.debug("IP accepted")
|
||||
sock.sendto(DISCOVERY_RSP_GTW, (addr[0], PORT_CLIENT))
|
||||
print(f"Send ACK to {addr}")
|
||||
logger.debug(f"Send ACK to {addr}")
|
||||
|
||||
except Exception as err:
|
||||
print(err)
|
||||
logger.error(err)
|
||||
sock.close()
|
||||
|
||||
|
||||
@ -49,27 +51,27 @@ def start_discovery_client():
|
||||
sock.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
|
||||
sock.settimeout(SOCKET_TIMEOUT)
|
||||
server_address = ('255.255.255.255', PORT_SERVER)
|
||||
local_ip = FindMyIP.internal()
|
||||
start_time_stamp = get_unix_time()
|
||||
delta = round(get_unix_time() - start_time_stamp, 2)
|
||||
discovered_devices = []
|
||||
|
||||
try:
|
||||
sock.bind(('', PORT_CLIENT))
|
||||
while True:
|
||||
while delta <= DISCOVERY_TIMEOUT:
|
||||
delta = round(get_unix_time() - start_time_stamp, 2)
|
||||
print(delta)
|
||||
sock.sendto(DISCOVERY_ACK, server_address)
|
||||
data, addr = sock.recvfrom(4096)
|
||||
if data == DISCOVERY_RSP_GTW or data == DISCOVERY_RSP_MSH:
|
||||
if str(addr[0]) in discovered_devices: continue
|
||||
print('IP: ' + str(addr[0]))
|
||||
if data == DISCOVERY_RSP_GTW or data == DISCOVERY_RSP_GTW and addr[0] not in discovered_devices:
|
||||
print('IP: ' + str(addr[0]))
|
||||
discovered_devices.append(addr[0])
|
||||
discovered_devices.append(str(addr[0]))
|
||||
except Exception as err:
|
||||
print(err)
|
||||
|
||||
finally:
|
||||
sock.close()
|
||||
return discovered_devices
|
||||
|
||||
|
||||
# start_discovery_client()
|
||||
# devices = start_discovery_client()
|
||||
# print(f"Devices: {devices}")
|
||||
|
||||
@ -3,8 +3,10 @@ import sys
|
||||
import json
|
||||
from data_class import Data
|
||||
from devices import Device
|
||||
from logger import get_logger
|
||||
logger = get_logger(__name__)
|
||||
|
||||
DEBUG = True if os.getenv('DEBUG') == 'true' else False
|
||||
DEBUG = os.getenv('DEBUG') == 'true'
|
||||
|
||||
|
||||
def log_to_json(devices):
|
||||
@ -15,7 +17,7 @@ def log_to_json(devices):
|
||||
data_obj: Data
|
||||
from_config: Device
|
||||
file_name = f'{workdir}/data/{str(data_obj.mac).replace(":", "-")}.json'
|
||||
print(file_name) if DEBUG else {}
|
||||
logger.debug(f"Save to {file_name}")
|
||||
|
||||
try:
|
||||
with open(file_name, 'r') as file: data = json.load(file)
|
||||
@ -35,7 +37,7 @@ def log_to_json(devices):
|
||||
}
|
||||
data.append(measurements)
|
||||
|
||||
print(measurements) if DEBUG else {}
|
||||
logger.debug(measurements)
|
||||
|
||||
with open(file_name, 'w') as file: file.write(json.dumps(data, indent=2))
|
||||
|
||||
|
||||
18
python/src/logger.py
Normal file
18
python/src/logger.py
Normal file
@ -0,0 +1,18 @@
|
||||
import os
|
||||
import logging
|
||||
|
||||
|
||||
def get_logger(logger_name:str, log_file='gateway.log'):
|
||||
logger_name = logger_name.replace('__', '')
|
||||
DEBUG = os.getenv('DEBUG') == 'true'
|
||||
logger = logging.getLogger(logger_name)
|
||||
logger.setLevel(logging.DEBUG) if DEBUG else logger.setLevel(logging.INFO)
|
||||
handler = logging.FileHandler(filename=f'data/{log_file}', encoding='utf-8', mode='a')
|
||||
formatter = logging.Formatter('%(asctime)s|%(levelname)s|%(name)s|:%(message)s')
|
||||
handler.setFormatter(formatter)
|
||||
stream_handler = logging.StreamHandler()
|
||||
stream_handler.setFormatter(formatter)
|
||||
logger.addHandler(stream_handler)
|
||||
logger.addHandler(handler)
|
||||
logger.info(f"Logger {logger_name} init done")
|
||||
return logger
|
||||
@ -1,10 +1,12 @@
|
||||
from time import sleep
|
||||
from log_data import log_to_json
|
||||
from ble_discovery import start_discovery
|
||||
from logger import get_logger
|
||||
logger = get_logger(__name__)
|
||||
|
||||
|
||||
def start_loop(interval=40, timeout=20):
|
||||
print(f"Starting loop with interval {interval}s")
|
||||
logger.info(f"Starting loop with interval {interval}s")
|
||||
while True:
|
||||
devices = start_discovery(timeout=timeout)
|
||||
log_to_json(devices)
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
import os
|
||||
from logger import get_logger
|
||||
from ble_discovery import start_discovery
|
||||
from log_data import log_to_json
|
||||
from loop import start_loop
|
||||
@ -7,27 +8,27 @@ from check_update import print_state
|
||||
|
||||
INTERVAL = 40
|
||||
TIMEOUT = 20
|
||||
DOCKER = True if os.getenv('DOCKER') == 'true' else False
|
||||
DEBUG = True if os.getenv('DEBUG') == 'true' else False
|
||||
DOCKER = os.getenv('DOCKER') == 'true'
|
||||
DEBUG = os.getenv('DEBUG') == 'true'
|
||||
interval = os.getenv('LOOP')
|
||||
timeout = os.getenv('TIMEOUT')
|
||||
|
||||
if DEBUG:
|
||||
print(f"INTERVAL: {INTERVAL}")
|
||||
print(f"TIMEOUT: {TIMEOUT}")
|
||||
print(f"interval: {interval}")
|
||||
print(f"timeout: {timeout}")
|
||||
print(f"DOCKER: {DOCKER}")
|
||||
print(f"DEBUG: {DEBUG}")
|
||||
print(f"VERSION: {os.getenv('VERSION')}")
|
||||
print("")
|
||||
logger = get_logger(__name__)
|
||||
|
||||
logger.debug(f"INTERVAL: {INTERVAL}")
|
||||
logger.debug(f"TIMEOUT: {TIMEOUT}")
|
||||
logger.debug(f"interval: {interval}")
|
||||
logger.debug(f"timeout: {timeout}")
|
||||
logger.debug(f"DOCKER: {DOCKER}")
|
||||
logger.debug(f"DEBUG: {DEBUG}")
|
||||
logger.debug(f"VERSION: {os.getenv('VERSION')}")
|
||||
|
||||
update_state = check_for_update()
|
||||
print_state(update_state)
|
||||
|
||||
|
||||
if DOCKER:
|
||||
print("Running in docker")
|
||||
logger.info('Running in Docker')
|
||||
|
||||
try:INTERVAL = int(interval)
|
||||
except:pass
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user