This summer, our district is undergoing a much needed modernization project, transitioning from a legacy access control system to Avigilon Alta (formerly OpenPath). While deploying the demo system at our admin office, a functionality gap emerged: single-button front door control, something previously achievable with the old platform.
Recalling the availability of an Avigilon Alta API, I saw an opportunity to leverage it for a custom door control. This project, AltaNode, utilizes an inexpensive NodeMCU, buttons, enclosure, and the aforementioned API to allow quick control of doors from a single button press.
AltaNode is an open-source project that allows you to connect physical buttons to an NodeMCU and configure them to send requests over HTTPS using the Avigilon Alta API. It provides a user-friendly web interface for configuration and leverages an SD card for storage of configuration data.
Technical Specifications
- Hardware:
- NodeMCU
- SD Reader with SPI Interface
- Libraries Used:
- ESP8266WiFi: Enables WiFi
- ArduinoJson: Parses and generates JSON configuration files
- AsyncWebServer: Provides a web interface for configuration
- ESPAsyncTCP: Provides web server operation
- SD: Enables storage and retrieval of configuration files
- ElegantOTA: Allows remote firmware updates
Functionality:
- Four buttons can be connected to designated digital pins on the NodeMCU.
- A web interface allows administrators to manage wireless credentials and configure the Avigilon Alta API details.
- Additional features include basic web authentication, firmware updates, and remote restarts after configuration updates.
SD Card:
- The SD card is used to store JSON configuration & HTML content.
- WiFi SSID and password are stored in /config/wifi.json.
- Avigilon API URL and Entry IDs are stored in /config/setup.json.
- HTML docs are stored in /html.
Initialization:
- Initialize SD Card
- Load WiFi Credentials from JSON on SD
- Connect to WiFi
- Load API URL and Entry IDs from JSON on SD
Button Handling:
- When pressed, the AltaNode makes an HTTP post request to Avigilon Alta containing the corresponding entry ID.
- The response from the API is logged in Serial for debugging purposes.
Configuration:
- Accessing the IP address of the device via browser allows for API and WiFi configuration to modified and saved to the device.
This project provides a versatile platform for interfacing physical buttons with the Avigilon Alta API, with a solution for easy management with no changes to the microcontroller code. You can find the AltaNode project on my Github page.