Aviligon Alta API - Physical Controls

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.

Sketch of a finished AltaNode box
AltaNode Sketch

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.