diff --git a/esphome/esp-bedrm2ceilingfan copy.yaml b/esphome/esp-bedrm2ceilingfan copy.yaml deleted file mode 100644 index cf10a8e..0000000 --- a/esphome/esp-bedrm2ceilingfan copy.yaml +++ /dev/null @@ -1,381 +0,0 @@ -########################################################################################## -########################################################################################## -# CEILING FAN - BEDROOM 2 -# - 3 speed fan using Sonoff IFan02 -# - Also, single Light Output -# -# Controlled by a Sonoff IFan 02 -# -# V1.0 - 2025-07-21 First Setup (and replacement of Tasmota) -# -# NOTES: -# Command the fan with MQTT -# ${mqtt_local_command_full_topic}/speed/set 1,2,3,0,+,- -# ${mqtt_local_command_full_topic}/light/set ON,OFF -# Status of the fan is in MQTT -# ${mqtt_local_command_full_topic}/speed/state 1,2,3,0 -# ${mqtt_local_command_full_topic}/light/state ON,OFF -# -########################################################################################## -########################################################################################## - -########################################################################################## -# 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-bedrm2ceilingfan" - friendly_name: "Bedroom 2 Ceiling Fan" - description_comment: "3 Speed Overhead Ceiling Fan Bedroom 2 :: Sonoff ifan02" - device_area: "Bedroom 2" # Allows ESP device to be automatically linked to an 'Area' in Home Assistant. - - # Project Naming - project_name: "Sonoff Technologies.Sonoff ifan02" # Project Details - project_version: "v1.0" # Project V denotes release of yaml file, allowing checking of deployed vs latest version - - # Passwords & Secrets - api_key: !secret esp-api_key - ota_pass: !secret esp-ota_pass - static_ip_address: !secret esp-bedrm2ceilingfan_ip # unfortunately you can't use substitutions inside secrets names - mqtt_local_command_main_topic: !secret mqtt_local_command_main_topic - mqtt_local_status_main_topic: !secret mqtt_local_status_main_topic - - # Device Settings - 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 LOCAL Controls - mqtt_device_name: "bedroom2-ceilingfan" - mqtt_local_command_topic: "${mqtt_local_command_main_topic}/${mqtt_device_name}" # Topic we will use to command this locally without HA - mqtt_local_status_topic: "${mqtt_local_status_main_topic}/${mqtt_device_name}" # Topic we will use to view status locally without HA - - # MQTT REMOTE Controls - - # Button Naming & Icons - - # Switch/Relay Naming & Icons - #relay_icon: "mdi:lightbulb-group" - light_1_name: "Fan Light" - switch_2_name: "Fan 2 Relay" - switch_3_name: "Fan 3 Relay" - switch_4_name: "Fan 4 Relay" - -########################################################################################## -# PACKAGES: Included Common Packages -# https://esphome.io/components/packages.html -########################################################################################## -packages: - 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}" - common_api: !include - file: common/api_common.yaml - vars: - local_api_key: "${api_key}" - #common_webportal: !include - # file: common/webportal_common.yaml - common_mqtt: !include - file: common/mqtt_common.yaml - vars: - local_device_name: "${device_name}" - common_sntp: !include - file: common/sntp_common.yaml - common_general_sensors: !include - file: common/sensors_common.yaml - vars: - local_friendly_name: "${friendly_name}" - local_update_interval: "${update_interval}" - -########################################################################################## -# 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}" - on_boot: # This weird toggle thing makes sure the states get restored on reboot - priority : -100 - then: - - delay: 200ms - #- fan.toggle: ifan02_fan - #- fan.toggle: ifan02_fan - #- delay: 200ms - #- light.toggle: ifan02_light - #- delay: 1ms - #- light.toggle: ifan02_light - #- delay: 1s - - mqtt.publish: - topic: "${mqtt_local_status_topic}/speed/state" - payload: !lambda 'return to_string(id(speed_value));' -# platformio_options: -# build_flags: -# - "-Os" # optimize for size -# - "-Wl,--gc-sections" # drop unused code/data -# - "-fno-exceptions" # strip C++ exceptaions -# - "-fno-rtti" # strip C++ RTTI - -########################################################################################## -# ESP Platform and Framework -# https://esphome.io/components/esp32.html -########################################################################################## -esp8266: - board: esp01_1m # The original sonoff basic - restore_from_flash: True # restore some values on reboot - -preferences: - flash_write_interval: 5min - -mdns: - disabled: True # Disabling will make the build file smaller (and it is still available via static IP) - -########################################################################################## -# GLOBAL VARIABLES -########################################################################################## -globals: - - id: speed_value - type: int - restore_value: yes - initial_value: '0' - -########################################################################################## -# ESPHome Logging Enable -# 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, Serial control) - #esp8266_store_log_strings_in_flash: false - #tx_buffer_size: 64 - -########################################################################################## -# MQTT COMMANDS -# This adds device-specific MQTT command triggers to the common MQTT configuration. -########################################################################################## -mqtt: - on_message: - # Light control - - topic: "${mqtt_local_command_topic}/light/set" - payload: "ON" - then: - - light.turn_on: ifan02_light - - topic: "${mqtt_local_command_topic}/light/set" - payload: "OFF" - then: - - light.turn_off: ifan02_light - - # Fan speed control (0–3) + ramp up/down (+ / -) - - topic: "${mqtt_local_command_topic}/speed/set" - then: - # 1) Compute new speed_value based on payload - - lambda: |- - std::string s = x; - int val = id(speed_value); - if (s == "+") { - val++; - } else if (s == "-") { - val--; - } else if (s.size() && isdigit(s[0])) { - val = atoi(s.c_str()); - } else { - ESP_LOGE("ifan02", "Invalid speed payload: '%s'", x.c_str()); - return; - } - // Clamp between 0 and 3 - if (val < 0) val = 0; - if (val > 3) val = 3; - id(speed_value) = val; - - # 2) Drive the fan based on the new value - - if: - condition: - lambda: 'return id(speed_value) == 0;' - then: - - fan.turn_off: ifan02_fan - else: - - fan.turn_on: - id: ifan02_fan - speed: !lambda 'return id(speed_value);' - -########################################################################################## -# SWITCH COMPONENT -# https://esphome.io/components/switch/ -########################################################################################## -# Sonoff ifan02 has relays, but they don't need to be shown in HA because -# the speed of the fan is the important part (and combinations of the relays give that) -########################################################################################## -switch: - - platform: gpio - name: "${switch_3_name}" - pin: GPIO4 - id: fan3sw - restore_mode: RESTORE_DEFAULT_OFF - internal: true - - platform: gpio - name: "${switch_2_name}" - pin: GPIO5 - id: fan2sw - restore_mode: RESTORE_DEFAULT_OFF - internal: true - - platform: gpio - name: "${switch_4_name}" - pin: GPIO15 - id: fan4sw - restore_mode: RESTORE_DEFAULT_OFF - internal: true - -########################################################################################## -# SELECT COMPONENT -# https://esphome.io/components/select/index.html -########################################################################################## -select: - - platform: template - name: "Bedroom 2 Fan Speed" - id: bedroom2_fan_speed_select - options: - - "Off" - - "Low" - - "Medium" - - "High" - update_interval: 1s - lambda: |- - switch (id(speed_value)) { - case 1: return esphome::optional("Low"); - case 2: return esphome::optional("Medium"); - case 3: return esphome::optional("High"); - default: return esphome::optional("Off"); - } - set_action: - # OFF - - if: - condition: - lambda: 'return x == "Off";' - then: - - lambda: |- - id(speed_value) = 0; - - fan.turn_off: ifan02_fan - # LOW (1) - - if: - condition: - lambda: 'return x == "Low";' - then: - - lambda: |- - id(speed_value) = 1; - - fan.turn_on: - id: ifan02_fan - speed: 1 - # MEDIUM (2) - - if: - condition: - lambda: 'return x == "Medium";' - then: - - lambda: |- - id(speed_value) = 2; - - fan.turn_on: - id: ifan02_fan - speed: 2 - # HIGH (3) - - if: - condition: - lambda: 'return x == "High";' - then: - - lambda: |- - id(speed_value) = 3; - - fan.turn_on: - id: ifan02_fan - speed: 3 - -################################################################################ -# TEMPLATE OUTPUTS: drive the real relays when the states change -################################################################################ -output: - - platform: gpio - pin: GPIO12 - id: lightrelay - - platform: template - type: float - id: fan_decode - write_action: - - lambda: |- - if (state < 0.25) { - id(fan2sw).turn_off(); - id(fan3sw).turn_off(); - id(fan4sw).turn_off(); - } - else if (state < 0.5) { - id(fan2sw).turn_on(); - id(fan3sw).turn_off(); - id(fan4sw).turn_off(); - } - else if (state < 0.75) { - id(fan2sw).turn_on(); - id(fan3sw).turn_on(); - id(fan4sw).turn_off(); - } - else { - id(fan2sw).turn_on(); - id(fan3sw).turn_off(); - id(fan4sw).turn_on(); - } - -########################################################################################## -# LIGHT COMPONENT -# https://esphome.io/components/light/ -########################################################################################## -light: - - platform: binary - name: "${light_1_name}" - output: lightrelay - restore_mode: RESTORE_DEFAULT_OFF - id: ifan02_light - # publish status updates when the light turns on/off: - on_turn_on: - - mqtt.publish: - topic: "${mqtt_local_status_topic}/light/state" - payload: "ON" - on_turn_off: - - mqtt.publish: - topic: "${mqtt_local_status_topic}/light/state" - payload: "OFF" - -########################################################################################## -# FAN COMPONENT -# https://esphome.io/components/fan/index.html -########################################################################################## -fan: - - platform: speed - output: fan_decode - name: "Fan" - id: ifan02_fan - speed_count: 3 - restore_mode: RESTORE_DEFAULT_OFF - # whenever you explicitly set a speed (1–3): - on_speed_set: - - lambda: |- - id(speed_value) = x; - - mqtt.publish: - topic: "${mqtt_local_status_topic}/speed/state" - payload: !lambda 'return to_string(id(speed_value));' - # whenever the fan goes fully off: - on_turn_off: - - lambda: |- - id(speed_value) = 0; - - mqtt.publish: - topic: "${mqtt_local_status_topic}/speed/state" - payload: "0" - # whenever the fan goes off→on (e.g. via HA’s Fan switch): - on_turn_on: - - lambda: |- - // bump 0→1 if we were off - if (id(speed_value) == 0) id(speed_value) = 1; - - fan.turn_on: - id: ifan02_fan - speed: !lambda 'return id(speed_value);' - - mqtt.publish: - topic: "${mqtt_local_status_topic}/speed/state" - payload: !lambda 'return to_string(id(speed_value));' \ No newline at end of file diff --git a/esphome/esp-bedrm3fanswitch copy.yaml.old b/esphome/esp-bedrm3fanswitch copy.yaml.old deleted file mode 100644 index 04bb972..0000000 --- a/esphome/esp-bedrm3fanswitch copy.yaml.old +++ /dev/null @@ -1,265 +0,0 @@ -########################################################################################## -########################################################################################## -# BEDROOM 3 FAN SWITCH -# -# Controlled by a Zemismart KS-811 Triple push button -# pinout/schematic https://community.home-assistant.io/t/zemismart-ks-811-working-with-esphome/ -# -# V1.0 - 2025-07-23 First Setup (and replacement of Tasmota) -# -# NOTES -# - Switch for Ceiling Fan -# - 3 Switches, Up, Down and Off -# - Remote commands to the fan ${mqtt_remote_command_full_topic}/speed/set 1,2,3,0,+,- -# -########################################################################################## -########################################################################################## - -########################################################################################## -# 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-bedrm3fanswitch" - friendly_name: "Bedroom 3 Fan Wall Switch (3)" - description_comment: "Switch for Bedroom 3 Ceiling Fan using Zemismart KS-811 Triple Push Button. Speed Up (1), Speed Down (2), Fan Off (3)" - device_area: "Bedroom 3" # Allows ESP device to be automatically linked to an 'Area' in Home Assistant. - - # Project Naming - project_name: "Zemismart Technologies.KS-811-3 (Triple)" # Project Details - project_version: "v1" # Project V denotes release of yaml file, allowing checking of deployed vs latest version - - #entity_prefix: "Main Bathroom" # Simple device name where we want to prefix a sensor or switch, eg "Load" Current. - - # 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-bedrm3fanswitch_ip - mqtt_local_command_main_topic: !secret mqtt_local_command_main_topic - mqtt_local_status_main_topic: !secret mqtt_local_status_main_topic - - # Device Settings - #relay_icon: "mdi:heating-coil" - 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 LOCAL Controls - #mqtt_device_name: "bedroom2-ceilingfan-switch" - #mqtt_local_command_topic: "${mqtt_local_command_main_topic}/${mqtt_device_name}" # Topic we will use to command this locally without HA - #mqtt_local_status_topic: "${mqtt_local_status_main_topic}/${mqtt_device_name}" # Topic we will use to view status locally without HA - - # MQTT REMOTE Controls - mqtt_remote_device_name: "bedroom3-ceilingfan" - mqtt_remote_device_command_topic: "${mqtt_local_command_main_topic}/${mqtt_remote_device_name}/speed/set" - mqtt_remote_device_command1: "+" - mqtt_remote_device_command2: "-" - mqtt_remote_device_command3: "0" - mqtt_local_status_topic: "${mqtt_local_status_main_topic}/${mqtt_remote_device_name}/speed/state" # Topic we will use to view status locally without HA - - # Button Naming & Icons - - # Switch/Relay Naming & Icons - #relay_icon: "mdi:heating-coil" - switch_1_name: "Fan Speed Up" # This is virtual only, no power connected to 1st relay - switch_2_name: "Fan Speed Down" # This is virtual only, no power connected to 2nd relay - switch_3_name: "Fan Off" # This is virtual only, no power connected to 3rd relay - -########################################################################################## -# PACKAGES: Included Common Packages -# https://esphome.io/components/packages.html -########################################################################################## -packages: - 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}" - common_api: !include - file: common/api_common.yaml - vars: - local_api_key: "${api_key}" - #common_webportal: !include - # file: common/webportal_common.yaml - common_mqtt: !include - file: common/mqtt_common.yaml - vars: - local_device_name: "${device_name}" - common_sntp: !include - file: common/sntp_common.yaml - common_general_sensors: !include - file: common/sensors_common.yaml - vars: - local_friendly_name: "${friendly_name}" - local_update_interval: "${update_interval}" - -########################################################################################## -# 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}" - platformio_options: - build_flags: - - "-Os" # optimize for size - - "-Wl,--gc-sections" # drop unused code/data - - "-fno-exceptions" # strip C++ exceptions - - "-fno-rtti" # strip C++ RTTI -# on_boot: -# priority: 200 -# then: -# - switch.turn_on: Relay_3 - -########################################################################################## -# ESP Platform and Framework -# https://esphome.io/components/esp32.html -########################################################################################## -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 - -########################################################################################## -# ESPHome Logging Enable -# 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) - #esp8266_store_log_strings_in_flash: false - #tx_buffer_size: 64 - -########################################################################################## -# STATUS LED -# https://esphome.io/components/status_led.html -########################################################################################## -# Status LED for KS-811 is GPIO02 -########################################################################################## -status_led: - pin: - number: GPIO02 - inverted: yes - -########################################################################################## -# BINARY SENSORS -# https://esphome.io/components/binary_sensor/ -########################################################################################## -# Buttons for KS-811-3 are GPIO16, GPIO05, GPIO04 -########################################################################################## -binary_sensor: - - platform: gpio - pin: - number: GPIO16 - mode: INPUT - inverted: True - name: "Button 1: ${switch_1_name}" - on_press: - - mqtt.publish: - topic: "${mqtt_remote_device_command_topic}" - payload: "${mqtt_remote_device_command1}" - - - platform: gpio - pin: - number: GPIO05 - mode: INPUT - inverted: True - name: "Button 2: ${switch_2_name}" - on_press: - - mqtt.publish: - topic: "${mqtt_remote_device_command_topic}" - payload: "${mqtt_remote_device_command2}" - - - platform: gpio - pin: - number: GPIO4 - mode: INPUT - inverted: True - name: "Button 3: ${switch_3_name}" - on_press: - - mqtt.publish: - topic: "${mqtt_remote_device_command_topic}" - payload: "${mqtt_remote_device_command3}" - -########################################################################################## -# SWITCH COMPONENT -# https://esphome.io/components/switch/ -########################################################################################## -# Relays for KS-811-3 are GPIO13, GPIO12, GPIO14 -########################################################################################## -switch: - - platform: gpio - name: "Relay 1: ${switch_1_name}" - pin: GPIO13 - id: Relay_1 - - platform: gpio - name: "Relay 2: ${switch_2_name}" - pin: GPIO12 - id: Relay_2 - - platform: gpio - name: "Relay 3: ${switch_3_name}" - pin: GPIO14 - id: Relay_3 - -mqtt: - on_message: - - topic: "${mqtt_local_status_topic}" - then: - - lambda: |- - int val = atoi(x.c_str()); - ESP_LOGI("fan_switch", "Received requested speed: %d", val); - - // Desired states - bool r1 = false; - bool r2 = false; - bool r3 = false; - - switch (val) { - case 1: - r3 = true; - break; - case 2: - r2 = true; - r3 = true; - break; - case 3: - r1 = true; - r2 = true; - r3 = true; - break; - case 0: - default: - // all remain false - break; - } - - // Only change relays if necessary - if (id(Relay_1).state != r1) { - if (r1) { - id(Relay_1).turn_on(); - } else { - id(Relay_1).turn_off(); - } - } - - if (id(Relay_2).state != r2) { - if (r2) { - id(Relay_2).turn_on(); - } else { - id(Relay_2).turn_off(); - } - } - - if (id(Relay_3).state != r3) { - if (r3) { - id(Relay_3).turn_on(); - } else { - id(Relay_3).turn_off(); - } - } \ No newline at end of file diff --git a/esphome/esp-bedrm3fanswitch.yaml.old b/esphome/esp-bedrm3fanswitch.yaml.old deleted file mode 100644 index 04bb972..0000000 --- a/esphome/esp-bedrm3fanswitch.yaml.old +++ /dev/null @@ -1,265 +0,0 @@ -########################################################################################## -########################################################################################## -# BEDROOM 3 FAN SWITCH -# -# Controlled by a Zemismart KS-811 Triple push button -# pinout/schematic https://community.home-assistant.io/t/zemismart-ks-811-working-with-esphome/ -# -# V1.0 - 2025-07-23 First Setup (and replacement of Tasmota) -# -# NOTES -# - Switch for Ceiling Fan -# - 3 Switches, Up, Down and Off -# - Remote commands to the fan ${mqtt_remote_command_full_topic}/speed/set 1,2,3,0,+,- -# -########################################################################################## -########################################################################################## - -########################################################################################## -# 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-bedrm3fanswitch" - friendly_name: "Bedroom 3 Fan Wall Switch (3)" - description_comment: "Switch for Bedroom 3 Ceiling Fan using Zemismart KS-811 Triple Push Button. Speed Up (1), Speed Down (2), Fan Off (3)" - device_area: "Bedroom 3" # Allows ESP device to be automatically linked to an 'Area' in Home Assistant. - - # Project Naming - project_name: "Zemismart Technologies.KS-811-3 (Triple)" # Project Details - project_version: "v1" # Project V denotes release of yaml file, allowing checking of deployed vs latest version - - #entity_prefix: "Main Bathroom" # Simple device name where we want to prefix a sensor or switch, eg "Load" Current. - - # 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-bedrm3fanswitch_ip - mqtt_local_command_main_topic: !secret mqtt_local_command_main_topic - mqtt_local_status_main_topic: !secret mqtt_local_status_main_topic - - # Device Settings - #relay_icon: "mdi:heating-coil" - 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 LOCAL Controls - #mqtt_device_name: "bedroom2-ceilingfan-switch" - #mqtt_local_command_topic: "${mqtt_local_command_main_topic}/${mqtt_device_name}" # Topic we will use to command this locally without HA - #mqtt_local_status_topic: "${mqtt_local_status_main_topic}/${mqtt_device_name}" # Topic we will use to view status locally without HA - - # MQTT REMOTE Controls - mqtt_remote_device_name: "bedroom3-ceilingfan" - mqtt_remote_device_command_topic: "${mqtt_local_command_main_topic}/${mqtt_remote_device_name}/speed/set" - mqtt_remote_device_command1: "+" - mqtt_remote_device_command2: "-" - mqtt_remote_device_command3: "0" - mqtt_local_status_topic: "${mqtt_local_status_main_topic}/${mqtt_remote_device_name}/speed/state" # Topic we will use to view status locally without HA - - # Button Naming & Icons - - # Switch/Relay Naming & Icons - #relay_icon: "mdi:heating-coil" - switch_1_name: "Fan Speed Up" # This is virtual only, no power connected to 1st relay - switch_2_name: "Fan Speed Down" # This is virtual only, no power connected to 2nd relay - switch_3_name: "Fan Off" # This is virtual only, no power connected to 3rd relay - -########################################################################################## -# PACKAGES: Included Common Packages -# https://esphome.io/components/packages.html -########################################################################################## -packages: - 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}" - common_api: !include - file: common/api_common.yaml - vars: - local_api_key: "${api_key}" - #common_webportal: !include - # file: common/webportal_common.yaml - common_mqtt: !include - file: common/mqtt_common.yaml - vars: - local_device_name: "${device_name}" - common_sntp: !include - file: common/sntp_common.yaml - common_general_sensors: !include - file: common/sensors_common.yaml - vars: - local_friendly_name: "${friendly_name}" - local_update_interval: "${update_interval}" - -########################################################################################## -# 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}" - platformio_options: - build_flags: - - "-Os" # optimize for size - - "-Wl,--gc-sections" # drop unused code/data - - "-fno-exceptions" # strip C++ exceptions - - "-fno-rtti" # strip C++ RTTI -# on_boot: -# priority: 200 -# then: -# - switch.turn_on: Relay_3 - -########################################################################################## -# ESP Platform and Framework -# https://esphome.io/components/esp32.html -########################################################################################## -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 - -########################################################################################## -# ESPHome Logging Enable -# 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) - #esp8266_store_log_strings_in_flash: false - #tx_buffer_size: 64 - -########################################################################################## -# STATUS LED -# https://esphome.io/components/status_led.html -########################################################################################## -# Status LED for KS-811 is GPIO02 -########################################################################################## -status_led: - pin: - number: GPIO02 - inverted: yes - -########################################################################################## -# BINARY SENSORS -# https://esphome.io/components/binary_sensor/ -########################################################################################## -# Buttons for KS-811-3 are GPIO16, GPIO05, GPIO04 -########################################################################################## -binary_sensor: - - platform: gpio - pin: - number: GPIO16 - mode: INPUT - inverted: True - name: "Button 1: ${switch_1_name}" - on_press: - - mqtt.publish: - topic: "${mqtt_remote_device_command_topic}" - payload: "${mqtt_remote_device_command1}" - - - platform: gpio - pin: - number: GPIO05 - mode: INPUT - inverted: True - name: "Button 2: ${switch_2_name}" - on_press: - - mqtt.publish: - topic: "${mqtt_remote_device_command_topic}" - payload: "${mqtt_remote_device_command2}" - - - platform: gpio - pin: - number: GPIO4 - mode: INPUT - inverted: True - name: "Button 3: ${switch_3_name}" - on_press: - - mqtt.publish: - topic: "${mqtt_remote_device_command_topic}" - payload: "${mqtt_remote_device_command3}" - -########################################################################################## -# SWITCH COMPONENT -# https://esphome.io/components/switch/ -########################################################################################## -# Relays for KS-811-3 are GPIO13, GPIO12, GPIO14 -########################################################################################## -switch: - - platform: gpio - name: "Relay 1: ${switch_1_name}" - pin: GPIO13 - id: Relay_1 - - platform: gpio - name: "Relay 2: ${switch_2_name}" - pin: GPIO12 - id: Relay_2 - - platform: gpio - name: "Relay 3: ${switch_3_name}" - pin: GPIO14 - id: Relay_3 - -mqtt: - on_message: - - topic: "${mqtt_local_status_topic}" - then: - - lambda: |- - int val = atoi(x.c_str()); - ESP_LOGI("fan_switch", "Received requested speed: %d", val); - - // Desired states - bool r1 = false; - bool r2 = false; - bool r3 = false; - - switch (val) { - case 1: - r3 = true; - break; - case 2: - r2 = true; - r3 = true; - break; - case 3: - r1 = true; - r2 = true; - r3 = true; - break; - case 0: - default: - // all remain false - break; - } - - // Only change relays if necessary - if (id(Relay_1).state != r1) { - if (r1) { - id(Relay_1).turn_on(); - } else { - id(Relay_1).turn_off(); - } - } - - if (id(Relay_2).state != r2) { - if (r2) { - id(Relay_2).turn_on(); - } else { - id(Relay_2).turn_off(); - } - } - - if (id(Relay_3).state != r3) { - if (r3) { - id(Relay_3).turn_on(); - } else { - id(Relay_3).turn_off(); - } - } \ No newline at end of file diff --git a/esphome/esp-downstairskitchleds.yaml b/esphome/esp-downstairskitchleds.yaml index 7130315..3a31cb3 100644 --- a/esphome/esp-downstairskitchleds.yaml +++ b/esphome/esp-downstairskitchleds.yaml @@ -19,7 +19,7 @@ # ------------------------------------------ # OPERATION (as at V1.1) # ------------------------------------------ -# 1. General Purpuse LED controller +# 1. General Purpose LED controller # 2. Designed for a Sinilink XY-VFMS board that has a mosfet output and supposedly will handle # 5A and a DC input of 5V-36V. # 3. Has global setting for MAX % PWM output for the LEDs so you can give them a longer life.