记录Esphome后设置mqtt服务器的坑
记录Esphome烧录后配置mqtt服务器的坑
在网络上,努力搜了一番,没有找到烧录后再次配置mqtt broker的方法(类似烧录后配置wifi的方法),遂设法解决。
不能直接用lambda配置
错误示例如下,以及报错。
# 这里是错误示例
mqtt:
id: my_mqtt
broker: 192.168.1.1
username: !lambda return("abcd");
password: abcd
port: 1883
This option is not templatable!.
辗转使用 text 和 number
使用text和number用来交互数据
# 交互端口
number:
- platform: template
name: "MQTT Broker port"
optimistic: true
min_value: 1024
max_value: 10240
step: 1
restore_value: true
id: text_port
initial_value: 1883
# 交互字符串
text:
- platform: template
name: "MQTT Broker address"
optimistic: true
min_length: 0
max_length: 100
mode: text
restore_value: true
id: text_brok
initial_value: "192.168.1.1"
# 掉电保存
配合重启和on_boot
# 用来交互信息后重启
button:
- platform: restart
name: "ESP Restart"
# 上电后将交互的信息配置到mqtt
esphome:
name: 32c3-mqtt
friendly_name: 32C3-mqtt
on_boot:
lambda: !lambda |-
const char* my_brok = id(text_brok).state.data();
id(my_mqtt).set_broker_address(my_brok);
const char* my_user = id(text_user).state.data();
id(my_mqtt).set_username(my_user);
const char* my_pass = id(text_pass).state.data();
id(my_mqtt).set_password(my_pass);
int my_port = id(text_port).state;
id(my_mqtt).set_broker_port(my_port);
使用网页交互
# 视图3的感觉还是美观的
web_server:
port: 80
version: 3
local: true
使用效果展示
提高速度
删除来原生api,不接入esphome