Add customizations to tests
This commit is contained in:
12
.github/workflows/validate_esphome.yml
vendored
12
.github/workflows/validate_esphome.yml
vendored
@@ -105,6 +105,18 @@ jobs:
|
||||
with:
|
||||
yaml_file: "./.test/esphome_advanced_climate_cool_esp_idf.yaml"
|
||||
|
||||
build_climate_heat_advanced_customization:
|
||||
name: Customizations
|
||||
runs-on: "ubuntu-latest"
|
||||
needs:
|
||||
- build_climate_heat_advanced
|
||||
steps:
|
||||
- uses: actions/checkout@v4.1.0
|
||||
- name: Build core+advanced+climate_heat+customizations
|
||||
uses: esphome/build-action@v1.8.0
|
||||
with:
|
||||
yaml_file: "./.test/esphome_advanced_climate_heat_customizations.yaml"
|
||||
|
||||
#build_climate_cool_advanced_esp_idf5:
|
||||
# name: esp-idf v5 & Bluetooth proxy
|
||||
# runs-on: "ubuntu-latest"
|
||||
|
||||
13
.github/workflows/validate_esphome_beta.yml
vendored
13
.github/workflows/validate_esphome_beta.yml
vendored
@@ -108,6 +108,19 @@ jobs:
|
||||
yaml_file: "./.test/esphome_advanced_climate_cool_esp_idf.yaml"
|
||||
version: beta
|
||||
|
||||
build_climate_heat_advanced_customization:
|
||||
name: Customizations
|
||||
runs-on: "ubuntu-latest"
|
||||
needs:
|
||||
- build_climate_heat_advanced
|
||||
steps:
|
||||
- uses: actions/checkout@v4.1.0
|
||||
- name: Build core+advanced+climate_heat+customizations
|
||||
uses: esphome/build-action@v1.8.0
|
||||
with:
|
||||
yaml_file: "./.test/esphome_advanced_climate_heat_customizations.yaml"
|
||||
version: beta
|
||||
|
||||
#build_climate_cool_advanced_esp_idf5:
|
||||
# name: esp-idf v5 & Bluetooth proxy
|
||||
# runs-on: "ubuntu-latest"
|
||||
|
||||
251
.test/esphome_advanced_climate_heat_customizations.yaml
Normal file
251
.test/esphome_advanced_climate_heat_customizations.yaml
Normal file
@@ -0,0 +1,251 @@
|
||||
substitutions:
|
||||
device_name: nspanel
|
||||
wifi_ssid: "nspanel"
|
||||
wifi_password: "NSPanel_HA_Blueprint"
|
||||
nextion_update_url: "https://github.com/Blackymas/NSPanel_HA_Blueprint/dummy"
|
||||
nextion_update_blank_url: "http://homeassistant.local:8123/local/nspanel/dev/nspanel_blank.tft"
|
||||
|
||||
packages:
|
||||
core_package: !include ../nspanel_esphome.yaml # Core package
|
||||
advanced_package: !include ../nspanel_esphome_advanced.yaml
|
||||
addon_climate_heat: !include ../nspanel_esphome_addon_climate_heat.yaml
|
||||
#addon_climate_cold: !include ../nspanel_esphome_addon_climate_cold.yaml
|
||||
|
||||
##### Customizations from Wiki #####
|
||||
api:
|
||||
# Encrypt the communication between ESPHome and Home Assistant
|
||||
encryption:
|
||||
key: !secret api_encryption_key
|
||||
# Reboot if HA is not connected for 15 minutes
|
||||
reboot_timeout: 15min
|
||||
|
||||
binary_sensor:
|
||||
# Is display awake?
|
||||
- name: ${device_name} Display state
|
||||
id: display_state
|
||||
platform: template
|
||||
lambda: |-
|
||||
return (id(current_page).state != "screensaver");
|
||||
|
||||
# Enable Bluetooth proxy
|
||||
bluetooth_proxy:
|
||||
|
||||
button:
|
||||
##### UPDATE TFT BLANK DISPLAY #####
|
||||
- name: ${device_name} Update TFT display (blank)
|
||||
platform: template
|
||||
icon: mdi:file-sync
|
||||
id: tft_update_blank
|
||||
entity_category: config
|
||||
on_press:
|
||||
- logger.log: "Button pressed: Update TFT display (blank)"
|
||||
- binary_sensor.template.publish:
|
||||
id: nextion_init
|
||||
state: false
|
||||
- delay: 16ms
|
||||
- lambda: |-
|
||||
id(disp1)->set_tft_url("${nextion_update_blank_url}");
|
||||
id(disp1).upload_tft();
|
||||
# Adds a button to put the panel to sleep
|
||||
- name: ${device_name} Sleep
|
||||
id: force_sleep
|
||||
platform: template
|
||||
icon: mdi:sleep
|
||||
on_press:
|
||||
then:
|
||||
- logger.log: Button Sleep pressed
|
||||
- lambda: |-
|
||||
if (id(current_page).state != "screensaver") id(disp1).goto_page("screensaver");
|
||||
|
||||
# Adds a button to wake-up the panel (similar to the existing service)
|
||||
- name: ${device_name} Wake-up
|
||||
id: force_wake_up
|
||||
platform: template
|
||||
icon: mdi:alarm
|
||||
on_press:
|
||||
then:
|
||||
- logger.log: Button Wake-up pressed
|
||||
- lambda: |-
|
||||
if (id(current_page).state == "screensaver") id(disp1).goto_page(id(wakeup_page_name).state.c_str());
|
||||
// id(timer_page).execute(id(wakeup_page_name).state.c_str()); // enable this if you want page timeout to be reset
|
||||
id(timer_sleep).execute(id(wakeup_page_name).state.c_str(), int(id(timeout_sleep).state));
|
||||
id(timer_dim).execute(id(wakeup_page_name).state.c_str(), int(id(timeout_dim).state));
|
||||
|
||||
deep_sleep:
|
||||
# Define the wake-up button. Use pin 14 for left button or pin 27 for right button
|
||||
wakeup_pin: 14
|
||||
wakeup_pin_mode: INVERT_WAKEUP
|
||||
|
||||
# Change framework to `esp-idf`
|
||||
esp32:
|
||||
framework:
|
||||
type: esp-idf
|
||||
|
||||
esphome:
|
||||
# change OTA password, remove after flashing
|
||||
on_boot:
|
||||
- lambda: |-
|
||||
id(my_ota).set_auth_password("New password");
|
||||
# Limit the amount of resources used for compiling
|
||||
compile_process_limit: 1
|
||||
|
||||
light:
|
||||
# Add the display as a light in Home Assistant
|
||||
- name: ${device_name} Display
|
||||
id: display_light
|
||||
icon: mdi:tablet-dashboard
|
||||
platform: monochromatic
|
||||
output: display_output
|
||||
default_transition_length: 0s
|
||||
on_turn_on:
|
||||
then:
|
||||
- lambda: |-
|
||||
ESP_LOGV("light.display_light", "Turn-on");
|
||||
if (id(current_page).state == "screensaver") id(disp1).goto_page(id(wakeup_page_name).state.c_str());
|
||||
id(timer_reset_all).execute(id(wakeup_page_name).state.c_str());
|
||||
on_turn_off:
|
||||
then:
|
||||
- lambda: |-
|
||||
ESP_LOGV("light.display_light", "Turn-off");
|
||||
id(disp1).goto_page("screensaver");
|
||||
|
||||
logger:
|
||||
# Enable hardware UART serial logging
|
||||
baud_rate: 115200
|
||||
|
||||
ota:
|
||||
# change OTA password, remove after flashing
|
||||
password: !secret wifi_password
|
||||
id: my_ota
|
||||
|
||||
output:
|
||||
# Output required by `display_light` to send the commands to Nextion
|
||||
- id: display_output
|
||||
platform: template
|
||||
type: float
|
||||
write_action:
|
||||
- lambda: |-
|
||||
ESP_LOGV("output.display_output", "state: %f", state);
|
||||
uint current_brightness = int(round(id(display_light).current_values.is_on() ? (id(display_light).current_values.get_brightness() * 100.0f) : 0.0));
|
||||
ESP_LOGV("output.display_output", "current_brightness: %i%%", current_brightness);
|
||||
id(set_brightness).execute(current_brightness);
|
||||
|
||||
script:
|
||||
# Updates the existing `page_changed` script to update the `display_light` status when a page changes
|
||||
- id: !extend page_changed
|
||||
then:
|
||||
- lambda: |-
|
||||
ESP_LOGV("script.page_changed(custom)", "page: %s", page.c_str());
|
||||
ESP_LOGV("script.page_changed(custom)", "is_on(): %i", id(display_light).current_values.is_on() ? 1 : 0);
|
||||
if (page == "screensaver" and id(display_light).current_values.is_on()) {
|
||||
auto call = id(display_light).turn_off();
|
||||
call.perform();
|
||||
} else if (page != "screensaver" and (not id(display_light).current_values.is_on())) {
|
||||
auto call = id(display_light).turn_on();
|
||||
call.perform();
|
||||
}
|
||||
|
||||
# Updates the existing `set_brightness` script to update the `display_light` status when a new brightness level is set
|
||||
- id: !extend set_brightness
|
||||
then:
|
||||
- lambda: |-
|
||||
ESP_LOGD("script.set_brightness(custom)", "brightness: %i", brightness);
|
||||
if (id(current_page).state != "screensaver" and brightness > 0) {
|
||||
auto call = id(display_light).turn_on();
|
||||
call.set_brightness(static_cast<float>(id(display_last_brightness)) / 100.0f);
|
||||
call.perform();
|
||||
} else {
|
||||
auto call = id(display_light).turn_off();
|
||||
call.perform();
|
||||
}
|
||||
|
||||
time:
|
||||
- id: !extend time_provider
|
||||
timezone: "America/Cancun"
|
||||
# Use my own local network time server
|
||||
platform: sntp
|
||||
servers:
|
||||
- !secret mysntpserver
|
||||
- europe.pool.ntp.org
|
||||
- 0.pool.ntp.org
|
||||
on_time:
|
||||
- hours: 23
|
||||
minutes: 0
|
||||
seconds: 0
|
||||
then:
|
||||
- deep_sleep.enter:
|
||||
sleep_duration: 7h
|
||||
# Scheduled relay
|
||||
- hours: 7
|
||||
minutes: 30
|
||||
seconds: 0
|
||||
then:
|
||||
- switch.turn_on: relay_1
|
||||
- hours: 12
|
||||
minutes: 15
|
||||
seconds: 0
|
||||
then:
|
||||
- switch.turn_off: relay_1
|
||||
- hours: 19
|
||||
minutes: 0
|
||||
seconds: 0
|
||||
then:
|
||||
- switch.turn_on: relay_1
|
||||
- hours: 23
|
||||
minutes: 30
|
||||
seconds: 0
|
||||
then:
|
||||
- switch.turn_off: relay_1
|
||||
# Scheduled climate
|
||||
- hours: 7
|
||||
minutes: 0
|
||||
seconds: 0
|
||||
then:
|
||||
- climate.control:
|
||||
id: thermostat_embedded
|
||||
mode: auto
|
||||
target_temperature: 22°C
|
||||
- hours: 19
|
||||
minutes: 0
|
||||
seconds: 0
|
||||
then:
|
||||
- climate.control:
|
||||
id: thermostat_embedded
|
||||
mode: auto
|
||||
target_temperature: 20°C
|
||||
- hours: 23
|
||||
minutes: 0
|
||||
seconds: 0
|
||||
then:
|
||||
- climate.control:
|
||||
id: thermostat_embedded
|
||||
mode: auto
|
||||
target_temperature: 18°C
|
||||
|
||||
uart:
|
||||
# Set Nextion comms baud rate to 921600 bps
|
||||
- id: !extend tf_uart
|
||||
baud_rate: 9600
|
||||
|
||||
web_server:
|
||||
# Custom web server credentials
|
||||
auth:
|
||||
username: !secret web_server_username
|
||||
password: !secret web_server_password
|
||||
|
||||
wifi:
|
||||
networks:
|
||||
- id: !extend wifi_default
|
||||
# Set IP address manually
|
||||
manual_ip:
|
||||
static_ip: 192.168.0.123
|
||||
gateway: 192.168.0.1
|
||||
subnet: 255.255.255.0
|
||||
# Connect to a hidden Wi-Fi network.
|
||||
hidden: true
|
||||
# Set dual network
|
||||
priority: 10
|
||||
- ssid: !secret wifi_ssid_backup
|
||||
password: !secret wifi_password_backup
|
||||
priority: 0
|
||||
fast_connect: true
|
||||
Reference in New Issue
Block a user