-
Notifications
You must be signed in to change notification settings - Fork 1
Features
This is an overview of features that are provided by the Atrium firmware for Espressif controller families ESP8266, ESP32, ESP32-C3, and ESP32-S3.
Atrium can be configured to perform customized actions using an event/action based system. Therefore, all drivers and core functions provide events and actions that can be used to implement application specific behaviors. E.g. ADC provide threshold events, timers have timeout events, and buttons provide push and release events as well as short-, medium- and long-press events.
Any event can be associated with optinal arguments to an arbitrary action. An action can even be the execution of a Lua script. Like this, you can adjust the level of a GPIO based on e.g. a button press event.
State-machines provide another level of customizing run-time behavior, as all event-action pairs can be associated with a specific state-machine state. Like this it is possible to provide differenet modes of operation, by e.g. switching the state with a button event.
As this can be also used with Lua scripts, state-machines can be used to switch between different Lua scripts that exhibit different system behavior. One example application is the operation of multi-color LED strips that can provide different color settings or modes of changing colors in specific states.
MQTT protocol is integrated for providing status information, sensor
mesasurement data, and remote control. The topic <nodename>/action
can
be used to remotely trigger an action provided by the device, and the
topic <nodename>/lua
can be used to execute an arbitrary Lua script.
Time series data, such as measurement data, can be sent to an Influx-DB server for furhter processing.
Lua language is supported to allow implementation customized behavior.
Atrium devices allow telnet access for remote operation and configuration.
Atrium devices provide a system console on either a UART or USB/JTAG connection. This can be configured as part of the hardware configuration.
Several I2C I/O expanders are supported to add more GPIOs for additional relays, LEDs, buttons, etc..
An on device FTP server can be confiugred to allow uploading custom files (e.g. Lua scripts) to the on device flash filesystem.
Atrium includes a minimal HTTP server that is capable of serving files from flash and that can also invoke compiled-in function to perform advanced actions. E.g. a flash-update via such a function is supported, and also some basic configurations.
Atrium devices are able to resolve hostnames via DNS and provide their
own nodename as a hostname vi mDNS in the .local
domain.
The simplified network time protocol is used to query the current time and date. This can be used to trigger actions at predefined times, dates, and weekdays. Additionally, holidays can be defined with different settings.
A couple of OLEDs displays are supported to provide means of visualiziing measurement data and providing a user interface for manual operation.
Several drivers for GPIO attached devices are included, with several options and tunables to configure specific behavior. These include buttons, relays, LEDs, and more.
ADC driver with cyclic sampling and translation of the sampled result into a real world value or just the measured voltage on the port. Additionally, schmitt-trigger high/low thresholds can be configured to execute specific actions under given conditions.
Attaching multiple 1-wire temperature sensors (DS18B20) is possible. Individual devices can be assigned names and their data can be used for further processing.
Logging activity to a remote syslog server is possible. Like this a central server can be used for reviewing diagnostic logs.
Over the air updates can be performed using multiple protocols. Both as a direct upload to the HTTP server or as a download using HTTP, FTP, and TFTP. TFTP is usually fastest.
Atrium provides multiple ways for remote operation. Telnet can be used to operate the devices in a simliar fashion as on a console. Additionally, Atrium also listens on a UDP port that can be operated with the atriumctrl.py Python script. The advantage of the script is that it can broadcast an operation to all available devices on the network. Like this you can e.g. query the version of the Atrium firmware of all devices or distribute common holiday settings etc..