Files
POE-sensor/config.py

79 lines
2.7 KiB
Python

import time
# Modbus configuration
MODBUS_HOSTS = [
{"ip": "10.84.60.31", "location": "Warehouse-B", "type": "temperature_humidity"},
{"ip": "10.84.60.32", "location": "Warehouse-C", "type": "temperature_humidity"},
{"ip": "10.84.60.33", "location": "Dyeing-Kitchen", "type": "temperature_humidity"},
{"ip": "10.84.60.34", "location": "Second-Floor", "type": "temperature_humidity"},
{"ip": "10.84.60.35", "location": "Warehouse-A", "type": "temperature_humidity"},
{"ip": "10.84.60.36", "location": "Lab-Room", "type": "temperature_humidity"},
{"ip": "10.84.60.37", "location": "Office", "type": "cwt_co2"},
]
MODBUS_PORT = 505
UNIT_ID = 1
# MQTT configuration
MQTT_BROKER = "mqtt.service.mesh"
MQTT_PORT = 1883
# Legacy topic - now using dynamic topic structure: {location}/{sensor_type}/data
MQTT_TOPIC = "Temperature_Humidity" # Keep for backward compatibility
MQTT_CLIENT_ID = f"modbus-mqtt-client-{int(time.time())}"
MQTT_USERNAME = "relay"
MQTT_PASSWORD = "Sey@K9c&Q4^"
# Read and publish cycle configuration (seconds)
PUBLISH_INTERVAL = 10
# Health check and alerting configuration
HEALTH_CHECK_PORT = 8080
HEALTH_CHECK_ENABLED = True
# Alerting configuration
ALERTING_ENABLED = True
SENSOR_TIMEOUT_THRESHOLD = 3 # Number of consecutive failures before alert
RECOVERY_CONFIRMATION_COUNT = 2 # Number of consecutive successes to confirm recovery
# Sensor status tracking - now integrated into data payload
# New topic structure: Location/{location_name}/{sensor_type}/{data_type}
# Where sensor_type is: "temperature-humidity" or "CO2-gas"
# Where data_type is: "data" or "alerts"
# Example topics:
# - Location/Warehouse-B/temperature-humidity/data (contains temp, humidity, status)
# - Location/Office/CO2-gas/data (contains co2, temp, humidity, status)
# - Location/Warehouse-B/temperature-humidity/alerts (contains failure/recovery alerts)
# New MQTT Topic Structure:
# Base: Location/{location_name}/{sensor_type}/{data_type}
#
# Data topics: Location/{location_name}/{sensor_type}/data
# Alert topics: Location/{location_name}/{sensor_type}/alerts
#
# Payload format for data (JSON):
# {
# "timestamp": "2024-01-01 12:00:00",
# "location": "Warehouse-B",
# "sensor_type": "temperature-humidity",
# "ip": "10.84.60.31",
# "status": "online|offline",
# "data": {
# "temperature": 25.5,
# "humidity": 60.2
# }
# }
#
# Payload format for alerts (JSON):
# {
# "alert_type": "sensor_failure|sensor_recovery",
# "timestamp": "2024-01-01T12:00:00.000000+00:00",
# "sensor_id": "10.84.60.31_Warehouse-B",
# "sensor_ip": "10.84.60.31",
# "sensor_location": "Warehouse-B",
# "sensor_type": "temperature_humidity",
# "consecutive_failures": 3,
# "last_error": "Failed to read data",
# "severity": "critical|info"
# }