ESP8266和Micropython-第2部分

旁HTTP帖子请求,MQTT是使用DIY设备发布信息的最快方法(从作者的角度来看)。
您必须做出决定:您想拉动还是轮询传感器的信息?对于温度等缓慢变化的值,请等待几秒钟才能检索值。如果是运动探测器,则国家更改应立即在家庭助理中可用,否则可能会错过。必威是什么这意味着传感器必须采取主动行动并将数据发送给家庭助理。必威是什么
拉动的一个例子是休息。这是与ESP8266单元和Ardunio IDE合作的好方法。
mqtt
您可以找到一个简单的示例,用于在微食库概述该部分UMQTT。
下面的示例是根据@Davea因为我们不想重新发明轮子。配置功能是狡猾的/config.json
存储配置详细信息。ESP8266设备将每5秒发送一次引脚的值。
进口机器进口时间进口ubinascii进口WebRepl从umqtt.simple进口mqttclient#这些默认值被load_config()的 /config.json的内容覆盖config={“经纪人”:“ 192.168.1.19”,,,,“ sensor_pin”:0,,,,“ client_id”:b“ ESP8266_”+ubinascii。己缩((机器。唯一身份()),“话题”:b“家”,,,,}客户=没有任何Sensor_pin=没有任何防守setup_pins():全球的Sensor_pinSensor_pin=机器。ADC((config[['sensor_pin')))防守load_config():进口Ujson作为JSON尝试:和打开((“/config.json”)作为F:config=JSON。负载((F。读())除了((奥索尔,,,,ValueError):打印((“不能加载 /config.json”)save_config()别的:config。更新((config)打印((“从 /config.json加载配置”)防守save_config():进口Ujson作为JSON尝试:和打开((“/config.json”,,,,“ W”)作为F:F。写((JSON。转储((config))除了奥索尔:打印((“无法保存 /康菲格。)防守主要的():客户=mqttclient((config[['client_id'],,config[['经纪人')))客户。连接()打印((“连接到{}”。格式((config[['经纪人')))尽管真的:数据=Sensor_pin。读()客户。发布(('{}/{}'。格式((config[['话题'],,config[['client_id']),,字节((str((数据),'utf-8'))打印(('传感器状态:{}'。格式((数据))时间。睡觉((5)如果__姓名__=='__主要的__':load_config()setup_pins()主要的()
订阅该主题家/#
或创建一个MQTT传感器检查传感器值是否已发布。
Mosquitto_sub-H192.168.1.19-v-t“家/#”
传感器:-平台:mqttstate_topic:“主页/ESP8266_ [最后部分的这苹果电脑地址]”姓名:“Micropython”
@Davea创建Sonoff-mqtt。该代码也将在基于ESP8622的设备上使用,并显示如何使用按钮控制继电器。