首先说明,我是个初学者,有些错误的想法,还请各位指点。
准备做一个智能插座,想要达到的目的:能实时获取插座的状态,通过手机对插座的通电与断电进行操作。
我原来的思想是:插座采用ESP8266芯片进行通讯管理,首先通过手机对ESP8266芯片进行配网。配网成功后,链接MQTT服务器,订阅主题,像MQTT服务器发送芯片及用户信息。MQTT服务器收到信息后,请求服务器的API接口,对用户信息和插座信息进行配对添加。
这样无法实现,因为插座订阅的主题必须是已有的,如果都去订阅同一个主题,发送的消息,订阅了的都能收到,也不知道是谁发的。服务器也无法监听MQTT服务器收到的消息。
后来我就换了一个想法:插座采用ESP8266芯片进行通讯管理,首先通过手机对ESP8266芯片进行配网。配网成功后,芯片请求HTTP API接口,像服务器发送 插座和用户信息。服务器添加用户和插座信息,然后服务器调取EMQX提供的API接口,添加对应的主题。添加主题成功后,服务器将主题名称返回给芯片,芯片链接MQTT服务器,订阅对应的主题。实现服务器对插座的指令操作,也可以通过MQTT服务器获取插座的状态。
这个也遇到问题,我采用的是EMQX5.2,它没有提供添加主题的API。