『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 108732|回复: 126

[修仙教程] ESPHome 直接互控 不再需要 HA 了

  [复制链接]

30

主题

493

帖子

4795

积分

论坛元老

佑桑

Rank: 8Rank: 8

积分
4795
金钱
4287
HASS币
156

教程狂人

发表于 2020-11-22 00:44:26 | 显示全部楼层 |阅读模式
本帖最后由 chinyaolin 于 2020-12-5 23:37 编辑

先給兩篇連結

  • ESPHome 提供 REST API, 可直接取得 sensor 資料 或是 直接控制 switch/light 開關
    Web Server API
  • ESPHome 從 15.0 版之後, 提供了 http_request 元件, 可 get/post/put 呼叫外部 URL
    HTTP Request

沿襲之前的「愛老婆的好男人(床頭燈聯動)」思路,
今天要讓兩個床頭燈在僅有 wifi 而沒有 HA 的情形下, 實現聯動互控
這個思路大家可以發揮想像力, 可以應用在雙控、三控等各種場景

一、說在前頭

  • 要想使用 Web Server API, 你的 ESPHome 需高於 1.3 版, 應該沒有人使用這麼舊的版本了
  • 要想使用 HTTP Request, 你的 ESPHome 需高於 15.0 版, 且使用的 Arduino framework 高於 2.5.0 (後者若你已經用 15.x 一定沒有問題)
  • 另外, 因為載入 HTTP Request 元件之後, 幾乎 100% 會讓你的固件大於 512KB, 對於使用 ESP8266 來說, 未來將無法直接 OTA 刷固件, 而需要改用二階段升級, 大概的做法如下:

  • 製作一個全新的 ESPHome YAML 檔案, 只留下 esphome/wifi/web_server/api 等最精簡的設定, 編譯一個最小固件備存 (miniESPHome.bin)
  • 在刷你自己的新固件之前, 先透過 Web 介面刷入 miniESPHome.bin 後重啟
  • 重啟之後, 這時才可以透過 ESPHome 介面上傳固件
  • 若遇到 mDNS 無法解析時, 也可以用 (2) 的方法上傳新固件
  • 當然, 若將模塊拆下直刷, 保證就沒有問題了
  • 經過實測, 也可以使用 http://ota.tasmota.com/tasmota/release/tasmota-minimal.bin (379k) 做為中繼固件, 先經由 ESPHome Web 上傳這個固件後重啟, 再透過 Tasmota Web 上傳新編好的 ESPHome 固件


                               
登录/注册后可看大图

二、老婆的床頭燈
我用了 Sonoff RFR3 來做床頭燈的控制, 這裡就使用最簡單的 GPIO 控制開關燈, 應該沒什麼難度
這裡為了比較好閱讀, 所以也用了一點我之前發表過的小技巧 YAML 混搭 JSON 讓你的設定檔更簡捷
#################################################################################
substitutions: { desc: 老婆床頭燈, devicename: SONOFF_RFR3_AD2EA }
#################################################################################
esphome:
  name: $devicename
  platform: ESP8266
  board: esp01_1m
packages:
  wifi:       !include common/wifi_YAO_and_SOPHIA_2.yaml
  apiotaweb:  !include common/apiotaweb_default.yaml
binary_sensor:
  - platform: gpio
    id: btn1
    internal: true
    pin: {number: GPIO0, mode: INPUT_PULLUP, inverted: True}
    filters: [{delayed_on: 40ms}, {delayed_off: 40ms}]
    on_press: [{light.toggle: light1}]
output:
  - {pin: 12, id: output1, platform: gpio}
light:
  - {id: light1, output: output1, platform: binary, name: '${devicename}_lt1'}
switch:
  - {platform: restart, name: '${devicename}_restart'}


三、好男人的床頭燈
不廢話, 直接上代碼
游客,如果您要查看本帖隐藏内容请回复

四、解釋一下
  • http_request : 載入元件
  • packages : 把共用的設定另外存放,編譯時載入, 未來要統一修改也方便 [ 官網的說明 ]
  • on_click / on_multi_click : 讓一個按鍵透過短按/長按來執行不同的功能
  • http_request.post : 使用 post 方法呼叫指定的 URL
  • URL : 格式為 http://[IP位址/mDNS網址]/<domain>/<ID>/<action>

其中,
  • [IP位址/mDNS網址] : 192.168.x.x 或是 sonoff_rfr3_ad2ea5.local 可以連結到你想控制的模塊
  • <domain> : 你在 ESPHome 想控制的實例所設定的 domain, 我這裡是 light
  • <ID> : 這裡比較麻煩, 不是你在 YAML 檔中所設定的 ID。依照官方的說法 -->「此ID是通過採用組件的名稱,去除所有非字母數字字符,將所有內容都變為小寫並用下劃線替換所有空格來創建的」, 轉換細節請參考前面給出的官網連結。以我為例, 我要控制的燈是老婆的床頭燈, 這個燈在我的 YAML 檔中取名為SONOFF_RFR3_AD2EA_lt1 , 經由剛剛說明會轉換為 sonoff_rfr3_ad2ea_lt1
  • <action> : 不同 domain 支援的 action 不同, 還是請大家去看官網, 我這裡選擇使用 toggle
  • 整串連結起來, 從我的床頭燈要控制老婆床頭置所使用的 URL 為 http://sonoff_rfr3_ad2ea5.local/light/sonoff_rfr3_ad2ea5_lt1/toggle

