本帖最后由 iwha 于 2020-7-22 21:03 编辑
感谢XCray 的帖子 https://bbs.hassbian.com/thread-10055-1-1.html
ESP8266-01s 比较简单小巧,正好放得下
电工胶布或者热缩管包一下以免意外短路, 这个位置正合适
在此贴的基础之上重新编写了固件, 加入web页面操作, 第一次刷完固件接电 会开启wifi热点, 网段192.168.10.0, 网关地址192.168.10.1 wifi名称为ESP_XXXXXX (x为mac地址其中3位), 已在 ESP8266 12s和01s 完成测试
连接wifi后浏览器访问 http://192.168.10.1,
页面会搜索可用wifi, 选择你所在wifi 并加入, wifi连接成功后会关掉ESP8266本身的wifi热点 然后自动跳转到新获得的IP地址, 大概是这样的。
(页面已经添加了中文, 如果浏览器是中文的则会显示中文)
然后在mqtt部分填写你的mqtt信息
Topic Prefix (主题前缀) 可以自己定义 主题名称
勾选 “Publish Raw Message“ 允许推送原始信息 会把收到相关的榉树网关串口信息 发送到mqtt 服务器
管理部分(Admin) 是为了设置 刷机更新 的用户名和密码, 默认用户 admin 无密码
点击 “Update Firmware” 更新固件 刷机
固件(这是1M版本的,适合最基本的01s以及4M的12s, 如需要4M版本的可以自行编译)
zelkovalock-esp8266.bin.zip
(287.22 KB, 下载次数: 14)
固件代码下载,包含arduino文件和所需的html、javascript 文件。 有条件的可以自己修改编译
zelkovalock-esp-src.zip
(15.75 KB, 下载次数: 8)
HA 自定义sensor部分
sensor:
#榉树智能门锁
- platform: mqtt
name: Jvshu
icon: 'mdi:door-closed-lock'
state_topic: 'mqttl/设备did/4110' #替换成正确的did和eid
value_template: >-
{% if value == '00' %}
门未关!
{% elif value == '01' %}
已关,未闩
{% elif value == '02' %}
已上闩
{% endif %}
- platform: mqtt
name: LockOpera
icon: 'mdi:lock-smart'
state_topic: 'mqttl/设备did/5' #替换成正确的did和eid
value_template: >-
{% if value[16:20] == '0200' %}
指纹
{% elif value[16:20] == '0100' %}
密码
{% elif value[16:20] == '0000' %}
蓝牙
{% endif %}
- platform: mqtt
name: KeyID
icon: 'mdi:human-handsdown'
state_topic: 'mqttl/设备did/5' #替换成正确的did和eid
value_template: "{{ value[8:16] }}"
- platform: mqtt
name: OpTime
icon: 'mdi:clock-in'
state_topic: 'mqttl/设备did/5' #替换成正确的did和eid
value_template: "{{ value[0:8]|int(0,16)|timestamp_local }}"
#蓝牙温度/湿度计
- platform: mqtt
name: BLE Temperature
icon: 'mdi:temperature-celsius'
unit_of_measurement: "°C"
state_topic: 'mqttl/设备did/4100'
value_template: >
{{ value | int(base=16) / 10 }}
- platform: mqtt
name: BLE Humidity
icon: 'mdi:water'
unit_of_measurement: "%"
state_topic: 'mqttl/设备did/4102'
value_template: >
{{ value | int(base=16) / 10 }}
- platform: mqtt
name: BLE Battery
icon: 'mdi:battery-charging'
unit_of_measurement: "%"
state_topic: 'mqttl/设备did/4106'
value_template: >
{{ value | int(base=16) }}
也可以使用原始信息
- platform: mqtt
name: BLE Temperature
icon: 'mdi:temperature-celsius'
unit_of_measurement: "°C"
state_topic: 'mqttl/raw'
value_template: >
{% set params = value.params %}
{% if params.dev.did == '设备did' %}
{% if (params.evt |length > 0) and (params.evt[0].eid==4100) %}
{% set t = params.evt[0].edata %}
{{ (t[2:] + t[:2]) | int(base=16) / 10 }}
{% endif %}
{% endif %}
|