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

 找回密码
 立即注册
楼主: XCray

[新奇玩法] (多个)蓝牙网关 TTL->MQTT,支持任意米家蓝牙设备接入HA/NR

  [复制链接]

0

主题

65

帖子

817

积分

高级会员

Rank: 4

积分
817
金钱
752
HASS币
0
发表于 2020-8-19 21:54:28 | 显示全部楼层
XCray 发表于 2020-8-19 20:25
在外地。。。

榉树好像只出过这一款网关,从来没关注过型号,固件版本1.6.4_0107。

据客服说只有k1的配套网关能接入米家
固件应该用编程器备份出来就可以吧,我看有块nxp的芯片
我没用榉树的锁。。只有这个网关
回复

使用道具 举报

77

主题

1392

帖子

2万

积分

元老级技术达人

积分
24862
金钱
23430
HASS币
290
发表于 2020-8-19 23:57:56 | 显示全部楼层
本帖最后由 dscao 于 2020-8-20 00:44 编辑

原固件配置成功后就不能再修改mqtt服务器设置,代码中作了如下一处修改,可随时关掉wifi后重新配置新的mqtt服务器,多天测试下来正常。
String ssid = "mqttl_" + String(ESP.getChipId()).substring(0, 4);
    strcpy(HOSTNAME,ssid.c_str());
    if (!wifiManager.autoConnect(ssid.c_str(), AP_PASSWORD)) {
        Serial.println(F("Failed to connect to WIFI and hit timeout"));
        ESP.reset();
        delay(WIFI_TIMEOUT);
    }

    if (shouldSaveConfig) {              #修改处
    strcpy(MQTT_HOST, CUSTOM_MQTT_HOST.getValue());
    strcpy(MQTT_PORT, CUSTOM_MQTT_PORT.getValue());
    strcpy(MQTT_USER, CUSTOM_MQTT_USER.getValue());
    strcpy(MQTT_PASS, CUSTOM_MQTT_PASS.getValue());
    }

    if (shouldSaveConfig) {
        Serial.println(F("Saving WiFiManager config"));
        write_eeprom(0, 64, MQTT_HOST);   // * 0-63
        write_eeprom(64, 6, MQTT_PORT);   // * 64-69
        write_eeprom(70, 32, MQTT_USER);  // * 70-101
        write_eeprom(102, 32, MQTT_PASS); // * 102-133
        write_eeprom(134, 1, "1");        // * 134 --> always "1"
        EEPROM.commit();
    }


另外刚买了个小米感应夜灯蓝牙版,测试发现配置如下:
sensor:
- platform: mqtt
    name: mi_yedeng_move_NAME
    state_topic: 'mqttl/设备ID/15'
    value_template: >-
       {% if value|int(0,16) == 1 %}
         有人移动,环境光-暗
       {% elif value|int(0,16) == 100 %}
         有人移动,环境光-亮
       {% else %}
         未知
       {% endif %}
  - platform: mqtt
    name: mi_yedeng_battery_NAME
    icon: 'mdi:battery-80'
    state_topic: 'mqttl/设备ID/4106'
    unit_of_measurement: '%'
    value_template: "{{value|int(0,16)}}"
  - platform: mqtt
    name: mi_yedeng_timedelay_NAME
    state_topic: 'mqttl/设备ID/4119'
    value_template: "{{value|int(0,16)}}"

homeassistant:
  customize:
    sensor.mi_yedeng_move_NAME:
      friendly_name: 感应夜灯状态
    sensor.mi_yedeng_battery_NAME:
      friendly_name: 感应夜灯电量
    sensor.mi_yedeng_timedelay_NAME:
      friendly_name: 无人移动时间  #上报0秒,2分钟,5分钟,10分钟,20分钟,30分钟,用秒表示
    
另等“小米门窗传感器2”(最大的特色是新增光照传感器,实现了开合、光照二合一)发货,介绍说也是蓝牙网关,这两样东西配合就省得用多功能网关也可以实现人体和门磁联动了。




评分

参与人数 1金钱 +10 收起 理由
XCray + 10 给力!

查看全部评分

回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
12119
金钱
9100
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2020-8-20 08:45:21 | 显示全部楼层
本帖最后由 XCray 于 2020-8-20 08:48 编辑
dscao 发表于 2020-8-19 23:57
原固件配置成功后就不能再修改mqtt服务器设置,代码中作了如下一处修改,可随时关掉wifi后重新配置新的mqtt ...

这个应该是“米家夜灯2 蓝牙版”吧?型号为“MJYD02YL-A”?

代码改进对于经常折腾mqtt服务器的朋友很有用处,等有空了我把它合入主贴的固件,或者你编译上传一个我在主贴里加个链接?
回复

使用道具 举报

77

主题

1392

帖子

2万

