82 lines
2.8 KiB
Python
Executable File
82 lines
2.8 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import argparse
|
|
import asyncio
|
|
import coloredlogs
|
|
import logging
|
|
import os
|
|
|
|
import ha_mqtt_discoverable
|
|
|
|
import sensor
|
|
from device import Device
|
|
from display import DisplayBrightnessManager
|
|
|
|
async def sensor_loop(logger, sensor_entities):
|
|
logger.info('starting sensor loop')
|
|
while True:
|
|
for sensor in sensor_entities.values():
|
|
sensor.update_value()
|
|
|
|
await asyncio.sleep(5)
|
|
|
|
async def main():
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("--debug", action='store_true', default=False)
|
|
parser.add_argument("--device-id", dest='device_id', default=os.environ.get('DEVICE_ID'), required=True)
|
|
parser.add_argument("--device-name", dest='device_name', default=os.environ.get('DEVICE_NAME'), required=True)
|
|
parser.add_argument("--display-device", dest='display_device', default=os.environ.get('DISPLAY_DEVICE'))
|
|
parser.add_argument("--mqtt-host", dest='mqtt_host', default=os.environ.get('MQTT_HOST', 'localhost'))
|
|
parser.add_argument("--mqtt-port", dest='mqtt_port', default=os.environ.get('MQTT_PORT', 1883))
|
|
parser.add_argument("--mqtt-user", dest='mqtt_user', default=os.environ.get('MQTT_USER'))
|
|
parser.add_argument("--mqtt-pass", dest='mqtt_pass', default=os.environ.get('MQTT_PASS'))
|
|
parser.add_argument("--touch-device", dest='touch_device', default=os.environ.get('TOUCH_DEVICE'))
|
|
|
|
args = parser.parse_args()
|
|
|
|
mqtt_args = {'host': args.mqtt_host}
|
|
if args.debug:
|
|
coloredlogs.install(level='DEBUG')
|
|
logger = logging.getLogger("HA Kiosk Agent")
|
|
logger.debug('debug')
|
|
mqtt_args['debug'] = args.debug
|
|
else:
|
|
coloredlogs.install()
|
|
logger = logging.getLogger("HA Kiosk Agent")
|
|
|
|
if args.mqtt_port:
|
|
mqtt_args['port'] = args.mqtt_port
|
|
|
|
if args.mqtt_user:
|
|
mqtt_args['username'] = args.mqtt_user
|
|
|
|
if args.mqtt_pass:
|
|
mqtt_args['password'] = args.mqtt_pass
|
|
|
|
mqtt_settings = ha_mqtt_discoverable.Settings.MQTT(**mqtt_args)
|
|
device = Device(args.device_name, args.device_id, mqtt_settings)
|
|
|
|
|
|
tasks = []
|
|
dbm = None
|
|
if args.display_device:
|
|
dbm = DisplayBrightnessManager(device, args.display_device, args.touch_device, logger)
|
|
tasks.append(dbm.run())
|
|
|
|
sensor_entities = {
|
|
'battery': sensor.BatterySensor(device),
|
|
'display_brightness': sensor.DisplayBrightnessSensor(device, dbm),
|
|
'ip_address': sensor.IPAddressSensor(device),
|
|
'last_boot': sensor.LastBootSensor(device),
|
|
'temperature': sensor.TemperatureSensor(device),
|
|
'wifi_signal': sensor.WifiSignalStrengthSensor(device)
|
|
};
|
|
|
|
tasks.append(sensor_loop(logger, sensor_entities))
|
|
|
|
logger.info('finished setup, starting tasks')
|
|
await asyncio.gather(*tasks)
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|