DoorControl/door_pi_control/__init__.py

60 lines
2.0 KiB
Python
Raw Permalink Normal View History

2021-02-27 18:01:39 +00:00
#!/usr/bin/python
2023-05-17 14:04:53 +00:00
from . import nfc, socket, door, bell, mqtt
2022-11-06 13:30:11 +00:00
from .util import init_logging
2021-08-11 05:29:19 +00:00
2022-11-06 13:30:11 +00:00
from collections import namedtuple
import logging
2021-08-09 17:51:21 +00:00
2021-08-11 05:19:37 +00:00
def main():
2022-11-06 13:30:11 +00:00
import argparse
import logging
import time
from .nfc import DoorControlNfc
from .socket import DoorControlSocket
from .door import Control
from .util import init_logging, logger
2021-08-11 05:19:37 +00:00
parser = argparse.ArgumentParser()
2022-11-06 13:30:11 +00:00
parser.add_argument("--serial_port", default="/dev/serial/by-id/usb-Imaginaerraum.de_DoorControl_433632201350535727003F0-if01")
parser.add_argument("--bell_port", default="/dev/ttyS2")
2021-08-11 05:19:37 +00:00
parser.add_argument("--nfc_fifo", default="/tmp/nfc_fifo")
parser.add_argument("--control_socket", default="/tmp/nfc.sock")
parser.add_argument("--valid_tokens", default="/etc/door_tokens")
parser.add_argument("--log_file", default="/tmp/nfc.log")
2022-11-08 06:50:15 +00:00
parser.add_argument("--log_host", default=None)
2022-11-06 17:43:29 +00:00
parser.add_argument("--log_level", default="INFO")
2023-05-01 22:07:53 +00:00
parser.add_argument("--mqtt_host", default="mqtt.local.imaginaerraum.de")
2021-08-11 05:19:37 +00:00
2022-11-06 13:30:11 +00:00
config = parser.parse_args()
2021-08-11 05:19:37 +00:00
2023-05-17 14:04:53 +00:00
mqttc = mqtt.reconnecting_client(config.mqtt_host)
2022-11-06 13:30:11 +00:00
2022-11-08 06:50:15 +00:00
log_host = None
if config.log_host != None:
log_host = config.log_host.split(':')
log_host = (log_host[0], int(log_host[1]))
init_logging(level=config.log_level, output_file=config.log_file, output_host=log_host)
2021-08-11 05:19:37 +00:00
2022-11-06 13:30:11 +00:00
logger().info("Starting control")
control = Control(config, mqttc)
control.start()
logger().info("Starting NFC")
nfc = DoorControlNfc(config, control, mqttc)
nfc.start()
logger().info("Starting bell")
def door_is_open():
return control.state() == control.target() == door.constants.state.OPEN
2022-11-21 17:10:54 +00:00
bell_control = bell.Control(config.bell_port, mqttc, door_is_open)
2022-11-06 13:30:11 +00:00
bell_control.start()
2022-11-14 18:16:02 +00:00
logger().info("Starting socket")
socket = DoorControlSocket(config, control, bell_control, nfc)
socket.start()
2022-11-06 13:30:11 +00:00
while True:
time.sleep(60)