Autumn Goodness from Apollo Automation

ESPHome Starter Kit and Apollo Cast-1

No, this is not an ad.. I was just grasping straws for a title 🙂 This morning a somewhat unexpected package arrived for me at the local tobacconist. Lots of bits and pieces from Apollo Automation – an American company I stumbled upon back in 2024 just as I was getting fanatical about LD2410 radar modules.

They have a number of devices they make based on that and similar presence-sensing chips – and to date aside from custom-3d-printed cases which are good but which never look quite as good as mass-production cases, I have the say I think their Air-1, MTR-1 and Apollo R Pro-1 devices are among the most exciting sensing devices I’ve ever come across. I’ve a shed-load of reviews including one on a really neat Christmas tree toy they sent me back in 2025. They are also great at support.

I said this wasn’t an ad but… I know… but I really like these guys. Which brings me to my next point – how come I received here in sunny Spain, without any issues, any DHL-WORLD-POLICE notices or unbelievably OTT Fedex emails, this package marked “Observaciones – Free Circulation within EU” from a USA company while anything that comes from China is treated as suspected terrorism?

I could go on endlessly but I won’t for fear of losing you – to the point… I received today a neat package of bits (above) including an ESPHome Starter Kit, CAST-1, Breakout Board and 3.5mm audio/aux cable from Apollo Automation. As I start to write this, I have no clue about any of this stuff… but read on… it is fair to say that the last thing I NEED after my recent blogging work on ESPHome is an ESPHome starter kit – but hey – why not. Great excuse to write about basics and discover any holes in my knowledge.

I was wondering what that large board on the left above was all about when I just happened to turn it over.

ESPHOME Starter Kit by Apollo Automation

It turns out it’s not one board but several, including one with a bunch of pretty RGB lights around the outside, reminiscent of the wonderful Christmas tree RGB LED add-on that Apollo sent to me in 2025. Okay, well, anything with coloured lights on it, I’m up for, so I’ll rip this apart and show you the individual bits.

The large board has 10 RGB (ws2812 serial) LEDs on it, a buzzer, and a connector. There’s the LED and buzzer modules, there’s a board with nothing but two connectors, then a board with a button + connector and an AHT module, which is I2C at address 0x38. This has a connector and an AHT chip on it, and precious little else. Supplied with the kit are three leads, one of which is apparently a spare, to connect the various pieces together.

The heart of all of this is the last board, an ESP32-C6 Mini 1 with a USB connector, a couple of buttons, and three general connectors on it, which will attach to the rest. I’m guessing all of this because, as usual, I’ll leave the instructions as a last resort, but I haven’t used an ESP C6 yet, so this could be interesting. Anyway, it’s all documented on a link which is on the main board: ohf.2/esphome/starterkit. I’m not sure what the OHF.2 was all about, but I’ve included the link to the starter kit. The link above describes that AHT module, which is, as you might expect, temperature and humidity.

Rather than blather on for ages here, I’m going to point you to the relevant pages. Apollo have done a cracking job of explaining all of this. Meanwhile, I’m dying to try out that LED/buzzer module as I’m something of a sucker for flashing lights, the first thing I ever did commercially (when I was working on what used to be called a video jukebox) was to create the wall-mount control unit. My use of LEDs in the pub-wall-mounted remote grabbed more interest than all the electronics and technology combined. Everybody loved the flashing lights.

ESPHOME Starter Kit by Apollo Automation

So, I’m sitting here putting together the ESP32-C6 and the Light/buzzer – I THINK it’s impossible to assemble this the wrong way round. Time will tell.

Done – all I need now is a piece of code to flash the lights… could it be that easy? See in that link at the end where it says “next – first steps”…

Nope – I failed – but hey – this is the age of chatGPT – so off I went to chatGPT and simply asked “Where in the ESPHome website is the example using the Apollo ESPHOME Starter Kit to flash the Apollo lights on the esp32-C6?”

AND… the Apollo Starter Kit page – and so then back to my ESPHome installation inside Home Assistant (as in “all roads lead to Home Assistant”).

New Project – you get a choice of an empty ESPHome project or straight to – as one of many options – the Apollo Starter kit.

Hard to go wrong, really. About the only way you could go wrong is to not understand how to find a Spare USB port to connect to initially…

ESPHOME Starter Kit by Apollo Automation

SO I’m going to blindly hit SELECT on that starter kit… and plug the ESP32 board into my PC USB spare port using the Windows key followed by DEVICE Manager to find which port I’ve just added. COM29 as it happens.

