# 3v3 en svp sun 34 35 32 33 25 26 27 14 12 gnd 13 sd2 sd3 gnd 5v substitutions: devicename: hvac-multisensor-425f4f entity_name: hvac_multisensor friendly_name: HVAC MultiSensor comment: Clever MultiSensor platform: ESP32 board: wemos_d1_mini32 static_ip: !secret hvac-multisensor-ip sda_pin: GPIO21 scl_pin: GPIO22 door_pin: GPIO19 one_wire_pin: GPIO14 trigger_pin: GPIO04 echo_pin: GPIO12 #mdc_pin: GPIO23 #mdio_pin: GPIO18 #clk_mode: GPIO17_OUT #power_pin: GPIO5 packages: #wifi: !include common/wifi_no_power_save.yaml ethernet: !include common/ethernet.yaml device_base: !include common/device_base.yaml ble_proxy: !include common/ble_proxy.yaml esphome: name: ${devicename} friendly_name: ${friendly_name} name_add_mac_suffix: false esp32: board: ${board} framework: type: esp-idf web_server: port: 80 version: 3 include_internal: true # Enable logging logger: api: # Using settings from common/device_base.yaml ota: # Using settings from common/device_base.yaml esp32_ble_tracker: # globals: # - id: screen_power # type: bool # restore_value: yes # initial_value: 'true' # font: # - file: 'CascadiaMonoPL.ttf' # id: font1 # size: 17 # one_wire: # - platform: gpio # pin: ${one_wire_pin} # i2c: # sda: ${sda_pin} # scl: ${scl_pin} # frequency: 800kHz # display: # - platform: ssd1306_i2c # id: oled # model: "SSD1306 128x64" # #reset_pin: GPIO14 #D0 # address: 0x3C # lambda: |- # it.print(0, 0, id(font1), "Delta:"); # it.printf(128, 0, id(font1), TextAlign::TOP_RIGHT, "%.1f°F", id(hvac_delta).state); # it.print(0, 16, id(font1), "Supply:"); # it.printf(128, 16, id(font1), TextAlign::TOP_RIGHT, "%.1f°F", id(hvac_supply).state); # it.print(0, 32, id(font1), "Return:"); # it.printf(128, 32, id(font1), TextAlign::TOP_RIGHT, "%.1f°F", id(hvac_return).state); # it.print(0, 48, id(font1), "Ambient:"); # it.printf(128, 48, id(font1), TextAlign::TOP_RIGHT, "%.1f°F", id(ambient).state); # sensor: # - platform: dallas_temp # address: 0xB33C01B607798528 # name: "Return Temperature" # id: hvac_return # update_interval: 10s # filters: # - lambda: return x * (9.0/5.0) + 32.0; # unit_of_measurement: "°F" # state_class: measurement # - platform: dallas_temp # address: 0x0F3C01B6070C1328 # name: "Supply Temperature" # id: hvac_supply # update_interval: 10s # filters: # - lambda: return x * (9.0/5.0) + 32.0; # unit_of_measurement: "°F" # state_class: measurement # - platform: dallas_temp # address: 0xFA3C01B607005B28 # name: "Ambient Temperature" # id: ambient # update_interval: 10s # filters: # - lambda: return x * (9.0/5.0) + 32.0; # unit_of_measurement: "°F" # state_class: measurement # - platform: template # name: "Delta Temperature" # id: hvac_delta # lambda: |- # return (id(hvac_supply).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: ${trigger_pin} # echo_pin: ${echo_pin} # 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: "Door" # device_class: door # pin: # number: ${door_pin} # mode: INPUT_PULLUP # switch: # - platform: template # id: display_switch # name: "Display" # 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();