Sterowanie Bramą Garażową poprzez moduł SONOFF SV (AI-Speaker - Home Assistant)

Obecnie mój mały upgrade płytki pod napędem bramy garażowej i jej zamiana na ten model z dwoma przekaźnikami.

Dlaczego zamiana płytki? Ponieważ dokładam barierę IR “fotokomórki” i drugi przekaźnik odzwierciedli jej stan dla napędu bramy. Pozostaje nadal kontaktron dla sygnalizacji otwarcia bramy. Na pośredniczeniu sygnału z bariery przez ESP, zyskuję dodatkowo informację dla sterowania zaplanowaną sygnalizacją świetlną w garażu. Tak aby wiedzieć/widzieć czy odpowiednio głęboko się autem wjechało, a nie trzeba było wysiadać i patrzeć czy już wystarczy… Czyli następnym etapem będzie jakiś semafor :vertical_traffic_light:
Oprogramowanie na ESPHome i tu zaskoczenie, pomógł mi zweryfikować składnię i podpowiedział fragmenty kodu ChatGTP (wystarczy odpowiednio formułować pytania i podawać kontekst) :dizzy_face:

Załączam mój albo nasz :wink: kod:

substitutions:
  device_name: "esp12frelayx2"
  device_name_lower: "brama_foto"

esphome:
  name: ${device_name_lower}

esp8266:
  board: esp12e

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

# Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: ${device_name}
    password: "haslo"

captive_portal:

web_server:
  port: 80

time:
  - platform: homeassistant
    id: homeassistant_time

binary_sensor:
  - platform: gpio
    pin:
      number: GPIO12
      mode: INPUT_PULLUP
      inverted: false
    name: "kontaktron brama"
    id: contact_sensor
    device_class: garage_door
  - platform: gpio
    pin:
      number: GPIO13
      mode: INPUT_PULLUP
      inverted: false
    name: "fotoIR"
    id: fotoIR_sensor
    device_class: safety
    on_press:
      then:
        - switch.turn_on: foto
    on_release:
      then:
        - switch.turn_off: foto

status_led:
  pin:
    number: GPIO2
    inverted: True

switch:
  - platform: gpio
    pin: GPIO4
    name: "Garage Door Relay"
    id: relay
    internal: true
  - platform: gpio
    pin: GPIO5
    name: "Garage Door foto"
    id: foto
    internal: true
cover:
  - platform: template
    device_class: garage
    name: "Garaż"
    id: template_cov
    lambda: |-
      if (id(contact_sensor).state) {
        return COVER_OPEN;
      } else {
        return COVER_CLOSED;
      }
    open_action:
      - switch.turn_on: relay
      - delay: 0.3s
      - switch.turn_off: relay
#    stop_action:
#      - switch.turn_on: relay
#      - delay: 0.3s
#      - switch.turn_off: relay
    close_action:
      - switch.turn_on: relay
      - delay: 0.3s
      - switch.turn_off: relay

button:
  - platform: restart
    name: "${device_name} Restart"
    device_class: "restart"

sensor:
  - platform: uptime
    name: "${device_name} Last Restart"
    update_interval: 300s
    device_class: "timestamp"
    entity_category: "diagnostic"
    unit_of_measurement: ""
    filters:
      - lambda: |-
          auto time = id(homeassistant_time).now();
          if (time.is_valid()) {
            return time.timestamp - x;
          } else {
            return {};
          }
  - platform: wifi_signal
    name: "${device_name} WiFi Signal"
    update_interval: 300s
    device_class: "signal_strength"
    entity_category: "diagnostic"
2 polubienia