Compare commits

..
13 Commits
Author SHA1 Message Date
randy 7374ddf4d6 Drop the speaker override, esphome#19862 is merged
CI / ESPHome config validation (push) Failing after 37s
CI / YAML lint (push) Failing after 32s
2026-09-30 12:35:53 +02:00
randy a005b940b2 rfid-reader: take the NDEF records by reference
get_records() now returns a StaticVector of unique_ptr, which can't be copied.
2026-09-30 12:15:49 +02:00
randy 46cf3b1fe8 OTA: require encryption with the api key, plaintext + password only for migration
allow_plaintext_upload lets the uploader give a device that doesn't encrypt
yet its one migration install. Remove it together with the password once
every device has been updated (the uploader says so).
2026-09-30 12:05:39 +02:00
randy bb76912023 Set framework.advanced.flash_chip on ESP32 devices to save IRAM
Values come from ESPHome's own hint in the log of each online device
("Set flash_chip: ... to save IRAM"). Devices that were off got the value of
an identical board (ESP32-PICO-D4 ATOM/Stamp Pico: gd, JC3248W535: generic,
POW Elite: gd), marked as not read from the device.
2026-09-30 11:57:30 +02:00
randy 831d88689d CI: Node 24 actions, pip on PEP 668 runner images, drop committed build cache
- actions/checkout@v7 and tj-actions/changed-files@v47 (Node 20 is deprecated)
- PIP_BREAK_SYSTEM_PACKAGES for Gitea's runner image (externally-managed Python)
- untrack common/.esphome (a gitlink with no submodule mapping) and ignore
  .esphome/ in every directory
2026-09-30 11:21:55 +02:00
randy 170fd69274 Fix yamllint errors: trailing spaces, blank lines and newline at end of file
Allow aligned values after a colon (the bedroom lamp presets).
2026-09-30 11:08:22 +02:00
randy 89763817f6 bedroom lamps: use the xiaomi_bslamp2 fork with the ESPHome 2026.10 light fix 2026-09-30 10:53:16 +02:00
randy 03ca4e98b5 status_led: show component errors only on a dedicated status LED (show_errors)
The ATOM LED gets them; displays and lights that are also normal lights don't,
so a failed component can't take them over.
2026-09-30 10:12:06 +02:00
randy fb66547dd1 status_led: don't show component errors, only network, API and OTA 2026-09-30 09:00:58 +02:00
randy 725c400de6 atoms3: full-screen status, IPv6-only, animation as image platform, fix colours
The status (common/status_led.yaml) drives a virtual RGB light that fills
the display; the display needs little-endian RGB565 (colours were swapped).
2026-09-30 08:58:16 +02:00
randy 7517c301ac Status LED on every ATOM device (except the vehicle beacons)
common/status_led_atom.yaml puts common/status_led.yaml on the ATOM Lite's
own RGB LED (G27, 64 RMT symbols to leave room for IR/RF). echo-1 uses its
existing LED light.
2026-09-30 08:58:16 +02:00
randy 422b334582 air-office-r: LEDs back on (the stick had lost its GND), status on the NEO stick 2026-09-30 08:29:19 +02:00
randy 2f5e438424 Move remaining NSPanel's to IPv6 Only network 2026-09-30 08:08:12 +02:00
53 changed files with 249 additions and 105 deletions

No files matched your search

