From f4ed8aa368cc7ac2e7cf9346619dcd0581fb95b2 Mon Sep 17 00:00:00 2001 From: Valentin Ochs Date: Wed, 11 Aug 2021 07:19:37 +0200 Subject: [PATCH 1/3] Move source file --- door.py => door_pi_control/__init__.py | 69 ++++++++++++++------------ 1 file changed, 36 insertions(+), 33 deletions(-) rename door.py => door_pi_control/__init__.py (91%) diff --git a/door.py b/door_pi_control/__init__.py similarity index 91% rename from door.py rename to door_pi_control/__init__.py index b33478b..c720e9c 100644 --- a/door.py +++ b/door_pi_control/__init__.py @@ -12,19 +12,6 @@ OPEN_THRESHOLD = 190 CLOSED_THRESHOLD = 160 CLOSED_WANT = 40 -parser = argparse.ArgumentParser() -parser.add_argument("--serial_port", default="/dev/serial/by-id/usb-Imaginaerraum.de_DoorControl_43363220195053573A002C0-if01") -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") -parser.add_argument("--state_timeout", type=float, default=10) -parser.add_argument("--state_timeout_speed", type=float, default=3) -parser.add_argument("--repeat_time", type=float, default=5) -parser.add_argument("--mqtt_host", default="10.10.21.2") - -config = parser.parse_args() - def timestamp(): return datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") @@ -433,26 +420,42 @@ class DoorControl: DoorControl.action_names[self.action()], (datetime.datetime.now() - self.start_time).total_seconds())) +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("--serial_port", default="/dev/serial/by-id/usb-Imaginaerraum.de_DoorControl_43363220195053573A002C0-if01") + 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") + parser.add_argument("--state_timeout", type=float, default=10) + parser.add_argument("--state_timeout_speed", type=float, default=3) + parser.add_argument("--repeat_time", type=float, default=5) + parser.add_argument("--mqtt_host", default="10.10.21.2") + + config = parser.parse_args() -dc = DoorControl(config) + dc = DoorControl(config) -buffers = {} -while True: - readable = select.select([ dc.serial_port.fileno(), dc.nfc_fifo, dc.control_socket ] + dc.comm_channels, [], [], 1 / UPDATE_RATE)[0] + buffers = {} + while True: + readable = select.select([ dc.serial_port.fileno(), dc.nfc_fifo, dc.control_socket ] + dc.comm_channels, [], [], 1 / UPDATE_RATE)[0] + + for c in readable: + if c == dc.serial_port.fileno(): + dc.handle_door_line() + elif c == dc.nfc_fifo: + dc.handle_nfc_token() + elif c == dc.control_socket: + dc.logger.info("Got connection") + sock = dc.control_socket.accept()[0] + buffers[sock] = dc.LineBuffer(sock, dc.handle_cmd) + dc.comm_channels += [sock] + else: + if not buffers[c].update(): + dc.logger.info("Lost connection") + del buffers[c] + dc.comm_channels.remove(c) + dc.handle_door_state() - for c in readable: - if c == dc.serial_port.fileno(): - dc.handle_door_line() - elif c == dc.nfc_fifo: - dc.handle_nfc_token() - elif c == dc.control_socket: - dc.logger.info("Got connection") - sock = dc.control_socket.accept()[0] - buffers[sock] = dc.LineBuffer(sock, dc.handle_cmd) - dc.comm_channels += [sock] - else: - if not buffers[c].update(): - dc.logger.info("Lost connection") - del buffers[c] - dc.comm_channels.remove(c) - dc.handle_door_state() +if __name__ == '__main__': + main() From 0f4060c99d22f3c81b798c10986b0380296ba37c Mon Sep 17 00:00:00 2001 From: Valentin Ochs Date: Wed, 11 Aug 2021 07:29:19 +0200 Subject: [PATCH 2/3] Clean up imports --- door_pi_control/__init__.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/door_pi_control/__init__.py b/door_pi_control/__init__.py index c720e9c..0437767 100644 --- a/door_pi_control/__init__.py +++ b/door_pi_control/__init__.py @@ -1,8 +1,13 @@ #!/usr/bin/python -import os, serial, socket, select, datetime -import paho.mqtt.client as mqcl import argparse +import datetime import logging +import os +import select +import socket + +import paho.mqtt.client as mqcl +import serial UPDATE_RATE = 2 MAX_UPDATE_RATE = 20 From 41e6f786f090f76f88b340a58b8c661a7ddcc7a4 Mon Sep 17 00:00:00 2001 From: Valentin Ochs Date: Wed, 11 Aug 2021 07:37:06 +0200 Subject: [PATCH 3/3] Initial setuptools config --- pyproject.toml | 3 +++ setup.cfg | 13 +++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 pyproject.toml create mode 100644 setup.cfg diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..9787c3b --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["setuptools", "wheel"] +build-backend = "setuptools.build_meta" diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..b2326b8 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,13 @@ +[metadata] +name = door_pi_control +version = 0.0.1 + +[options] +packages = door_pi_control +install_requires = + paho-mqtt + serial + +[options.entry_points] +console_scripts = + door.py = door_pi_control:main