积分

元老级技术达人

积分
24862
金钱
23430
HASS币
290
发表于 2020-8-20 10:15:59 | 显示全部楼层
27.JPG

对,就是你说的这个名称。


d1 mini版的固件(改进了修改mqtt服务器)
sketch_jul15a.ino.d1_mini.bin (396.59 KB, 下载次数: 11)
固件中用户名和密码(其它没改):
const char* update_path = "/update";                                          //OTA页面地址
const char* update_username = "root";                                        //OTA用户名
const char* update_password = "password";                                     //OTA密码



回复

使用道具 举报

0

主题

65

帖子

817

积分

高级会员

Rank: 4

积分
817
金钱
752
HASS币
0
发表于 2020-8-20 11:10:03 | 显示全部楼层
本帖最后由 sheeran 于 2020-8-20 11:23 编辑
sheeran 发表于 2020-8-19 21:54
据客服说只有k1的配套网关能接入米家
固件应该用编程器备份出来就可以吧,我看有块nxp的芯片
我没用榉树 ...

TTL进去的信息

                               
登录/注册后可看大图

算了吧,不麻烦你了
我还是买个小白万能遥控吧 ttl.JPG
回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
12119
金钱
9100
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2020-8-20 12:07:18 | 显示全部楼层
sheeran 发表于 2020-8-20 11:10
TTL进去的信息
算了吧,不麻烦你了
我还是买个小白万能遥控吧

我还真没想过备份和刷蓝牙网关固件的可能性,能做到吗?编程器就算了,太折腾。

不过 我也觉得,与其这么折腾,不如买个小白或者咸鱼捡个榉树网关啥的
回复

使用道具 举报

46

主题

641

帖子

4413

积分

元老级技术达人

积分
4413
金钱
3742
HASS币
120
发表于 2020-8-30 21:04:55 | 显示全部楼层
本帖最后由 evantalk 于 2020-8-30 21:07 编辑

感谢大神开发固件,以前killadm的固件刷入esp01不能用(重启后会失效,不明原因),现在我把esp01塞在里面,很稳定!就是我的小米青春版由于硬件原因(纯手动上锁),所以没有门事件(编号7),
回复

使用道具 举报

13

主题

400

帖子

2800

积分

金牌会员

Rank: 6Rank: 6

积分
2800
金钱
2400
HASS币
0
发表于 2020-8-31 22:21:39 | 显示全部楼层
dscao 发表于 2020-8-19 23:57
原固件配置成功后就不能再修改mqtt服务器设置,代码中作了如下一处修改,可随时关掉wifi后重新配置新的mqtt ...

这个传感器报状态变化有延迟吗?能用来控制开灯吗?(延迟1秒内)
回复

使用道具 举报

77

主题

1392

帖子

2万

积分

元老级技术达人

积分
24862
金钱
23430
HASS币
290
发表于 2020-9-1 00:49:54 | 显示全部楼层
小米门窗传感器2




  - platform: mqtt
    name: mi_mengci_huanjingguang_E4AAEC34D824
    state_topic: 'mqttl/设备ID/4120'
    value_template: >-
       {% if value|int(0,16) == 0 %}
         环境光暗
       {% elif value|int(0,16) == 1 %}
         环境光亮
       {% else %}
         未知
       {% endif %}
  - platform: mqtt
    name: mi_mengci_kaiguan_E4AAEC34D824
    icon: mdi:timer
    state_topic: 'mqttl/设备ID/4121'
    value_template: >-
       {% if value|int(0,16) == 0 %}
         门窗打开
       {% elif value|int(0,16) == 1 %}
         门窗关闭
       {% elif value|int(0,16) == 2 %}
         超时未关
       {% else %}
         未知
       {% endif %}
  - platform: mqtt
    name: mi_mengci_battery_E4AAEC34D824
    icon: 'mdi:battery-80'
    state_topic: 'mqttl/设备ID/4106'  # 新设备配对后只见过一次消息,后来一直没再出现
    unit_of_measurement: '%'
    value_template: "{{value|int(0,16)}}"



评分

参与人数 1金钱 +20 收起 理由
XCray + 20 又多了一种硬件!

查看全部评分

回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
12119
金钱
9100
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2020-9-1 06:46:50 | 显示全部楼层
maybeloveu 发表于 2020-8-31 22:21
这个传感器报状态变化有延迟吗?能用来控制开灯吗?(延迟1秒内)

这个玩法的最大的意义,就是一切都在本地发生,没有任何延迟(本地通信和处理时延不是人类可以感知的,忽略不计)。

小米近年在大力推动蓝牙器件,但官方app及使用方法中的相关自动化只能云端执行,经常造成无法接受的时延(甚至有可能长达十几秒)。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-26 11:53 , Processed in 0.065124 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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