ELMA-IoT – Visual ESP32/ESP8266 device builder for Home Assistant, MQTT & automation [Alpha testers welcome]

Hi everyone!

I’d like to share a project I’ve been developing called ELMA-IoT ESP32 Toolkit.

ELMA-IoT started from my own Home Assistant projects. Over time I ended up building many ESP-based devices — pressure and level sensors, irrigation controllers, relays, monitoring devices, audio/notification devices and other custom hardware.

I wanted a simpler way to build and maintain these devices without repeatedly dealing with GPIO datasheets, libraries, separate firmware projects and carrying a laptop around.

The idea behind ELMA-IoT is therefore:

Select ESP → Add peripherals → Configure GPIO → View wiring → Build Logics → Compile → Flash

The application handles much of the low-level implementation underneath.

Hardware configuration

ELMA-IoT lets you select an ESP board and configure the peripherals connected to it.

The application checks GPIO capabilities and conflicts and generates a visual wiring diagram showing how the hardware should be connected.

Current functionality includes:

  • ESP32 / ESP32-S3 / ESP32-C3 / ESP8266 support

  • Peripheral configuration

  • GPIO compatibility/conflict checking

  • Visual wiring diagrams

  • Wi-Fi

  • MQTT

  • Firmware compilation directly on Android

  • USB OTG flashing

  • OTA updates

  • Serial Monitor

Visual Logics

A major part of the project is Logics, a visual automation editor.

Instead of manually writing the underlying firmware logic, workflows can be built graphically.

For example:

Temperature → Compare >30°C → Delay → Fan ON

or:

Battery Voltage → <11.8V → MQTT Publish

Logics currently includes events, comparisons, IF, AND/OR/NOT, Gate, Sequence, Branch, Delay, Timer, Repeat, Debounce, Cooldown and peripheral-specific actions.

Connections are typed, so incompatible inputs and outputs cannot simply be connected together.

The Blueprint can also operate in a live view, allowing the execution of the automation and changing values to be observed while the ESP is running.

Mobile-friendly Logic Builder

A full Blueprint canvas becomes quite small on a phone, so I also created a simplified vertical Logic Builder integrated directly into the Android Device Setup Wizard.

Both editors operate on the same underlying graph. A workflow created in the mobile constructor can later be opened in the full Blueprint editor and vice versa.

Home Assistant / MQTT

MQTT is one of the important use cases for the project.

Automations can use MQTT connectivity and publish messages containing live device values.

For example:

Battery Voltage → Compare → MQTT Publish

can generate something like:

Battery voltage: 11.7 V

My longer-term goal is to make creating custom ESP devices for Home Assistant increasingly high-level: describe the hardware and desired behavior visually while ELMA-IoT handles more of the firmware implementation underneath.

Current status

The current Android release is ELMA-IoT v1.0.15 and the project is in Google Play Closed Alpha testing.

I’m particularly interested in testing with different:

  • Android devices

  • ESP boards

  • sensors/peripherals

  • USB OTG configurations

  • OTA environments

  • MQTT/Home Assistant setups

  • real-world automation scenarios

If anyone here would like to participate in the Closed Alpha, please send me a private message with the email address of the Google account you use with Google Play.

Please don’t post your email publicly in the topic.

I’ll add the account to the Closed Testing list and send you the Google Play installation link.

Feedback, bug reports and suggestions are very welcome. A significant number of improvements in recent releases have already come directly from Alpha tester feedback.

Thanks, and I’d be very interested to hear what kinds of ESP/Home Assistant devices you would try building with something like this.

ELMA-IoT update: v1.0.19

Hi everyone! Since my original post about v1.0.15, I’ve focused on making the Android build and flashing process more reliable.

  • OTA updates: Fixed a case where an update succeeded but the app then reported an “Unsupported OTA endpoint” error while applying Logics. The app now checks the device’s settings after the update.
  • USB flashing: Improved verification when an ESP reboots immediately after receiving its configuration.
  • On-phone compilation: Improved recovery from temporary Android memory pressure. Compilation errors now stay visible instead of triggering a misleading fallback build.
  • Firmware size: Reduced the space used by unused device illustrations and translations. The app also reports the exact image size and overage when firmware exceeds a board’s OTA partition.
  • Audio: Improved radio startup and playback, including short HTTP clips and HLS streams, while keeping Logics responsive.

v1.0.19 is prepared as the next Google Play closed-testing build. If you’d like to help test it, please send me a private message with the Google account email you use for Play—please don’t post it publicly. I’d especially welcome reports from different ESP boards, phones, USB OTG setups, and OTA environments.

Thanks to everyone who has tested and shared feedback so far!