ESP8266和Micropython-第2部分

注释
因此,[ESP8266和Micropython]的第1部分(/Blog/2016/207/07/28/ESP8266和Micropython-Part1/)非常la脚,对吗?我们没有从家庭助理中获取信息,而是向前迈出一步,并创建自己的传感器,该传感器必威是什么将有关其状态的详细信息发送给家庭助理实例。

HTTP帖子请求,MQTT是使用DIY设备发布信息的最快方法(从作者的角度来看)。

您必须做出决定:您想拉动还是轮询传感器的信息?对于温度等缓慢变化的值,请等待几秒钟才能检索值。如果是运动探测器,则国家更改应立即在家庭助理中可用,否则可能会错过。必威是什么这意味着传感器必须采取主动行动并将数据发送给家庭助理。必威是什么

拉动的一个例子是休息。这是与ESP8266单元和Ardunio IDE合作的好方法。

mqtt

您可以找到一个简单的示例,用于在微食库概述该部分UMQTT

下面的示例是根据@Davea因为我们不想重新发明轮子。配置功能是狡猾的/config.json存储配置详细信息。ESP8266设备将每5秒发送一次引脚的值。

进口机器进口时间进口ubinascii进口WebReplumqtt.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”作为Fconfig=JSON负载((F())除了((奥索尔,,,,ValueError):打印((“不能加载 /config.json”save_config()别的config更新((config打印((“从 /config.json加载配置”防守save_config():进口Ujson作为JSON尝试打开((“/config.json”,,,,“ W”作为FF((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的设备上使用,并显示如何使用按钮控制继电器。