diff --git a/esphome-web-bb04f0.yaml b/esphome-web-bb04f0.yaml new file mode 100644 index 0000000..f7c2290 --- /dev/null +++ b/esphome-web-bb04f0.yaml @@ -0,0 +1,216 @@ +substitutions: + name: thr320d_filtre_bb04f0 + friendly_name: "filtration" + project_name: "Filtration piscine" + project_version: "1.0" + light_restore_mode: RESTORE_DEFAULT_OFF + +esphome: + name: "${name}" + # supply the external temp/hum sensor with 3v power by pulling this GPIO high + on_boot: + - priority: 90 + then: + - switch.turn_on: ${name}_sensor_power + +esp32: + board: nodemcu-32s + +api: + encryption: + key: "zOAo/IyJfGlFafVzPae/pCJZQtGFRWc7i+O9ZXfRY+c=" + +ota: + - platform: esphome + password: "5e0d993d03804b33e56142c07cae7526" + +logger: + baud_rate: 0 + +web_server: + port: 80 + +wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password + + # Enable fallback hotspot (captive portal) in case wifi connection fails + ap: + ssid: !secret ap_ssid_pool + password: !secret ap_pass_pool + +captive_portal: + +one_wire: + - platform: gpio + pin: GPIO25 + +# This will take care of the display automatically. +# You don't need to tell it to print something to the display manually. +# It'll update every 60s or so. +display: + platform: tm1621 + id: tm1621_display + cs_pin: GPIO17 + data_pin: GPIO5 + read_pin: GPIO23 + write_pin: GPIO18 + lambda: |- + it.printf(0, "%.1f", id(${name}_temp).state); + it.display_celsius(true); + /*it.printf(1, "%.1f", id(${name}_temp).state/10); + /*it.display_kwh(true); + /*it.printf(1, "%.1f", id(${name}_humi).state); + it.display_humidity(true);*/ + +binary_sensor: + # single main button that also puts device into flash mode when held on boot + - platform: gpio + pin: + number: GPIO0 + mode: INPUT_PULLUP + inverted: True + name: "${friendly_name} Button" + on_click: + - max_length: 350ms # short press to toggle the relay + then: + switch.toggle: mainRelayVirt + - min_length: 360ms # long press to do... + max_length: 3s + then: + switch.toggle: dryContRelay + - min_length: 10s # very long press to reset + max_length: 20s + then: + - switch.turn_on: ${name}_restart + - platform: status + name: "${friendly_name} Status" + +switch: + # virtual switch to represent the main relay + # as far as I know, we have no way to confirm the real state + - platform: template + id: mainRelayVirt + name: "Pompe" + turn_on_action: + - switch.turn_on: mainRelayOn + - switch.turn_on: ${name}_onoff_led + turn_off_action: + - switch.turn_on: mainRelayOff + - switch.turn_off: ${name}_onoff_led + assumed_state: True + optimistic: True + #restore_state: True + #restore_mode: ALWAYS_ON + + # internal momentary switch for main relay ON + - platform: gpio + id: mainRelayOn + internal: True + pin: + number: GPIO19 + on_turn_on: + - delay: 500ms + - switch.turn_off: mainRelayOn + restore_mode: ALWAYS_OFF + + # internal momentary switch for main relay OFF + - platform: gpio + id: mainRelayOff + internal: True + pin: + number: GPIO22 + on_turn_on: + - delay: 500ms + - switch.turn_off: mainRelayOff + restore_mode: ALWAYS_OFF + + # dry contact relay switch + - platform: gpio + id: dryContRelay + name: "Extension" + pin: + number: GPIO4 + on_turn_on: + - switch.turn_on: ${name}_ext_led + on_turn_off: + - switch.turn_off: ${name}_ext_led + + # Leftmost (red) LED that's used to indicate the relay being on/off + - platform: gpio + id: ${name}_onoff_led + pin: + number: GPIO16 + inverted: true + + # Rightmost (green) LED; use as dry contact indicator + - platform: gpio + id: ${name}_ext_led + pin: + number: GPIO13 + inverted: true + + # This is needed to power the external temp/humidity sensor. + # It receives 3v from this pin, which is pulled up on boot. + # TODO: This should probably be an internal switch. + - platform: gpio + pin: GPIO27 + id: ${name}_sensor_power + restore_mode: ALWAYS_ON + + - platform: restart + name: "Filtration Restart" + id: ${name}_restart + icon: "mdi:restart" + +light: + # The middle (blue) LED is used as wifi status indicator. + - platform: status_led + id: wifi_status_led + name: "Wifi" + pin: + number: GPIO15 + inverted: true + +sensor: + - platform: dallas_temp + name: "Température eau" + id: ${name}_temp + address: 0xfe3ce504578d3c28 + update_interval: 1s + +climate: + - platform: thermostat + name: "${friendly_name} Climate" + sensor: ${name}_temp + default_preset: Home + preset: + - name: Home + default_target_temperature_low: 31 °C + mode: heat + min_heating_off_time: 300s + min_heating_run_time: 300s + min_idle_time: 30s + heat_action: + - switch.turn_on: mainRelayVirt + idle_action: + - switch.turn_off: mainRelayVirt + heat_deadband: 0.5 # how many degrees can we go under the temp before starting to heat + heat_overrun: 0.5 # how many degrees can we go over the temp before stopping + +text_sensor: + - platform: wifi_info + ip_address: + name: "Addresse IP" + disabled_by_default: true + +interval: + - interval: 30s + then: + if: + condition: + wifi.connected: + then: + - light.turn_on: wifi_status_led + else: + - light.turn_off: wifi_status_led