IoT work spans several layers: simulated boards, flashed firmware, low-power radio networks, MQTT messaging, circuit simulation, and PCB generation.
This page is a map of the tools already covered on FOSS Engineer and where each one fits.
The Short Version
| Tool | Best For | Layer |
|---|---|---|
| Velxio | Learning and testing Arduino-style firmware in the browser | Embedded simulation |
| ESPHome | Flashing ESP8266/ESP32 devices with YAML-defined firmware | Device firmware |
| Zigbee2MQTT | Bridging off-the-shelf Zigbee devices into MQTT | Smart home radio bridge |
| PySpice | Simulating analog circuits from Python | Circuit simulation |
| pcb / Zener | Describing PCB designs as code and generating KiCad projects | PCB workflow |
How They Fit Together
Circuit idea
-> PySpice for electrical behavior
-> pcb / Zener for repeatable board design
-> Velxio for firmware learning and simulated boards
-> ESPHome for real ESP32/ESP8266 devices
-> Zigbee2MQTT for vendor Zigbee sensors and actuators
-> MQTT / Home Assistant / scripts for automation
Not every project needs every layer. A battery temperature sensor may only need Zigbee2MQTT. A custom relay may only need ESPHome. A custom PCB project may start with PySpice, move through Zener, then end with ESPHome or hand-written firmware.
Velxio
Use Velxio when you want to learn embedded systems or test Arduino-style logic without buying hardware first.
It is useful for:
- trying LED, button, display, and sensor examples in a browser
- teaching Arduino and microcontroller basics
- testing simple firmware ideas before moving to a physical board
- exploring ESP32, RP2040, AVR, and RISC-V style boards in a simulated environment
Useful links:
ESPHome
Use ESPHome when you have an ESP8266 or ESP32 board and want to turn it into a maintainable smart-home device.
It is useful for:
- custom sensors
- relays and switches
- Bluetooth proxies
- displays and status panels
- Wi-Fi-connected devices that integrate with Home Assistant
ESPHome is firmware management. You define the device in YAML, flash the board, then update it over the network.
Useful links:
Zigbee2MQTT
Use Zigbee2MQTT when you want off-the-shelf Zigbee devices without vendor hubs or vendor clouds.
It is useful for:
- Zigbee temperature, humidity, motion, door, and button sensors
- Zigbee plugs, bulbs, switches, and blinds
- local MQTT-based smart-home integration
- mixing devices from different Zigbee brands on one coordinator
Zigbee devices do not speak MQTT directly. The USB or network coordinator speaks Zigbee radio, and Zigbee2MQTT translates device state into MQTT topics.
Useful links:
PySpice
Use PySpice when the question is electrical behavior: voltages, currents, sweeps, transients, and circuit response.
It is useful for:
- voltage dividers and analog front ends
- RC filters and transient behavior
- scripted SPICE experiments
- reproducible circuit notebooks
- comparing simulator outputs in Python
PySpice is not a web app. It is a Python workflow layer around external SPICE engines such as Ngspice or Xyce.
Useful links:
pcb and Zener
Use pcb and Zener when the question is board definition and manufacturing workflow.
It is useful for:
- describing PCB designs in code-like
.zenfiles - generating KiCad projects
- validating board-level design rules
- producing repeatable BOM and manufacturing artifacts
- keeping hardware design closer to source control workflows
PySpice and Zener solve different problems. PySpice helps evaluate circuit behavior. Zener helps define a PCB workflow that can become a KiCad board.
Useful link:
Choosing a Starting Point
| If You Want To… | Start With |
|---|---|
| Learn embedded systems without hardware | Velxio |
| Build a custom ESP32/ESP8266 smart-home node | ESPHome |
| Use commercial Zigbee sensors locally | Zigbee2MQTT |
| Simulate an analog circuit from Python | PySpice |
| Generate KiCad board projects from code | pcb / Zener |
Related Smart-Home Stack
For a practical local IoT stack, these tools often connect through Home Assistant and MQTT:
- Home Assistant for dashboards, automations, and device orchestration
- EMQX for a dedicated MQTT broker
- eKuiper for stream processing at the edge
Comments