44 lines
1.1 KiB
Python
44 lines
1.1 KiB
Python
from sensor.people_counter import PeopleCounter
|
|
from sensor.vl53l1x_sensor import VL53L1XSensor
|
|
import paho.mqtt.client as mqtt
|
|
from HaMqtt.MQTTSensor import MQTTSensor
|
|
from HaMqtt.MQTTUtil import HaDeviceClass
|
|
import logging
|
|
|
|
|
|
HA_URL = ""
|
|
HA_PORT = 1883
|
|
HA_SENSOR_NAME = ""
|
|
HA_SENSOR_ID = ""
|
|
HA_SENSOR_DEVICE_CLASS = HaDeviceClass.NONE
|
|
SENSOR_UNIT = ""
|
|
|
|
|
|
# Setup connection to HA
|
|
mqttClient = mqtt.Client()
|
|
mqttClient.connect(HA_URL, HA_PORT)
|
|
mqttClient.loop_start() # Keep conneciton alive
|
|
|
|
# Setup mqtt binding
|
|
sensor = MQTTSensor(HA_SENSOR_NAME, HA_SENSOR_ID, mqttClient, SENSOR_UNIT, HA_SENSOR_DEVICE_CLASS)
|
|
logging.debug(f'Connected to topic {sensor.state_topic}')
|
|
|
|
|
|
def countChange(change: int) -> None:
|
|
"""Called when people count change is detected.
|
|
Sends update to the initialized HA instance.
|
|
|
|
Args:
|
|
change (int): Number of people leaving (<0) or entering (>0) a room.
|
|
"""
|
|
# Send update to HA
|
|
global sensor
|
|
sensor.publish_state(change)
|
|
|
|
logging.debug(f'People count changed by {change}')
|
|
|
|
|
|
# Setup people count sensor
|
|
counter = PeopleCounter(VL53L1XSensor())
|
|
counter.hookCounting(countChange)
|
|
counter.run()
|