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

 找回密码
 立即注册
查看: 43843|回复: 33

[基础教程] espeasy固件的使用指南

  [复制链接]

3

主题

61

帖子

485

积分

论坛分享达人

积分
485
金钱
424
HASS币
0
发表于 2018-1-29 12:13:55 | 显示全部楼层 |阅读模式
本帖最后由 eastwoodnet 于 2021-6-11 16:35 编辑

    翻遍了论坛没发现特别多的espeasy接入HA的只用指南,可能主要原因是这个固件比较难调教吧,然而跟各位大大有能力给第三方设备写插件的我不同,我用python刚刚起步,不会写那么多插件,同时,我认为厂商的原始固件一定会有这些那些的漏洞,不如使用开源的固件系统,这样也能及时更新升级。    目前我调试了几种固件,还是认为espeasy是最为灵活的固件,同时,也是最难上手的固件,优点和缺点都很明显。下面我就用一个控客小K的设备刷入espeasy固件的例子讲一下,如何调校espeasy的设置,以及HA的配置。
    控客小K刷入espeasy的办法我就不说了,难点在于无损开壳,火线和零线的两个焊点比较麻烦。我使用了刀头烙铁调高到380°温度,锡枪以及曲别针弯了一个钩子,才把主板从壳子弄出来,具体针脚以及刷机请看http://wiki.jackslab.org/Hack_mini_K
    如果有那个高手抓包控客的OTA程序,使用OTA办法刷进去的话,哪么我觉得这个小开关应该是比较便宜的直插式控制开 关了。
    目前最新的espeasy固件版本是2.0,曾经Dev12版本是在半年前,然而时间进入2018年后,维护者开始发力了,目前几乎隔几天就会更新一个Pre-release一个版本,目前官方在维护两个版本的固件,一个是标准版,用于普通ESP8266的刷入,另一个包含了最全传感器插件的mega版本。但是可能会有bug。
    项目地址在 https://github.com/letscontrolit/ESPEasy
    固件下载地址在 https://github.com/letscontrolit/ESPEasy/releases
有能力的大大,可以给他写插件提交啊!
顺便记录一下linux刷省事多了,一条命令搞定,
sudo esptool.py --port /dev/ttyUSB0  write_flash --flash_mode dout  0x00000 /tmp/ESP_Easy_mega_20210503_normal_ESP8266_1M.bin


本程序使用最新的固件教程,废话不多说了,先看看刷好espeasy后的设置吧。注意,刷小K的时候需要把spi mode设置为DOUT。我喜欢用乐鑫官方的刷机工具。ESPFlashDownloadTool
snipaste20180129_101625.jpg

以下的截图,有的是引用官方1.x的固件截图,有的是2.0的截图,但是该说明的地方我都说明了,给为刷机后应该能理解清楚。

