ESP8266+OneNet(MQTT)+APP温湿度采集与继电器控制

Talia ·
更新时间:2024-09-21
· 899 次阅读

先看效果

app端(可远程显示温湿度、控制继电器开关)

四、AndroidManFest的application标签下添加服务

五、在onCreate()方法中调用init_MQtt()方法连接OneNet

/** * MQTT连接服务器 */ private void init_MQtt(){ //初始化sdk MqttClient.initialize(this,"183.230.40.39",6002,"设备ID","产品ID","Master APIkey"); //设置接受响应回调 MqttClient.getInstance().setCallBack(callBack); //设置连接属性 MqttConnectOptions connectOptions = new MqttConnectOptions(); connectOptions.setCleanSession(true); connectOptions.setKeepAlive(121); connectOptions.setWill(false); connectOptions.setWillQoS(QoS.AT_MOST_ONCE); connectOptions.setWillRetain(false); //建立TCP连接 MqttClient.getInstance().connect(connectOptions); } /** * MQTT回调函数 */ private MqttCallBack callBack =new MqttCallBack() { @Override public void messageArrived(MqttMessage mqttMessage) { switch (mqttMessage.getMqttHeader().getType()){ case CONNACK: MqttConnAck mqttConnAck = (MqttConnAck) break; case PUBLISH: break; case SUBSCRIBE: MqttSubscribe mqttSubscribe=(MqttSubscribe)mqttMessage; break; case SUBACK: MqttSubAck mqttSubAck = (MqttSubAck) mqttMessage; break; case PINGRESP: break; case PUBACK: MqttPubAck mqttPubAck=(MqttPubAck) mqttMessage; break; case PUBCOMP: break; } } @Override public void connectionLost(Exception e) { } @Override public void disconnect() { } };

六、此时手机设备已经连接上OneNet,可以在平台上看到
在这里插入图片描述
七、订阅Topic

MqttSubscribe mqttSubscribe = new MqttSubscribe("你要发布的Topic名字", QoS.AT_LEAST_ONCE); MqttClient.getInstance().subscribe(mqttSubscribe);

八、发布Topic

//data中写入你想要发送的数据 byte[] data = {'1'}; MqttPublish mqttPublish=new MqttPublish("你要发布的Topic名称",data,QoS.AT_LEAST_ONCE); MqttClient.getInstance().sendMsg(mqttPublish);

九、接收已订阅Topic的信息,在回调函数的相应项下修改

case PUBLISH: MqttPublish mqttPublish = (MqttPublish) mqttMessage; byte[] data = mqttPublish.getData(); String topic= mqttPublish.getTopicName(); String s=new String(data); textview.setText(topic+" "+new String(data)); break;

十、本项目是用两个按键来发布一个Topic,一个的内容为1,另一个为0,ESP8266订阅了这个Topic,接收到1/0表示开/关灯。
手机订阅一个ESP8266发布的温湿度Topic和一个判断灯开关是否成功的Topic(LED_STATUS),实现温湿度在手机端显示和开关灯。
十一、你可以使用MQtt实现多人聊天。
十二、Android源码地址
十三、小白菜一个,大神勿喷,感谢onenet大哥提供的jar包。


作者:小魏先生



电器 esp8266 onenet 继电器 esp mqtt app

需要 登录 后方可回复, 如果你还没有账号请 注册新账号