Decatur Makers Machine Access Control package
Project description
Decatur Makers Machine Access Control (dm-mac)
This is a software and hardware project for using RFID cards/fobs to control use of various power tools and equipment in the Decatur Makers makerspace. It is made up of custom ESP32-based hardware (machine control units) controlling power to each enabled machine and running ESPHome, and a central access control/management/logging server application written in Python/Flask. Like our “glue” server that powers the RFID-based door access control to the makerspace, dm-mac uses the Neon CRM (or a local flat-file when in development mode) as its backend datastore.
Software Components
At a high level, the system is made up of the central control server and the ESPHome configuration for the ESP32’s.
Control Server
This is a Python/Flask application that provides authentication and authorization for users via RFID credentials, control of the ESP32-based machine control units;, and logging and monitoring as well as basic management capabilities.
Why not use the Glue server? First, because the glue server is currently running in a cloud hosting provider. That makes sense for its purpose, but less so for direct control of physical machines in our space. We want the machine access control system to always function, regardless of the state of our Internet connection, with low latency. We also aren’t concerned about reliability through a power outage, as that will also prevent the controlled machines from working. Secondly, having the business logic contained in a central server with relatively “dumb” machine control units on the machines allows for simpler management of the system.
Machine Control Unit Software
The machine control units run ESPHome, because it is well-supported with an active community, requires minimal programming (just a YAML configuration), and allows updating and managing many devices wirelessly from a central point. The machine control units (and their ESPHome configuration) are relatively simple - they just react to events (RFID card insertion or removal, button press, or a timer ticking), send their current state to the control server via a HTTP POST, and receive a response with the intended state of their outputs (control relay, LCD screen, LEDs). All of the logic of the system is contained in the central control server.
In the event of an extended control server outage, special event, or other exigent circumstance, the machine control unit software is configured with a list of permanently-authorized RFID cards that will enable the machine without requiring authorization from the control server.
Installation
It's recommended to install and run via Docker. Details TBD.
Contributing and Development
Contributions are very welcome. To learn more, see the Contributor Guide.
License
Distributed under the terms of the MIT license, Machine_Access_Control (dm_mac
) is free and open source software.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file machine_access_control-0.1.0.tar.gz
.
File metadata
- Download URL: machine_access_control-0.1.0.tar.gz
- Upload date:
- Size: 5.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.12.4 Linux/6.9.8-arch1-1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e59395063402208acc157e87b1ab1123a0b07ce9d3bd10d1db9b4ea3e85dec67 |
|
MD5 | 0686e588314b33c299840c0f06ce6be7 |
|
BLAKE2b-256 | 91c5cb7315025cf5c09a76cc2b67ef826f208ebb03d36f2eac4c0cb8fb62890b |
File details
Details for the file machine_access_control-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: machine_access_control-0.1.0-py3-none-any.whl
- Upload date:
- Size: 6.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.12.4 Linux/6.9.8-arch1-1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d9562a4f0a4bb305404344b5cb16fc4071388d6304381bc7c8d95d0223ad9843 |
|
MD5 | 8818da5dfaa2a085b9e57a82d5647773 |
|
BLAKE2b-256 | 02032350b2b500d5231d6a5e64d96da714bcb0a2f7f1a7240adfaa2d0c47410e |