<<: !include http_request.yaml

wifi:
  ssid: MySSID
  password: password1

ota:
  - platform: http_request
    id: http_request_ota
    on_begin:
      then:
        - logger.log: "OTA start"
    on_progress:
      then:
        - logger.log:
            format: "OTA progress %0.1f%%"
            args: ["x"]
    on_end:
      then:
        - logger.log: "OTA end"
    on_error:
      then:
        - logger.log:
            format: "OTA update error %d"
            args: ["x"]
    on_state_change:
      then:
        lambda: 'ESP_LOGD("ota", "State %d", state);'

button:
  - platform: template
    name: Firmware update
    on_press:
      then:
        - ota.http_request.flash:
            id: http_request_ota
            md5_url: http://my.ha.net:8123/local/esphome/firmware.md5
            url: http://my.ha.net:8123/local/esphome/firmware.bin

        - ota.http_request.flash:
            id: http_request_ota
            md5: 0123456789abcdef0123456789abcdef
            url: http://my.ha.net:8123/local/esphome/firmware.bin

        - logger.log: "This message should be not displayed (reboot)"

update:
  - platform: http_request
    name: OTA Update
    id: ota_update
    ota_id: http_request_ota
    source: http://my.ha.net:8123/local/esphome/manifest.json
    on_update_available:
      - logger.log: "A new update is available"
