Skip to content

Features

Thomas Maier-Komor edited this page Oct 22, 2023 · 1 revision

Atrium Feature List

This is an overview of features that are provided by the Atrium firmware for Espressif controller families ESP8266, ESP32, ESP32-C3, and ESP32-S3.

Action/Event/Timer Infrastructure

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

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

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.

Influx

Time series data, such as measurement data, can be sent to an Influx-DB server for furhter processing.

Lua

Lua language is supported to allow implementation customized behavior.

Telnet

Atrium devices allow telnet access for remote operation and configuration.

Console

Atrium devices provide a system console on either a UART or USB/JTAG connection. This can be configured as part of the hardware configuration.

I/O-expander

Several I2C I/O expanders are supported to add more GPIOs for additional relays, LEDs, buttons, etc..

FTP server

An on device FTP server can be confiugred to allow uploading custom files (e.g. Lua scripts) to the on device flash filesystem.

HTTP server

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.

DNS/mDNS

Atrium devices are able to resolve hostnames via DNS and provide their own nodename as a hostname vi mDNS in the .local domain.

SNTP

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.

OLED displays

A couple of OLEDs displays are supported to provide means of visualiziing measurement data and providing a user interface for manual operation.

Basic GPIO drivers

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

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.

1-Wire bus

Attaching multiple 1-wire temperature sensors (DS18B20) is possible. Individual devices can be assigned names and their data can be used for further processing.

Syslog

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

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.

Centralized Remote Operation

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..