本帖最后由 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”(最大的特色是新增光照传感器,实现了开合、光照二合一)发货,介绍说也是蓝牙网关,这两样东西配合就省得用多功能网关也可以实现人体和门磁联动了。
|