300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 树莓派mqtt协议连接阿里云物联网平台 手机端获取数据并控制

树莓派mqtt协议连接阿里云物联网平台 手机端获取数据并控制

时间:2023-08-26 10:53:22

相关推荐

树莓派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() {@Overridepublic void connectComplete(boolean reconnect, String serverURI) {Log.d("Max", "has connectComplete ");mHander.sendEmptyMessageDelayed(0x01,10);}@Overridepublic void connectionLost(Throwable cause) {Log.d("Max", "has connectionLost ");mHander.sendEmptyMessageDelayed(0x02,10);}@Overridepublic void messageArrived(String topic, MqttMessage message) throws Exception {Log.d("Max", "has messageArrived ");handlerArrivedMessage(topic,message);}@Overridepublic void deliveryComplete(IMqttDeliveryToken token) {Log.d("Max", "has deliveryComplete ");}});mMqttClient.connect(mMqttConnectOptions);}

主机用户名密码等 根据第二篇里说的那个东西生成即可。

代码里订阅的主题为

为什么是这个主题呢?为什么树莓派的数据会通过这个主题发到android手机呢?

这里会用到阿里云一个比较牛逼的东西 规则引擎里的云产品流转

点击创建规则,编写SQL规则,查询树莓派通过post上报的属性值。

然后添加操作,是不是把树莓派上报的属性值,转到android设备订阅的Topic上了,这样android手机是不是就能同时收到树莓派上报的数据了呢?

如果要控制树莓派的设备,那么云产品流转里规则反一下就行了,就是把android设备上报的属性值,转发到树莓派可订阅的主题上就行。

代码链接

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。