Compare commits

..

No commits in common. "43e7129a11f45332dd87de47c3cb03edf4051d7a" and "0982a213dd055f3a5dba18c08bf7b9a730386a95" have entirely different histories.

3 changed files with 36 additions and 60 deletions

View File

@ -1,13 +1,8 @@
#!/usr/bin/python #!/usr/bin/python
import argparse import os, serial, socket, select, datetime
import datetime
import logging
import os
import select
import socket
import paho.mqtt.client as mqcl import paho.mqtt.client as mqcl
import serial import argparse
import logging
UPDATE_RATE = 2 UPDATE_RATE = 2
MAX_UPDATE_RATE = 20 MAX_UPDATE_RATE = 20
@ -17,6 +12,19 @@ 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")
@ -425,42 +433,26 @@ 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 = {}
while True:
readable = select.select([ dc.serial_port.fileno(), dc.nfc_fifo, dc.control_socket ] + dc.comm_channels, [], [], 1 / UPDATE_RATE)[0]
buffers = {} for c in readable:
while True: if c == dc.serial_port.fileno():
readable = select.select([ dc.serial_port.fileno(), dc.nfc_fifo, dc.control_socket ] + dc.comm_channels, [], [], 1 / UPDATE_RATE)[0] dc.handle_door_line()
elif c == dc.nfc_fifo:
for c in readable: dc.handle_nfc_token()
if c == dc.serial_port.fileno(): elif c == dc.control_socket:
dc.handle_door_line() dc.logger.info("Got connection")
elif c == dc.nfc_fifo: sock = dc.control_socket.accept()[0]
dc.handle_nfc_token() buffers[sock] = dc.LineBuffer(sock, dc.handle_cmd)
elif c == dc.control_socket: dc.comm_channels += [sock]
dc.logger.info("Got connection") else:
sock = dc.control_socket.accept()[0] if not buffers[c].update():
buffers[sock] = dc.LineBuffer(sock, dc.handle_cmd) dc.logger.info("Lost connection")
dc.comm_channels += [sock] del buffers[c]
else: dc.comm_channels.remove(c)
if not buffers[c].update(): dc.handle_door_state()
dc.logger.info("Lost connection")
del buffers[c]
dc.comm_channels.remove(c)
dc.handle_door_state()
if __name__ == '__main__':
main()

View File

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

View File

@ -1,13 +0,0 @@
[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