我是靠谱客的博主 优雅诺言,最近开发中收集的这篇文章主要介绍树莓派mqtt协议连接阿里云物联网平台,手机端获取数据并控制,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

树莓派mqtt协议连接阿里云物联网平台(三)

前面树莓派的数据已经上传到云端,可是我的android手机该如何获取树莓派上传的这些数据呢,,困惑了我好几天的疑问,解开的那一刻,真的时拨开云雾见青天啊。
首先按照第一篇,登录阿里云后台,重新建立个产品以及设备,我们定义为andoroid,这个设备用来android手机端通过mqtt协议登录阿里云。
物理模型我们定义个开关吧,实现功能就是 手机端点击开关,然后树莓派链接的继电器动作,切断灯的电源。
建立好了如下图。
在这里插入图片描述
不多说,直接上代码,Android Studio工程

    public void connectMqtt(String url,String clientId,String mMqttUserName, String mMqttPassword) throws Exception{

        //mMqttAndroidClient = new MqttAndroidClient(mContext,url,clientId);
        MemoryPersistence persistence = new MemoryPersistence();
        mMqttClient = new MqttClient(url,clientId,persistence);
        mMqttConnectOptions = new MqttConnectOptions();

        mMqttConnectOptions.setMqttVersion(4);
        mMqttConnectOptions.setAutomaticReconnect(true);
        mMqttConnectOptions.setCleanSession(true);

        mMqttConnectOptions.setUserName(mMqttUserName);
        mMqttConnectOptions.setPassword(mMqttPassword.toCharArray());
        mMqttConnectOptions.setConnectionTimeout(3);
        mMqttConnectOptions.setKeepAliveInterval(60);

        mMqttClient.setCallback(new MqttCallbackExtended() {
            @Override
            public void connectComplete(boolean reconnect, String serverURI) {
                Log.d("Max", "has  connectComplete ");
                mHander.sendEmptyMessageDelayed(0x01,10);
            }

            @Override
            public void connectionLost(Throwable cause) {
                Log.d("Max", "has  connectionLost ");
                mHander.sendEmptyMessageDelayed(0x02,10);
            }

            @Override
            public void messageArrived(String topic, MqttMessage message) throws Exception {
                Log.d("Max", "has  messageArrived ");
                handlerArrivedMessage(topic,message);
            }

            @Override
            public void deliveryComplete(IMqttDeliveryToken token) {
                Log.d("Max", "has  deliveryComplete ");
            }
        });
        mMqttClient.connect(mMqttConnectOptions);
    }

主机用户名密码等 根据第二篇里说的那个东西生成即可。
在这里插入图片描述
在这里插入图片描述
代码里订阅的主题为
在这里插入图片描述
为什么是这个主题呢?为什么树莓派的数据会通过这个主题发到android手机呢?
这里会用到阿里云一个比较牛逼的东西 规则引擎里的云产品流转
在这里插入图片描述
点击创建规则,编写SQL规则,查询树莓派通过post上报的属性值。
在这里插入图片描述
然后添加操作,是不是把树莓派上报的属性值,转到android设备订阅的Topic上了,这样android手机是不是就能同时收到树莓派上报的数据了呢?
在这里插入图片描述
在这里插入图片描述
如果要控制树莓派的设备,那么云产品流转里规则反一下就行了,就是把android设备上报的属性值,转发到树莓派可订阅的主题上就行。
在这里插入图片描述
在这里插入图片描述
代码链接

最后

以上就是优雅诺言为你收集整理的树莓派mqtt协议连接阿里云物联网平台,手机端获取数据并控制的全部内容,希望文章能够帮你解决树莓派mqtt协议连接阿里云物联网平台,手机端获取数据并控制所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部