Compare commits

..
16 Commits
Author SHA1 Message Date
randyandClaude Sonnet 5 0daecc2fb9 mcu-lvgl-trainer, mcu-lvgl-eworkbench: migrate display to mipi_spi
CI / ESPHome config validation (push) Failing after 8s
CI / YAML lint (push) Failing after 52s
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>
2026-09-25 22:56:01 +02:00
randyandClaude Sonnet 5 c9358e7bd6 Rename deprecated light rgb_order to channel_colors
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>
2026-09-25 22:16:30 +02:00
randyandClaude Sonnet 5 173514f73e mcu-echo-1: migrate to speaker-based media_player with mixer
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>
2026-09-25 22:16:11 +02:00
randyandClaude Sonnet 5 b818b5291b mcu-gate: split OGI detection into steady-state and blink sensors
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>
2026-09-25 22:09:06 +02:00
randyandClaude Sonnet 5 ab08e9a0af mcu-gateway: migrate modbus_controller off deprecated register_count
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>
2026-09-25 21:52:03 +02:00
randyandClaude Sonnet 5 5f966ffba6 mcu-tft: migrate display from deprecated ili9xxx to mipi_spi
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>
2026-09-25 21:43:14 +02:00
randyandClaude Sonnet 5 cd78449995 mcu-tft: comment out pinned esp-idf/platform version
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-25 21:39:02 +02:00
randyandClaude Sonnet 5 aaa6418edc mcu-well: add Modbus support for n4dig08 relay module
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>
2026-09-25 21:35:44 +02:00
randyandClaude Sonnet 5 a36dd4447d mcu-well: enable sram1_as_iram to use bootloader's extra 40KB IRAM
Fixes bootloader warning:
[W][app:198]: Bootloader supports SRAM1 as IRAM (+40KB). Set sram1_as_iram: true under esp32 > framework > advanced

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-25 21:35:38 +02:00
randyandClaude Sonnet 5 f9656a8e4c mcu-well: rename deprecated api services/service to actions/action
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-25 21:35:14 +02:00
randyandClaude Sonnet 5 c0309c5418 mcu-apollo-dev: explicitly set esp-idf toolchain
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-25 21:25:38 +02:00
randyandClaude Sonnet 5 c895c821ea mcu-rf: rework RF pin wiring and unify transmit/receive frequency
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>
2026-09-25 21:25:32 +02:00
randyandClaude Sonnet 5 13a5bf04cc mcu-basement: rename sewage treatment blower to aerator pump
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>
2026-09-25 21:25:22 +02:00
randyandClaude Sonnet 5 176b875bef Rename deprecated light rgb_order to channel_colors
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>
2026-09-25 21:24:58 +02:00
randyandClaude Sonnet 5 56db2c2087 Rename deprecated api services/service to actions/action
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>
2026-09-25 21:24:36 +02:00
randyandClaude Sonnet 5 468e813958 Stop tracking .device-builder.json state file
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>
2026-09-25 21:22:20 +02:00
31 changed files with 311 additions and 253 deletions

No files matched your search

