diff --git a/.cache/brands/integrations/_placeholder/dark_icon@2x.png b/.cache/brands/integrations/_placeholder/dark_icon@2x.png new file mode 100644 index 0000000..9f54693 Binary files /dev/null and b/.cache/brands/integrations/_placeholder/dark_icon@2x.png differ diff --git a/.cache/brands/integrations/lovelace/dark_icon.png b/.cache/brands/integrations/lovelace/dark_icon.png new file mode 100644 index 0000000..e5267fa Binary files /dev/null and b/.cache/brands/integrations/lovelace/dark_icon.png differ diff --git a/.cache/brands/integrations/tasmota/dark_logo.png b/.cache/brands/integrations/tasmota/dark_logo.png new file mode 100644 index 0000000..2f97df3 Binary files /dev/null and b/.cache/brands/integrations/tasmota/dark_logo.png differ diff --git a/.ha_run.lock b/.ha_run.lock index 3a45f89..91305ea 100644 --- a/.ha_run.lock +++ b/.ha_run.lock @@ -1 +1 @@ -{"pid": 67, "version": 1, "ha_version": "2026.4.0", "start_ts": 1775105928.9191253} \ No newline at end of file +{"pid": 67, "version": 1, "ha_version": "2026.4.1", "start_ts": 1775275075.484253} \ No newline at end of file diff --git a/esphome/esp-mainhallwaylights1.yaml b/esphome/esp-mainhallwaymainlights.yaml similarity index 64% rename from esphome/esp-mainhallwaylights1.yaml rename to esphome/esp-mainhallwaymainlights.yaml index 5b8b800..fefcefd 100644 --- a/esphome/esp-mainhallwaylights1.yaml +++ b/esphome/esp-mainhallwaymainlights.yaml @@ -1,25 +1,26 @@ #:########################################################################################:# -# TITLE: MAIN HALLWAY LIGHTSWITCH 1 (BK7231N) +# TITLE: MAIN HALLWAY LIGHTSWITCH # zorruno.com layout v1.1 2026 #:########################################################################################:# # REPO: -# https://home.fox.co.nz/gitea/zorruno/zorruno-homeassistant/src/branch/master/esphome/esp-mainhallwaylights1.yaml +# https://home.fox.co.nz/gitea/zorruno/zorruno-homeassistant/src/branch/master/esphome/esp-mainhallwaylights.yaml #:########################################################################################:# # VERSIONS: -# V1.1 2026-04-03 Updated yaml to zorruno layout V1.1; corrected KS-811 single naming and operation notes; updated BK7231N single-switch pin mapping +# V1.2 2026-04-03 Fixed local button logic so physical press toggles relay; moved custom MQTT +# status publish to relay state changes; corrected ESP8266 notes and wording +# V1.1 2026-04-03 Updated yaml to zorruno layout V1.1; corrected KS-811 single naming and +# operation notes # V1.0 2026-04-03 Initial #:########################################################################################:# # HARDWARE: # - Zemismart KS-811 Single push button -# - BK7231N based switch -# - BK72XX board: generic-bk7231n-qfn32-tuya -# - BK7231N single-switch pin mapping checked against KS-811 BK references #:########################################################################################:# # OPERATION NOTES: # - Main hallway switch with 1 output: # 1) Main Hallway Lights -# - A single press of the physical button toggles Relay 1 ON/OFF -# - Status LED uses P22 +# - A single press of the physical button toggles Relay 1 ON/OFF locally +# - Relay state is published to the custom MQTT status topic for remote sync +# - Status LED uses GPIO2 #:########################################################################################:# # MQTT COMMANDS: # - None @@ -42,21 +43,21 @@ #:########################################################################################:# substitutions: # Device Naming - device_name: "esp-mainhallwaylights1" + device_name: "esp-mainhallwaylights" friendly_name: "Main Hallway Lightswitch (1)" - description_comment: "BK7231N - Main Hallway Lightswitch using a Zemismart KS-811 Single Push Button. Main Hallway Lights (1) (Layout V1.1)" + description_comment: "Main Hallway Lightswitch using a Zemismart KS-811 Single Push Button. Main Hallway Lights (1) (Layout V1.1)" device_area: "Main Hallway" # Allows ESP device to be automatically linked to an 'Area' in Home Assistant. # Project Naming - project_name: "Zemismart Technologies.KS-811 Single BK7231N" # Project Details + project_name: "Zemismart Technologies.KS-811 Single" # Project Details project_version: "v1.1" # Project V denotes release of yaml file, allowing checking of deployed vs latest version # Passwords api_key: !secret esp-api_key # unfortunately you can't use substitutions inside secrets names ota_pass: !secret esp-ota_pass # unfortunately you can't use substitutions inside secrets names - static_ip_address: !secret esp-mainhallwaylights1_ip + static_ip_address: !secret esp-mainhallwaylights_ip mqtt_command_main_topic: !secret mqtt_command_main_topic - #mqtt_status_main_topic: !secret mqtt_status_main_topic + mqtt_status_main_topic: !secret mqtt_status_main_topic # If we are changing IP addresses, you must update the current IP address here, otherwise it remains # Don't forget to switch it back when changed. @@ -66,11 +67,14 @@ substitutions: log_level: "INFO" # Define logging level: NONE, ERROR, WARN, INFO, DEBUG (Default), VERBOSE, VERY_VERBOSE update_interval: "60s" # update time for for general sensors etc - # Default relay restore mode - # Options: RESTORE_DEFAULT_OFF, RESTORE_DEFAULT_ON, ALWAYS_ON, ALWAYS_OFF - relay_restore_mode: "RESTORE_DEFAULT_OFF" + # MQTT REMOTE Controls + mqtt_this_device_function1: "mainhallway-mainlights" + mqtt_this_device_command_topic1: "${mqtt_command_main_topic}/${mqtt_this_device_function1}" + mqtt_this_device_status_topic1: "${mqtt_status_main_topic}/${mqtt_this_device_function1}" + mqtt_command_on: "On" + mqtt_command_off: "Off" - # Switch Naming + # Switch/Relay/Button Naming & Icons switch_1_name: "Main Hallway Lights" #:########################################################################################:# @@ -113,18 +117,7 @@ packages: #diag_resetcount: !include common/include_resetcount_diag_sensors.yaml #:########################################################################################:# -# PACKAGE ITEM REMOVALS / OVERRIDES: -#:########################################################################################:# -wifi: - min_auth_mode: !remove # The WPA2 only works on esp32/8266 - reboot_timeout: 15min # override the selection from the common package - fast_connect: false # optional; force off in case package vars change - -mqtt: - keepalive: 15s # overriding the value from the common package - -#:########################################################################################:# -# ESPHOME: +# ESPHOME # https://esphome.io/components/esphome.html #:########################################################################################:# esphome: @@ -137,57 +130,111 @@ esphome: version: "${project_version}" #:########################################################################################:# -# BUILD FOR BK CHIPSET: -# bk72xx -# https://devices.esphome.io/board/bk72xx/ +# ESP PLATFORM AND FRAMEWORK +# https://esphome.io/components/esp8266.html #:########################################################################################:# -bk72xx: - board: generic-bk7231n-qfn32-tuya +esp8266: + board: esp01_1m + early_pin_init: false # Initialise pins early to known values. Recommended false where switches are involved. Defaults to true. + board_flash_mode: dout # Default is dout #:########################################################################################:# -# LOGGER: +# LOGGING # https://esphome.io/components/logger.html #:########################################################################################:# logger: - level: "${log_level}" # INFO Level suggested, or DEBUG for testing - baud_rate: 0 # set to 0 for no logging via UART, needed if you are using it for other serial things (eg PZEM) - id: logger_id + level: "${log_level}" + #baud_rate: 0 # set to 0 for no logging via UART, needed if you are using it for other serial things (eg PZEM) + #esp8266_store_log_strings_in_flash: false + #tx_buffer_size: 64 #:########################################################################################:# -# STATUS LED: +# MQTT: Device-specific MQTT command triggers +# This adds device-specific MQTT command triggers to the common MQTT configuration. +#:########################################################################################:# +mqtt: + on_connect: + - mqtt.publish: + topic: "${mqtt_this_device_status_topic1}" + payload: !lambda |- + return id(Relay_1).state ? "${mqtt_command_on}" : "${mqtt_command_off}"; + retain: true + + on_message: + - topic: "${mqtt_this_device_command_topic1}" + payload: "${mqtt_command_on}" + then: + - delay: 50ms + - if: + condition: + lambda: 'return !id(Relay_1).state;' + then: + - switch.turn_on: Relay_1 + + - topic: "${mqtt_this_device_command_topic1}" + payload: "${mqtt_command_off}" + then: + - delay: 50ms + - if: + condition: + lambda: 'return id(Relay_1).state;' + then: + - switch.turn_off: Relay_1 + +#:########################################################################################:# +# STATUS LED # https://esphome.io/components/status_led.html #:########################################################################################:# status_led: pin: - number: P22 # GPIO22 - inverted: true + number: GPIO02 + inverted: yes #:########################################################################################:# -# BINARY SENSORS: +# BINARY SENSORS # https://esphome.io/components/binary_sensor/ #:########################################################################################:# binary_sensor: - platform: gpio - id: button_1 - internal: true pin: - number: P24 # GPIO24 - mode: - input: true - pullup: true + number: GPIO0 + mode: INPUT inverted: true + name: "Button 1: ${switch_1_name}" filters: - - delayed_on: 20ms + - delayed_on: 10ms + - delayed_off: 10ms on_press: - - switch.toggle: Relay_1 + - if: + condition: + switch.is_on: Relay_1 + then: + - switch.turn_off: Relay_1 + - mqtt.publish: + topic: "${mqtt_this_device_command_topic1}" + payload: "${mqtt_command_off}" + else: + - switch.turn_on: Relay_1 + - mqtt.publish: + topic: "${mqtt_this_device_command_topic1}" + payload: "${mqtt_command_on}" #:########################################################################################:# -# SWITCH COMPONENT: +# SWITCH # https://esphome.io/components/switch/ #:########################################################################################:# switch: - platform: gpio name: "Relay 1: ${switch_1_name}" - pin: P16 # GPIO16 + pin: GPIO12 id: Relay_1 - restore_mode: ${relay_restore_mode} \ No newline at end of file + on_turn_on: + - mqtt.publish: + topic: "${mqtt_this_device_status_topic1}" + payload: "${mqtt_command_on}" + retain: true + on_turn_off: + - mqtt.publish: + topic: "${mqtt_this_device_status_topic1}" + payload: "${mqtt_command_off}" + retain: true \ No newline at end of file diff --git a/esphome/esp-mainhallwaylights2.yaml b/esphome/esp-mainhallwaynightlights.yaml similarity index 75% rename from esphome/esp-mainhallwaylights2.yaml rename to esphome/esp-mainhallwaynightlights.yaml index 73368b1..ca2948e 100644 --- a/esphome/esp-mainhallwaylights2.yaml +++ b/esphome/esp-mainhallwaynightlights.yaml @@ -42,7 +42,7 @@ #:########################################################################################:# substitutions: # Device Naming - device_name: "esp-mainhallwaylights2" + device_name: "esp-mainhallwaynightlights" friendly_name: "Main Hallway Nightlights (1)" description_comment: "BK7231N - Main Hallway Nightlights using a Zemismart KS-811 Single Push Button. Main Hallway Nightlights (1) (Layout V1.1)" device_area: "Main Hallway" # Allows ESP device to be automatically linked to an 'Area' in Home Assistant. @@ -54,9 +54,9 @@ substitutions: # Passwords api_key: !secret esp-api_key # unfortunately you can't use substitutions inside secrets names ota_pass: !secret esp-ota_pass # unfortunately you can't use substitutions inside secrets names - static_ip_address: !secret esp-mainhallwaylights2_ip + static_ip_address: !secret esp-mainhallwaynightlights_ip mqtt_command_main_topic: !secret mqtt_command_main_topic - #mqtt_status_main_topic: !secret mqtt_status_main_topic + mqtt_status_main_topic: !secret mqtt_status_main_topic # If we are changing IP addresses, you must update the current IP address here, otherwise it remains # Don't forget to switch it back when changed. @@ -66,11 +66,18 @@ substitutions: log_level: "INFO" # Define logging level: NONE, ERROR, WARN, INFO, DEBUG (Default), VERBOSE, VERY_VERBOSE update_interval: "60s" # update time for for general sensors etc + # MQTT REMOTE Controls + mqtt_this_device_function1: "mainhallway-nightlights" + mqtt_this_device_command_topic1: "${mqtt_command_main_topic}/${mqtt_this_device_function1}" + mqtt_this_device_status_topic1: "${mqtt_status_main_topic}/${mqtt_this_device_function1}" + mqtt_command_on: "On" + mqtt_command_off: "Off" + # Default relay restore mode # Options: RESTORE_DEFAULT_OFF, RESTORE_DEFAULT_ON, ALWAYS_ON, ALWAYS_OFF relay_restore_mode: "RESTORE_DEFAULT_OFF" - # Switch Naming + # Switch/Relay/Button Naming & Icons switch_1_name: "Main Hallway Nightlights" #:########################################################################################:# @@ -120,8 +127,8 @@ wifi: reboot_timeout: 15min # override the selection from the common package fast_connect: false # optional; force off in case package vars change -mqtt: - keepalive: 15s # overriding the value from the common package +#mqtt: +# keepalive: 15s # overriding the value from the common package #:########################################################################################:# # ESPHOME: @@ -153,6 +160,39 @@ logger: baud_rate: 0 # set to 0 for no logging via UART, needed if you are using it for other serial things (eg PZEM) id: logger_id +#:########################################################################################:# +# MQTT: Device-specific MQTT command triggers +# This adds device-specific MQTT command triggers to the common MQTT configuration. +#:########################################################################################:# +mqtt: + on_connect: + - mqtt.publish: + topic: "${mqtt_this_device_status_topic1}" + payload: !lambda |- + return id(Relay_1).state ? "${mqtt_command_on}" : "${mqtt_command_off}"; + retain: true + + on_message: + - topic: "${mqtt_this_device_command_topic1}" + payload: "${mqtt_command_on}" + then: + - delay: 50ms + - if: + condition: + lambda: 'return !id(Relay_1).state;' + then: + - switch.turn_on: Relay_1 + + - topic: "${mqtt_this_device_command_topic1}" + payload: "${mqtt_command_off}" + then: + - delay: 50ms + - if: + condition: + lambda: 'return id(Relay_1).state;' + then: + - switch.turn_off: Relay_1 + #:########################################################################################:# # STATUS LED: # https://esphome.io/components/status_led.html @@ -171,15 +211,29 @@ binary_sensor: id: button_1 internal: true pin: - number: P24 # GPIO24 + number: P24 mode: input: true pullup: true inverted: true + name: "Button 1: ${switch_1_name}" filters: - - delayed_on: 20ms + - delayed_on: 10ms + - delayed_off: 10ms on_press: - - switch.toggle: Relay_1 + - if: + condition: + switch.is_on: Relay_1 + then: + - switch.turn_off: Relay_1 + - mqtt.publish: + topic: "${mqtt_this_device_command_topic1}" + payload: "${mqtt_command_off}" + else: + - switch.turn_on: Relay_1 + - mqtt.publish: + topic: "${mqtt_this_device_command_topic1}" + payload: "${mqtt_command_on}" #:########################################################################################:# # SWITCH COMPONENT: @@ -188,6 +242,16 @@ binary_sensor: switch: - platform: gpio name: "Relay 1: ${switch_1_name}" - pin: P16 # GPIO16 + pin: P16 id: Relay_1 - restore_mode: ${relay_restore_mode} \ No newline at end of file + restore_mode: ${relay_restore_mode} + on_turn_on: + - mqtt.publish: + topic: "${mqtt_this_device_status_topic1}" + payload: "${mqtt_command_on}" + retain: true + on_turn_off: + - mqtt.publish: + topic: "${mqtt_this_device_status_topic1}" + payload: "${mqtt_command_off}" + retain: true \ No newline at end of file diff --git a/esphome/esp-mainhallwaynorthlightswitch.yaml b/esphome/esp-mainhallwaynorthlightswitch.yaml new file mode 100644 index 0000000..2d742da --- /dev/null +++ b/esphome/esp-mainhallwaynorthlightswitch.yaml @@ -0,0 +1,329 @@ +#:########################################################################################:# +# TITLE: MAIN HALLWAY NORTH LIGHTSWITCH +# zorruno.com layout v1.1 2026 +#:########################################################################################:# +# REPO: +# https://home.fox.co.nz/gitea/zorruno/zorruno-homeassistant/src/branch/master/esphome/esp-mainhallwaynorthlightswitch.yaml +#:########################################################################################:# +# VERSIONS: +# V1.1 2026-04-04 Updated yaml to zorruno layout V1.1; checked KS-811 dual ESP8266 GPIO mapping; +# corrected Relay 2 naming; added MQTT state republish on reconnect; added +# GPIO16 polling for Button 1 compatibility; expanded notes/comments +# V1.0 2026-04-03 Initial +#:########################################################################################:# +# HARDWARE: +# - Zemismart KS-811 Double Push Button +# - ESP8266 variant +# - Community-traced dual-button pinout matches: +# - Button 1 (top): GPIO16 +# - Button 2 (bottom): GPIO5 +# - Relay 1: GPIO13 +# - Relay 2: GPIO12 +# - Status LED: GPIO2 (inverted) +#:########################################################################################:# +# OPERATION NOTES: +# - Button 1 toggles Relay 1 locally. +# - Button 2 toggles Relay 2 locally. +# - MQTT command topics can also turn each relay On or Off. +# - Custom MQTT status topics publish the actual relay state after local or MQTT changes. +# - Current relay states are also republished whenever MQTT reconnects, helping late subscribers. +# - GPIO16 on ESP8266 does not support normal GPIO interrupts, so Button 1 uses polling mode. +#:########################################################################################:# +# MQTT COMMANDS: +# - ${mqtt_this_device_command_topic1} +# Payloads: ${mqtt_command_on}, ${mqtt_command_off} +# - ${mqtt_this_device_command_topic2} +# Payloads: ${mqtt_command_on}, ${mqtt_command_off} +# - Status topics: +# - ${mqtt_this_device_status_topic1} +# - ${mqtt_this_device_status_topic2} +# Payloads mirror the actual relay state and are published retained. +#:########################################################################################:# +# OFFLINE NOTES: +# a) HA offline (network and MQTT still online) +# - Local button control continues. +# - MQTT command/status operation continues. +# +# b) MQTT offline (or HA and MQTT offline) +# - Local button control continues. +# - If Home Assistant is online and connected by native ESPHome API, HA control can still work. +# - Custom MQTT commands/status are unavailable until MQTT returns. +# +# c) Entire WiFi/network offline +# - Local wall-switch button control continues for both relays. +# - Accurate time is not needed. SNTP is not used for this device. +#:########################################################################################:# + +#:########################################################################################:# +# SUBSTITUTIONS: Specific device variable substitutions +# If NOT using a secrets file, just replace these with the passwords etc (in quotes) +#:########################################################################################:# +substitutions: + # Device Naming + device_name: "esp-mainhallwaynorthlightswitch" + friendly_name: "Main Hallway North Lightswitch (2)" + description_comment: "Main Hallway Lightswitch using a Zemismart KS-811 Double Push Button. Main Hallway Lights (1), Night Lights (2) (Layout V1.1)" + device_area: "Main Hallway" # Allows ESP device to be automatically linked to an 'Area' in Home Assistant. + + # Project Naming + project_name: "Zemismart Technologies.KS-811 Double" + project_version: "v1.1" # Project V denotes release of yaml file, allowing checking of deployed vs latest version + + # Passwords + api_key: !secret esp-api_key # unfortunately you can't use substitutions inside secrets names + ota_pass: !secret esp-ota_pass # unfortunately you can't use substitutions inside secrets names + static_ip_address: !secret esp-mainhallwaynorthlightswitch_ip + mqtt_command_main_topic: !secret mqtt_command_main_topic + mqtt_status_main_topic: !secret mqtt_status_main_topic + + # If we are changing IP addresses, you must update the current IP address here, otherwise it remains + # Don't forget to switch it back when changed. + current_ip_address: ${static_ip_address} + + # Device Settings + log_level: "INFO" # NONE, ERROR, WARN, INFO, DEBUG, VERBOSE, VERY_VERBOSE + update_interval: "60s" # General sensor update interval + + # MQTT Remote Controls + mqtt_this_device_function1: "mainhallway-mainlights" + mqtt_this_device_command_topic1: "${mqtt_command_main_topic}/${mqtt_this_device_function1}" + mqtt_this_device_status_topic1: "${mqtt_status_main_topic}/${mqtt_this_device_function1}" + mqtt_command_on: "On" + mqtt_command_off: "Off" + + mqtt_this_device_function2: "mainhallway-nightlights" + mqtt_this_device_command_topic2: "${mqtt_command_main_topic}/${mqtt_this_device_function2}" + mqtt_this_device_status_topic2: "${mqtt_status_main_topic}/${mqtt_this_device_function2}" + + # Switch/Relay/Button Naming + switch_1_name: "Main Hallway Lights" + switch_2_name: "Main Hallway Nightlights" + +#:########################################################################################:# +# PACKAGES: Included Common Packages +# https://esphome.io/components/packages.html +#:########################################################################################:# +packages: + #### WIFI, Network (Static/DHCP/IPV6 etc), Fallback AP, Safemode #### + common_wifi: !include + file: common/network_common.yaml + vars: + local_device_name: "${device_name}" + local_static_ip_address: "${static_ip_address}" + local_ota_pass: "${ota_pass}" + local_current_ip_address: "${current_ip_address}" + + #### HOME ASSISTANT API (choose encryption or no encryption options) #### + common_api: !include + file: common/api_common.yaml + #file: common/api_common_noencryption.yaml + vars: + local_api_key: "${api_key}" + + #### MQTT #### + common_mqtt: !include + file: common/mqtt_common.yaml + vars: + local_device_name: "${device_name}" + + #### WEB PORTAL #### + #common_webportal: !include common/webportal_common.yaml + + #### SNTP (Only use if you want/need accurate timeclocks) #### + #common_sntp: !include common/sntp_common.yaml + + #### DIAGNOSTICS Sensors #### + diag_basic: !include common/include_basic_diag_sensors.yaml + #diag_more: !include common/include_more_diag_sensors.yaml + #diag_debug: !include common/include_debug_diag_sensors.yaml + #diag_resetcount: !include common/include_resetcount_diag_sensors.yaml + +#:########################################################################################:# +# ESPHOME +# https://esphome.io/components/esphome.html +#:########################################################################################:# +esphome: + name: "${device_name}" + friendly_name: "${friendly_name}" + comment: "${description_comment}" # Appears on the ESPHome page in HA + area: "${device_area}" + project: + name: "${project_name}" + version: "${project_version}" + +#:########################################################################################:# +# ESP PLATFORM AND FRAMEWORK +# https://esphome.io/components/esp8266.html +#:########################################################################################:# +esp8266: + board: esp01_1m + early_pin_init: false # Recommended false where relays/switches are involved + board_flash_mode: dout + +#:########################################################################################:# +# LOGGING +# https://esphome.io/components/logger.html +#:########################################################################################:# +logger: + level: "${log_level}" + #baud_rate: 0 # Set to 0 for no logging via UART if UART is needed elsewhere + #esp8266_store_log_strings_in_flash: false + #tx_buffer_size: 64 + +#:########################################################################################:# +# MQTT: Device-specific MQTT command triggers +# This extends the common MQTT package with local custom command/status topics. +#:########################################################################################:# +mqtt: + # Republish current relay states whenever MQTT reconnects so retained status stays accurate + # for subscribers that reconnect later. + on_connect: + - mqtt.publish: + topic: "${mqtt_this_device_status_topic1}" + payload: !lambda |- + return id(Relay_1).state ? "${mqtt_command_on}" : "${mqtt_command_off}"; + retain: true + - mqtt.publish: + topic: "${mqtt_this_device_status_topic2}" + payload: !lambda |- + return id(Relay_2).state ? "${mqtt_command_on}" : "${mqtt_command_off}"; + retain: true + + on_message: + # Mirror remote state onto Relay_1, but only if a real state change is needed. + - topic: "${mqtt_this_device_command_topic1}" + payload: "${mqtt_command_on}" + then: + - if: + condition: + lambda: "return !id(Relay_1).state;" + then: + - switch.turn_on: Relay_1 + + - topic: "${mqtt_this_device_command_topic1}" + payload: "${mqtt_command_off}" + then: + - if: + condition: + lambda: "return id(Relay_1).state;" + then: + - switch.turn_off: Relay_1 + + # Mirror remote state onto Relay_2, but only if a real state change is needed. + - topic: "${mqtt_this_device_command_topic2}" + payload: "${mqtt_command_on}" + then: + - if: + condition: + lambda: "return !id(Relay_2).state;" + then: + - switch.turn_on: Relay_2 + + - topic: "${mqtt_this_device_command_topic2}" + payload: "${mqtt_command_off}" + then: + - if: + condition: + lambda: "return id(Relay_2).state;" + then: + - switch.turn_off: Relay_2 + +#:########################################################################################:# +# STATUS LED +# https://esphome.io/components/status_led.html +#:########################################################################################:# +status_led: + pin: + number: GPIO2 + inverted: true + +#:########################################################################################:# +# BINARY SENSORS +# https://esphome.io/components/binary_sensor/ +#:########################################################################################:# +binary_sensor: + - platform: gpio + pin: + number: GPIO16 + mode: + input: true + inverted: true + name: "Button 1: ${switch_1_name}" + use_interrupt: false + filters: + - delayed_on: 10ms + - delayed_off: 10ms + on_press: + - if: + condition: + switch.is_on: Relay_1 + then: + - switch.turn_off: Relay_1 + - mqtt.publish: + topic: "${mqtt_this_device_command_topic1}" + payload: "${mqtt_command_off}" + else: + - switch.turn_on: Relay_1 + - mqtt.publish: + topic: "${mqtt_this_device_command_topic1}" + payload: "${mqtt_command_on}" + + - platform: gpio + pin: + number: GPIO5 + mode: + input: true + inverted: true + name: "Button 2: ${switch_2_name}" + filters: + - delayed_on: 10ms + - delayed_off: 10ms + on_press: + - if: + condition: + switch.is_on: Relay_2 + then: + - switch.turn_off: Relay_2 + - mqtt.publish: + topic: "${mqtt_this_device_command_topic2}" + payload: "${mqtt_command_off}" + else: + - switch.turn_on: Relay_2 + - mqtt.publish: + topic: "${mqtt_this_device_command_topic2}" + payload: "${mqtt_command_on}" + +#:########################################################################################:# +# SWITCH +# https://esphome.io/components/switch/ +#:########################################################################################:# +switch: + - platform: gpio + name: "Relay 1: ${switch_1_name}" + pin: GPIO13 + id: Relay_1 + on_turn_on: + - mqtt.publish: + topic: "${mqtt_this_device_status_topic1}" + payload: "${mqtt_command_on}" + retain: true + on_turn_off: + - mqtt.publish: + topic: "${mqtt_this_device_status_topic1}" + payload: "${mqtt_command_off}" + retain: true + + - platform: gpio + name: "Relay 2: ${switch_2_name}" + pin: GPIO12 + id: Relay_2 + on_turn_on: + - mqtt.publish: + topic: "${mqtt_this_device_status_topic2}" + payload: "${mqtt_command_on}" + retain: true + on_turn_off: + - mqtt.publish: + topic: "${mqtt_this_device_status_topic2}" + payload: "${mqtt_command_off}" + retain: true \ No newline at end of file diff --git a/packages/simulation_lights.yaml b/packages/simulation_lights.yaml index 15decd2..86eef4f 100644 --- a/packages/simulation_lights.yaml +++ b/packages/simulation_lights.yaml @@ -9,7 +9,7 @@ group: - switch.esp_entrancelightswitch_relay_1_entrance_lights - switch.esp_mainkitchenlights_relay_1_main_lights - switch.esp_mainkitchenlights_relay_2_benchtop_lights - - switch.main_hallway_lightswitch_tasmo_ks811s_2940_hallway_1a + - switch.main_hallway_lightswitch_relay_1_main_hallway_lights - light.esp_lounge6chdimmer_lounge_downlights_centre - light.esp_lounge6chdimmer_lounge_downlights_south - light.esp_lounge6chdimmer_lounge_rafter_buttons