以上,
我再也不同擔心 HA 主機發生狀況時,
沒有辦法幫老婆關燈了

评分

参与人数 4金钱 +66 HASS币 +20 收起 理由
sorrypqa + 16 高手,这是高手!
luzai + 20 论坛有你更精彩!
diba.qiu + 10 论坛有你更精彩!
+ 20 + 20 膜拜大神!

查看全部评分

ASRock H370 PRO4, 48GB, 8TBx3 + 2TBx3
ESXi 6.7 + Ununtu + Docker + HASS.IO -> Homeassistant OS
(Home Assistant Supervised 官方文件)
回复

使用道具 举报

3

主题

275

帖子

3955

积分

论坛元老

Rank: 8Rank: 8

积分
3955
金钱
3680
HASS币
20
发表于 2020-11-22 01:06:31 | 显示全部楼层
啥回事......看看學習......
回复

使用道具 举报

24

主题

122

帖子

1311

积分

金牌会员

Rank: 6Rank: 6

积分
1311
金钱
1189
HASS币
0
发表于 2020-11-22 19:02:52 | 显示全部楼层
还是不行啊 大哥  你老婆不能给你关灯啊
zigbee网关专题:最合适你的网关 访问https://z2m.store/了解更多
回复

使用道具 举报

30

主题

493

帖子

4795

积分

论坛元老

佑桑

Rank: 8Rank: 8

积分
4795
金钱
4287
HASS币
156

教程狂人

 楼主| 发表于 2020-11-23 08:53:19 | 显示全部楼层
yuzhigang 发表于 2020-11-22 19:02
还是不行啊 大哥  你老婆不能给你关灯啊

舉一反三啊~ 老婆的燈比照設定就行了
ASRock H370 PRO4, 48GB, 8TBx3 + 2TBx3
ESXi 6.7 + Ununtu + Docker + HASS.IO -> Homeassistant OS
(Home Assistant Supervised 官方文件)
回复

使用道具 举报

24

主题

122

帖子

1311

积分

金牌会员

Rank: 6Rank: 6

积分
1311
金钱
1189
HASS币
0
发表于 2020-11-23 11:06:10 | 显示全部楼层
chinyaolin 发表于 2020-11-23 08:53
舉一反三啊~ 老婆的燈比照設定就行了

了解  做天猫已经改好了
zigbee网关专题:最合适你的网关 访问https://z2m.store/了解更多
回复

使用道具 举报

24

主题

122

帖子

1311

积分

金牌会员

Rank: 6Rank: 6

积分
1311
金钱
1189
HASS币
0
发表于 2020-11-23 11:07:51 | 显示全部楼层
yuzhigang 发表于 2020-11-23 11:06
了解  做天猫已经改好了

有个小bug,老是等一会就提示api连不上,然后esp就重启,我不知道你有没有这个问题
zigbee网关专题:最合适你的网关 访问https://z2m.store/了解更多
回复

使用道具 举报

30

主题

493

帖子

4795

积分

论坛元老

佑桑

Rank: 8Rank: 8

积分
4795
金钱
4287
HASS币
156

教程狂人

 楼主| 发表于 2020-11-23 13:11:27 | 显示全部楼层
yuzhigang 发表于 2020-11-23 11:07
有个小bug,老是等一会就提示api连不上,然后esp就重启,我不知道你有没有这个问题 ...

詳細情況?
天貓 API 連不上?
HA 與 ESPHome 連不上?
ASRock H370 PRO4, 48GB, 8TBx3 + 2TBx3
ESXi 6.7 + Ununtu + Docker + HASS.IO -> Homeassistant OS
(Home Assistant Supervised 官方文件)
回复

使用道具 举报

6

主题

292

帖子

2098

积分

金牌会员

Rank: 6Rank: 6

积分
2098
金钱
1806
HASS币
0
QQ
发表于 2020-11-24 09:22:01 | 显示全部楼层
这个功能确实是不错 挺好的
回复

使用道具 举报

1

主题

74

帖子

293

积分

中级会员

Rank: 3Rank: 3

积分
293
金钱
219
HASS币
0
发表于 2020-11-26 10:50:18 | 显示全部楼层
学习一下
回复

使用道具 举报

14

主题

430

帖子

2697

积分

金牌会员

Rank: 6Rank: 6

积分
2697
金钱
2267
HASS币
0
发表于 2020-12-23 21:04:07 | 显示全部楼层
感谢分享,但是我试了一下,用ID不行,改成name可以
URL : 格式為 http://[IP位址/mDNS網址]/<domain>/<name>/<action>
若然,一切若然~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 02:58 , Processed in 0.062822 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表