赞
踩
- private final String mqtt_sub_topic = "/sys/k0wih08FdYq/LHAPP/thing/service/property/set";//订阅话题
-
- //mqtt客户端订阅主题
- //QoS=0时,报文最多发送一次,有可能丢失
- //QoS=1时,报文至少发送一次,有可能重复
- //QoS=2时,报文只发送一次,并且确保消息只到达一次。
- int[] qos = {1};
- String[] topic = {mqtt_sub_topic};
- mqttClient.subscribe(topic, qos);
- private final String payloadJson = "{\"id\":%s,\"params\":{\"LightLux\": %s,\"Humidity\": %s,\"temperature\": %s},\"method\":\"thing.event.property.post\"}";
-
- private void postDeviceProperties() {
- try {
- String payload = String.format(payloadJson, String.valueOf(System.currentTimeMillis()), 10,10,10);
- String responseBody = payload;
- MqttMessage message = new MqttMessage(payload.getBytes("utf-8"));
- message.setQos(1);
- String pubTopic = "/sys/" + productKey + "/" + deviceName + "/thing/event/property/post";
- mqttClient.publish(pubTopic, message);
- Log.d(TAG, "publish topic=" + pubTopic + ",payload=" + payload);
- msgTextView.setText("发布成功");
- } catch (Exception e) {
- e.printStackTrace();
- msgTextView.setText("发布失败");
- Log.e(TAG, "postDeviceProperties error " + e.getMessage(), e);
- }
- }
- mqttClient.setCallback(new MqttCallback() {
- @Override
- public void connectionLost(Throwable cause) {
- //这里不需要做处理
- //因为在option有一个方法可以自动重连(如下)
- //断开后,是否自动连接,connOpts.setAutomaticReconnect(true);
- }
-
- @Override
- public void deliveryComplete(IMqttDeliveryToken token) {
- //publish后会执行到这里
- System.out.println("deliveryComplete---------" + token.isComplete());
- }
-
- @Override
- public void messageArrived(String topicName, MqttMessage message) throws Exception {
- //subscribe主题后,收到消息执行到这里
- try {
- JSONObject jsonObject = new JSONObject(message.toString());// 解析JSON数据
- Log.i(TAG, "消息到达,message: " + message);
- JSONObject paramsObject = jsonObject.getJSONObject("params");// 获取params字段中的JSONObject
-
- int Humidity = paramsObject.getInt("Humidity");
- int LightLux = paramsObject.getInt("LightLux");
- int temperature = paramsObject.getInt("temperature");
- humidityTextView.setText(String.valueOf(Humidity));
- lightluxTextView.setText(String.valueOf(LightLux));
- temperatureTextView.setText(String.valueOf(temperature));
- } catch (JSONException e) {
- e.printStackTrace();
- }
- }
- });
链接:https://pan.baidu.com/s/1cbcAjmzPWw4n7EvO7uT62A?pwd=8888
提取码:8888
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。