2024/08/10

ESPHome Ping 센서를 이용한 HA서버 먹통시 재부팅

 


esphome 펌웨어로 플래싱 된 스마트 플러그에 HA OS가 설치된 라즈베리 파이4 연결해 두고 10분간격으로 파이서버 ping 테스트 후 패킷로스 100%뜨면 스마트 플러그 재시작하는 esphome 자체 자동화.

외부 라이브러리와 사용자 컴포넌트 필요하고 ping테스트는 5분 간격, 자동화는 10분 간격으로 체크되는 비동기 자동화.

**restart 스위치를 이용해도 되지만 예외적인 상황을 줄일려면 off, on하는 것이 좋음.

esphome:
  name: neo20-outlet
  area: Livingroom
  libraries:
    - ESP8266WiFi
    - https://github.com/akaJes/AsyncPing#95ac7e4

esp8266:
  board: esp01_1m
external_components:
  - source:
      type: git
      url: https://github.com/trombik/esphome-component-ping
      ref: main

switch:
  - platform: gpio
    name: "neo20 Relay"
    id: switch1
    pin:
      number: 12
      allow_other_uses: true
    restore_mode: ALWAYS_ON
sensor:
  - platform: ping
    ip_address: 192.168.1.5
    num_attempts: 5
    update_interval: 300s
    timeout: 10s
    loss:
      name: "Packet Loss"
      id: packet_loss
    latency:
      name: "Latency"
      accuracy_decimals: 0
interval:
  - interval: 600s
    then:
      - if:
          condition:
            - lambda: 'return id(packet_loss).state == 100.0;'
          then:
            - logger.log: "Ping failed, restarting device"
            - switch.turn_off: switch1
            - delay: 1s
            - switch.turn_on: switch1
          else:
            - logger.log: "Ping successful, no action needed"