I’ve done NOTHING and there it is – making the assumption that I have a secrets page in ESPHome which I do – for my WiFi. For anyone new to ESPHome, if you have that running wihin Home Assistant, don’t confuse the HA secrets file and teh SPHome secrets file.

The setup is also assuming that I’m paranoid and want API encryption – so the section that starts API: is coming out – I’ll just leave in the one line “api:”

And there it is – the starter kit with a basic start…

ESPHOME Starter Kit by Apollo Automation
ESPHOME Starter Kit by Apollo Automation

At this point I’ll hit SAVE then INSTALL – PLUG INTO THIS COMPUTER – which isn’t my Home Assistant machine – it’s the PC who’s browser talks to Home Assistant and who’s serial port I’m using for the Apollo board. Wish me luck….

COMPILING FIRMWARE is utterly automated and to make the basic ESPHOME generic setup for this board takes maybe 2 minutes on my (average) mini-PC. Now it asks me to “Open the USB Flasher” and will want to know which COM port I found in DEVICE Manager…

I did that – and had what seemed like a working board but who could tell – at least now there’s no need for the serial connection – updates by WiFi from now on – so I went back to the configuration and added the RGB LED + buzzer module just by dropping it in… and with USB disconnected, I connected up the LED board using one of the supplied ribbon cables to one of the two connectors on the ESP board (either connector will do) – plugged the board in – ran INSTALL (“over the network” option) in ESPHome – and a couple of minutes later…

ESPHOME Starter Kit by Apollo Automation

I spotted on the WebUI that appeared at the board address – RGB LEDS – I hit the ON button.. and…

ESPHOME Starter Kit by Apollo Automation

So next I checked out the white block that looked like it might be a colour control…. note the change of lead – first time the board crashed – it occurred to me that maybe those 10 RGB LEDs were too much for my no-longer-needed PC serial port and so moved to a standard USB charger… it turns out that was not the case…

ESPHOME Starter Kit by Apollo Automation

Anyway – colour control and now (below) – the nice plastic stand they provided with the starter kit…

ESPHOME Starter Kit by Apollo Automation

and now – back to the ESPHome PROJECT PAGE – SHOW ADVANCED SETTINGS – you know what’s coming next…

ESPHOME Starter Kit by Apollo Automation

I want a rainbow…

ESPHOME Starter Kit by Apollo Automation

It can’t be THAT easy – really – all I did was select addressable rainbow from the list and ESPHome dropped another line into the code…

I started another compile.. as I type this, the LEDS have gone dead… (off by default – of course – and the code is uploading) – GOOD GRIEF – there’s now a dropdown box in the WebUI – what does it contain?

ESPHOME Starter Kit by Apollo Automation

WHEEE – I LOVE IT. My favourite – RAINBOW. I guess I could add as many items from the available selection to the dropbox as I want – just by dropping them in- there’s even a WLED option but that’s more than a 2-second story…

Enough – this is so much fun for so little work… but pub calls…

Learning Something New

I wasn’t expecting this, but I did learn something new at the end of all of this. After I ran my little RGB light for a while, the lights went dead. I also noticed that the WebUI had gone dead (not necessarily at the same time)… I could not access it.

I should clarify: in this simple example, as well as powering the RGB LEDs, there is code to provide a WebUI at the IP address of the device when it’s running. This can be accessed at the touch of a button in the ESPHome controls.

All very good – but I could not get any of this to work reliably and started bashing out an email to Apollo Automation. In the end there were two issues – and neither were Apollo’s fault. The LEDs dying… it turns out the board can reboot under certain circumstances – and of course defaults at that point to no LEDs on. The second issue is it seems down to the ESP32-C6 – there are outstanding documented cases of issues with it’s mDNS failing after a while.

Cutting a long story short: I solved the former by simply making the LED status non-volatile. The second remains an issue – but I found that by accessing the webUI by it’s IP address instead of the mDNS name, reliability returns.

The board has now been running perfectly for 14+ hours overnight. As for reboots, given where I live, power brownouts are entirely possible…. but the code you see below is why the board has stayed up and retained LED status overnight – this code is the TOTAL required for the LED rainbow demo. I hope someone finds this useful. If I WERE a true beginner I’d have been in a blind panic by now 🙂

Note I’ve not actually done anything with the buzzer at this point so the last 2 sections could be missed out. As for the AP: section under WiFi, I just left that at the project defaults.

