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 .zen files
  • 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

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