fix api and stuff
This commit is contained in:
parent
387c41db05
commit
249b111e67
@ -3,6 +3,8 @@ FROM python:3.12-alpine3.20 AS pip_build_stage
|
||||
|
||||
COPY ./python/requierements.txt /
|
||||
|
||||
RUN pip3.12 install setuptools
|
||||
|
||||
RUN apk add \
|
||||
make \
|
||||
git \
|
||||
|
||||
@ -4,7 +4,7 @@ NAME=
|
||||
INTERACTIVE=true
|
||||
BUILD=true
|
||||
API=true
|
||||
DEBUG=INFO
|
||||
DEBUG=DEBUG
|
||||
MODE=1
|
||||
LOOP=20
|
||||
TIMEOUT=20
|
||||
@ -23,6 +23,9 @@ class API:
|
||||
def serve_root():
|
||||
workdir, filename = os.path.split(os.path.abspath(__file__))
|
||||
update = check_for_update()
|
||||
files = os.listdir(f'{workdir}/data')
|
||||
for file in files:
|
||||
if not file.endswith('.json'): files.remove(file)
|
||||
root_dict = {
|
||||
"version": {
|
||||
"version": os.getenv('VERSION'),
|
||||
@ -34,14 +37,15 @@ class API:
|
||||
"name": os.getenv('NAME'),
|
||||
"info": {
|
||||
"files_size_sum": self.get_file_size(),
|
||||
"files": os.listdir(f'{workdir}/data')
|
||||
"files": files
|
||||
}
|
||||
}
|
||||
return jsonify(root_dict)
|
||||
|
||||
@self.app.route('/api/json/<path:path>')
|
||||
@self.app.route('/api/<path:path>')
|
||||
@cross_origin()
|
||||
def serve_json(path):
|
||||
workdir, filename = os.path.split(os.path.abspath(__file__))
|
||||
return send_from_directory(f'{workdir}/data', path)
|
||||
|
||||
@self.app.route('/charts')
|
||||
|
||||
@ -18,18 +18,16 @@ class ScanDelegate(DefaultDelegate):
|
||||
global devices
|
||||
|
||||
for (sdid, desc, val) in dev.getScanData():
|
||||
if self.is_temperature(sdid, val):
|
||||
data_obj = Data(val)
|
||||
if not self.is_temperature(sdid, val): continue
|
||||
data_obj = Data(val)
|
||||
|
||||
if self.is_atc_device(dev, data_obj):
|
||||
device_from_config = get_device(dev)
|
||||
devices.append([dev, data_obj, device_from_config])
|
||||
if self.is_atc_device(dev, data_obj):
|
||||
device_from_config = get_device(dev)
|
||||
devices.append([dev, data_obj, device_from_config])
|
||||
|
||||
@staticmethod
|
||||
def is_temperature(sdid, val):
|
||||
if sdid != 22: return False
|
||||
if len(val) != 30: return False
|
||||
return True
|
||||
return sdid == 22 and len(val) == 30
|
||||
|
||||
@staticmethod
|
||||
def is_atc_device(dev, data_obj):
|
||||
@ -40,8 +38,8 @@ class ScanDelegate(DefaultDelegate):
|
||||
|
||||
device_from_config = get_device(dev)
|
||||
|
||||
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: ?")
|
||||
room = device_from_config.room if device_from_config.room is not None else '?'
|
||||
logger.info(f"Device: {dev.addr.upper()} ({dev.addrType}), RSSI: {dev.rssi}dB, Room: {room}")
|
||||
logger.info(f'\tTemp: {data_obj.temperature}°C, Humid: {data_obj.humidity}%, Batt: {data_obj.battery_percent}%')
|
||||
return True
|
||||
|
||||
|
||||
8
python/src/config.py
Normal file
8
python/src/config.py
Normal file
@ -0,0 +1,8 @@
|
||||
import sys
|
||||
from dataclasses import dataclass
|
||||
|
||||
|
||||
@dataclass
|
||||
class Config:
|
||||
API_PORT:int
|
||||
|
||||
@ -18,7 +18,7 @@ PORT_SERVER = 9434
|
||||
PORT_CLIENT = 9435
|
||||
|
||||
|
||||
def create_socket():
|
||||
def create_udp_socket():
|
||||
sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)
|
||||
sock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
|
||||
sock.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
|
||||
@ -28,7 +28,7 @@ def create_socket():
|
||||
def start_discovery_server():
|
||||
"""Serves the UDP socket for UDP broadcast discovery"""
|
||||
logger = get_logger(__name__)
|
||||
sock = create_socket()
|
||||
sock = create_udp_socket()
|
||||
server_address = ('', PORT_SERVER)
|
||||
local_ip = FindMyIP.internal()
|
||||
|
||||
@ -57,7 +57,7 @@ def start_discovery_server():
|
||||
|
||||
def start_discovery_client():
|
||||
print("Started discovery client")
|
||||
sock = create_socket()
|
||||
sock = create_udp_socket()
|
||||
sock.settimeout(SOCKET_TIMEOUT)
|
||||
server_address = ('255.255.255.255', PORT_SERVER)
|
||||
start_time_stamp = get_unix_time()
|
||||
|
||||
@ -20,8 +20,14 @@ def log_to_json(devices):
|
||||
try:
|
||||
with open(file_name, 'r') as file: data = json.load(file)
|
||||
except:
|
||||
with open(file_name, 'w') as file: file.write("[]")
|
||||
data = []
|
||||
with open(file_name, 'w') as file:
|
||||
new_file = {
|
||||
"name": from_config.name if from_config is not None else "Unknown",
|
||||
"room": from_config.room if from_config is not None else "Unknown",
|
||||
"measurements": []
|
||||
}
|
||||
file.write(json.dumps(new_file))
|
||||
data = new_file
|
||||
|
||||
measurements = {
|
||||
"timestamp": data_obj.timestamp,
|
||||
@ -29,13 +35,11 @@ def log_to_json(devices):
|
||||
"humidity": data_obj.humidity,
|
||||
"battery_percent": data_obj.battery_percent,
|
||||
"battery_volt": data_obj.battery_volt,
|
||||
"rssi": dev.rssi,
|
||||
"name": from_config.name if from_config is not None else "Unknown",
|
||||
"room": from_config.room if from_config is not None else "Unknown"
|
||||
"rssi": dev.rssi
|
||||
}
|
||||
data.append(measurements)
|
||||
data['measurements'].append(measurements)
|
||||
|
||||
logger.debug(measurements)
|
||||
# logger.debug(measurements)
|
||||
|
||||
with open(file_name, 'w') as file: file.write(json.dumps(data, indent=2))
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user