DoorControl/door_pi_control/__init__.py

63 lines
2.0 KiB
Python
Raw Normal View History

2021-02-27 18:01:39 +00:00
#!/usr/bin/python
2022-11-06 13:30:11 +00:00
from . import nfc, socket, door, bell
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
2021-08-11 05:29:19 +00:00
import paho.mqtt.client as mqcl
2022-11-06 13:30:11 +00:00
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")
2021-08-11 05:19:37 +00:00
parser.add_argument("--mqtt_host", default="10.10.21.2")
2022-11-06 13:30:11 +00:00
config = parser.parse_args()
2021-08-11 05:19:37 +00:00
2022-11-06 13:30:11 +00:00
mqttc = mqcl.Client()
mqttc.connect_async("10.10.21.2", keepalive=60)
mqttc.loop_start()
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
bell_control = bell.Control(config.bell_port, door_is_open)
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)