Compare commits

..

4 Commits

Author SHA1 Message Date
43e7129a11 Merge branch 'setuptools' 2021-08-11 07:37:17 +02:00
41e6f786f0 Initial setuptools config 2021-08-11 07:37:06 +02:00
0f4060c99d Clean up imports 2021-08-11 07:29:19 +02:00
f4ed8aa368 Move source file 2021-08-11 07:26:00 +02:00
3 changed files with 59 additions and 35 deletions

View File

@ -1,8 +1,13 @@
#!/usr/bin/python #!/usr/bin/python
import os, serial, socket, select, datetime
import paho.mqtt.client as mqcl
import argparse import argparse
import datetime
import logging import logging
import os
import select
import socket
import paho.mqtt.client as mqcl
import serial
UPDATE_RATE = 2 UPDATE_RATE = 2
MAX_UPDATE_RATE = 20 MAX_UPDATE_RATE = 20
@ -12,19 +17,6 @@ OPEN_THRESHOLD = 190
CLOSED_THRESHOLD = 160 CLOSED_THRESHOLD = 160
CLOSED_WANT = 40 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(): def timestamp():
return datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") return datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
@ -433,26 +425,42 @@ class DoorControl:
DoorControl.action_names[self.action()], DoorControl.action_names[self.action()],
(datetime.datetime.now() - self.start_time).total_seconds())) (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 = {} buffers = {}
while True: while True:
readable = select.select([ dc.serial_port.fileno(), dc.nfc_fifo, dc.control_socket ] + dc.comm_channels, [], [], 1 / UPDATE_RATE)[0] 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 __name__ == '__main__':
if c == dc.serial_port.fileno(): main()
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()

3
pyproject.toml Normal file
View File

@ -0,0 +1,3 @@
[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"

13
setup.cfg Normal file
View File

@ -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