mirror of
https://github.com/CeeWeasel/fresh-home.git
synced 2026-08-09 10:30:14 -04:00
225 lines
5.5 KiB
YAML
225 lines
5.5 KiB
YAML
substitutions:
|
|
devicename: furnace-room-multisensor
|
|
entity_name: furnace_room_multisensor
|
|
friendly_name: Furnace Room MultiSensor
|
|
platform: ESP32
|
|
board: nodemcu-32s
|
|
static_ip: !secret furnace-room-multisensor-ip
|
|
|
|
packages:
|
|
#wifi: !include common/wifi.yaml
|
|
ethernet: !include common/olimex-evb.yaml
|
|
device_base: !include common/device_base.yaml
|
|
ble_proxy: !include common/ble_proxy.yaml
|
|
|
|
esp32:
|
|
board: esp32-poe-iso
|
|
|
|
logger:
|
|
level: DEBUG
|
|
logs:
|
|
dallas.sensor: NONE
|
|
sensor: NONE
|
|
|
|
globals:
|
|
- id: screen_power
|
|
type: bool
|
|
restore_value: yes
|
|
initial_value: 'true'
|
|
|
|
font:
|
|
- file: 'CascadiaMonoPL.ttf'
|
|
id: font1
|
|
size: 17
|
|
|
|
dallas:
|
|
- pin:
|
|
number: GPIO5 #D4
|
|
update_interval: 10s
|
|
|
|
i2c:
|
|
sda: GPIO13 #D1
|
|
scl: GPIO15 #D2
|
|
frequency: 800kHz
|
|
|
|
display:
|
|
- platform: ssd1306_i2c
|
|
id: oled
|
|
model: "SSD1306 128x64"
|
|
#reset_pin: GPIO14 #D0
|
|
address: 0x3C
|
|
lambda: |-
|
|
it.print(0, 0, id(font1), "Delt:");
|
|
it.printf(128, 0, id(font1), TextAlign::TOP_RIGHT, "%.1f°F", id(hvac_delta).state);
|
|
it.print(0, 16, id(font1), "HVAC:");
|
|
it.printf(128, 16, id(font1), TextAlign::TOP_RIGHT, "%.1f°F", id(hvac).state);
|
|
it.print(0, 32, id(font1), "Retn:");
|
|
it.printf(128, 32, id(font1), TextAlign::TOP_RIGHT, "%.1f°F", id(hvac_return).state);
|
|
it.print(0, 48, id(font1), "Ambt:");
|
|
it.printf(128, 48, id(font1), TextAlign::TOP_RIGHT, "%.1f°F", id(ambient).state);
|
|
|
|
sensor:
|
|
- platform: dallas
|
|
address: 0xB33C01B607798528
|
|
name: "Return Temperature"
|
|
id: hvac_return
|
|
filters:
|
|
- lambda: return x * (9.0/5.0) + 32.0;
|
|
unit_of_measurement: "°F"
|
|
state_class: measurement
|
|
|
|
- platform: dallas
|
|
address: 0x0F3C01B6070C1328
|
|
name: "HVAC Temperature"
|
|
id: hvac
|
|
filters:
|
|
- lambda: return x * (9.0/5.0) + 32.0;
|
|
unit_of_measurement: "°F"
|
|
state_class: measurement
|
|
|
|
- platform: dallas
|
|
address: 0xFA3C01B607005B28
|
|
name: "Furnace Room Temperature"
|
|
id: ambient
|
|
filters:
|
|
- lambda: return x * (9.0/5.0) + 32.0;
|
|
unit_of_measurement: "°F"
|
|
state_class: measurement
|
|
|
|
- platform: template
|
|
name: "HVAC Delta"
|
|
id: hvac_delta
|
|
lambda: |-
|
|
return (id(hvac).state - id(hvac_return).state);
|
|
update_interval: 10s
|
|
unit_of_measurement: "°F"
|
|
state_class: measurement
|
|
filters:
|
|
- or:
|
|
- throttle: 60s
|
|
- delta: 1.0
|
|
|
|
# - platform: ultrasonic
|
|
# trigger_pin: GPIO1 #D7
|
|
# echo_pin: GPIO5 #D8
|
|
# name: "Salt Level in percent"
|
|
# update_interval: 1s
|
|
# #update_interval: 10s
|
|
# filters:
|
|
# - lambda: return (0.86-x)*(100/0.86);
|
|
# unit_of_measurement: "%"
|
|
|
|
# - platform: ultrasonic
|
|
# trigger_pin: GPIO33 #D7
|
|
# echo_pin: GPIO35 #D8
|
|
# unit_of_measurement: "cm"
|
|
# id: distance_from_bottom
|
|
# name: "Salt Level in CM"
|
|
# # pulse_time: 10us
|
|
# #update_interval: 3h
|
|
# #update_interval: 5s
|
|
# #timeout: 4.0m
|
|
# update_interval: 5s
|
|
# filters:
|
|
# - lambda: return ( 0.86 - x * 100;
|
|
# - sliding_window_moving_average:
|
|
# window_size: 5
|
|
# send_every: 5
|
|
# send_first_at: 1
|
|
|
|
- platform: ultrasonic
|
|
trigger_pin: GPIO33 #D7
|
|
echo_pin: GPIO35 #D8
|
|
id: ultrasonic_source
|
|
#update_interval: 5s
|
|
internal: True
|
|
filters:
|
|
- sliding_window_moving_average:
|
|
window_size: 5
|
|
send_every: 5
|
|
send_first_at: 1
|
|
on_value:
|
|
then:
|
|
- sensor.template.publish:
|
|
id: distance_from_bottom
|
|
state: !lambda 'return id(ultrasonic_source).state;'
|
|
|
|
- sensor.template.publish:
|
|
id: distance_from_top
|
|
state: !lambda 'return id(ultrasonic_source).state;'
|
|
|
|
- platform: template
|
|
unit_of_measurement: "cm"
|
|
state_class: measurement
|
|
id: distance_from_bottom
|
|
name: "Salt Level in CM"
|
|
#update_interval: 5s
|
|
filters:
|
|
- lambda: 'return (0.94 - (id(ultrasonic_source).state)) * 100;'
|
|
on_value:
|
|
then:
|
|
- sensor.template.publish:
|
|
id: level_in_bags
|
|
state: !lambda 'return id(distance_from_bottom).state;'
|
|
|
|
- platform: template
|
|
unit_of_measurement: "cm"
|
|
state_class: measurement
|
|
id: distance_from_top
|
|
name: "Salt Level From Top in CM"
|
|
#update_interval: 5s
|
|
filters:
|
|
- lambda: 'return (id(ultrasonic_source).state) * 100;'
|
|
|
|
- platform: template
|
|
unit_of_measurement: "bags"
|
|
state_class: measurement
|
|
id: level_in_bags
|
|
name: "Salt Level in Bags"
|
|
#update_interval: 5s
|
|
filters:
|
|
- lambda: 'return (id(distance_from_bottom).state) / 17.5;'
|
|
|
|
binary_sensor:
|
|
- platform: gpio
|
|
name: "Furnace Room Door"
|
|
device_class: door
|
|
pin:
|
|
number: GPIO3 #D5
|
|
mode: INPUT_PULLUP
|
|
|
|
- platform: homeassistant
|
|
internal: true
|
|
id: light_state
|
|
entity_id: light.furnace_room
|
|
on_state:
|
|
then:
|
|
- if:
|
|
condition:
|
|
lambda: 'return id(light_state).state;'
|
|
then:
|
|
- logger.log: "The light is on"
|
|
else:
|
|
- logger.log: "The is off. Turning off display"
|
|
- switch.turn_off: display_switch
|
|
|
|
switch:
|
|
- platform: template
|
|
id: display_switch
|
|
name: "HVAC Display Switch"
|
|
lambda: |-
|
|
if (id(screen_power)) {
|
|
id(oled).turn_on();
|
|
} else {
|
|
id(oled).turn_off();
|
|
}
|
|
return id(screen_power);
|
|
turn_on_action:
|
|
- lambda: |-
|
|
id(screen_power) = true;
|
|
// id(oled).turn_on();
|
|
turn_off_action:
|
|
- lambda: |-
|
|
id(screen_power) = false;
|
|
// id(oled).turn_off();
|