+7 -4
View File
@@ -10,11 +10,11 @@ jobs:
name: YAML lint name: YAML lint
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v7
- name: Get changed YAML files - name: Get changed YAML files
id: changed id: changed
uses: tj-actions/changed-files@v46 uses: tj-actions/changed-files@v47
with: with:
files: "**/*.yaml" files: "**/*.yaml"
@@ -28,16 +28,19 @@ jobs:
name: ESPHome config validation name: ESPHome config validation
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v7
- name: Get changed device configs - name: Get changed device configs
id: changed id: changed
uses: tj-actions/changed-files@v46 uses: tj-actions/changed-files@v47
with: with:
files: "mcu-*.yaml" files: "mcu-*.yaml"
- name: Install ESPHome (dev) - name: Install ESPHome (dev)
if: steps.changed.outputs.any_changed == 'true' if: steps.changed.outputs.any_changed == 'true'
# Gitea's runner image marks the system Python as externally managed (PEP 668)
env:
PIP_BREAK_SYSTEM_PACKAGES: "1"
run: pip install git+https://github.com/esphome/esphome.git@dev run: pip install git+https://github.com/esphome/esphome.git@dev
- name: Prepare secrets - name: Prepare secrets
+1 -1
View File
@@ -2,7 +2,7 @@
# This is an example and may include too much for your use-case. # This is an example and may include too much for your use-case.
# You can modify this file to suit your needs. # You can modify this file to suit your needs.
/.claude/ /.claude/
/.esphome/ .esphome/
/secrets.yaml /secrets.yaml
/archive/ /archive/
/trash/ /trash/
+4
View File
@@ -25,3 +25,7 @@ rules:
comments: comments:
require-starting-space: false require-starting-space: false
# Aligned values (e.g. the bedroom lamp presets) are intentional
colons:
max-spaces-after: -1
Submodule common/.esphome/external_components/b7dc7eea deleted from 16571e8a90.
+1 -1
View File
@@ -28,4 +28,4 @@ time:
- <<: !include time/homeassistant.yaml - <<: !include time/homeassistant.yaml
network: network:
enable_ipv6: true enable_ipv6: true
+1 -1
View File
@@ -27,4 +27,4 @@ time:
- <<: !include time/homeassistant.yaml - <<: !include time/homeassistant.yaml
network: network:
enable_ipv6: true enable_ipv6: true
+1
View File
@@ -28,6 +28,7 @@ esp32:
framework: framework:
type: esp-idf type: esp-idf
advanced: advanced:
flash_chip: generic
minimum_chip_revision: 3.0 minimum_chip_revision: 3.0
sram1_as_iram: true sram1_as_iram: true
+4
View File
@@ -2,3 +2,7 @@
ota: ota:
- platform: esphome - platform: esphome
password: !secret ota_password password: !secret ota_password
# migration to encrypted OTA (api key): once every device encrypts,
# remove allow_plaintext_upload together with the password
encryption:
allow_plaintext_upload: true
+4
View File
@@ -3,4 +3,8 @@ ota:
- platform: esphome - platform: esphome
id: ota_esphome id: ota_esphome
password: !secret ota_password password: !secret ota_password
# migration to encrypted OTA (api key): once every device encrypts,
# remove allow_plaintext_upload together with the password
encryption:
allow_plaintext_upload: true
allow_partition_access: true allow_partition_access: true
-1
View File
@@ -7,4 +7,3 @@ accuracy_decimals: 2
update_interval: 60s update_interval: 60s
filters: filters:
- lambda: return x / 86400; - lambda: return x / 86400;
+5 -4
View File
@@ -2,7 +2,7 @@
# Status on a visible RGB light, which stays a normal light otherwise: # Status on a visible RGB light, which stays a normal light otherwise:
# network down red, slow blink # network down red, slow blink
# no API client (HA) orange, slow blink # no API client (HA) orange, slow blink
# component error purple, steady # component error purple, steady (only with show_errors: "true", for a dedicated status LED)
# OTA blue, fast blink; green when done, 3 red blinks on error # OTA blue, fast blink; green when done, 3 red blinks on error
# back to normal green for 1 s, then the light goes back to how it was # back to normal green for 1 s, then the light goes back to how it was
# packages: # packages:
@@ -13,6 +13,7 @@
# Needs the ota id ota_esphome (common/ota_esp32.yaml). # Needs the ota id ota_esphome (common/ota_esp32.yaml).
defaults: defaults:
brightness: "0.3" brightness: "0.3"
show_errors: "false" # a failed component would take over a display or a shared light for good
globals: globals:
- id: status_led_active - id: status_led_active
@@ -72,14 +73,14 @@ interval:
static uint8_t tick = 0; static uint8_t tick = 0;
tick++; tick++;
bool slow = (tick / 2) % 2 == 0; // 1 s on, 1 s off bool slow = (tick / 2) % 2 == 0; // 1 s on, 1 s off
bool problem = !network::is_connected() || !api::global_api_server->is_connected() || bool error = ${show_errors} && (App.get_app_state() & STATUS_LED_ERROR);
(App.get_app_state() & STATUS_LED_ERROR); bool problem = !network::is_connected() || !api::global_api_server->is_connected() || error;
if (problem) id(status_led_restore)->stop(); if (problem) id(status_led_restore)->stop();
if (!network::is_connected()) { if (!network::is_connected()) {
id(status_led_show)->execute(1.0f, 0.0f, 0.0f, slow); id(status_led_show)->execute(1.0f, 0.0f, 0.0f, slow);
} else if (!api::global_api_server->is_connected()) { } else if (!api::global_api_server->is_connected()) {
id(status_led_show)->execute(1.0f, 0.4f, 0.0f, slow); id(status_led_show)->execute(1.0f, 0.4f, 0.0f, slow);
} else if (App.get_app_state() & STATUS_LED_ERROR) { } else if (error) {
id(status_led_show)->execute(0.6f, 0.0f, 1.0f, true); id(status_led_show)->execute(0.6f, 0.0f, 1.0f, true);
} else if (id(status_led_active) && !id(status_led_restore)->is_running()) { } else if (id(status_led_active) && !id(status_led_restore)->is_running()) {
id(status_led_restore)->execute(true); id(status_led_restore)->execute(true);
+19
View File
@@ -0,0 +1,19 @@
---
# Status LED on the M5Stack ATOM Lite's own RGB LED (G27), see common/status_led.yaml
packages:
status_led: !include
file: status_led.yaml
vars:
light_id: atom_led
show_errors: "true" # dedicated status LED
light:
- platform: esp32_rmt_led_strip
id: atom_led
internal: true
pin: 27
num_leds: 1
rmt_symbols: 64 # 1 LED is 24 bits; leave RMT memory for remote_transmitter/receiver
chipset: ws2812
channel_colors: GRB
restore_mode: ALWAYS_OFF
+1 -1
View File
@@ -5,4 +5,4 @@ id: git_ref_sensor
long: true long: true
all: true all: true
abbrev: 16 abbrev: 16
dirty: "-dirty" dirty: "-dirty"
+2
View File
@@ -2,6 +2,8 @@ esp32:
variant: esp32 variant: esp32
toolchain: esp-idf toolchain: esp-idf
framework: framework:
advanced:
flash_chip: gd # ESP32-PICO-D4, like every other ATOM Lite
type: esp-idf type: esp-idf
external_components: external_components:
+1 -1
View File
@@ -7,4 +7,4 @@ wifi:
# enable_rrm: true # enable_rrm: true
ap: ap:
ssid: TEST ssid: TEST
password: testtest password: testtest
+59 -54
View File
@@ -3,7 +3,7 @@
# Pinout: # Pinout:
# GPIO21 PM1006 UART -> particle_uart (uart tx_pin) # GPIO21 PM1006 UART -> particle_uart (uart tx_pin)
# GPIO22 PM1006 UART -> particle_uart (uart rx_pin) # GPIO22 PM1006 UART -> particle_uart (uart rx_pin)
# GPIO25 TZT 8-bit WS2812 5050 stick (8 LEDs, 7 visible outside; LEDs 1-7 broken), disabled # GPIO25 TZT 8-bit WS2812 5050 stick (8 LEDs, 7 visible outside) -> NEO [neo] (light esp32_rmt_led_strip), also status
# GPIO27 Onboard RGB LED (1x WS2812, inside), unused # GPIO27 Onboard RGB LED (1x WS2812, inside), unused
# GPIO32 Grove SDA -> i2c (i2c sda) # GPIO32 Grove SDA -> i2c (i2c sda)
# GPIO33 Grove SCL -> i2c (i2c scl) # GPIO33 Grove SCL -> i2c (i2c scl)
@@ -24,10 +24,16 @@ esp32:
variant: esp32 variant: esp32
toolchain: esp-idf toolchain: esp-idf
framework: framework:
advanced:
flash_chip: gd
type: esp-idf type: esp-idf
packages: packages:
common: !include common/common.yaml common: !include common/common.yaml
status_led: !include
file: common/status_led.yaml
vars:
light_id: neo
i2c: i2c:
# - id: i2c0 # - id: i2c0
@@ -53,59 +59,58 @@ uart:
# number: 39 # number: 39
# inverted: true # inverted: true
# LEDs disabled until the stick is fixed (LEDs after the first one light up randomly) light:
# light: # also the status light (common/status_led.yaml): back to its previous state when all is fine
# # only the first LED of the stick: the rest get garbage (broken DOUT after LED 0) - platform: esp32_rmt_led_strip
# - platform: esp32_rmt_led_strip name: NEO
# name: NEO id: neo
# id: neo channel_colors: GRB
# channel_colors: GRB pin: 25
# pin: 25 num_leds: 7 # 8 on the stick, the 8th one is hidden
# num_leds: 1 chipset: ws2812
# chipset: ws2812 restore_mode: ALWAYS_OFF
# restore_mode: ALWAYS_OFF effects:
# effects: - random:
# - random: - random:
# - random: name: "My Slow Random Effect"
# name: "My Slow Random Effect" transition_length: 30s
# transition_length: 30s update_interval: 30s
# update_interval: 30s - random:
# - random: name: "My Fast Random Effect"
# name: "My Fast Random Effect" transition_length: 4s
# transition_length: 4s update_interval: 5s
# update_interval: 5s - strobe:
# - strobe: - strobe:
# - strobe: name: Strobe Effect With Custom Values
# name: Strobe Effect With Custom Values colors:
# colors: - state: True
# - state: True brightness: 100%
# brightness: 100% red: 100%
# red: 100% green: 90%
# green: 90% blue: 0%
# blue: 0% duration: 500ms
# duration: 500ms - state: False
# - state: False duration: 250ms
# duration: 250ms - state: True
# - state: True brightness: 100%
# brightness: 100% red: 0%
# red: 0% green: 100%
# green: 100% blue: 0%
# blue: 0% duration: 500ms
# duration: 500ms - flicker:
# - flicker: - flicker:
# - flicker: name: Flicker Effect With Custom Values
# name: Flicker Effect With Custom Values alpha: 95%
# alpha: 95% intensity: 1.5%
# intensity: 1.5% - addressable_rainbow:
# - addressable_rainbow: - addressable_rainbow:
# - addressable_rainbow: name: Rainbow Effect With Custom Values
# name: Rainbow Effect With Custom Values speed: 10
# speed: 10 width: 50
# width: 50 - addressable_scan:
# - addressable_scan: - addressable_scan:
# - addressable_scan: name: Scan Effect With Custom Values
# name: Scan Effect With Custom Values move_interval: 100ms
# move_interval: 100ms
sensor: sensor:
# https://blissair.com/what-is-pm-2-5.htm # https://blissair.com/what-is-pm-2-5.htm
+3 -1
View File
@@ -26,6 +26,8 @@ esp32:
flash_size: 8MB flash_size: 8MB
toolchain: esp-idf toolchain: esp-idf
framework: framework:
advanced:
flash_chip: generic
type: esp-idf type: esp-idf
packages: packages:
@@ -40,7 +42,7 @@ api:
then: then:
- rtttl.play: - rtttl.play:
rtttl: !lambda 'return song;' rtttl: !lambda 'return song;'
switch: switch:
- platform: gpio - platform: gpio
id: accessory_power id: accessory_power
+40 -3
View File
@@ -42,6 +42,8 @@ esp32:
flash_size: 8MB flash_size: 8MB
toolchain: esp-idf toolchain: esp-idf
framework: framework:
advanced:
flash_chip: gd
type: esp-idf type: esp-idf
ota: ota:
@@ -52,12 +54,14 @@ pcf8574:
address: 0x21 address: 0x21
pcf8575: true pcf8575: true
animation: image:
- file: "assets/images/blinky.gif" - platform: animation
file: "assets/images/blinky.gif"
id: blinky id: blinky
resize: 128x128 resize: 128x128
type: RGB565 type: RGB565
- file: "assets/images/vault_boy_walking.gif" - platform: animation
file: "assets/images/vault_boy_walking.gif"
id: vaultboy id: vaultboy
resize: 168x121 resize: 168x121
type: RGB565 type: RGB565
@@ -127,6 +131,11 @@ external_components:
packages: packages:
common: !include common/common.yaml common: !include common/common.yaml
ipv6_only: !include common/ipv6_only.yaml
status_led: !include
file: common/status_led.yaml
vars:
light_id: status_frame
# common: !include common/common_wo_debug.yaml # common: !include common/common_wo_debug.yaml
# common: !include common/common_dev.yaml # common: !include common/common_dev.yaml
@@ -230,12 +239,32 @@ output:
- platform: ledc - platform: ledc
pin: 16 pin: 16
id: gpio_tft_backlight id: gpio_tft_backlight
# virtual RGB light for common/status_led.yaml, shown full screen on the display
- platform: template
id: status_frame_r
type: float
write_action: []
- platform: template
id: status_frame_g
type: float
write_action: []
- platform: template
id: status_frame_b
type: float
write_action: []
light: light:
- platform: monochromatic - platform: monochromatic
id: display_tft_backlight id: display_tft_backlight
output: gpio_tft_backlight output: gpio_tft_backlight
restore_mode: ALWAYS_ON restore_mode: ALWAYS_ON
- platform: rgb
id: status_frame
internal: true
red: status_frame_r
green: status_frame_g
blue: status_frame_b
restore_mode: ALWAYS_OFF
switch: switch:
- platform: template - platform: template
@@ -391,6 +420,7 @@ display:
- platform: mipi_spi - platform: mipi_spi
model: ST7789V model: ST7789V
id: display_tft id: display_tft
byte_order: little_endian # colours were byte-swapped (purple showed as green)
dimensions: dimensions:
height: 128 height: 128
width: 128 width: 128
@@ -403,11 +433,18 @@ display:
# eightbitcolor: true # eightbitcolor: true
update_interval: 1s update_interval: 1s
lambda: |- lambda: |-
// status screen (common/status_led.yaml): the whole display in the status colour
auto &sv = id(status_frame)->current_values;
if (sv.is_on()) {
it.fill(Color(sv.get_red() * 255, sv.get_green() * 255, sv.get_blue() * 255));
return;
}
//Ingress shown animation Frame. //Ingress shown animation Frame.
id(blinky).next_frame(); id(blinky).next_frame();
// Draw the animation my_animation at position [x=0,y=0] // Draw the animation my_animation at position [x=0,y=0]
it.image(0, 0, id(blinky), COLOR_ON, COLOR_OFF); it.image(0, 0, id(blinky), COLOR_ON, COLOR_OFF);
// // it.print(0, 0, id(font_default), "Hello World!"); // // it.print(0, 0, id(font_default), "Hello World!");
// // it.strftime(0, 0, id(font_default), TextAlign::TOP_LEFT, "%H:%M", id(ha_time).now()); // // it.strftime(0, 0, id(font_default), TextAlign::TOP_LEFT, "%H:%M", id(ha_time).now());
// it.rectangle(0, 0, it.get_width(), it.get_height(), id(my_blue)); // it.rectangle(0, 0, it.get_width(), it.get_height(), id(my_blue));
+5 -2
View File
@@ -39,18 +39,21 @@ esp32:
sdkconfig_options: sdkconfig_options:
CONFIG_FREERTOS_UNICORE: y CONFIG_FREERTOS_UNICORE: y
advanced: advanced:
flash_chip: generic
ignore_efuse_custom_mac: true ignore_efuse_custom_mac: true
ignore_efuse_mac_crc: true ignore_efuse_mac_crc: true
external_components: external_components:
- source: - source:
type: git type: git
url: https://github.com/mmakaay/esphome-xiaomi_bslamp2 # fork: fix for ESPHome 2026.10 (restore_mode -> restore_state), back to mmakaay once merged
ref: dev url: https://github.com/randybb/esphome-xiaomi_bslamp2
ref: fix-light-restore-state
refresh: 1h refresh: 1h
packages: packages:
common: !include common/common.yaml common: !include common/common.yaml
ipv6_only: !include common/ipv6_only.yaml
# ------------------------------------------------------------------------ # ------------------------------------------------------------------------
# Behavior: default # Behavior: default
+5 -2
View File
@@ -39,18 +39,21 @@ esp32:
sdkconfig_options: sdkconfig_options:
CONFIG_FREERTOS_UNICORE: y CONFIG_FREERTOS_UNICORE: y
advanced: advanced:
flash_chip: generic
ignore_efuse_custom_mac: true ignore_efuse_custom_mac: true
ignore_efuse_mac_crc: true ignore_efuse_mac_crc: true
external_components: external_components:
- source: - source:
type: git type: git
url: https://github.com/mmakaay/esphome-xiaomi_bslamp2 # fork: fix for ESPHome 2026.10 (restore_mode -> restore_state), back to mmakaay once merged
ref: dev url: https://github.com/randybb/esphome-xiaomi_bslamp2
ref: fix-light-restore-state
refresh: 60s refresh: 60s
packages: packages:
common: !include common/common.yaml common: !include common/common.yaml
ipv6_only: !include common/ipv6_only.yaml
# ------------------------------------------------------------------------ # ------------------------------------------------------------------------
# Behavior: default # Behavior: default
+2
View File
@@ -24,6 +24,8 @@ esp32:
variant: esp32 variant: esp32
toolchain: esp-idf toolchain: esp-idf
framework: framework:
advanced:
flash_chip: gd # ESP32-PICO-D4, like the other M5Stamp Pico (not read from the device)
type: esp-idf type: esp-idf
external_components: external_components:
+2
View File
@@ -31,6 +31,8 @@ esp32:
variant: esp32c3 variant: esp32c3
toolchain: esp-idf toolchain: esp-idf
framework: framework:
advanced:
flash_chip: generic
type: esp-idf type: esp-idf
# version: 5.4.2 # version: 5.4.2
# platform_version: 54.03.21 # platform_version: 54.03.21
+2
View File
@@ -24,6 +24,8 @@ esp32:
variant: esp32 variant: esp32
toolchain: esp-idf toolchain: esp-idf
framework: framework:
advanced:
flash_chip: gd # ESP32-PICO-D4, like the other M5Stamp Pico (not read from the device)
type: esp-idf type: esp-idf
external_components: external_components:
+2
View File
@@ -22,6 +22,8 @@ esp32:
variant: esp32 variant: esp32
toolchain: esp-idf toolchain: esp-idf
framework: framework:
advanced:
flash_chip: gd
type: esp-idf type: esp-idf
packages: packages:
+2
View File
@@ -37,6 +37,8 @@ esp32:
variant: esp32 variant: esp32
toolchain: esp-idf toolchain: esp-idf
framework: framework:
advanced:
flash_chip: gd
type: esp-idf type: esp-idf
packages: packages:
+7 -7
View File
@@ -5,7 +5,7 @@
# GPIO22 -> speaker_id (speaker i2s_audio i2s_dout_pin) # GPIO22 -> speaker_id (speaker i2s_audio i2s_dout_pin)
# GPIO23 -> echo_microphone (microphone i2s_audio i2s_din_pin) # GPIO23 -> echo_microphone (microphone i2s_audio i2s_din_pin)
# GPIO26 Grove SDA # GPIO26 Grove SDA
# GPIO27 -> LED (light esp32_rmt_led_strip) # GPIO27 ATOM RGB LED -> LED [neo_buildin] (light esp32_rmt_led_strip), also status
# GPIO32 Grove SCL # GPIO32 Grove SCL
# GPIO33 -> speaker_bus (i2s_audio i2s_lrclk_pin) # GPIO33 -> speaker_bus (i2s_audio i2s_lrclk_pin)
# GPIO39 -> Button (binary_sensor gpio) (inverted) # GPIO39 -> Button (binary_sensor gpio) (inverted)
@@ -25,17 +25,17 @@ esphome:
esp32: esp32:
variant: esp32 variant: esp32
framework: framework:
advanced:
flash_chip: gd
type: esp-idf type: esp-idf
packages: packages:
common: !include common/common.yaml common: !include common/common.yaml
ipv6_only: !include common/ipv6_only.yaml ipv6_only: !include common/ipv6_only.yaml
status_led: !include
external_components: file: common/status_led.yaml
# speaker media player: skip a failed playlist item (esphome#19862), drop once merged vars:
- source: github://randybb/esphome-components light_id: neo_buildin
components: [speaker]
refresh: 1h
api: api:
actions: actions:
+2 -6
View File
@@ -28,6 +28,8 @@ esp32:
variant: esp32 variant: esp32
toolchain: esp-idf toolchain: esp-idf
framework: framework:
advanced:
flash_chip: gd
type: esp-idf type: esp-idf
packages: packages:
@@ -38,12 +40,6 @@ packages:
vars: vars:
light_id: led_light light_id: led_light
external_components:
# speaker media player: skip a failed playlist item (esphome#19862), drop once merged
- source: github://randybb/esphome-components
components: [speaker]
refresh: 1h
api: api:
actions: actions:
# https://github.com/granadaxronos/120-SONG_NOKIA_RTTTL_RINGTONE_PLAYER_FOR_ARDUINO_UNO/blob/master/RTTTL_PLAYER/songs.h # https://github.com/granadaxronos/120-SONG_NOKIA_RTTTL_RINGTONE_PLAYER_FOR_ARDUINO_UNO/blob/master/RTTTL_PLAYER/songs.h
+4 -1
View File
@@ -10,7 +10,7 @@
# GPIO23 RS485 Tx # GPIO23 RS485 Tx
# GPIO25 I2C1 SDA - red -> i2c (i2c sda) # GPIO25 I2C1 SDA - red -> i2c (i2c sda)
# GPIO26 I2C0 SDA - white # GPIO26 I2C0 SDA - white
# GPIO27 NEO 1x # GPIO27 NEO 1x -> atom_led (status LED, common/status_led_atom.yaml)
# GPIO32 I2C0 SCL # GPIO32 I2C0 SCL
# GPIO33 RS485 Rx # GPIO33 RS485 Rx
# GPIO39 BUTTON -> Status Button (binary_sensor gpio) # GPIO39 BUTTON -> Status Button (binary_sensor gpio)
@@ -33,6 +33,8 @@ esp32:
variant: esp32 variant: esp32
toolchain: esp-idf toolchain: esp-idf
framework: framework:
advanced:
flash_chip: gd
type: esp-idf type: esp-idf
external_components: external_components:
@@ -46,6 +48,7 @@ external_components:
packages: packages:
common: !include common/common.yaml common: !include common/common.yaml
ipv6_only: !include common/ipv6_only.yaml ipv6_only: !include common/ipv6_only.yaml
status_led: !include common/status_led_atom.yaml
i2c: i2c:
+4 -1
View File
@@ -10,7 +10,7 @@
# GPIO23 RS485 TX # GPIO23 RS485 TX
# GPIO25 I2C1 SDA red # GPIO25 I2C1 SDA red
# GPIO26 I2C0 SDA white # GPIO26 I2C0 SDA white
# GPIO27 NEO # GPIO27 NEO -> atom_led (status LED, common/status_led_atom.yaml)
# GPIO32 I2C0 SCL -> gate_ogi_state (binary_sensor gpio) (inverted); gate_ogi_blink (binary_sensor gpio) (inverted) # GPIO32 I2C0 SCL -> gate_ogi_state (binary_sensor gpio) (inverted); gate_ogi_blink (binary_sensor gpio) (inverted)
# GPIO33 RS485 RX # GPIO33 RS485 RX
# GPIO39 BUTTON # GPIO39 BUTTON
@@ -30,11 +30,14 @@ esp32:
variant: esp32 variant: esp32
toolchain: esp-idf toolchain: esp-idf
framework: framework:
advanced:
flash_chip: gd
type: esp-idf type: esp-idf
packages: packages:
common: !include common/common.yaml common: !include common/common.yaml
ipv6_only: !include common/ipv6_only.yaml ipv6_only: !include common/ipv6_only.yaml
status_led: !include common/status_led_atom.yaml
button: button:
- platform: output - platform: output
+1
View File
@@ -44,6 +44,7 @@ esp32:
framework: framework:
type: esp-idf type: esp-idf
advanced: advanced:
flash_chip: generic
minimum_chip_revision: 3.0 minimum_chip_revision: 3.0
sram1_as_iram: true sram1_as_iram: true
+4 -1
View File
@@ -10,7 +10,7 @@
# GPIO23 UART1 RX -> uart_modbus (uart rx_pin) # GPIO23 UART1 RX -> uart_modbus (uart rx_pin)
# GPIO25 I2C1 SDA -> i2c (i2c sda) # GPIO25 I2C1 SDA -> i2c (i2c sda)
# GPIO26 I2C0 SDA # GPIO26 I2C0 SDA
# GPIO27 NEO # GPIO27 NEO -> atom_led (status LED, common/status_led_atom.yaml)
# GPIO32 I2C0 SCL # GPIO32 I2C0 SCL
# GPIO33 UART1 TX -> uart_modbus (uart tx_pin) # GPIO33 UART1 TX -> uart_modbus (uart tx_pin)
# GPIO39 BUTTON # GPIO39 BUTTON
@@ -43,6 +43,8 @@ esp32:
variant: esp32 variant: esp32
toolchain: esp-idf toolchain: esp-idf
framework: framework:
advanced:
flash_chip: gd
type: esp-idf type: esp-idf
external_components: external_components:
@@ -56,6 +58,7 @@ external_components:
packages: packages:
common: !include common/common.yaml common: !include common/common.yaml
ipv6_only: !include common/ipv6_only.yaml ipv6_only: !include common/ipv6_only.yaml
status_led: !include common/status_led_atom.yaml
#logger: #logger:
# level: VERBOSE # level: VERBOSE
+4 -1
View File
@@ -10,7 +10,7 @@
# GPIO23 RS485 Tx # GPIO23 RS485 Tx
# GPIO25 I2C1 SDA - red -> i2c (i2c sda) # GPIO25 I2C1 SDA - red -> i2c (i2c sda)
# GPIO26 I2C0 SDA - white # GPIO26 I2C0 SDA - white
# GPIO27 NEO 1x # GPIO27 NEO 1x -> atom_led (status LED, common/status_led_atom.yaml)
# GPIO32 I2C0 SCL # GPIO32 I2C0 SCL
# GPIO33 RS485 Rx # GPIO33 RS485 Rx
# GPIO39 BUTTON -> Status Button (binary_sensor gpio) # GPIO39 BUTTON -> Status Button (binary_sensor gpio)
@@ -49,11 +49,14 @@ esp32:
variant: esp32 variant: esp32
toolchain: esp-idf toolchain: esp-idf
framework: framework:
advanced:
flash_chip: gd
type: esp-idf type: esp-idf
packages: packages:
common: !include common/common.yaml common: !include common/common.yaml
ipv6_only: !include common/ipv6_only.yaml ipv6_only: !include common/ipv6_only.yaml
status_led: !include common/status_led_atom.yaml
api: api:
reboot_timeout: 300s reboot_timeout: 300s
+2
View File
@@ -26,6 +26,8 @@ esp32:
variant: esp32 variant: esp32
toolchain: esp-idf toolchain: esp-idf
framework: framework:
advanced:
flash_chip: gd # ESP32-PICO-D4, like the other M5Stamp Pico (not read from the device)
type: esp-idf type: esp-idf
packages: packages:
+2
View File
@@ -66,6 +66,8 @@ esp32:
variant: esp32s3 variant: esp32s3
flash_size: 16MB flash_size: 16MB
framework: framework:
advanced:
flash_chip: boya
type: esp-idf type: esp-idf
# PSRAM bandwidth for the RGB panel (not set by ESPHome); without it the # PSRAM bandwidth for the RGB panel (not set by ESPHome); without it the
# image shifts during flash/WiFi activity # image shifts during flash/WiFi activity
+2
View File
@@ -29,6 +29,8 @@ esp32:
flash_size: 16MB flash_size: 16MB
toolchain: esp-idf toolchain: esp-idf
framework: framework:
advanced:
flash_chip: generic # same board as lvgl-trainer (not read from the device)
type: esp-idf type: esp-idf
packages: packages:
+2
View File
@@ -37,6 +37,8 @@ esp32:
variant: esp32s3 variant: esp32s3
flash_size: 16MB flash_size: 16MB
framework: framework:
advanced:
flash_chip: generic
type: esp-idf type: esp-idf
packages: packages:
+2
View File
@@ -104,6 +104,8 @@ esp32:
flash_size: 16MB flash_size: 16MB
toolchain: esp-idf toolchain: esp-idf
framework: framework:
advanced:
flash_chip: gd
type: esp-idf type: esp-idf
# PSRAM bandwidth for the RGB panel (not set by ESPHome); without it the # PSRAM bandwidth for the RGB panel (not set by ESPHome); without it the
# image shifts during flash/WiFi activity # image shifts during flash/WiFi activity
+4 -1
View File
@@ -10,7 +10,7 @@
# GPIO23 UART1 RX # GPIO23 UART1 RX
# GPIO25 I2C1 SDA # GPIO25 I2C1 SDA
# GPIO26 I2C0 SDA -> uart_modbus (uart rx_pin) # GPIO26 I2C0 SDA -> uart_modbus (uart rx_pin)
# GPIO27 NEO # GPIO27 NEO -> atom_led (status LED, common/status_led_atom.yaml)
# GPIO32 I2C0 SCL -> uart_modbus (uart tx_pin) # GPIO32 I2C0 SCL -> uart_modbus (uart tx_pin)
# GPIO33 UART1 TX # GPIO33 UART1 TX
# GPIO39 BUTTON # GPIO39 BUTTON
@@ -37,11 +37,14 @@ esp32:
variant: esp32 variant: esp32
toolchain: esp-idf toolchain: esp-idf
framework: framework:
advanced:
flash_chip: gd
type: esp-idf type: esp-idf
packages: packages:
common: !include common/common.yaml common: !include common/common.yaml
ipv6_only: !include common/ipv6_only.yaml ipv6_only: !include common/ipv6_only.yaml
status_led: !include common/status_led_atom.yaml
modbus: modbus:
uart_id: uart_modbus uart_id: uart_modbus
+1
View File
@@ -28,6 +28,7 @@ esphome:
packages: packages:
common: !include common/common.yaml common: !include common/common.yaml
ipv6_only: !include common/ipv6_only.yaml
nspanel: !include nspanel: !include
file: common/nspanel.yaml file: common/nspanel.yaml
vars: vars:
+1
View File
@@ -51,6 +51,7 @@ esp32:
framework: framework:
type: esp-idf type: esp-idf
advanced: advanced:
flash_chip: generic
minimum_chip_revision: 3.0 minimum_chip_revision: 3.0
sram1_as_iram: true sram1_as_iram: true
+1
View File
@@ -27,6 +27,7 @@ esphome:
packages: packages:
common: !include common/common.yaml common: !include common/common.yaml
ipv6_only: !include common/ipv6_only.yaml
nspanel: !include nspanel: !include
file: common/nspanel.yaml file: common/nspanel.yaml
vars: vars:
+1
View File
@@ -27,6 +27,7 @@ esphome:
packages: packages:
common: !include common/common.yaml common: !include common/common.yaml
ipv6_only: !include common/ipv6_only.yaml
nspanel: !include nspanel: !include
file: common/nspanel.yaml file: common/nspanel.yaml
vars: vars:
+1
View File
@@ -27,6 +27,7 @@ esphome:
packages: packages:
common: !include common/common.yaml common: !include common/common.yaml
ipv6_only: !include common/ipv6_only.yaml
nspanel: !include nspanel: !include
file: common/nspanel.yaml file: common/nspanel.yaml
vars: vars:
+2
View File
@@ -29,6 +29,8 @@ esp32:
variant: esp32c3 variant: esp32c3
toolchain: esp-idf toolchain: esp-idf
framework: framework:
advanced:
flash_chip: generic
type: esp-idf type: esp-idf
packages: packages:
+4 -1
View File
@@ -10,7 +10,7 @@
# GPIO23 RS485 Tx # GPIO23 RS485 Tx
# GPIO25 I2C1 SDA - red -> i2c (i2c sda) # GPIO25 I2C1 SDA - red -> i2c (i2c sda)
# GPIO26 I2C0 SDA - white # GPIO26 I2C0 SDA - white
# GPIO27 NEO 1x # GPIO27 NEO 1x -> atom_led (status LED, common/status_led_atom.yaml)
# GPIO32 I2C0 SCL # GPIO32 I2C0 SCL
# GPIO33 RS485 Rx # GPIO33 RS485 Rx
# GPIO39 BUTTON -> Status Button (binary_sensor gpio) # GPIO39 BUTTON -> Status Button (binary_sensor gpio)
@@ -50,11 +50,14 @@ esp32:
variant: esp32 variant: esp32
toolchain: esp-idf toolchain: esp-idf
framework: framework:
advanced:
flash_chip: gd
type: esp-idf type: esp-idf
packages: packages:
common: !include common/common.yaml common: !include common/common.yaml
ipv6_only: !include common/ipv6_only.yaml ipv6_only: !include common/ipv6_only.yaml
status_led: !include common/status_led_atom.yaml
i2c: i2c:
+1 -1
View File
@@ -30,6 +30,7 @@ esp32:
framework: framework:
type: esp-idf type: esp-idf
advanced: advanced:
flash_chip: gd
minimum_chip_revision: 3.1 minimum_chip_revision: 3.1
sram1_as_iram: true sram1_as_iram: true
@@ -199,4 +200,3 @@ switch:
- delay: 500ms - delay: 500ms
- switch.turn_off: relay_off # bi-stable relay so no need to keep on - switch.turn_off: relay_off # bi-stable relay so no need to keep on
interlock: [relay_on] interlock: [relay_on]
+1
View File
@@ -30,6 +30,7 @@ esp32:
framework: framework:
type: esp-idf type: esp-idf
advanced: advanced:
flash_chip: gd # same device as pow-dishwasher (not read from the device)
minimum_chip_revision: 3.1 minimum_chip_revision: 3.1
sram1_as_iram: true sram1_as_iram: true
+7 -3
View File
@@ -7,6 +7,7 @@
# GPIO23 -> spi (spi clk_pin) # GPIO23 -> spi (spi clk_pin)
# GPIO25 -> rf_rx (remote_receiver) # GPIO25 -> rf_rx (remote_receiver)
# GPIO26 Grove SDA # GPIO26 Grove SDA
# GPIO27 NEO (ATOM RGB LED) -> atom_led (status LED, common/status_led_atom.yaml)
# GPIO32 Grove SCL # GPIO32 Grove SCL
# GPIO33 -> cc1101 (cc1101 cs_pin) # GPIO33 -> cc1101 (cc1101 cs_pin)
substitutions: substitutions:
@@ -25,17 +26,20 @@ esp32:
variant: esp32 variant: esp32
flash_size: 4MB flash_size: 4MB
framework: framework:
advanced:
flash_chip: gd
type: esp-idf type: esp-idf
packages: packages:
common: !include common/common.yaml common: !include common/common.yaml
ipv6_only: !include common/ipv6_only.yaml ipv6_only: !include common/ipv6_only.yaml
status_led: !include common/status_led_atom.yaml
spi: spi:
clk_pin: 23 clk_pin: 23
mosi_pin: 19 mosi_pin: 19
miso_pin: 22 miso_pin: 22
cc1101: cc1101:
cs_pin: 33 cs_pin: 33
frequency: 433.92MHz frequency: 433.92MHz
@@ -51,7 +55,7 @@ radio_frequency:
id: rf_proxy_rx id: rf_proxy_rx
remote_receiver_id: rf_rx remote_receiver_id: rf_rx
frequency: 433.92MHz frequency: 433.92MHz
remote_receiver: remote_receiver:
- id: rf_rx - id: rf_rx
pin: 25 pin: 25
@@ -66,4 +70,4 @@ remote_transmitter:
- cc1101.begin_tx - cc1101.begin_tx
on_complete: on_complete:
then: then:
- cc1101.begin_rx - cc1101.begin_rx
+3 -1
View File
@@ -43,6 +43,8 @@ esp32:
variant: esp32s3 variant: esp32s3
toolchain: esp-idf toolchain: esp-idf
framework: framework:
advanced:
flash_chip: gd
type: esp-idf type: esp-idf
# external_components: # external_components:
@@ -169,7 +171,7 @@ pn532_i2c:
id(info)=""; id(info)="";
if (tag.has_ndef_message()) { if (tag.has_ndef_message()) {
auto message = tag.get_ndef_message(); auto message = tag.get_ndef_message();
auto records = message->get_records(); const auto &records = message->get_records();
for (auto &record : records) { for (auto &record : records) {
std::string payload = record->get_payload(); std::string payload = record->get_payload();
std::string type = record->get_type(); std::string type = record->get_type();
+4 -1
View File
@@ -6,6 +6,7 @@
# GPIO22 -> Garden Light (switch gpio) # GPIO22 -> Garden Light (switch gpio)
# GPIO25 -> i2c (i2c sda) # GPIO25 -> i2c (i2c sda)
# GPIO26 Grove SDA # GPIO26 Grove SDA
# GPIO27 NEO (ATOM RGB LED) -> atom_led (status LED, common/status_led_atom.yaml)
# GPIO32 Grove SCL # GPIO32 Grove SCL
# I2C: # I2C:
# 0x27 pca9554_module (pca9554) # 0x27 pca9554_module (pca9554)
@@ -25,6 +26,8 @@ esp32:
variant: esp32 variant: esp32
toolchain: esp-idf toolchain: esp-idf
framework: framework:
advanced:
flash_chip: gd
type: esp-idf type: esp-idf
# version: 5.4.2 # version: 5.4.2
# platform_version: 54.03.21 # platform_version: 54.03.21
@@ -32,6 +35,7 @@ esp32:
packages: packages:
common: !include common/common.yaml common: !include common/common.yaml
ipv6_only: !include common/ipv6_only.yaml ipv6_only: !include common/ipv6_only.yaml
status_led: !include common/status_led_atom.yaml
i2c: i2c:
sda: 25 sda: 25
@@ -119,4 +123,3 @@ switch:
pin: pin:
number: 19 number: 19
mode: OUTPUT mode: OUTPUT
+4 -2
View File
@@ -65,6 +65,8 @@ esp32:
flash_size: 16MB flash_size: 16MB
toolchain: esp-idf toolchain: esp-idf
framework: framework:
advanced:
flash_chip: generic
type: esp-idf type: esp-idf
psram: psram:
@@ -80,7 +82,7 @@ external_components:
components: [axp2101, aw88298, aw9523b, si12t, m5ioe1, ftservo, scs9009] components: [axp2101, aw88298, aw9523b, si12t, m5ioe1, ftservo, scs9009]
refresh: 0s refresh: 0s
- source: github://randybb/esphome-components - source: github://randybb/esphome-components
components: [audio_spectrum, speaker] # speaker: esphome#19862, drop once merged components: [audio_spectrum]
refresh: 1h refresh: 1h
globals: globals:
@@ -922,7 +924,7 @@ light:
name: LCD Backlight name: LCD Backlight
output: lcd_backlight_output output: lcd_backlight_output
restore_mode: ALWAYS_ON restore_mode: ALWAYS_ON
remote_transmitter: remote_transmitter:
id: ir_tx id: ir_tx
pin: 5 pin: 5
+2
View File
@@ -28,6 +28,8 @@ esphome:
esp32: esp32:
variant: esp32c3 variant: esp32c3
framework: framework:
advanced:
flash_chip: generic
type: esp-idf type: esp-idf
packages: packages:
+3 -1
View File
@@ -5,6 +5,7 @@
# GPIO23 -> modbus_uart (uart tx_pin) # GPIO23 -> modbus_uart (uart tx_pin)
# GPIO25 -> i2c (i2c sda) # GPIO25 -> i2c (i2c sda)
# GPIO26 Grove SDA # GPIO26 Grove SDA
# GPIO27 NEO (ATOM RGB LED) -> atom_led (status LED, common/status_led_atom.yaml)
# GPIO32 Grove SCL # GPIO32 Grove SCL
# GPIO33 -> modbus_uart (uart rx_pin) # GPIO33 -> modbus_uart (uart rx_pin)
# I2C: # I2C:
@@ -40,11 +41,13 @@ esp32:
framework: framework:
type: esp-idf type: esp-idf
advanced: advanced:
flash_chip: gd
sram1_as_iram: true sram1_as_iram: true
packages: packages:
common: !include common/common.yaml common: !include common/common.yaml
ipv6_only: !include common/ipv6_only.yaml ipv6_only: !include common/ipv6_only.yaml
status_led: !include common/status_led_atom.yaml
api: api:
actions: actions:
@@ -368,4 +371,3 @@ valve:
- switch.turn_on: irrigation_relay_8 - switch.turn_on: irrigation_relay_8
close_action: close_action:
- switch.turn_off: irrigation_relay_8 - switch.turn_off: irrigation_relay_8