###### tags: `ESPHOME`
# ESPHome 入門
# 安裝
* 首先要先安裝 Home Assistant (HA),而且不能是 Container版本。
比較理想是用樹莓派或是VM。
* HA裡必須要有Supervisor的功能

* 在 **附加元件商店** 裡安裝 **ESPHOME**

* ESPHOME 安裝後如下

# 初次使用
* 開啟WEB UI

* 按下「+」新增一個設備 (下圖中我已經新增了兩個設備)

* 輸入設備名稱,WIFI SSID 與 PASSWORD

* 選板子 (目前我都是用8266)

* 已經新增了一個設備(my-device-name),接著按下edit

* 這裡就是寫程式的地方了

# 第一次燒錄
* 不急著編寫程式,先上傳一次看看
* ESPHOME的玩法與Arduino差很多,ESPHOME會線上編譯好程式,接著透過OTA的方式,無線上傳到開發板
* 不過第一次沒辦法OTA,必須在線上編譯後,下載bin檔案,然後使用[esphome-flasher](https://github.com/esphome/esphome-flasher/releases)上傳。




* 如果有上傳成功,WIFI SSID/PASSWORD 沒有打錯,連線成功會顯示 ONLINE

* 看到 ONLINE 就可以開始寫程式了!
# 編寫 YAML
* 玩這套(ESPHOME)東西,其實不需要寫程式,只需要編寫設定檔
* YAML 是類似 JSON/XML 的資料格式
* 詳細編寫的方式請看[官方網站](https://esphome.io/),以下列幾個範例
* 指令設備名稱與板子
```yaml=
esphome:
name: my-device-name
platform: ESP8266
board: nodemcuv2
```
* 將 D0 當作一個 digital input
```yaml=
binary_sensor:
- platform: gpio
name: "my-digital-sensor"
pin: D0
```
* 將 D6 當作一個 digital output
```yaml=
switch:
- platform: gpio
name: "my-relay"
pin: D6
```
* 以上合起來的完整範例
```yaml=
esphome:
name: my-device-name
platform: ESP8266
board: nodemcuv2
binary_sensor:
- platform: gpio
name: "my-digital-sensor"
pin: D0
switch:
- platform: gpio
name: "my-relay"
pin: D6
# Enable logging
logger:
# Enable Home Assistant API
api:
ota:
password: "fbfbc594a285001b93364f775cdbf7da"
wifi:
ssid: "WIFI-SSID"
password: "123456789"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "My-Device-Name Fallback Hotspot"
password: "gQ8NLQDq872C"
captive_portal:
```
* 上傳後,HA 將會發現新設備,然後就可以主面板裡
* 新增一個小面板,顯示 D0 是 ON/OFF
* 新增一個按鈕,可用操作 D6,然後 D6 可以接上你需要的元件,例如 Relay
# 其他
* 在mac環境esphome-flasher UI有點問題,好像必須要用指令
```bash=
cd /applications/esphome-flasher.app/contents/macos
chmod +x ESPHome-Flasher.app/Contents/MacOS/ESPHome-Flasher
./ESPHome-Flasher -p /dev/cu.usbserial-0001 ~/Desktop/light-433-8266.bin
```