# Board: ESPHome Starter Kit By Apollo (Apollo Automation)
# Modified by PS to work around reliability issues

esphome:
  name: esphome-starter-kit
  friendly_name: ESPHOME Starter Kit

esp32:
  variant: esp32c6
  flash_size: 8MB
  framework:
    type: esp-idf

logger:

api:
  reboot_timeout: 0s

ota:
  - platform: esphome

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  power_save_mode: none
  ap:
    ssid: ESPHOME Starter Fallback Hotspot
    password: "EdlGx7TDMLdW"

captive_portal:

switch:
  - platform: gpio
    name: Accessory Power
    id: accessory_power
    internal: true
    pin: 4
    restore_mode: ALWAYS_ON
    setup_priority: 2000

web_server:
  version: 3

light:
  - platform: esp32_rmt_led_strip
    name: RGB LEDs
    id: rgb_leds
    pin: 14
    channel_colors: GRB
    chipset: WS2812
    num_leds: 10
    rmt_symbols: 48
    effects:
      - addressable_rainbow:
          name: Rainbow
      - addressable_twinkle:
          name: Twinkle
      - addressable_fireworks:
          name: Fireworks
      - random:
          name: Random
      - pulse:
          name: Pulse

output:
  - platform: ledc
    id: buzzer_output
    pin: 18

rtttl:
  - id: rtttl_player
    output: buzzer_output

I was going to leave this alone but sa the basic code blocks were already there I wanted to add the ability for a cheerful beep when the RGB LEDs came on and the opposite when they turned off. I thought – while I’m on let’s improve that WebUI and use the supplied temperature/humidity sensor to send values back to the webUI and to Home Assistant – here’s the result:

ESPHOME Starter Kit by Apollo Automation

And the modified code…

# Board: ESPHome Starter Kit By Apollo (Apollo Automation)
# Modified by PS to work around reliability issues

esphome:
  name: esphome-starter-kit
  friendly_name: ESPHOME Starter Kit

esp32:
  variant: esp32c6
  flash_size: 8MB
  framework:
    type: esp-idf

logger:

api:
  reboot_timeout: 0s

ota:
  - platform: esphome

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  power_save_mode: none
  ap:
    ssid: ESPHOME Starter Fallback Hotspot
    password: "EdlGx7TDMLdW"

captive_portal:

switch:
  - platform: gpio
    name: Accessory Power
    id: accessory_power
    internal: true
    pin: 4
    restore_mode: ALWAYS_ON
    setup_priority: 2000

web_server:
  version: 3
  sorting_groups:
    - id: Controls
      name: "Controls"
      sorting_weight: 10
    - id: Sensors
      name: "Sensors"
      sorting_weight: 20

light:
  - platform: esp32_rmt_led_strip
    name: RGB LEDs
    id: rgb_leds
    pin: 14
    channel_colors: GRB
    chipset: WS2812
    num_leds: 10
    rmt_symbols: 48
    web_server:
      sorting_group_id: Controls
      sorting_weight: 1

    on_turn_on:
      - rtttl.play: "on:d=32,o=6,b=500:8c,8g"
    
    on_turn_off:
      - rtttl.play: "off:d=32,o=6,b=500:8g,8c"
    
    effects:
      - addressable_rainbow:
          name: Rainbow
      - addressable_twinkle:
          name: Twinkle
      - addressable_fireworks:
          name: Fireworks
      - random:
          name: Random
      - pulse:
          name: Pulse

output:
  - platform: ledc
    id: buzzer_output
    pin: 18

rtttl:
  - id: rtttl_player
    output: buzzer_output

i2c:
  - id: i2c_bus
    scl: 0
    sda: 1

sensor:
  - platform: aht10
    id: aht20
    variant: AHT20
    humidity:
      name: Humidity
      id: starter_aht20_humidity
      web_server:
        sorting_group_id: Sensors
        sorting_weight: 2
    temperature:
      name: Temperature
      id: starter_aht20_temperature
      web_server:
        sorting_group_id: Sensors
        sorting_weight: 1

Leave a Reply

Your email address will not be published. Required fields are marked *

Leave the field below empty!

Are you human? Please solve:Captcha


The maximum upload file size: 512 MB. You can upload: image, audio, video, document, spreadsheet, interactive, text, archive, code, other. Links to YouTube, Facebook, Twitter and other services inserted in the comment text will be automatically embedded. Drop file here