1、刷机后,重启,设备会发射一个叫做ESP_Easy_0的无线信号,密码是:configesp。成功后进入浏览器打开192.168.4.1进入设置网络页面。这一步很容易,没啥坑,如果是隐藏SSID手动输入即可。
2、Main展示了设备的情况,直接进入Config页面,需要注意的是Name的设置以及Unit nr的编号,Name涉及到HA的中设备的topic名称。Unit nr数涉及到设备在mqtt中反馈的名称编号,也就是说如果有多个相同Name的设备,mqtt可以用UnitNr区分设备编号,同时可以让几个espeasy之间使用UDP端口写rules互相通讯,也可以在路由器中看到设备的hostname后面的标号。而esp ip什么如果不做IP访问的话,可以不做固定IP地址的设置。
snipaste20180129_105201.jpg
例如:这个开关的Name是kidroom, Unitnr是3,可以在路由器中看到这个设备的名字是如下命名的。
snipaste20180129_105830.jpg
这里还有一个sleep mode的设定,具体可以使用gpio 16连接rst针脚,实现设备的休眠节能,这对于一些使用电池的传感器类的设备相当有用,能大大加强电池的电池的待机时间。sleep的时间参数可以设定。但是目前我尚未使用这个功能,需要的人自己看官方wiki吧。https://www.letscontrolit.com/wiki/index.php/SleepMode
3、在Controllers设置页面里面2.0固件可以一次设置三个MQTT服务器,方便发布不同的设备到不同的服务器上(例如同时发送到云端的MQTT服务器和本地的服务器。)
snipaste20180129_110337.jpg
这里注意,Controller Subscribe和Publish的设置,尽量不要动,如果你确定自己需要手动设置的话哪么后面HA的设置需要进行相应的更改。
4、进入Hardware页面,可以设置是否启用wifi led指示,控客小K的wifi灯使用了GPIO3,这个页面里面,可以调整I²C的针脚,以及默认引脚启动电平状态。
snipaste20180129_111649.jpg
5、device页面是我们添加的开关,以及继电器设备,或者传感器。跟MQTT以及HA相关的参数我都标出来了,一定要注意这部分的设定。下面是控客小K的按钮,另一个是继电器。名称和value在后面的rules设定也很重要。而且一定要注意这里面大小写一定要跟HA和rules设定一样。
snipaste20180129_112018.jpg snipaste20180129_112203.jpg
6、重头戏,rules的设定。默认rules明没有开启。需要在tool页面的advanced里面勾选rules,以及需要开启MQTT Retain Msg,是HA控制反馈的关键。
snipaste20180129_112532.jpg snipaste20180129_112709.jpg
下面是控客小K的按钮rules,让实体按键发挥作用。注意名字和大小写!使用rules的好处是如果你可以便携比较复杂的rules,设备甚至可以不依赖HA的自动化,自己完成很多的任务。更多的rules方法可以参考官方wiki。而且这个看上去跟HA的自动化语法有异曲同工之妙。https://www.letscontrolit.com/wiki/index.php/Tutorial_Rules 另外的一些高级设定比如NTP设置,syslog等设置,请自行摸索。
snipaste20180129_112832.jpg

   另外说一些espeasy的坑,目前为止,我尚未能够使用页面在线升级firmware成功,两个控客小K都是第一次刷后无法在线OTA更新了,这个问题不知道是我的个例还是控客小K的问题,其中一个想从R147版本的espeasy升级到2.0的时候挂掉了,只能有拆开重刷,另外一个R147的设备OTA刷机挂了恢复到了默认设置,我就不敢动了。
上面这个的原因已经知道,新版的固件不能OTA 2M以下的flash上,需要在在这之间是刷一个OTA专用固件做中转,比较麻烦。不过话说如果是小K的话除非有大的安全漏洞需要更新,我家里的机器不刷一直用这完全没问题。

    这一点上不如sonoff适用的的TA固件方便。可以使用GPIO0的动作设定AP模式,也可能是我尚未摸索到espeasy切换工作模式的办法。如果哪位知道的话,还望告知。另外一点就是,espeasy的api实在不如TA的丰富。虽然可以用一些curl取到状态和控制,但是一些详细的设定,TA的固件相对就更加复杂和详细了。
    有人愿意继续研究的话在这里 https://www.letscontrolit.com/wi ... y_Command_Reference
    好了,基本的espeasy固件的设置就到这里了,至于添加传感器等设置,论坛里面有一些设置,各位请自行摸索,我在一个控客小K上用多余的GPIO添加了一个SI7XXX的温湿度传感器,目前工作很好。
    下面就谈谈HA中开关的设定了。state_topic的设置为,/设备名称/Devices名称/Device Value Name 设备名,就是一开始在Config页面设置的Name,devices名称就是在devices页面设置的继电器的Name。这个一定要填写需要控制的继电器的设备名,button的不需要写到HA的配置里面,在command_topic需要填写/设备名称/gpio/gpio编号,(这个主要是因为在espeasy的固件设定的节点名称的时候变量用的/%system/如果是%system/就没必要/设备名/gpio编号了,)例如控客小K的继电器是如下图的gpio 15,由于我们在tools/advanced里面开启了mqtt retain,所以这里的retain要写true。payload_on和off,分别是1,0。
