Why ESPHome
Most Latent solutions are ESPHome configs: you describe the device in YAML — pins, sensors, WiFi — and ESPHome compiles real C++ firmware from it. No programming needed to start, and the configs remain readable years later.
Install
ESPHome is a Python tool. Python 3.11 is the well-trodden path:
python3 -m venv ~/esphome-env
source ~/esphome-env/bin/activate
pip install esphome
esphome version
Use a virtual environment (as above) so ESPHome never fights your other Python tools.
The three commands you will actually use
esphome run config.yaml # compile + flash + show logs (the main one)
esphome logs config.yaml # just watch a running device's logs
esphome compile config.yaml # build without flashing
secrets.yaml
Configs reference credentials like !secret wifi_ssid. Next to each config, keep a secrets.yaml:
wifi_ssid: "MyNetwork"
wifi_password: "correct horse battery staple"
Never share secrets.yaml. When you publish a config on Latent, the !secret references stay in — that is exactly the point: configs are shareable, secrets are not.
USB drivers
Modern S3 boards use native USB and need no driver on macOS/Linux. On Windows, if no COM port appears, install the CP210x or CH340 driver depending on the board's USB chip.