parent
c62f0319e6
commit
e60b96d6e5
38 changed files with 1348 additions and 0 deletions
@ -0,0 +1,11 @@ |
||||
substitutions: |
||||
hostname: bathroom-switch |
||||
friendly_name: Bathroom Switch |
||||
touchpad2_action: sonoff_t3_toggle_relay_1_and_3 |
||||
|
||||
|
||||
packages: |
||||
device: !include devices/sonoff-t3.yaml |
||||
|
||||
wifi: |
||||
use_address: 192.168.10.10 |
@ -0,0 +1,62 @@ |
||||
substitutions: |
||||
hostname: bedroom-atom-echo |
||||
friendly_name: Bedroom Speaker |
||||
|
||||
packages: |
||||
base: !include common/base.yaml |
||||
sensors: !include common/basicSensors.yaml |
||||
|
||||
esphome: |
||||
name: ${hostname} |
||||
build_path: ./build/${hostname} |
||||
friendly_name: ${friendly_name} |
||||
|
||||
wifi: |
||||
use_address: 192.168.10.34 |
||||
|
||||
esp32: |
||||
board: m5stack-atom |
||||
|
||||
improv_serial: |
||||
|
||||
i2s_audio: |
||||
i2s_lrclk_pin: GPIO33 |
||||
i2s_bclk_pin: GPIO19 |
||||
|
||||
speaker: |
||||
- platform: i2s_audio |
||||
id: echo_speaker |
||||
i2s_dout_pin: GPIO22 |
||||
dac_type: external |
||||
mode: mono |
||||
|
||||
media_player: |
||||
- platform: i2s_audio |
||||
id: echo_media |
||||
name: None |
||||
dac_type: external |
||||
i2s_dout_pin: GPIO22 |
||||
|
||||
binary_sensor: |
||||
- platform: gpio |
||||
pin: |
||||
number: GPIO39 |
||||
inverted: true |
||||
name: Button |
||||
id: echo_button |
||||
|
||||
light: |
||||
- platform: esp32_rmt_led_strip |
||||
id: led |
||||
name: light |
||||
entity_category: config |
||||
pin: GPIO27 |
||||
default_transition_length: 0s |
||||
chipset: SK6812 |
||||
num_leds: 1 |
||||
rgb_order: grb |
||||
rmt_channel: 0 |
||||
effects: |
||||
- pulse: |
||||
transition_length: 250ms |
||||
update_interval: 250ms |
@ -0,0 +1,11 @@ |
||||
substitutions: |
||||
hostname: bedroom-bluetooth |
||||
friendly_name: Bedroom Bluetooth |
||||
|
||||
wifi: |
||||
use_address: 192.168.10.27 |
||||
|
||||
packages: |
||||
device: !include devices/nodemcu.yaml |
||||
bt: !include common/bluetoothProxy.yaml |
||||
|
@ -0,0 +1,10 @@ |
||||
substitutions: |
||||
hostname: bedroom-lamp |
||||
friendly_name: Bedroom Lamp |
||||
|
||||
wifi: |
||||
use_address: 192.168.10.12 |
||||
|
||||
packages: |
||||
device: !include devices/sonoff-basic.yaml |
||||
|
@ -0,0 +1,18 @@ |
||||
substitutions: |
||||
hostname: bedroom-switch |
||||
friendly_name: Bedroom Switch |
||||
touchpad1_action: toggle_bedroom_lamp |
||||
|
||||
wifi: |
||||
use_address: 192.168.10.3 |
||||
|
||||
packages: |
||||
device: !include devices/sonoff-t3.yaml |
||||
|
||||
script: |
||||
- id: toggle_bedroom_lamp |
||||
then: |
||||
- homeassistant.service: |
||||
service: homeassistant.toggle |
||||
data: |
||||
entity_id: "switch.bedroom_lamp_relay" |
Binary file not shown.
@ -0,0 +1,19 @@ |
||||
substitutions: |
||||
hostname: cloakroom-switch |
||||
friendly_name: Cloakroom Switch |
||||
touchpad1_action: toggle_hall_light |
||||
|
||||
|
||||
packages: |
||||
device: !include devices/sonoff-t3.yaml |
||||
|
||||
wifi: |
||||
use_address: 192.168.10.16 |
||||
|
||||
script: |
||||
- id: toggle_hall_light |
||||
then: |
||||
- homeassistant.service: |
||||
service: homeassistant.toggle |
||||
data: |
||||
entity_id: "switch.front_door_switch_relay_2" |
@ -0,0 +1,19 @@ |
||||
wifi: |
||||
ssid: !secret WIFI_SSID |
||||
password: !secret WIFI_PASSWORD |
||||
fast_connect: true |
||||
reboot_timeout: 300s |
||||
ap: |
||||
ssid: ${friendly_name} Hotspot |
||||
|
||||
logger: |
||||
level: DEBUG |
||||
|
||||
api: |
||||
reboot_timeout: 15min |
||||
|
||||
ota: |
||||
|
||||
time: |
||||
- platform: homeassistant |
||||
timezone: Europe/London |
@ -0,0 +1,42 @@ |
||||
binary_sensor: |
||||
- platform: status |
||||
name: ${friendly_name} Status |
||||
id: device_status |
||||
|
||||
sensor: |
||||
- platform: wifi_signal |
||||
name: ${friendly_name} WiFi Signal Strength |
||||
id: device_wifi_signal |
||||
update_interval: 15s |
||||
|
||||
- platform: uptime |
||||
name: ${friendly_name} Uptime |
||||
id: device_uptime |
||||
update_interval: 15s |
||||
|
||||
text_sensor: |
||||
- platform: version |
||||
name: ${friendly_name} ESPHome Version |
||||
id: esphome_version |
||||
|
||||
- platform: wifi_info |
||||
ip_address: |
||||
name: ${friendly_name} IP Address |
||||
id: ip_address |
||||
|
||||
ssid: |
||||
name: ${friendly_name} SSID |
||||
id: ssid |
||||
|
||||
bssid: |
||||
name: ${friendly_name} BSSID |
||||
id: bssid |
||||
|
||||
mac_address: |
||||
name: ${friendly_name} MAC Address |
||||
id: mac_address |
||||
|
||||
switch: |
||||
- platform: restart |
||||
name: ${friendly_name} Restart |
||||
id: device_restart |
@ -0,0 +1,12 @@ |
||||
esp32: |
||||
framework: |
||||
type: esp-idf |
||||
|
||||
esp32_ble_tracker: |
||||
scan_parameters: |
||||
interval: 1100ms |
||||
window: 1100ms |
||||
active: true |
||||
|
||||
bluetooth_proxy: |
||||
active: true |
@ -0,0 +1,67 @@ |
||||
- lambda: |
||||
name: RGB Breathing |
||||
update_interval: 16s #Finetune to your liking with the transition lenght below |
||||
lambda: |- |
||||
#define Color1 1.0, 0.0, 0.0 //These are the colors defined, feel free to change or extend the list |
||||
#define Color2 1.0, 0.5, 0.0 //if you extend the list, dont forget to add them in the switch loop below |
||||
#define Color3 1.0, 1.0, 0.0 //and remember to adjust the reset counter at the bottom |
||||
#define Color4 0.5, 1.0, 0.0 |
||||
#define Color5 0.0, 1.0, 0.0 |
||||
#define Color6 0.0, 1.0, 0.5 |
||||
#define Color7 0.0, 1.0, 1.0 |
||||
#define Color8 0.0, 0.5, 1.0 |
||||
#define Color9 0.0, 0.0, 1.0 |
||||
#define Color10 0.5, 0.0, 1.0 |
||||
#define Color11 0.5, 0.0, 1.0 |
||||
#define Color12 1.0, 0.0, 0.5 |
||||
static int state = 0; |
||||
static int color = 1; |
||||
auto call = id(light1).turn_on(); |
||||
call.set_transition_length(15000); |
||||
if (state == 0) |
||||
{ |
||||
call.set_brightness(0.01); |
||||
|
||||
} |
||||
else if (state == 1) |
||||
{ |
||||
switch(color) |
||||
{ |
||||
case 1: call.set_rgb(Color1); |
||||
break; |
||||
case 2: call.set_rgb(Color2); |
||||
break; |
||||
case 3: call.set_rgb(Color3); |
||||
break; |
||||
case 4: call.set_rgb(Color4); |
||||
break; |
||||
case 5: call.set_rgb(Color5); |
||||
break; |
||||
case 6: call.set_rgb(Color6); |
||||
break; |
||||
case 7: call.set_rgb(Color7); |
||||
break; |
||||
case 8: call.set_rgb(Color8); |
||||
break; |
||||
case 9: call.set_rgb(Color9); |
||||
break; |
||||
case 10: call.set_rgb(Color10); |
||||
break; |
||||
case 11: call.set_rgb(Color11); |
||||
break; |
||||
case 12: call.set_rgb(Color12); |
||||
break; |
||||
} |
||||
call.set_brightness(1.0); |
||||
} |
||||
|
||||
state ++; |
||||
if (state == 2){ |
||||
state = 0; |
||||
} |
||||
color++; |
||||
if(color == 7) |
||||
{ |
||||
color = 1; |
||||
} |
||||
call.perform(); |
@ -0,0 +1,59 @@ |
||||
substitutions: |
||||
light_restore_mode: RESTORE_DEFAULT_ON |
||||
color_interlock: 'true' |
||||
|
||||
esphome: |
||||
board: esp8285 |
||||
platform: ESP8266 |
||||
name: ${hostname} |
||||
build_path: ./build/${hostname} |
||||
#on_boot: |
||||
# then: |
||||
# - script.execute: fast_boot_script |
||||
|
||||
packages: |
||||
base: !include ../common/base.yaml |
||||
basicSensors: !include ../common/basicSensors.yaml |
||||
|
||||
output: |
||||
- platform: esp8266_pwm |
||||
id: red_output |
||||
pin: GPIO4 |
||||
min_power: 0.000499 |
||||
max_power: 1 |
||||
- platform: esp8266_pwm |
||||
id: green_output |
||||
pin: GPIO12 |
||||
min_power: 0.000499 |
||||
max_power: 1 |
||||
- platform: esp8266_pwm |
||||
id: blue_output |
||||
pin: GPIO14 |
||||
min_power: 0.000499 |
||||
max_power: 1 |
||||
- platform: esp8266_pwm |
||||
id: warm_white_output |
||||
pin: GPIO13 |
||||
min_power: 0.000499 |
||||
max_power: 1 |
||||
- platform: esp8266_pwm |
||||
id: white_output |
||||
pin: GPIO5 |
||||
min_power: 0.000499 |
||||
max_power: 1 |
||||
|
||||
|
||||
light: |
||||
- platform: rgbww |
||||
id: light1 |
||||
name: "${friendly_name} Bulb" |
||||
restore_mode: ${light_restore_mode} |
||||
red: red_output |
||||
green: green_output |
||||
blue: blue_output |
||||
warm_white: warm_white_output |
||||
cold_white: white_output |
||||
cold_white_color_temperature: 6000 K |
||||
warm_white_color_temperature: 3000 K |
||||
color_interlock: ${color_interlock} |
||||
effects: !include ../common/lightEffects.yaml |
@ -0,0 +1,310 @@ |
||||
# Largely based off this: |
||||
#https://github.com/JamesSwift/localbytes-plug-pm/blob/main/localbytes-plug-pm.yaml |
||||
substitutions: |
||||
# Icon |
||||
main_icon: "power-socket-uk" |
||||
default_state: "RESTORE_DEFAULT_OFF" |
||||
|
||||
esphome: |
||||
name: ${hostname} |
||||
build_path: ./build/${hostname} |
||||
friendly_name: ${friendly_name} |
||||
|
||||
wifi: |
||||
output_power: 18db |
||||
power_save_mode: light |
||||
|
||||
esp8266: |
||||
board: esp01_1m |
||||
restore_from_flash: true |
||||
|
||||
packages: |
||||
base: !include ../common/base.yaml |
||||
basicSensors: !include ../common/basicSensors.yaml |
||||
|
||||
globals: |
||||
- id: voltage_multiply |
||||
type: float |
||||
restore_value: true |
||||
initial_value: "0.3" |
||||
|
||||
- id: power_multiply |
||||
type: float |
||||
restore_value: true |
||||
initial_value: "0.133" |
||||
|
||||
- id: current_multiply |
||||
type: float |
||||
restore_value: true |
||||
initial_value: "0.805" |
||||
|
||||
api: |
||||
services: |
||||
- service: calibrate_voltage |
||||
variables: |
||||
actual_value: float |
||||
then: |
||||
- lambda: |- |
||||
id(voltage_multiply) = actual_value / id(voltage).raw_state; |
||||
- number.set: |
||||
id: voltage_factor |
||||
value: !lambda "return id(voltage_multiply);" |
||||
|
||||
- service: calibrate_power |
||||
variables: |
||||
actual_value: float |
||||
then: |
||||
- lambda: |- |
||||
id(power_multiply) = actual_value / id(power).raw_state; |
||||
- number.set: |
||||
id: power_factor |
||||
value: !lambda "return id(power_multiply);" |
||||
|
||||
- service: calibrate_current |
||||
variables: |
||||
actual_value: float |
||||
then: |
||||
- lambda: |- |
||||
id(current_multiply) = actual_value / id(current).raw_state; |
||||
- number.set: |
||||
id: current_factor |
||||
value: !lambda "return id(current_multiply);" |
||||
|
||||
sensor: |
||||
# Power Monitoring |
||||
- platform: hlw8012 |
||||
sel_pin: |
||||
number: GPIO12 |
||||
inverted: true |
||||
cf_pin: GPIO4 |
||||
cf1_pin: GPIO5 |
||||
change_mode_every: 3 |
||||
update_interval: 6s |
||||
|
||||
voltage: |
||||
name: "Voltage" |
||||
id: voltage |
||||
unit_of_measurement: V |
||||
accuracy_decimals: 1 |
||||
filters: |
||||
- lambda: return x * id(voltage_multiply); |
||||
|
||||
power: |
||||
name: "Power" |
||||
id: power |
||||
unit_of_measurement: W |
||||
accuracy_decimals: 0 |
||||
filters: |
||||
- lambda: return x * id(power_multiply); |
||||
|
||||
current: |
||||
name: "Current" |
||||
id: current |
||||
unit_of_measurement: A |
||||
accuracy_decimals: 3 |
||||
filters: |
||||
- lambda: return x * id(current_multiply); |
||||
|
||||
# Total daily energy sensor |
||||
- platform: total_daily_energy |
||||
name: "Daily Energy" |
||||
power_id: power |
||||
filters: |
||||
# Multiplication factor from W to kW is 0.001 |
||||
- multiply: 0.001 |
||||
unit_of_measurement: kWh |
||||
|
||||
|
||||
# Make calibration factor data readable/setable from home assistant |
||||
number: |
||||
- platform: template |
||||
name: "Voltage Calibration Factor" |
||||
id: voltage_factor |
||||
icon: "mdi:sine-wave" |
||||
min_value: 0 |
||||
max_value: 10 |
||||
step: 0.001 |
||||
entity_category: diagnostic |
||||
mode: box |
||||
lambda: |- |
||||
return id(voltage_multiply); |
||||
set_action: |
||||
lambda: |- |
||||
id(voltage_multiply) = x; |
||||
|
||||
- platform: template |
||||
name: "Power Calibration Factor" |
||||
id: power_factor |
||||
icon: "mdi:flash" |
||||
min_value: 0 |
||||
max_value: 10 |
||||
step: 0.001 |
||||
entity_category: diagnostic |
||||
mode: box |
||||
lambda: |- |
||||
return id(power_multiply); |
||||
set_action: |
||||
lambda: |- |
||||
id(power_multiply) = x; |
||||
|
||||
- platform: template |
||||
name: "Current Calibration Factor" |
||||
id: current_factor |
||||
icon: "mdi:current-ac" |
||||
min_value: 0 |
||||
max_value: 10 |
||||
step: 0.001 |
||||
entity_category: diagnostic |
||||
mode: box |
||||
lambda: |- |
||||
return id(current_multiply); |
||||
set_action: |
||||
lambda: |- |
||||
id(current_multiply) = x; |
||||
|
||||
# Relay State LED |
||||
output: |
||||
- platform: esp8266_pwm |
||||
id: state_led |
||||
pin: |
||||
number: GPIO13 |
||||
inverted: true |
||||
|
||||
light: |
||||
- platform: binary |
||||
output: state_led |
||||
id: led |
||||
|
||||
binary_sensor: |
||||
# Push Button (Toggles Relay When Pressed) |
||||
- platform: gpio |
||||
pin: |
||||
number: GPIO3 |
||||
mode: INPUT_PULLUP |
||||
inverted: true |
||||
name: "Button" |
||||
on_click: |
||||
|
||||
- max_length: 1s |
||||
then: |
||||
if: |
||||
condition: |
||||
switch.is_off: disable_button |
||||
then: |
||||
switch.toggle: relay |
||||
|
||||
- min_length: 1.5s |
||||
max_length: 5s |
||||
then: |
||||
switch.toggle: disable_led |
||||
|
||||
- min_length: 8s |
||||
max_length: 12s |
||||
then: |
||||
switch.toggle: disable_button |
||||
|
||||
|
||||
switch: |
||||
# Relay (As Switch) |
||||
- platform: gpio |
||||
name: "" |
||||
icon: "mdi:${main_icon}" |
||||
pin: GPIO14 |
||||
id: relay |
||||
restore_mode: "${default_state}" |
||||
on_turn_on: |
||||
if: |
||||
condition: |
||||
switch.is_off: disable_led |
||||
then: |
||||
light.turn_on: |
||||
id: led |
||||
on_turn_off: |
||||
- light.turn_off: |
||||
id: led |
||||
|
||||
- platform: template |
||||
name: "Disable LED" |
||||
id: disable_led |
||||
icon: "mdi:led-variant-off" |
||||
restore_mode: "${default_state}" |
||||
optimistic: true |
||||
on_turn_on: |
||||
#Flash twice |
||||
- light.turn_off: led |
||||
- delay: 0.1s |
||||
- light.turn_on: led |
||||
- delay: 0.1s |
||||
- light.turn_off: led |
||||
- delay: 0.1s |
||||
- light.turn_on: led |
||||
- delay: 0.1s |
||||
#Final state |
||||
- light.turn_off: led |
||||
on_turn_off: |
||||
#Flash twice |
||||
- light.turn_on: led |
||||
- delay: 0.1s |
||||
- light.turn_off: led |
||||
- delay: 0.1s |
||||
- light.turn_on: led |
||||
- delay: 0.1s |
||||
- light.turn_off: led |
||||
- delay: 0.7s |
||||
#Final state |
||||
- if: |
||||
condition: |
||||
switch.is_on: relay |
||||
then: |
||||
light.turn_on: led |
||||
|
||||
|
||||
|
||||
- platform: template |
||||
name: "Disable Button" |
||||
id: disable_button |
||||
icon: "mdi:toggle-switch-off-outline" |
||||
restore_mode: "${default_state}" |
||||
optimistic: true |
||||
on_turn_on: |
||||
#Flash thrice |
||||
- light.turn_off: led |
||||
- delay: 0.15s |
||||
- light.turn_on: led |
||||
- delay: 0.15s |
||||
- light.turn_off: led |
||||
- delay: 0.15s |
||||
- light.turn_on: led |
||||
- delay: 0.15s |
||||
- light.turn_off: led |
||||
- delay: 0.15s |
||||
- light.turn_on: led |
||||
- delay: 0.15s |
||||
#Final state |
||||
- if: |
||||
condition: |
||||
switch.is_off: relay |
||||
then: |
||||
light.turn_off: led |
||||
on_turn_off: |
||||
#Flash thrice |
||||
- light.turn_on: led |
||||
- delay: 0.15s |
||||
- light.turn_off: led |
||||
- delay: 0.15s |
||||
- light.turn_on: led |
||||
- delay: 0.15s |
||||
- light.turn_off: led |
||||
- delay: 0.15s |
||||
- light.turn_on: led |
||||
- delay: 0.15s |
||||
- light.turn_off: led |
||||
- delay: 0.7s |
||||
#Final state |
||||
- if: |
||||
condition: |
||||
switch.is_on: relay |
||||
then: |
||||
light.turn_on: led |
||||
|
||||
|
@ -0,0 +1,13 @@ |
||||
substitutions: |
||||
|
||||
esphome: |
||||
name: ${hostname} |
||||
build_path: ./build/${hostname} |
||||
friendly_name: ${friendly_name} |
||||
|
||||
esp32: |
||||
board: nodemcu-32s |
||||
|
||||
packages: |
||||
base: !include ../common/base.yaml |
||||
basicSensors: !include ../common/basicSensors.yaml |
@ -0,0 +1,47 @@ |
||||
substitutions: |
||||
button_action: sonoff_button_toggle_relay |
||||
relay_on_action: nullScript |
||||
relay_off_action: nullScript |
||||
|
||||
esphome: |
||||
board: esp8285 |
||||
platform: ESP8266 |
||||
name: ${hostname} |
||||
build_path: ./build/${hostname} |
||||
|
||||
packages: |
||||
base: !include ../common/base.yaml |
||||
basicSensors: !include ../common/basicSensors.yaml |
||||
|
||||
switch: |
||||
- platform: gpio |
||||
name: "${friendly_name} Relay" |
||||
id: relay |
||||
pin: GPIO12 |
||||
restore_mode: RESTORE_DEFAULT_OFF |
||||
on_turn_on: |
||||
then: |
||||
- script.execute: "${relay_on_action}" |
||||
on_turn_off: |
||||
then: |
||||
- script.execute: "${relay_off_action}" |
||||
|
||||
binary_sensor: |
||||
- platform: gpio |
||||
pin: |
||||
number: GPIO0 |
||||
mode: INPUT_PULLUP |
||||
inverted: True |
||||
name: "${friendly_name} Button" |
||||
on_press: |
||||
then: |
||||
- script.execute: "${button_action}" |
||||
|
||||
|
||||
script: |
||||
- id: sonoff_button_toggle_relay |
||||
then: |
||||
- switch.toggle: relay |
||||
- id: nullScript |
||||
then: |
||||
|
@ -0,0 +1,95 @@ |
||||
substitutions: |
||||
touchpad1_action: sonoff_t3_toggle_relay_1 |
||||
touchpad2_action: sonoff_t3_toggle_relay_2 |
||||
touchpad3_action: sonoff_t3_toggle_relay_3 |
||||
|
||||
esphome: |
||||
board: esp01_1m |
||||
platform: ESP8266 |
||||
name: ${hostname} |
||||
build_path: ./build/${hostname} |
||||
|
||||
packages: |
||||
base: !include ../common/base.yaml |
||||
basicSensors: !include ../common/basicSensors.yaml |
||||
|
||||
output: |
||||
- platform: esp8266_pwm |
||||
id: blue_led |
||||
pin: GPIO13 |
||||
inverted: True |
||||
|
||||
switch: |
||||
- platform: gpio |
||||
name: "${friendly_name} Relay 1" |
||||
id: relay_1 |
||||
pin: GPIO12 |
||||
restore_mode: RESTORE_DEFAULT_OFF |
||||
- platform: gpio |
||||
name: "${friendly_name} Relay 2" |
||||
id: relay_2 |
||||
pin: GPIO5 |
||||
restore_mode: RESTORE_DEFAULT_OFF |
||||
- platform: gpio |
||||
name: "${friendly_name} Relay 3" |
||||
id: relay_3 |
||||
pin: GPIO4 |
||||
restore_mode: RESTORE_DEFAULT_OFF |
||||
|
||||
binary_sensor: |
||||
- platform: gpio |
||||
pin: |
||||
number: GPIO0 |
||||
mode: INPUT_PULLUP |
||||
inverted: True |
||||
name: "${friendly_name} Touchpad 1" |
||||
on_press: |
||||
then: |
||||
- output.turn_on: blue_led |
||||
- script.execute: "${touchpad1_action}" |
||||
on_release: |
||||
then: |
||||
- output.turn_off: blue_led |
||||
|
||||
- platform: gpio |
||||
pin: |
||||
number: GPIO9 |
||||
mode: INPUT_PULLUP |
||||
inverted: True |
||||
name: "${friendly_name} Touchpad 2" |
||||
on_press: |
||||
then: |
||||
- output.turn_on: blue_led |
||||
- script.execute: "${touchpad2_action}" |
||||
on_release: |
||||
then: |
||||
- output.turn_off: blue_led |
||||
|
||||
- platform: gpio |
||||
pin: |
||||
number: GPIO10 |
||||
mode: INPUT_PULLUP |
||||
inverted: True |
||||
name: "${friendly_name} Touchpad 3" |
||||
on_press: |
||||
then: |
||||
- output.turn_on: blue_led |
||||
- script.execute: "${touchpad3_action}" |
||||
on_release: |
||||
then: |
||||
- output.turn_off: blue_led |
||||
|
||||
script: |
||||
- id: sonoff_t3_toggle_relay_1 |
||||
then: |
||||
- switch.toggle: relay_1 |
||||
- id: sonoff_t3_toggle_relay_2 |
||||
then: |
||||
- switch.toggle: relay_2 |
||||
- id: sonoff_t3_toggle_relay_3 |
||||
then: |
||||
- switch.toggle: relay_3 |
||||
- id: sonoff_t3_toggle_relay_1_and_3 |
||||
then: |
||||
- switch.toggle: relay_1 |
||||
- switch.toggle: relay_3 |
@ -0,0 +1,11 @@ |
||||
substitutions: |
||||
hostname: ensuite-switch |
||||
friendly_name: En-Suite Switch |
||||
touchpad2_action: sonoff_t3_toggle_relay_1_and_3 |
||||
|
||||
|
||||
packages: |
||||
device: !include devices/sonoff-t3.yaml |
||||
|
||||
wifi: |
||||
use_address: 192.168.10.5 |
@ -0,0 +1,10 @@ |
||||
substitutions: |
||||
hostname: green-wax-melt |
||||
friendly_name: Green Wax Melt |
||||
|
||||
wifi: |
||||
use_address: 192.168.10.29 |
||||
|
||||
packages: |
||||
device: !include devices/sonoff-basic.yaml |
||||
|
@ -0,0 +1,10 @@ |
||||
substitutions: |
||||
hostname: grey-wax-melt |
||||
friendly_name: Grey Wax Melt |
||||
|
||||
wifi: |
||||
use_address: 192.168.10.32 |
||||
|
||||
packages: |
||||
device: !include devices/sonoff-basic.yaml |
||||
|
@ -0,0 +1,18 @@ |
||||
substitutions: |
||||
hostname: hall-by-front-door |
||||
friendly_name: Front Door Switch |
||||
touchpad1_action: toggle_landing_light |
||||
|
||||
wifi: |
||||
use_address: 192.168.10.6 |
||||
|
||||
packages: |
||||
device: !include devices/sonoff-t3.yaml |
||||
|
||||
script: |
||||
- id: toggle_landing_light |
||||
then: |
||||
- homeassistant.service: |
||||
service: homeassistant.toggle |
||||
data: |
||||
entity_id: "switch.landing_switch_relay_2" |
@ -0,0 +1,10 @@ |
||||
substitutions: |
||||
hostname: heated-blanket-switch |
||||
friendly_name: Heated Blanket Switch |
||||
|
||||
wifi: |
||||
use_address: 192.168.10.31 |
||||
|
||||
packages: |
||||
device: !include devices/localbytes-plug.yaml |
||||
|
@ -0,0 +1,32 @@ |
||||
substitutions: |
||||
hostname: heating-downstairs |
||||
friendly_name: Heating Downstairs |
||||
relay_on_action: turn_on |
||||
|
||||
wifi: |
||||
use_address: 192.168.10.18 |
||||
|
||||
packages: |
||||
device: !include devices/sonoff-basic.yaml |
||||
|
||||
# Give the user a graphical control over the timeout |
||||
# See: https://esphome.io/components/number/template.html |
||||
number: |
||||
- name: "${friendly_name} Timeout" |
||||
id: timeout_length |
||||
platform: template |
||||
# TODO: maybe it's a better UX to do this in hours and minutes and do the conversion in esphome |
||||
unit_of_measurement: minutes |
||||
min_value: 10 |
||||
# Never want it on for more than 3 hours |
||||
# 3*60 = 180 |
||||
max_value: 180 |
||||
initial_value: 60 |
||||
step: 10 |
||||
optimistic: true |
||||
|
||||
script: |
||||
- id: turn_on |
||||
then: |
||||
- delay: !lambda 'return id(timeout_length).state * 60 * 1000;' |
||||
- lambda: !lambda id(relay).turn_off(); |
@ -0,0 +1,77 @@ |
||||
substitutions: |
||||
hostname: heating-upstairs |
||||
friendly_name: Heating Upstairs |
||||
relay_on_action: turn_on_action |
||||
relay_off_action: turn_off_action |
||||
|
||||
wifi: |
||||
use_address: 192.168.10.17 |
||||
|
||||
packages: |
||||
device: !include devices/sonoff-basic.yaml |
||||
|
||||
globals: |
||||
- id: total_minutes |
||||
type: int |
||||
initial_value: "0" |
||||
- id: minutes_passed |
||||
type: int |
||||
initial_value: "0" |
||||
|
||||
# Give the user a graphical control over the timeout |
||||
# See: https://esphome.io/components/number/template.html |
||||
number: |
||||
- name: "${friendly_name} Timeout" |
||||
id: timeout_length |
||||
platform: template |
||||
# TODO: maybe it's a better UX to do this in hours and minutes and do the conversion in esphome |
||||
unit_of_measurement: minutes |
||||
# Min 5 minutes |
||||
min_value: 10 |
||||
# Never want it on for more than 3 hours |
||||
# 3*60 = 180 |
||||
max_value: 180 |
||||
initial_value: 10 |
||||
step: 10 |
||||
optimistic: true |
||||
|
||||
sensor: |
||||
- name: "${friendly_name} Total Time" |
||||
platform: template |
||||
lambda: !lambda 'return id(total_minutes);' |
||||
unit_of_measurement: 'minutes' |
||||
accuracy_decimals: 0 |
||||
- name: "${friendly_name} Elapsed Time" |
||||
platform: template |
||||
lambda: !lambda 'return id(minutes_passed);' |
||||
unit_of_measurement: 'minutes' |
||||
accuracy_decimals: 0 |
||||
|
||||
|
||||
script: |
||||
- id: turn_on_action |
||||
then: |
||||
- logger.log: "Turn On" |
||||
- lambda: |- |
||||
id(total_minutes) = id(timeout_length).state; |
||||
id(minutes_passed) = 0; |
||||
id(tick).execute(); |
||||
- id: turn_off_action |
||||
then: |
||||
- logger.log: "Turn Off" |
||||
- lambda: |- |
||||
id(relay).turn_off(); |
||||
id(minutes_passed) = 0; |
||||
id(total_minutes) = 0; |
||||
- id: tick |
||||
mode: queued |
||||
then: |
||||
- delay: 1min |
||||
- logger.log: "Tick" |
||||
- lambda: |- |
||||
id(minutes_passed) += 1; |
||||
if (id(minutes_passed) >= id(total_minutes) ) { |
||||
id(turn_off_action).execute(); |
||||
} else { |
||||
id(tick).execute(); |
||||
} |
@ -0,0 +1,33 @@ |
||||
substitutions: |
||||
hostname: heating-upstairs |
||||
friendly_name: Heating Upstairs |
||||
relay_on_action: turn_on |
||||
|
||||
wifi: |
||||
use_address: 192.168.10.17 |
||||
|
||||
packages: |
||||
device: !include devices/sonoff-basic.yaml |
||||
|
||||
|
||||
# Give the user a graphical control over the timeout |
||||
# See: https://esphome.io/components/number/template.html |
||||
number: |
||||
- name: "${friendly_name} Timeout" |
||||
id: timeout_length |
||||
platform: template |
||||
# TODO: maybe it's a better UX to do this in hours and minutes and do the conversion in esphome |
||||
unit_of_measurement: minutes |
||||
min_value: 10 |
||||
# Never want it on for more than 3 hours |
||||
# 3*60 = 180 |
||||
max_value: 180 |
||||
initial_value: 60 |
||||
step: 10 |
||||
optimistic: true |
||||
|
||||
script: |
||||
- id: turn_on |
||||
then: |
||||
- delay: !lambda 'return id(timeout_length).state * 60 * 1000;' |
||||
- lambda: !lambda id(relay).turn_off(); |
@ -0,0 +1,13 @@ |
||||
substitutions: |
||||
hostname: kitchen-switch |
||||
friendly_name: Kitchen |
||||
#touchpad1_action: sonoff_t3_toggle_relay_2 |
||||
touchpad2_action: sonoff_t3_toggle_relay_1_and_3 |
||||
#touchpad3_action: sonoff_t3_toggle_relay_2 |
||||
|
||||
wifi: |
||||
use_address: 192.168.10.9 |
||||
|
||||
packages: |
||||
device: !include devices/sonoff-t3.yaml |
||||
|
@ -0,0 +1,13 @@ |
||||
substitutions: |
||||
hostname: landing-switch |
||||
friendly_name: Landing Switch |
||||
touchpad1_action: sonoff_t3_toggle_relay_2 |
||||
touchpad2_action: sonoff_t3_toggle_relay_2 |
||||
touchpad3_action: sonoff_t3_toggle_relay_2 |
||||
|
||||
wifi: |
||||
use_address: 192.168.10.4 |
||||
|
||||
packages: |
||||
device: !include devices/sonoff-t3.yaml |
||||
|
@ -0,0 +1,13 @@ |
||||
substitutions: |
||||
hostname: lounge-by-garden |
||||
friendly_name: Lounge 2 |
||||
#touchpad1_action: sonoff_t3_toggle_relay_2 |
||||
#touchpad2_action: sonoff_t3_toggle_relay_2 |
||||
#touchpad3_action: sonoff_t3_toggle_relay_2 |
||||
|
||||
wifi: |
||||
use_address: 192.168.10.8 |
||||
|
||||
packages: |
||||
device: !include devices/sonoff-t3.yaml |
||||
|
@ -0,0 +1,32 @@ |
||||
substitutions: |
||||
hostname: lounge-by-hall |
||||
friendly_name: Lounge 1 |
||||
touchpad1_action: toggle_lounge_light |
||||
touchpad2_action: toggle_lamp |
||||
touchpad3_action: toggle_dining_light |
||||
|
||||
wifi: |
||||
use_address: 192.168.10.7 |
||||
|
||||
packages: |
||||
device: !include devices/sonoff-t3.yaml |
||||
|
||||
script: |
||||
- id: toggle_lounge_light |
||||
then: |
||||
- homeassistant.service: |
||||
service: homeassistant.toggle |
||||
data: |
||||
entity_id: "light.lounge_light_1_bulb" |
||||
- id: toggle_dining_light |
||||
then: |
||||
- homeassistant.service: |
||||
service: homeassistant.toggle |
||||
data: |
||||
entity_id: "light.lounge_light_2_bulb" |
||||
- id: toggle_lamp |
||||
then: |
||||
- homeassistant.service: |
||||
service: homeassistant.toggle |
||||
data: |
||||
entity_id: "light.lounge_lamp_relay" |
@ -0,0 +1,10 @@ |
||||
substitutions: |
||||
hostname: lounge-lamp |
||||
friendly_name: Lounge Lamp |
||||
|
||||
wifi: |
||||
use_address: 192.168.10.13 |
||||
|
||||
packages: |
||||
device: !include devices/sonoff-basic.yaml |
||||
|
@ -0,0 +1,10 @@ |
||||
substitutions: |
||||
hostname: lounge-light-1 |
||||
friendly_name: Lounge Light 1 |
||||
|
||||
wifi: |
||||
use_address: 192.168.10.19 |
||||
|
||||
packages: |
||||
device: !include devices/athom-bulb.yaml |
||||
|
@ -0,0 +1,10 @@ |
||||
substitutions: |
||||
hostname: lounge-light-2 |
||||
friendly_name: Lounge Light 2 |
||||
|
||||
wifi: |
||||
use_address: 192.168.10.24 |
||||
|
||||
packages: |
||||
device: !include devices/athom-bulb.yaml |
||||
|
@ -0,0 +1,10 @@ |
||||
substitutions: |
||||
hostname: man-cave-switch |
||||
friendly_name: Man Cave Desk Switch |
||||
|
||||
wifi: |
||||
use_address: 192.168.10.26 |
||||
|
||||
packages: |
||||
device: !include devices/localbytes-plug.yaml |
||||
|
@ -0,0 +1,10 @@ |
||||
substitutions: |
||||
hostname: man-cave-switch |
||||
friendly_name: Man Cave Switch |
||||
|
||||
wifi: |
||||
use_address: 192.168.10.15 |
||||
|
||||
packages: |
||||
device: !include devices/sonoff-t3.yaml |
||||
|
@ -0,0 +1,201 @@ |
||||
substitutions: |
||||
hostname: office-atom-echo |
||||
friendly_name: Office Speaker |
||||
|
||||
packages: |
||||
base: !include common/base.yaml |
||||
sensors: !include common/basicSensors.yaml |
||||
|
||||
esphome: |
||||
name: ${hostname} |
||||
build_path: ./build/${hostname} |
||||
friendly_name: ${friendly_name} |
||||
|
||||
wifi: |
||||
use_address: 192.168.10.28 |
||||
|
||||
esp32: |
||||
board: m5stack-atom |
||||
|
||||
improv_serial: |
||||
|
||||
i2s_audio: |
||||
i2s_lrclk_pin: GPIO33 |
||||
i2s_bclk_pin: GPIO19 |
||||
|
||||
#microphone: |
||||
# - platform: i2s_audio |
||||
# id: echo_microphone |
||||
# i2s_din_pin: GPIO23 |
||||
# adc_type: external |
||||
# pdm: true |
||||
|
||||
speaker: |
||||
- platform: i2s_audio |
||||
id: echo_speaker |
||||
i2s_dout_pin: GPIO22 |
||||
dac_type: external |
||||
mode: mono |
||||
|
||||
media_player: |
||||
- platform: i2s_audio |
||||
id: echo_media |
||||
name: None |
||||
dac_type: external |
||||
i2s_dout_pin: GPIO22 |
||||
|
||||
|
||||
#voice_assistant: |
||||
# id: va |
||||
# microphone: echo_microphone |
||||
# speaker: echo_speaker |
||||
# noise_suppression_level: 2 |
||||
# auto_gain: 31dBFS |
||||
# volume_multiplier: 2.0 |
||||
# vad_threshold: 3 |
||||
# on_listening: |
||||
# - light.turn_on: |
||||
# id: led |
||||
# blue: 100% |
||||
# red: 0% |
||||
# green: 0% |
||||
# brightness: 100% |
||||
# effect: pulse |
||||
# on_tts_start: |
||||
# - light.turn_on: |
||||
# id: led |
||||
# blue: 0% |
||||
# red: 0% |
||||
# green: 100% |
||||
# brightness: 100% |
||||
# effect: pulse |
||||
# on_end: |
||||
# - delay: 100ms |
||||
# - wait_until: |
||||
# not: |
||||
# speaker.is_playing: |
||||
# - script.execute: reset_led |
||||
# on_error: |
||||
# - light.turn_on: |
||||
# id: led |
||||
# blue: 0% |
||||
# red: 100% |
||||
# green: 0% |
||||
# brightness: 100% |
||||
# effect: none |
||||
# - delay: 1s |
||||
# - script.execute: reset_led |
||||
# |
||||
# on_client_connected: |
||||
# - if: |
||||
# condition: |
||||
# switch.is_on: use_wake_word |
||||
# then: |
||||
# - voice_assistant.start_continuous: |
||||
# - script.execute: reset_led |
||||
# on_client_disconnected: |
||||
# - if: |
||||
# condition: |
||||
# switch.is_on: use_wake_word |
||||
# then: |
||||
# - voice_assistant.stop: |
||||
# - light.turn_off: led |
||||
|
||||
binary_sensor: |
||||
- platform: gpio |
||||
pin: |
||||
number: GPIO39 |
||||
inverted: true |
||||
name: Button |
||||
id: echo_button |
||||
#on_click: |
||||
# - if: |
||||
# condition: |
||||
# switch.is_off: use_wake_word |
||||
# then: |
||||
# - if: |
||||
# condition: voice_assistant.is_running |
||||
# then: |
||||
# - voice_assistant.stop: |
||||
# - script.execute: reset_led |
||||
# else: |
||||
# - voice_assistant.start: |
||||
# else: |
||||
# - voice_assistant.stop |
||||
# - delay: 1s |
||||
# - script.execute: reset_led |
||||
# - script.wait: reset_led |
||||
# - voice_assistant.start_continuous: |
||||
|
||||
light: |
||||
- platform: esp32_rmt_led_strip |
||||
id: led |
||||
name: light |
||||
entity_category: config |
||||
pin: GPIO27 |
||||
default_transition_length: 0s |
||||
chipset: SK6812 |
||||
num_leds: 1 |
||||
rgb_order: grb |
||||
rmt_channel: 0 |
||||
effects: |
||||
- pulse: |
||||
transition_length: 250ms |
||||
update_interval: 250ms |
||||
|
||||
#script: |
||||
# - id: reset_led |
||||
# then: |
||||
# - if: |
||||
# condition: |
||||
# - switch.is_on: use_wake_word |
||||
# - switch.is_on: use_listen_light |
||||
# then: |
||||
# - light.turn_on: |
||||
# id: led |
||||
# blue: 100% |
||||
# red: 100% |
||||
# green: 0% |
||||
# brightness: 100% |
||||
# effect: none |
||||
# else: |
||||
# - light.turn_off: led |
||||
|
||||
#switch: |
||||
# - platform: template |
||||
# name: Use wake word |
||||
# id: use_wake_word |
||||
# optimistic: true |
||||
# restore_mode: RESTORE_DEFAULT_ON |
||||
# entity_category: config |
||||
# on_turn_on: |
||||
# - lambda: id(va).set_use_wake_word(true); |
||||
# - if: |
||||
# condition: |
||||
# not: |
||||
# - voice_assistant.is_running |
||||
# then: |
||||
# - voice_assistant.start_continuous |
||||
# - script.execute: reset_led |
||||
# on_turn_off: |
||||
# - voice_assistant.stop |
||||
# - lambda: id(va).set_use_wake_word(false); |
||||
# - script.execute: reset_led |
||||
# - platform: template |
||||
# name: Use Listen Light |
||||
# id: use_listen_light |
||||
# optimistic: true |
||||
# restore_mode: RESTORE_DEFAULT_ON |
||||
# entity_category: config |
||||
# on_turn_on: |
||||
# - script.execute: reset_led |
||||
# on_turn_off: |
||||
# - script.execute: reset_led |
||||
# |
||||
#external_components: |
||||
# - source: github://pr#5230 |
||||
# components: |
||||
# - esp_adf |
||||
# refresh: 0s |
||||
|
||||
#esp_adf: |
Binary file not shown.
@ -0,0 +1,10 @@ |
||||
substitutions: |
||||
hostname: spare-room-lamp |
||||
friendly_name: Spare Room Lamp |
||||
|
||||
wifi: |
||||
use_address: 192.168.10.21 |
||||
|
||||
packages: |
||||
device: !include devices/sonoff-basic.yaml |
||||
|
@ -0,0 +1,10 @@ |
||||
substitutions: |
||||
hostname: spare-room-switch |
||||
friendly_name: Spare Room Switch |
||||
|
||||
wifi: |
||||
use_address: 192.168.10.14 |
||||
|
||||
packages: |
||||
device: !include devices/sonoff-t3.yaml |
||||
|
@ -0,0 +1,10 @@ |
||||
substitutions: |
||||
hostname: tv-switch |
||||
friendly_name: TV Switch |
||||
|
||||
wifi: |
||||
use_address: 192.168.10.20 |
||||
|
||||
packages: |
||||
device: !include devices/localbytes-plug.yaml |
||||
|
Loading…
Reference in new issue