changed temperature calibration
This commit is contained in:
parent
60ffb1cfe6
commit
d0d4c20691
64
src/app.py
64
src/app.py
@ -22,7 +22,7 @@ from datetime import datetime, timezone
|
|||||||
import traceback
|
import traceback
|
||||||
from http.server import HTTPServer, BaseHTTPRequestHandler
|
from http.server import HTTPServer, BaseHTTPRequestHandler
|
||||||
import threading
|
import threading
|
||||||
|
import copy
|
||||||
import time
|
import time
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
@ -30,8 +30,8 @@ import uuid
|
|||||||
|
|
||||||
client = None # Initialize to None, not a string
|
client = None # Initialize to None, not a string
|
||||||
connected = False
|
connected = False
|
||||||
|
humidity_offset = 34
|
||||||
|
temperature_offset = -10
|
||||||
try:
|
try:
|
||||||
from prometheus_client import generate_latest, start_http_server, CONTENT_TYPE_LATEST, Gauge, Counter, REGISTRY
|
from prometheus_client import generate_latest, start_http_server, CONTENT_TYPE_LATEST, Gauge, Counter, REGISTRY
|
||||||
prometheus_available = True
|
prometheus_available = True
|
||||||
@ -520,7 +520,14 @@ def process_messages(connection, db_conn):
|
|||||||
data_type, parsed_data = process_message_data(cursor, data)
|
data_type, parsed_data = process_message_data(cursor, data)
|
||||||
if data_type and parsed_data:
|
if data_type and parsed_data:
|
||||||
#logger.info(f"Successfully processed as {data_type}")
|
#logger.info(f"Successfully processed as {data_type}")
|
||||||
MQSend("/"+ids2MAC[parsed_data["device_id"]], json.dumps(parsed_data))
|
|
||||||
|
#For mqtt needs to be calibrated!
|
||||||
|
parsed_data_mqtt = copy.deepcopy(parsed_data)
|
||||||
|
if "temperature" in parsed_data:
|
||||||
|
parsed_data_mqtt["temperature"] = parsed_data["temperature"] + temperature_offset
|
||||||
|
parsed_data_mqtt["humidity"] = parsed_data["humidity"] + humidity_offset
|
||||||
|
|
||||||
|
MQSend("/"+ids2MAC[parsed_data["device_id"]], json.dumps(parsed_data_mqtt))
|
||||||
if data_type in data_batches:
|
if data_type in data_batches:
|
||||||
data_batches[data_type].append(parsed_data)
|
data_batches[data_type].append(parsed_data)
|
||||||
batch_size = len(data_batches[data_type])
|
batch_size = len(data_batches[data_type])
|
||||||
@ -894,8 +901,11 @@ def GetLastDetected(device_id, field_name, threshold_value):
|
|||||||
with get_db_connection() as conn:
|
with get_db_connection() as conn:
|
||||||
with conn.cursor() as cur:
|
with conn.cursor() as cur:
|
||||||
cur.execute(query)
|
cur.execute(query)
|
||||||
|
record = cur.fetchone()
|
||||||
|
if record != None:
|
||||||
last_detected = cur.fetchone()[0].timestamp()
|
last_detected = cur.fetchone()[0].timestamp()
|
||||||
|
|
||||||
|
|
||||||
return last_detected
|
return last_detected
|
||||||
|
|
||||||
def UpdateLastSeen(new_message_dict):
|
def UpdateLastSeen(new_message_dict):
|
||||||
@ -909,9 +919,27 @@ def UpdateLastSeen(new_message_dict):
|
|||||||
|
|
||||||
threshold_details = GetRedisString('radar_threshold'+device_id_s)
|
threshold_details = GetRedisString('radar_threshold'+device_id_s)
|
||||||
try:
|
try:
|
||||||
radar_threshold_list = ast.literal_eval(threshold_details)
|
#radar_threshold_list = ast.literal_eval(threshold_details)
|
||||||
radar_threshold_signal = radar_threshold_list[0]
|
#radar_threshold_signal = radar_threshold_list[0]
|
||||||
radar_threshold_value = radar_threshold_list[1]
|
#radar_threshold_value = radar_threshold_list[1]
|
||||||
|
|
||||||
|
if threshold_details != None:
|
||||||
|
|
||||||
|
if type(threshold_details) == str:
|
||||||
|
if "," in threshold_details == False:
|
||||||
|
threshold_details = f'["s3_max",{int(threshold_details)}]'
|
||||||
|
threshold_details_list = ast.literal_eval(threshold_details)
|
||||||
|
elif type(threshold_details) == int:
|
||||||
|
threshold_details = f'["s3_max",{threshold_details}]'
|
||||||
|
threshold_details_list = ast.literal_eval(threshold_details)
|
||||||
|
elif type(threshold_details) == list:
|
||||||
|
threshold_details_list = ast.literal_eval(threshold_details)
|
||||||
|
|
||||||
|
|
||||||
|
radar_threshold_signal = threshold_details_list[0]
|
||||||
|
radar_threshold_value = threshold_details_list[1]
|
||||||
|
|
||||||
|
|
||||||
except:
|
except:
|
||||||
#key not found so read from DB, and store to key
|
#key not found so read from DB, and store to key
|
||||||
sql = f"""
|
sql = f"""
|
||||||
@ -928,7 +956,17 @@ def UpdateLastSeen(new_message_dict):
|
|||||||
|
|
||||||
if threshold_details != None:
|
if threshold_details != None:
|
||||||
|
|
||||||
|
if type(threshold_details) == str:
|
||||||
|
if "," in threshold_details == False:
|
||||||
|
threshold_details = f'["s3_max",{int(threshold_details)}]'
|
||||||
threshold_details_list = ast.literal_eval(threshold_details)
|
threshold_details_list = ast.literal_eval(threshold_details)
|
||||||
|
elif type(threshold_details) == int:
|
||||||
|
threshold_details = f'["s3_max",{threshold_details}]'
|
||||||
|
threshold_details_list = ast.literal_eval(threshold_details)
|
||||||
|
elif type(threshold_details) == list:
|
||||||
|
threshold_details_list = ast.literal_eval(threshold_details)
|
||||||
|
|
||||||
|
|
||||||
radar_threshold_signal = threshold_details_list[0]
|
radar_threshold_signal = threshold_details_list[0]
|
||||||
radar_threshold_value = threshold_details_list[1]
|
radar_threshold_value = threshold_details_list[1]
|
||||||
|
|
||||||
@ -956,11 +994,13 @@ def UpdateLastSeen(new_message_dict):
|
|||||||
last_seen = GetRedisFloat('lastseen_'+device_id_s)
|
last_seen = GetRedisFloat('lastseen_'+device_id_s)
|
||||||
if last_seen == None:
|
if last_seen == None:
|
||||||
last_seen = GetLastDetected(device_id_s, radar_threshold_signal, radar_threshold_value)
|
last_seen = GetLastDetected(device_id_s, radar_threshold_signal, radar_threshold_value)
|
||||||
|
if last_seen != None:
|
||||||
r.set('lastseen_'+device_id_s, last_seen)
|
r.set('lastseen_'+device_id_s, last_seen)
|
||||||
|
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"UpdateLastSeen failed: {e}")
|
logger.error(f"Error: {traceback.format_exc()}")
|
||||||
|
logger.error(f"UpdateLastSeen failed: {e}")
|
||||||
|
|
||||||
def process_message_data(cursor, body):
|
def process_message_data(cursor, body):
|
||||||
|
|
||||||
@ -1027,7 +1067,6 @@ def process_message_data(cursor, body):
|
|||||||
MACS2id[MAC] = device_id
|
MACS2id[MAC] = device_id
|
||||||
ids2MAC[device_id] = MAC
|
ids2MAC[device_id] = MAC
|
||||||
|
|
||||||
|
|
||||||
if device_id > 0:
|
if device_id > 0:
|
||||||
|
|
||||||
|
|
||||||
@ -1043,6 +1082,10 @@ def process_message_data(cursor, body):
|
|||||||
if message_type > 0:
|
if message_type > 0:
|
||||||
st = time.time()
|
st = time.time()
|
||||||
if message_type == 16: #Radar message
|
if message_type == 16: #Radar message
|
||||||
|
|
||||||
|
if MAC == "10061C15C330":
|
||||||
|
print("Stop")
|
||||||
|
|
||||||
m_type = "radar"
|
m_type = "radar"
|
||||||
#counter, no targets, moving targets, stationary targets, both, 9 moving gates energy
|
#counter, no targets, moving targets, stationary targets, both, 9 moving gates energy
|
||||||
#counter, 9 stationary gates energy
|
#counter, 9 stationary gates energy
|
||||||
@ -1118,6 +1161,9 @@ def process_message_data(cursor, body):
|
|||||||
pointer = pointer + lenn_1
|
pointer = pointer + lenn_1
|
||||||
lenn = 4
|
lenn = 4
|
||||||
P = struct.unpack('<f', decrypt_data[pointer:pointer+lenn])[0]
|
P = struct.unpack('<f', decrypt_data[pointer:pointer+lenn])[0]
|
||||||
|
#we are not interested at changes larger than 100!
|
||||||
|
if P > 100:
|
||||||
|
P = 100
|
||||||
new_message_dict["pressure"] = P
|
new_message_dict["pressure"] = P
|
||||||
pointer = pointer + lenn
|
pointer = pointer + lenn
|
||||||
elif message_type == 2: #temperature event
|
elif message_type == 2: #temperature event
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user