mcu-lvgl (CYD 4.3"):
- normalized: rpi_dpi_rgb -> mipi_rgb (ESP32-8048S050 pins/timing, pclk
12.5 MHz), GT911 touch added, platformio_options and default CPU
frequency dropped, demo meters and duplicate uptime sensors removed
- pages: clock, status (logo, WiFi, IPv6 first, HA, version, uptime);
status page shown until Home Assistant connects
- same navigation bar and theme as mcu-lvgl-trainer
mcu-lvgl-trainer:
- status lines colored like on the other displays (connected green,
waiting orange, details gray), stacked in a flex column
- stopwatch format warning fixed
Same boot screen as on the other displays: "Made for ESPHome" logo,
name, WiFi with signal, IPv6 addresses first (link-local skipped),
Home Assistant state, ESPHome version and uptime.
- common/wifi.yaml: the network gets id wifi_iot, so devices can
override it with '!extend wifi_iot'
- common/ipv6_only.yaml: add-on package next to any common package;
switches to the IPv6-only SSID, wifi ipv6_only (SLAAC, no DHCPv4,
esphome/esphome#19750 as external component until merged) and
min_ipv6_addr_count: 1
- mcu-lvgl-trainer, mcu-nspanel-dev, mcu-rfid-reader, mcu-stackchan,
mcu-tft moved to the IPv6-only network
Inactive display dim follows the sun (5 % by day, off after dusk at
-6 degrees) and stays at 5 % while light.office_j_lights is on.
Re-applied on time sync, at dawn/dusk and when the lights change.
- touch: drop calibration/transform, the driver defaults to the native
320x480 panel and LVGL rotates touch points itself (taps were rotated
by 90 degrees)
- pages: clock (default), basement lights with brightness and color
temperature for the exercise room (sliders hidden while it is off),
training start/stop, fan off/50-100 %, stopwatch, status screen with
"Made for ESPHome" logo and IPv6 first
- light attributes read as text, 'None' while off is skipped
- unused fonts, colors and leftovers removed; ext_uart kept for a
future ANT+ bridge
- status screen logo replaced by the official "Made for ESPHome" badge,
the plain ESPHome logo is not meant for third-party devices
- status screen shows one global IPv6 and one IPv4 address (link-local
skipped) instead of the IPv4 sensor value
Rewrite of the old config on the core ESPHome components (it8951, gt911,
bm8563, sht3xd):
- USB: always on, forecast screen redrawn every 15 min, forecast
refreshed every hour and when Home Assistant connects
- battery: BM8563 timer wakes the board every 15 min (off 1:00-5:00),
it draws the stored forecast and cuts power; WiFi only when the
forecast is older than 6 h
- mode detected by trying to power off; battery voltage drop on USB
triggers the battery cycle
- hourly forecast via weather.get_forecasts, 48 h kept in the FM24C02
EEPROM (include/m5paper_weather.h)
- OTA image confirmed before power-off, battery wake-ups are shorter
than boot_is_good_after
- status screen with "Made for ESPHome" logo, IPv6 addresses first
Move the homeassistant time platform (id ha_time) into all common
packages. Devices with custom triggers now use '!extend ha_time';
plain duplicate time blocks are removed. mcu-lvgl's unused time_comp
is unified to ha_time.
- Winamp style spectrum analyzer instead of the face while music plays,
using audio_spectrum from randybb/esphome-components
- head touch: tap starts the assistant, stroking shows an in-love face;
SI12T sensitivity raised so the pads actually trigger
- battery (AXP2101) and wifi indicators, ear icon while listening
Voice assistant satellite with animated face on the CoreS3 display:
- power rails, IO expander resets and servo power as in the M5 BSP
- mic and speaker share one I2S bus, so the mic is released before playback
- AW88298 volume limited to the audible range (0.5-1.0)
- partial display redraws, status screen until Home Assistant connects
- battery and wifi indicators, listening icon
- camera converted to JPEG on demand, no periodic frames
Switch all NSPanels from the MQTT + AppDaemon based
esphome-nspanel-lovelace-ui to the native component
(randybb/esphome-nspanel-lovelace-native, ref: devices).
Cards and screensaver are now configured directly in ESPHome,
removing the dependency on MQTT and AppDaemon.
qspi_dbi is deprecated in favor of mipi_spi. Also fixes
mcu-lvgl-trainer's LVGL rotation (must be set on the lvgl component,
not the display, when LVGL is in use) and its deprecated
publish_initial_state -> trigger_on_initial_state. brightness is
dropped since mipi_spi only supports it for AMOLED panels and both
devices already control backlight separately.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
ESPHome renamed the esp32_rmt_led_strip platform's rgb_order option to
channel_colors; update the remaining devices using it.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The i2s_audio media_player platform was removed; rebuild the audio
pipeline like mcu-echo.yaml with an i2s_audio speaker feeding a
mixer, so media playback, TTS announcements, and rtttl beeps all
share the one physical DAC output without conflicting. Also uses
format: NONE instead of the deprecated codec_support_enabled.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The single on_multi_click FSM mixed an unbounded "at least 1500ms"
pattern with two bounded blink patterns, which made Open detection
unreliable. Split into two binary_sensor entries sharing the same
pin: a filter-based one for steady Open/Closed, and a dedicated
on_multi_click for the Opening/Closing blink patterns.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
register_count is derived from value_type now; drop the now-redundant
register_count: 1 on the temp/humidity sensors, and replace the
Solar Pressure sensor's register_count: 2 (its device always returns
2 registers per read) with a hidden padding sensor on the next
register using reuse_previous_range: true, per the new
modbus_controller range-grouping mechanism.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
ili9xxx is being phased out in favor of the unified mipi_spi driver;
model TFT 2.4 maps to the ILI9341 chip it was already using.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adds a UART-based Modbus link plus scripts to toggle channel 1 on the
n4dig08 relay module, and calls relay_module.setup() before each
irrigation switch action.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Move rx/tx off the shared gdo0 pin (21) onto dedicated pins, drop the
now-unneeded allow_other_uses/gdo0_pin workarounds, and align tx/rx
frequency to 433.92MHz.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Reflects what the device actually controls; renames the entity/id
(blower_auto -> aerator_auto) and display names accordingly.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
ESPHome renamed the esp32_rmt_led_strip platform's rgb_order option to
channel_colors; update all devices using it.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
ESPHome renamed the api component's services/service keys to
actions/action; update all devices using the old names.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
It's generated/local state from ESPHome Device Builder that changes
constantly and doesn't belong in version control.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>