-5
View File
@@ -1,5 +0,0 @@
{
"_preferences": {
"editor_layout": "both"
}
}
-1
View File
@@ -6,5 +6,4 @@
/secrets.yaml
/archive/
/trash/
.device-builder.yaml
.device-builder.json
+2 -2
View File
@@ -49,7 +49,7 @@ light:
- platform: esp32_rmt_led_strip
# name: LED
id: neo
rgb_order: GRB
channel_colors: GRB
pin: 27
num_leds: 1
chipset: ws2812
@@ -57,7 +57,7 @@ light:
- platform: esp32_rmt_led_strip
name: NEO
id: neo_strip
rgb_order: GRB
channel_colors: GRB
pin: 25
num_leds: 7
chipset: ws2812
+5 -4
View File
@@ -14,6 +14,7 @@ esphome:
esp32:
variant: esp32c6
flash_size: 8MB
toolchain: esp-idf
framework:
type: esp-idf
@@ -22,8 +23,8 @@ packages:
api:
# https://github.com/granadaxronos/120-SONG_NOKIA_RTTTL_RINGTONE_PLAYER_FOR_ARDUINO_UNO/blob/master/RTTTL_PLAYER/songs.h
services:
- service: play_rtttl
actions:
- action: play_rtttl
variables:
song: string
then:
@@ -49,7 +50,7 @@ light:
id: rgb_leds
chipset: WS2812
num_leds: 10
rgb_order: GRB
channel_colors: GRB
rmt_symbols: 48
effects:
# Use default parameters:
@@ -76,7 +77,7 @@ light:
id: onboard_rgb_led
chipset: WS2812
num_leds: 1
rgb_order: GRB
channel_colors: GRB
rmt_symbols: 48
output:
+17 -17
View File
@@ -27,7 +27,7 @@ packages:
# GPIO13 Blue Status LED
globals:
- id: blower_auto
- id: aerator_auto
type: bool
restore_value: true
initial_value: "true"
@@ -44,15 +44,15 @@ binary_sensor:
- min_length: 50ms
max_length: 350ms
then:
- homeassistant.service:
service: light.toggle
- homeassistant.action:
action: light.toggle
data:
entity_id: light.mcu_basement_2_light
- min_length: 351ms
max_length: 1000ms
then:
- homeassistant.service:
service: light.toggle
- homeassistant.action:
action: light.toggle
data:
entity_id: light.exercise_room
- min_length: 1001ms
@@ -62,12 +62,12 @@ binary_sensor:
# service: light.turn_off
# data:
# entity_id: light.basement_light
- homeassistant.service:
service: light.turn_off
- homeassistant.action:
action: light.turn_off
data:
entity_id: light.exercise_room
- homeassistant.service:
service: light.turn_off
- homeassistant.action:
action: light.turn_off
data:
entity_id: light.exercise_room_fan
- platform: gpio
@@ -88,14 +88,14 @@ binary_sensor:
filters:
invert:
on_press:
- homeassistant.service:
service: light.turn_on
- homeassistant.action:
action: light.turn_on
data:
entity_id: light.mcu_basement_2_light
select:
- platform: template
name: Sewage Treatment Blower
name: Sewage Treatment Aerator Pump
icon: mdi:hair-dryer-outline
optimistic: true
options:
@@ -109,14 +109,14 @@ select:
- lambda: |-
switch (i) {
case 0: {
id(blower_auto) = false;
id(aerator_auto) = false;
id(relay_1).turn_on();
} break;
case 1: {
id(blower_auto) = true;
id(aerator_auto) = true;
} break;
case 2:
id(blower_auto) = false;
id(aerator_auto) = false;
id(relay_1).turn_off();
}
@@ -127,7 +127,7 @@ status_led:
switch:
- platform: gpio
name: Sewage Treatment Blower
name: Sewage Treatment Aerator Pump
icon: mdi:hair-dryer-outline
pin: 12
id: relay_1
@@ -147,7 +147,7 @@ time:
then:
- if:
condition:
lambda: 'return id(blower_auto);'
lambda: 'return id(aerator_auto);'
then:
- switch.turn_on: relay_1
- delay: 12min
+4 -4
View File
@@ -114,8 +114,8 @@ script:
# make use of the following service.
api:
reboot_timeout: 0s
services:
- service: activate_preset
actions:
- action: activate_preset
variables:
my_group: string
my_preset: string
@@ -279,8 +279,8 @@ sensor:
lambda: |-
return id(group_control);
then:
- homeassistant.service:
service: light.turn_on
- homeassistant.action:
action: light.turn_on
data:
light_name: bedroom_lamp
brightness: !lambda return x;
+2 -2
View File
@@ -111,8 +111,8 @@ script:
# make use of the following service.
api:
reboot_timeout: 0s
services:
- service: activate_preset
actions:
- action: activate_preset
variables:
my_group: string
my_preset: string
+1 -1
View File
@@ -56,7 +56,7 @@ light:
- platform: esp32_rmt_led_strip
name: LED
id: led
rgb_order: GRB
channel_colors: GRB
pin: 8
num_leds: 1
# rmt_channel: 0
+1 -1
View File
@@ -56,7 +56,7 @@ light:
- platform: esp32_rmt_led_strip
name: LED
id: led
rgb_order: GRB
channel_colors: GRB
pin: 8
num_leds: 1
# rmt_channel: 0
+1 -1
View File
@@ -71,7 +71,7 @@ light:
- platform: esp32_rmt_led_strip
name: LED
id: led
rgb_order: GRB
channel_colors: GRB
pin: 27
num_leds: 1
chipset: ws2812
+2 -2
View File
@@ -41,8 +41,8 @@ packages:
# https://github.com/granadaxronos/120-SONG_NOKIA_RTTTL_RINGTONE_PLAYER_FOR_ARDUINO_UNO/blob/master/RTTTL_PLAYER/songs.h
api:
services:
- service: play_rtttl
actions:
- action: play_rtttl
variables:
song: string
then:
+3 -3
View File
@@ -30,8 +30,8 @@ packages:
# https://github.com/granadaxronos/120-SONG_NOKIA_RTTTL_RINGTONE_PLAYER_FOR_ARDUINO_UNO/blob/master/RTTTL_PLAYER/songs.h
api:
services:
- service: play_rtttl
actions:
- action: play_rtttl
variables:
song: string
then:
@@ -96,7 +96,7 @@ light:
- platform: esp32_rmt_led_strip
name: LED
id: led
rgb_order: GRB
channel_colors: GRB
pin: 27
num_leds: 1
chipset: ws2812
+1 -1
View File
@@ -123,7 +123,7 @@ light:
- platform: esp32_rmt_led_strip
name: LED
id: led
rgb_order: GRB
channel_colors: GRB
pin: 27
num_leds: 1
# rmt_channel: 0
+43 -38
View File
@@ -15,33 +15,15 @@ esphome:
esp32:
variant: esp32
framework:
type: arduino
# version: 2.0.14
# platform_version: 6.5.0
# type: esp-idf
# version: 5.1.2
# platform_version: 6.5.0
external_components:
- source: components
# - source:
# type: git
# url: https://github.com/nielsnl68/esphome
# ref: nvds-RTTTL_I2S
# components: [ speaker, rtttl ]
# refresh: 0s
- source: github://pr#5177
components: [rtttl]
refresh: 0s
type: esp-idf
packages:
common: !include common/common_esp8266.yaml # this profile is without fancy features that are not supported by arduino
common: !include common/common.yaml
api:
services:
actions:
# https://github.com/granadaxronos/120-SONG_NOKIA_RTTTL_RINGTONE_PLAYER_FOR_ARDUINO_UNO/blob/master/RTTTL_PLAYER/songs.h
- service: play_rtttl
- action: play_rtttl
variables:
song: string
then:
@@ -81,7 +63,7 @@ light:
- platform: esp32_rmt_led_strip
name: LED
id: neo_buildin
rgb_order: GRB
channel_colors: GRB
pin: 27
num_leds: 1
chipset: ws2812
@@ -110,35 +92,58 @@ light:
# # brightness: 30%
i2s_audio:
- id: speaker_bus
i2s_lrclk_pin: 33
i2s_bclk_pin: 19
media_player:
- platform: i2s_audio
id: media_out
name: ${name} Player
dac_type: external
i2s_dout_pin:
number: 22
allow_other_uses: true
mode: mono
speaker:
- platform: i2s_audio
id: echo_speaker
id: speaker_id
i2s_audio_id: speaker_bus
dac_type: external
i2s_dout_pin:
number: 22
allow_other_uses: true
i2s_dout_pin: 22
channel: mono
sample_rate: 16000
buffer_duration: 100ms
- platform: mixer
id: mixer_speaker_id
output_speaker: speaker_id
num_channels: 1
task_stack_in_psram: false
source_speakers:
- id: announcement_spk_mixer_input
- id: media_spk_mixer_input
- id: rtttl_spk_mixer_input
- platform: resampler
id: media_spk_resampling_input
output_speaker: media_spk_mixer_input
- platform: resampler
id: announcement_spk_resampling_input
output_speaker: announcement_spk_mixer_input
- platform: resampler
id: rtttl_spk_resampling_input
output_speaker: rtttl_spk_mixer_input
media_player:
- platform: speaker
id: media_out
name: ${name} Player
buffer_size: 14000
media_pipeline:
speaker: media_spk_resampling_input
format: NONE
announcement_pipeline:
speaker: announcement_spk_resampling_input
format: NONE
rtttl:
id: my_rtttl
speaker: echo_speaker
speaker: rtttl_spk_resampling_input
microphone:
- platform: i2s_audio
id: echo_microphone
i2s_audio_id: speaker_bus
i2s_din_pin: 23
adc_type: external
pdm: true
+2 -2
View File
@@ -22,9 +22,9 @@ packages:
common: !include common/common.yaml
api:
services:
actions:
# https://github.com/granadaxronos/120-SONG_NOKIA_RTTTL_RINGTONE_PLAYER_FOR_ARDUINO_UNO/blob/master/RTTTL_PLAYER/songs.h
- service: play_rtttl
- action: play_rtttl
variables:
song: string
then:
+24 -17
View File
@@ -136,32 +136,39 @@ binary_sensor:
on_press: !include {file: common/gate_beacon_open.yaml, vars: {enable_id: enable_dl650}}
on_release: !include {file: common/gate_beacon_close.yaml, vars: {enable_id: enable_dl650}}
- platform: gpio
id: gate_ogi
id: gate_ogi_state
pin:
number: 32
inverted: true
allow_other_uses: true
mode:
input: true
filters:
- delayed_on_off: 10ms
- delayed_on_off: 1500ms
entity_category: diagnostic
on_press:
- select.set:
id: gate_state
option: Open
- logger.log: "OGI ON (steady) => GATE OPEN"
on_release:
- select.set:
id: gate_state
option: Closed
- logger.log: "OGI OFF (steady) => GATE CLOSED"
- platform: gpio
id: gate_ogi_blink
pin:
number: 32
inverted: true
allow_other_uses: true
mode:
input: true
filters:
- delayed_on_off: 10ms
entity_category: diagnostic
on_multi_click:
- timing:
- OFF for at least 1500ms
then:
- select.set:
id: gate_state
option: Closed
- logger.log: "OGI OFF => GATE CLOSED"
invalid_cooldown: 100ms
- timing:
- ON for at least 1500ms
then:
- select.set:
id: gate_state
option: Open
- logger.log: "OGI ON => GATE OPEN"
invalid_cooldown: 100ms
- timing:
- ON for 400ms to 500ms
- OFF for 400ms to 500ms
+8 -3
View File
@@ -129,7 +129,6 @@ sensor:
register_type: read
value_type: U_WORD
accuracy_decimals: 1
register_count: 1
filters:
- multiply: 0.1
- platform: modbus_controller
@@ -152,7 +151,6 @@ sensor:
register_type: read
value_type: U_WORD
accuracy_decimals: 1
register_count: 1
filters:
- multiply: 0.1
- platform: modbus_controller
@@ -192,11 +190,18 @@ sensor:
register_type: holding
value_type: U_WORD
accuracy_decimals: 1
register_count: 2
filters:
- calibrate_linear:
- 50 -> 0
- 450 -> 5
- platform: modbus_controller
modbus_controller_id: modbus_adc_1
id: adc_1_1_padding
internal: true
address: 1
register_type: holding
value_type: U_WORD
reuse_previous_range: true
switch:
- platform: modbus_controller
+1 -1
View File
@@ -49,7 +49,7 @@ light:
- platform: esp32_rmt_led_strip
# name: LED
id: neo
rgb_order: GRB
channel_colors: GRB
pin: 27
num_leds: 1
chipset: ws2812
+2 -3
View File
@@ -105,8 +105,8 @@ power_supply:
enable_on_boot: true
display:
- platform: qspi_dbi
model: axs15231
- platform: mipi_spi
model: AXS15231
data_rate: 40MHz #20mhz is default
#spi_mode: MODE2
id: main_display
@@ -115,7 +115,6 @@ display:
height: 480
width: 320
cs_pin: 45
brightness: 50
rotation: 90
auto_clear_enabled: false
show_test_card: true
+5 -6
View File
@@ -116,8 +116,8 @@ light:
default_transition_length: 500ms
display:
- platform: qspi_dbi
model: axs15231
- platform: mipi_spi
model: AXS15231
data_rate: 40MHz #20mhz is default
#spi_mode: MODE2
id: main_display
@@ -126,8 +126,6 @@ display:
height: 480
width: 320
cs_pin: 45
brightness: 50
rotation: 90
auto_clear_enabled: false
# show_test_card: true
# lambda: |-
@@ -187,7 +185,7 @@ binary_sensor:
- platform: homeassistant
id: exercise_room_light
entity_id: light.exercise_room
publish_initial_state: true
trigger_on_initial_state: true
on_state:
then:
lvgl.widget.update:
@@ -197,7 +195,7 @@ binary_sensor:
- platform: homeassistant
id: exercise_room_fan
entity_id: light.mcu_dimmer_exercise_room_fan
publish_initial_state: true
trigger_on_initial_state: true
on_state:
then:
lvgl.widget.update:
@@ -206,6 +204,7 @@ binary_sensor:
checked: !lambda return x;
lvgl:
rotation: 90
buffer_size: 100%
log_level: WARN
color_depth: 16
+18 -18
View File
@@ -42,15 +42,15 @@ packages:
api:
# https://github.com/granadaxronos/120-SONG_NOKIA_RTTTL_RINGTONE_PLAYER_FOR_ARDUINO_UNO/blob/master/RTTTL_PLAYER/songs.h
services:
- service: play_rtttl
actions:
- action: play_rtttl
variables:
song: string
then:
- rtttl.play:
rtttl: !lambda 'return song;'
- service: notify
- action: notify
variables:
heading: string
message: string
@@ -62,12 +62,12 @@ api:
- delay: 10s
- lambda: 'id(nspanel_id).send_custom_command("notify~~");'
- service: update_tft
- action: update_tft
then:
- lambda: |-
id(nspanel_id).upload_tft("${tft_url}");
- service: upload_tft
- action: upload_tft
variables:
url: string
then:
@@ -75,14 +75,14 @@ api:
id(nspanel_id).upload_tft(url);
# Service to send a command directly to the display. Useful for testing
- service: send_command
- action: send_command
variables:
cmd: string
then:
- lambda: "id(nspanel_id).send_custom_command(cmd.c_str());"
# Service to pusblish to mqtt used for refreshin the panel
- service: publish_to_recv_topic
- action: publish_to_recv_topic
variables:
cmd: string
then:
@@ -91,18 +91,18 @@ api:
payload: !lambda "return cmd;"
# Service to send a command wake the screen
- service: wake
- action: wake
then:
- lambda: 'id(nspanel_id).send_custom_command("wake");'
# Service to send a command to show screensaver (some of the values are hardcoded)
- service: show_screensaver
- action: show_screensaver
then:
- mqtt.publish:
topic: $panel_recv_topic
payload: '{"CustomRecv":"event,sleepReached,cardGrid"}'
# Service to navigate to screen
- service: navigate_to_page
- action: navigate_to_page
variables:
page: string
then:
@@ -112,24 +112,24 @@ api:
root["CustomRecv"] = "event,buttonPress2,navigate." + page + ",button";
# Service to send a command disable screensaver
- service: disable_screensaver
- action: disable_screensaver
then:
- lambda: 'id(nspanel_id).send_custom_command("timeout~0");'
# Service to send a command enabled screensaver
- service: enable_screensaver
- action: enable_screensaver
then:
- lambda: 'id(nspanel_id).send_custom_command("timeout~20");'
# Service to send a command wake the screen
- service: dim_0_to_100
- action: dim_0_to_100
variables:
intensity: string
then:
- lambda: 'id(nspanel_id).send_custom_command("dimmode~"+intensity+"~100");'
# Service to send a command To show the screen of a specific like
- service: show_entity
- action: show_entity
variables:
entity: string
title: string
@@ -137,7 +137,7 @@ api:
- lambda: 'id(nspanel_id).send_custom_command("pageType~popupLight~" + title + "~" + entity);'
# Service to send a command To show the screen of a specific like
- service: notify_on_screensaver
- action: notify_on_screensaver
variables:
line1: string
line2: string
@@ -147,7 +147,7 @@ api:
# Service to send a command To show the screen of a specific like
# interaction of the buttons are on implemented yet
- service: notify_fullscreen
- action: notify_fullscreen
variables:
title: string
description: string
@@ -208,8 +208,8 @@ binary_sensor:
# on_click:
# - switch.toggle: relay_2
on_click:
- homeassistant.service:
service: light.toggle
- homeassistant.action:
action: light.toggle
data:
entity_id: light.bedroom_lamps
- mqtt.publish_json:
+4 -4
View File
@@ -68,16 +68,16 @@ packages:
api:
homeassistant_services: true
homeassistant_states: true
services:
actions:
# https://github.com/granadaxronos/120-SONG_NOKIA_RTTTL_RINGTONE_PLAYER_FOR_ARDUINO_UNO/blob/master/RTTTL_PLAYER/songs.h
- service: play_rtttl
- action: play_rtttl
variables:
song: string
then:
- rtttl.play:
rtttl: !lambda 'return song;'
- service: notify
- action: notify
variables:
heading: string
message: string
@@ -177,7 +177,7 @@ api:
# Service to send a command To show the screen of a specific like
# interaction of the buttons are on implemented yet
- service: notify_fullscreen
- action: notify_fullscreen
variables:
title: string
description: string
+24 -24
View File
@@ -40,15 +40,15 @@ packages:
api:
# https://github.com/granadaxronos/120-SONG_NOKIA_RTTTL_RINGTONE_PLAYER_FOR_ARDUINO_UNO/blob/master/RTTTL_PLAYER/songs.h
services:
- service: play_rtttl
actions:
- action: play_rtttl
variables:
song: string
then:
- rtttl.play:
rtttl: !lambda 'return song;'
- service: notify
- action: notify
variables:
heading: string
message: string
@@ -60,12 +60,12 @@ api:
- delay: 10s
- lambda: 'id(nspanel_id).send_custom_command("notify~~");'
- service: update_tft
- action: update_tft
then:
- lambda: |-
id(nspanel_id).upload_tft("${tft_url}");
- service: upload_tft
- action: upload_tft
variables:
url: string
then:
@@ -73,14 +73,14 @@ api:
id(nspanel_id).upload_tft(url);
# Service to send a command directly to the display. Useful for testing
- service: send_command
- action: send_command
variables:
cmd: string
then:
- lambda: "id(nspanel_id).send_custom_command(cmd.c_str());"
# Service to pusblish to mqtt used for refreshin the panel
- service: publish_to_recv_topic
- action: publish_to_recv_topic
variables:
cmd: string
then:
@@ -89,18 +89,18 @@ api:
payload: !lambda "return cmd;"
# Service to send a command wake the screen
- service: wake
- action: wake
then:
- lambda: 'id(nspanel_id).send_custom_command("wake");'
# Service to send a command to show screensaver (some of the values are hardcoded)
- service: show_screensaver
- action: show_screensaver
then:
- mqtt.publish:
topic: $panel_recv_topic
payload: '{"CustomRecv":"event,sleepReached,cardGrid"}'
# Service to navigate to screen
- service: navigate_to_page
- action: navigate_to_page
variables:
page: string
then:
@@ -110,24 +110,24 @@ api:
root["CustomRecv"] = "event,buttonPress2,navigate." + page + ",button";
# Service to send a command disable screensaver
- service: disable_screensaver
- action: disable_screensaver
then:
- lambda: 'id(nspanel_id).send_custom_command("timeout~0");'
# Service to send a command enabled screensaver
- service: enable_screensaver
- action: enable_screensaver
then:
- lambda: 'id(nspanel_id).send_custom_command("timeout~20");'
# Service to send a command wake the screen
- service: dim_0_to_100
- action: dim_0_to_100
variables:
intensity: string
then:
- lambda: 'id(nspanel_id).send_custom_command("dimmode~"+intensity+"~100");'
# Service to send a command To show the screen of a specific like
- service: show_entity
- action: show_entity
variables:
entity: string
title: string
@@ -135,7 +135,7 @@ api:
- lambda: 'id(nspanel_id).send_custom_command("pageType~popupLight~" + title + "~" + entity);'
# Service to send a command To show the screen of a specific like
- service: notify_on_screensaver
- action: notify_on_screensaver
variables:
line1: string
line2: string
@@ -145,7 +145,7 @@ api:
# Service to send a command To show the screen of a specific like
# interaction of the buttons are on implemented yet
- service: notify_fullscreen
- action: notify_fullscreen
variables:
title: string
description: string
@@ -196,8 +196,8 @@ binary_sensor:
- min_length: 50ms
max_length: 350ms
then:
- homeassistant.service:
service: light.toggle
- homeassistant.action:
action: light.toggle
data:
entity_id: light.living_room
- mqtt.publish_json:
@@ -207,8 +207,8 @@ binary_sensor:
- min_length: 500ms
max_length: 2000ms
then:
- homeassistant.service:
service: light.toggle
- homeassistant.action:
action: light.toggle
data:
entity_id: light.worktop_lights
- mqtt.publish_json:
@@ -226,8 +226,8 @@ binary_sensor:
- min_length: 50ms
max_length: 350ms
then:
- homeassistant.service:
service: light.toggle
- homeassistant.action:
action: light.toggle
data:
entity_id: light.dining_table
- mqtt.publish_json:
@@ -237,8 +237,8 @@ binary_sensor:
- min_length: 500ms
max_length: 2000ms
then:
- homeassistant.service:
service: light.toggle
- homeassistant.action:
action: light.toggle
data:
entity_id: light.mcu_kitchen_stove
- mqtt.publish_json:
+18 -18
View File
@@ -46,15 +46,15 @@ api:
# help:d=4,o=6,b=100:f,8p,f,8p,f,8p,f,8p,f,8p,f,8p,f,8p,f,8p,f,8p,f
# gate_opening:d=16,o=5,b=160:a, 8p, a
# fireplace_attention:d=16,o=5,b=160:a, 8p, g, 16p, c
services:
- service: play_rtttl
actions:
- action: play_rtttl
variables:
song: string
then:
- rtttl.play:
rtttl: !lambda 'return song;'
- service: notify
- action: notify
variables:
heading: string
message: string
@@ -66,12 +66,12 @@ api:
- delay: 10s
- lambda: 'id(nspanel_id).send_custom_command("notify~~");'
- service: update_tft
- action: update_tft
then:
- lambda: |-
id(nspanel_id).upload_tft("${tft_url}");
- service: upload_tft
- action: upload_tft
variables:
url: string
then:
@@ -79,14 +79,14 @@ api:
id(nspanel_id).upload_tft(url);
# Service to send a command directly to the display. Useful for testing
- service: send_command
- action: send_command
variables:
cmd: string
then:
- lambda: "id(nspanel_id).send_custom_command(cmd.c_str());"
# Service to pusblish to mqtt used for refreshin the panel
- service: publish_to_recv_topic
- action: publish_to_recv_topic
variables:
cmd: string
then:
@@ -95,18 +95,18 @@ api:
payload: !lambda "return cmd;"
# Service to send a command wake the screen
- service: wake
- action: wake
then:
- lambda: 'id(nspanel_id).send_custom_command("wake");'
# Service to send a command to show screensaver (some of the values are hardcoded)
- service: show_screensaver
- action: show_screensaver
then:
- mqtt.publish:
topic: $panel_recv_topic
payload: '{"CustomRecv":"event,sleepReached,cardGrid"}'
# Service to navigate to screen
- service: navigate_to_page
- action: navigate_to_page
variables:
page: string
then:
@@ -116,24 +116,24 @@ api:
root["CustomRecv"] = "event,buttonPress2,navigate." + page + ",button";
# Service to send a command disable screensaver
- service: disable_screensaver
- action: disable_screensaver
then:
- lambda: 'id(nspanel_id).send_custom_command("timeout~0");'
# Service to send a command enabled screensaver
- service: enable_screensaver
- action: enable_screensaver
then:
- lambda: 'id(nspanel_id).send_custom_command("timeout~20");'
# Service to send a command wake the screen
- service: dim_0_to_100
- action: dim_0_to_100
variables:
intensity: string
then:
- lambda: 'id(nspanel_id).send_custom_command("dimmode~"+intensity+"~100");'
# Service to send a command To show the screen of a specific like
- service: show_entity
- action: show_entity
variables:
entity: string
title: string
@@ -141,7 +141,7 @@ api:
- lambda: 'id(nspanel_id).send_custom_command("pageType~popupLight~" + title + "~" + entity);'
# Service to send a command To show the screen of a specific like
- service: notify_on_screensaver
- action: notify_on_screensaver
variables:
line1: string
line2: string
@@ -151,7 +151,7 @@ api:
# Service to send a command To show the screen of a specific like
# interaction of the buttons are on implemented yet
- service: notify_fullscreen
- action: notify_fullscreen
variables:
title: string
description: string
@@ -230,8 +230,8 @@ binary_sensor:
number: 27
inverted: true
on_click:
- homeassistant.service:
service: light.toggle
- homeassistant.action:
action: light.toggle
data:
entity_id: light.bedside_left
- mqtt.publish_json:
+19 -19
View File
@@ -64,15 +64,15 @@ api:
# help:d=4,o=6,b=100:f,8p,f,8p,f,8p,f,8p,f,8p,f,8p,f,8p,f,8p,f,8p,f
# gate_opening:d=16,o=5,b=160:a, 8p, a
# fireplace_attention:d=16,o=5,b=160:a, 8p, g, 16p, c
services:
- service: play_rtttl
actions:
- action: play_rtttl
variables:
song: string
then:
- rtttl.play:
rtttl: !lambda 'return song;'
- service: notify
- action: notify
variables:
heading: string
message: string
@@ -84,13 +84,13 @@ api:
- delay: 10s
- lambda: 'id(nspanel_id).send_custom_command("notify~~");'
- service: update_tft
- action: update_tft
then:
- logger.log: "tft updating from: ${tft_url}"
- lambda: |-
id(nspanel_id).upload_tft("${tft_url}");
- service: upload_tft
- action: upload_tft
variables:
url: string
then:
@@ -98,14 +98,14 @@ api:
id(nspanel_id).upload_tft(url);
# Service to send a command directly to the display. Useful for testing
- service: send_command
- action: send_command
variables:
cmd: string
then:
- lambda: "id(nspanel_id).send_custom_command(cmd.c_str());"
# Service to pusblish to mqtt used for refreshin the panel
- service: publish_to_recv_topic
- action: publish_to_recv_topic
variables:
cmd: string
then:
@@ -114,18 +114,18 @@ api:
payload: !lambda "return cmd;"
# Service to send a command wake the screen
- service: wake
- action: wake
then:
- lambda: 'id(nspanel_id).send_custom_command("wake");'
# Service to send a command to show screensaver (some of the values are hardcoded)
- service: show_screensaver
- action: show_screensaver
then:
- mqtt.publish:
topic: $panel_recv_topic
payload: '{"CustomRecv":"event,sleepReached,cardGrid"}'
# Service to navigate to screen
- service: navigate_to_page
- action: navigate_to_page
variables:
page: string
then:
@@ -135,24 +135,24 @@ api:
root["CustomRecv"] = "event,buttonPress2,navigate." + page + ",button";
# Service to send a command disable screensaver
- service: disable_screensaver
- action: disable_screensaver
then:
- lambda: 'id(nspanel_id).send_custom_command("timeout~0");'
# Service to send a command enabled screensaver
- service: enable_screensaver
- action: enable_screensaver
then:
- lambda: 'id(nspanel_id).send_custom_command("timeout~20");'
# Service to send a command wake the screen
- service: dim_0_to_100
- action: dim_0_to_100
variables:
intensity: string
then:
- lambda: 'id(nspanel_id).send_custom_command("dimmode~"+intensity+"~100");'
# Service to send a command To show the screen of a specific like
- service: show_entity
- action: show_entity
variables:
entity: string
title: string
@@ -160,7 +160,7 @@ api:
- lambda: 'id(nspanel_id).send_custom_command("pageType~popupLight~" + title + "~" + entity);'
# Service to send a command To show the screen of a specific like
- service: notify_on_screensaver
- action: notify_on_screensaver
variables:
line1: string
line2: string
@@ -170,7 +170,7 @@ api:
# Service to send a command To show the screen of a specific like
# interaction of the buttons are on implemented yet
- service: notify_fullscreen
- action: notify_fullscreen
variables:
title: string
description: string
@@ -237,8 +237,8 @@ binary_sensor:
number: 14
inverted: true
on_click:
- homeassistant.service:
service: light.toggle
- homeassistant.action:
action: light.toggle
data:
entity_id: light.office_r_desk_strip
- mqtt.publish_json:
@@ -278,7 +278,7 @@ light:
- platform: esp32_rmt_led_strip
name: Presence Light
id: neo
rgb_order: GRB
channel_colors: GRB
pin: 23
num_leds: 3
# rmt_channel: 0
+18 -18
View File
@@ -40,15 +40,15 @@ packages:
api:
# https://github.com/granadaxronos/120-SONG_NOKIA_RTTTL_RINGTONE_PLAYER_FOR_ARDUINO_UNO/blob/master/RTTTL_PLAYER/songs.h
services:
- service: play_rtttl
actions:
- action: play_rtttl
variables:
song: string
then:
- rtttl.play:
rtttl: !lambda 'return song;'
- service: notify
- action: notify
variables:
heading: string
message: string
@@ -60,12 +60,12 @@ api:
- delay: 10s
- lambda: 'id(nspanel_id).send_custom_command("notify~~");'
- service: update_tft
- action: update_tft
then:
- lambda: |-
id(nspanel_id).upload_tft("${tft_url}");
- service: upload_tft
- action: upload_tft
variables:
url: string
then:
@@ -73,14 +73,14 @@ api:
id(nspanel_id).upload_tft(url);
# Service to send a command directly to the display. Useful for testing
- service: send_command
- action: send_command
variables:
cmd: string
then:
- lambda: "id(nspanel_id).send_custom_command(cmd.c_str());"
# Service to pusblish to mqtt used for refreshin the panel
- service: publish_to_recv_topic
- action: publish_to_recv_topic
variables:
cmd: string
then:
@@ -89,18 +89,18 @@ api:
payload: !lambda "return cmd;"
# Service to send a command wake the screen
- service: wake
- action: wake
then:
- lambda: 'id(nspanel_id).send_custom_command("wake");'
# Service to send a command to show screensaver (some of the values are hardcoded)
- service: show_screensaver
- action: show_screensaver
then:
- mqtt.publish:
topic: $panel_recv_topic
payload: '{"CustomRecv":"event,sleepReached,cardGrid"}'
# Service to navigate to screen
- service: navigate_to_page
- action: navigate_to_page
variables:
page: string
then:
@@ -110,24 +110,24 @@ api:
root["CustomRecv"] = "event,buttonPress2,navigate." + page + ",button";
# Service to send a command disable screensaver
- service: disable_screensaver
- action: disable_screensaver
then:
- lambda: 'id(nspanel_id).send_custom_command("timeout~0");'
# Service to send a command enabled screensaver
- service: enable_screensaver
- action: enable_screensaver
then:
- lambda: 'id(nspanel_id).send_custom_command("timeout~20");'
# Service to send a command wake the screen
- service: dim_0_to_100
- action: dim_0_to_100
variables:
intensity: string
then:
- lambda: 'id(nspanel_id).send_custom_command("dimmode~"+intensity+"~100");'
# Service to send a command To show the screen of a specific like
- service: show_entity
- action: show_entity
variables:
entity: string
title: string
@@ -135,7 +135,7 @@ api:
- lambda: 'id(nspanel_id).send_custom_command("pageType~popupLight~" + title + "~" + entity);'
# Service to send a command To show the screen of a specific like
- service: notify_on_screensaver
- action: notify_on_screensaver
variables:
line1: string
line2: string
@@ -145,7 +145,7 @@ api:
# Service to send a command To show the screen of a specific like
# interaction of the buttons are on implemented yet
- service: notify_fullscreen
- action: notify_fullscreen
variables:
title: string
description: string
@@ -208,8 +208,8 @@ binary_sensor:
condition:
api.connected:
then:
- homeassistant.service:
service: light.toggle
- homeassistant.action:
action: light.toggle
data:
entity_id: light.patio_lights
- mqtt.publish_json:
+6 -13
View File
@@ -21,41 +21,34 @@ packages:
common: !include common/common.yaml
spi:
clk_pin: 25
clk_pin: 23
mosi_pin: 19
miso_pin: 22
cc1101:
cs_pin: 33
frequency: 433.92MHz
gdo0_pin:
number: 21
allow_other_uses: true
infrared:
radio_frequency:
- platform: ir_rf_proxy
name: RF Proxy Transmitter
id: rf_proxy_tx
remote_transmitter_id: rf_tx
frequency: 433MHz
frequency: 433.92MHz
- platform: ir_rf_proxy
name: RF Proxy Receiver
id: rf_proxy_rx
remote_receiver_id: rf_rx
receiver_frequency: 433MHz
frequency: 433.92MHz
remote_receiver:
- id: rf_rx
pin:
number: 21
allow_other_uses: true
pin: 25
dump: all
remote_transmitter:
- id: rf_tx
pin:
number: 21
allow_other_uses: true
pin: 21
carrier_duty_percent: 100%
on_transmit:
then:
+8 -8
View File
@@ -54,22 +54,22 @@ packages:
# GPIO21 RGB
api:
services:
- service: rfidreader_tag_ok
actions:
- action: rfidreader_tag_ok
then:
- rtttl.play: "beep:d=16,o=5,b=100:b"
- service: rfidreader_tag_ko
- action: rfidreader_tag_ko
then:
- rtttl.play: "beep:d=8,o=5,b=100:b"
- service: play_rtttl
- action: play_rtttl
variables:
song_str: string
then:
- rtttl.play: !lambda 'return song_str;'
- service: write_tag_id
- action: write_tag_id
variables:
tag_id: string
then:
@@ -93,7 +93,7 @@ api:
id: notify_led
- rtttl.play: "write:d=24,o=5,b=100:b,b"
- service: write_music_tag
- action: write_music_tag
variables:
music_url: string
music_info: string
@@ -348,7 +348,7 @@ button:
light:
- platform: esp32_rmt_led_strip
id: notify_led
rgb_order: GRB
channel_colors: GRB
pin: 3
num_leds: 1
chipset: ws2812
@@ -356,7 +356,7 @@ light:
rmt_symbols: 96
- platform: esp32_rmt_led_strip
id: status_led
rgb_order: GRB
channel_colors: GRB
pin: 21
num_leds: 1
chipset: ws2812
+2 -2
View File
@@ -106,8 +106,8 @@ sensor:
then:
- light.turn_off: light_red
- switch.turn_off: relay
- homeassistant.service:
service: persistent_notification.create
- homeassistant.action:
action: persistent_notification.create
data:
title: Message from ${name}
data_template:
+2 -11
View File
@@ -18,19 +18,10 @@ esp32:
variant: esp32c3
framework:
type: esp-idf
version: 5.3.2
platform_version: 53.03.11
packages:
common: !include common/common.yaml
# external_components:
# - source:
# type: git
# url: https://github.com/clydebarrow/esphome
# ref: fd15094c0860df23d532881df36cfd16c7da1091 #previous commit - wont be needed in the future
# components: [ lvgl ]
logger:
logs:
component: ERROR
@@ -108,8 +99,8 @@ font:
display:
- platform: ili9xxx
model: TFT 2.4
- platform: mipi_spi
model: ILI9341
cs_pin: 7
dc_pin: 8
reset_pin: 10
+68 -4
View File
@@ -29,55 +29,93 @@ esp32:
toolchain: esp-idf
framework:
type: esp-idf
advanced:
sram1_as_iram: true
packages:
common: !include common/common.yaml
api:
services:
- service: irrigation_morning
actions:
- action: irrigation_morning
then:
- lambda: |-
id(relay_module).setup();
- switch.turn_on: irrigation_relay_1
- delay: 4minutes
- switch.turn_off: irrigation_relay_1
- delay: 2minutes
- lambda: |-
id(relay_module).setup();
- switch.turn_on: irrigation_relay_1
- delay: 4minutes
- switch.turn_off: irrigation_relay_1
- delay: 2minutes
- lambda: |-
id(relay_module).setup();
- switch.turn_on: irrigation_relay_2
- delay: 4minutes
- switch.turn_off: irrigation_relay_2
- delay: 2minutes
- lambda: |-
id(relay_module).setup();
- switch.turn_on: irrigation_relay_2
- delay: 4minutes
- switch.turn_off: irrigation_relay_2
- delay: 2minutes
- lambda: |-
id(relay_module).setup();
- switch.turn_on: irrigation_relay_3
- delay: 4minutes
- switch.turn_off: irrigation_relay_3
# - switch.turn_on: irrigation_relay_4
# - delay: 40minutes
# - switch.turn_off: irrigation_relay_4
- service: irrigation_grass
- action: irrigation_grass
then:
- lambda: |-
id(relay_module).setup();
- switch.turn_on: irrigation_relay_1
- delay: 5minutes
- switch.turn_off: irrigation_relay_1
- delay: 2minutes
- lambda: |-
id(relay_module).setup();
- switch.turn_on: irrigation_relay_2
- delay: 5minutes
- switch.turn_off: irrigation_relay_2
- delay: 2minutes
- lambda: |-
id(relay_module).setup();
- switch.turn_on: irrigation_relay_3
- delay: 2minutes
- switch.turn_off: irrigation_relay_3
- service: irrigation_patio
- action: irrigation_patio
then:
- lambda: |-
id(relay_module).setup();
- switch.turn_on: irrigation_relay_5
- delay: 30sec
- switch.turn_off: irrigation_relay_5
script:
- id: modbus_turn_on_ch1
mode: single
then:
- lambda: |-
ESP_LOGD("modbus", "Sending Channel 0 ON command as byte array");
// Channel 0 open command: [0x01, 0x05, 0x00, 0x00, 0xFF, 0x00, 0x8C, 0x3A]
uint8_t data[8] = {0x01, 0x06, 0x00, 0x01, 0x01, 0x00, 0xD9, 0x9A};
id(modbus_uart).write_array(data, 8);
- id: modbus_turn_off_ch1
mode: single
then:
- lambda: |-
ESP_LOGD("modbus", "Sending Channel 0 OFF command as byte array");
// Channel 0 close command: [0x01, 0x05, 0x00, 0x00, 0x00, 0x00, 0xCD, 0xCA]
uint8_t data[8] = {0x01, 0x06, 0x00, 0x01, 0x02, 0x00, 0xD9, 0x6A};
id(modbus_uart).write_array(data, 8);
i2c:
sda: 25
scl: 21
@@ -87,6 +125,32 @@ pca9554:
- id: relay_module
address: 0x27
uart:
id: modbus_uart
tx_pin: 23
rx_pin: 33
baud_rate: 9600
data_bits: 8
parity: NONE
stop_bits: 1
rx_buffer_size: 256
modbus:
id: modbus_hub
uart_id: modbus_uart
modbus_controller:
- id: n4dig08
address: 0x01
modbus_id: modbus_hub
setup_priority: -10
logger:
level: DEBUG # Alebo VERY_VERBOSE, ak chceš vidieť úplne všetko
logs:
modbus: DEBUG
modbus_controller: DEBUG
sprinkler:
- id: lawn_sprinkler_ctrlr
main_switch: "Irrigation A"