snipaste20180129_114544.jpg
这些设定完成以后就可以在HA中控制控客小K了,同时,控客小K的按钮动作,也会反馈到HA里面。
如果各位大大觉得我有什么错误的话,欢迎反馈一起讨论。






评分

参与人数 3金钱 +44 收起 理由
windgo + 10 大神666!
lidicn + 16 赠人玫瑰,手留余香!
+ 18 厉害了,我就不会用这个固件

查看全部评分

回复

使用道具 举报

0

主题

316

帖子

1732

积分

金牌会员

Rank: 6Rank: 6

积分
1732
金钱
1416
HASS币
0
发表于 2018-1-29 12:48:46 来自手机 | 显示全部楼层
谢谢楼主大大,拉近你们的衣袖不松手
回复

使用道具 举报

123

主题

4665

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16452
金钱
11702
HASS币
45
发表于 2018-1-29 13:22:02 | 显示全部楼层
谢谢楼主大大,拉近你们的衣袖不松手
回复

使用道具 举报

32

主题

986

帖子

4233

积分

论坛元老

Rank: 8Rank: 8

积分
4233
金钱
3207
HASS币
110

教程狂人论坛风云人物

发表于 2018-1-29 14:29:04 | 显示全部楼层
谢谢楼主大大,拉近你们的衣袖不松手;另外建议排一下版
回复

使用道具 举报

8

主题

209

帖子

2237

积分

论坛技术达人

积分
2237
金钱
2028
HASS币
0
发表于 2018-1-29 15:10:59 | 显示全部楼层
switch_input可以控制继电器?按照图上那样设置?
回复

使用道具 举报

3

主题

61

帖子

485

积分

论坛分享达人

积分
485
金钱
424
HASS币
0
 楼主| 发表于 2018-1-29 15:18:53 | 显示全部楼层
kenlau 发表于 2018-1-29 15:10
switch_input可以控制继电器?按照图上那样设置?

继电器就是一种开关啊,当然可以,列表里面没有Relay这个选项不设定成Switch那要设定成什么???
回复

使用道具 举报

8

主题

209

帖子

2237

积分

论坛技术达人

积分
2237
金钱
2028
HASS币
0
发表于 2018-1-29 17:15:24 | 显示全部楼层
顺便补充一下如何在HASS里面控制espeasy固件的继电器输出,这个没弄过,也没找到相关的教程
回复

使用道具 举报

30

主题

997

帖子

4153

积分

论坛元老

Rank: 8Rank: 8

积分
4153
金钱
3151
HASS币
0

活跃会员

发表于 2018-1-29 17:51:16 | 显示全部楼层
谢谢楼主大大,拉近你们的衣袖不松手
回复

使用道具 举报

3

主题

61

帖子

485

积分

论坛分享达人

积分
485
金钱
424
HASS币
0
 楼主| 发表于 2018-1-29 19:49:12 | 显示全部楼层
kenlau 发表于 2018-1-29 17:15
顺便补充一下如何在HASS里面控制espeasy固件的继电器输出,这个没弄过,也没找到相关的教程 ...

控客小K就是一个继电器,一个按钮啊,按钮不通知mqtt服务器,只有那个relay继电器的状态才通知mqtt。所以HA上反应的是继电器的状态,用HA控制的也是继电器。而espeasy的rules做到按钮控制relay。按键按下直接取反relay的状态。
回复

使用道具 举报

9

主题

198

帖子

1084

积分

金牌会员

Rank: 6Rank: 6

积分
1084
金钱
886
HASS币
0
发表于 2018-1-29 20:25:05 | 显示全部楼层
支持你一下下。。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-25 09:04 , Processed in 0.227903 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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