Android Things阿里云物联网平台的使用(普通版)

简介: Android Things阿里云物联网平台的使用(普通版) 研究了物联网,那么接下来你需要做的就是如何去远程控制,实现开发板的远程通讯交互,那么BAT最近也都陆续更新了自己的物联网平台系统,借助BAT的资源,我们能很快的建立起一个物联网开发环境,接下来我们手把手看看阿里云物联网平台的使用吧 1.

Android Things阿里云物联网平台的使用(普通版)

研究了物联网,那么接下来你需要做的就是如何去远程控制,实现开发板的远程通讯交互,那么BAT最近也都陆续更新了自己的物联网平台系统,借助BAT的资源,我们能很快的建立起一个物联网开发环境,接下来我们手把手看看阿里云物联网平台的使用吧

1.登录到阿里云,在左上角的产品菜单中找到“产品”

2.从“产品”菜单中找到“物联网套件”

3.点击“管理控制台”,进入物联网控制台进行相关配置

4.首先创建一个产品

5.填写相关信息,在这里我们选择基础版,因为高级版虽然增加了很多功能,但是云端开发SDK截止目前为止尚未更新,无法使用云端SDK远程控制开发板

6.创建完成后,选择设备,点击“查看”,进入选择“前往管理”添加设备信息

7.点击“添加设备”

8.填写设备名称

9.记录备份相关秘钥信息,点击一键复制,保存到记事本,方便开发使用

10.回到产品信息页,进入“消息通讯”,点击“定义Topic类”添加

11.填写相关信息

12.接下来我们开发things程序,首先在项目的build.gradle文件中添加阿里云仓库地址

[java] view plain copy

  1. maven {
  2.     url "http://maven.aliyun.com/nexus/content/repositories/releases/"
  3. }

13.在app模块的build.gradle文件中添加相关组件

[html] view plain copy

  1. compile 'com.aliyun.alink.linksdk:public-channel-core:0.2.1'

14.集成

[java] view plain copy

  1. /**
  2.  * Created by cc_want on 2018/4/26.
  3.  */
  4. public class AliyunIoT {
  5.     private String TAG ="AlibabaIOT";
  6.     public static final String productKey = "<填写>"//这个是设备模版productkey
  7.     public static final String deviceName = "<填写>";//这个是设备名称
  8.     public static final String deviceSecret = "<填写>";//这个是设备秘钥
  9.     public static final String ACTION_SYS_SERVICE_CMD = String.format(Locale.CHINESE,"/%s/%s/%s",productKey,deviceName,"cmd");
  10.     private IConnectionStateListener mConnectionStateListener;
  11.     private IOnPushListener mIOnPushListener;
  12.     private IOnSubscribeListener mSysServiceListener = new IOnSubscribeListener() {
  13.         @Override
  14.         public void onSuccess(String s) {
  15.         }
  16.         @Override
  17.         public void onFailed(String s, AError aError) {
  18.         }
  19.         @Override
  20.         public boolean needUISafety() {
  21.             return true;
  22.         }
  23.     };
  24.     AliyunIoT(){
  25.     }
  26.     private static AliyunIoT mIntance;
  27.     public static AliyunIoT getIntance() {
  28.         if (mIntance == null) {
  29.             mIntance = new AliyunIoT();
  30.         }
  31.         return mIntance;
  32.     }
  33.     public void init(Context context, IConnectionStateListener listener) {
  34.         mConnectionStateListener = listener;
  35.         ALog.setLevel(ALog.LEVEL_DEBUG);
  36.         MqttConfigure.mqttHost = "ssl://" + productKey + ".iot-as-mqtt.cn-shanghai.aliyuncs.com:1883";
  37.         MqttInitParams initParams = new MqttInitParams(productKey, deviceName, deviceSecret);
  38.         PersistentNet.getInstance().init(context, initParams);
  39.         PersistentEventDispatcher.getInstance().registerOnTunnelStateListener(mConnectionStateListener, true);// 注册监听
  40.     }
  41.     public void register() {
  42.         PersistentEventDispatcher.getInstance().registerOnPushListener(mIOnPushListener, true);
  43.         PersistentNet.getInstance().subscribe(ACTION_SYS_SERVICE_CMD, mSysServiceListener);
  44.     }
  45.     public void setIOnPushListener(IOnPushListener listener) {
  46.         this.mIOnPushListener = listener;
  47.     }
  48.     public void close() {
  49.         PersistentEventDispatcher.getInstance().unregisterOnTunnelStateListener(mConnectionStateListener);//取消监听
  50.         PersistentEventDispatcher.getInstance().unregisterOnPushListener(mIOnPushListener);
  51.         PersistentNet.getInstance().unSubscribe(ACTION_SYS_SERVICE_CMD, mSysServiceListener);
  52.     }
  53. }

在MainActivity中初始化

[java] view plain copy

  1. AliyunIoT.getIntance().init(thisthis);
  2. AliyunIoT.getIntance().setIOnPushListener(this);

实现IOnPushListener接口回调方法,接收处理阿里云物联网平台的消息

[java] view plain copy

  1. /**
  2.  * 下推消息回调接口
  3.  *
  4.  * @param topic
  5.  * @param data  下推的消息内容
  6.  */
  7. @Override
  8. public void onCommand(String topic, String data) {
  9.     Log.e(TAG, "接收:  topic=" + topic + "  data=" + data);
  10.     JSONObject json = JSON.parseObject(data);
  11. }
  12. /**
  13.  * 根据method过滤消息
  14.  *
  15.  * @param topic : 本次下推消息的命令名称
  16.  * @return : 若返回true,则onCommand被调用,返回false,则onCommand不会被调用
  17.  */
  18. @Override
  19. public boolean shouldHandle(String topic) {
  20.     Log.e(TAG, "接收 shouldHandle :  topic=" + topic);
  21.     return true;
  22. }

15.服务端集成

在开发板物联网平台使用中,我们常需要远程控制,所以我们需要有一个可以远程控制的程序,这里阿里云物联网平台提供了java SDK方便我们调用,但需要注意的是,目前java SDK不支持高级版,这也就是建议使用基础版的原因,在本教程中,服务端开发了一个Android app,装在手机上,方便我们测试

注意:这里使用的是普通版,高级版请查看另外一篇文章

Android Things阿里云物联网平台的使用(高级版)

[html] view plain copy

  1. compile 'com.aliyun:aliyun-java-sdk-iot:4.0.0'
  2. compile 'com.aliyun:aliyun-java-sdk-core:3.2.10'

服务端代码如下:

[html] view plain copy

  1. /**
  2.  * 阿里云物联网平台服务端
  3.  * Created by cc_want on 2018/4/11.
  4.  */
  5. public class AliyunIOT {
  6.     private String TAG ="AlibabaIOT";
  7.     public static final String accessKey = "<填写>";
  8.     public static final String accessSecret = "<填写>";
  9.     public static final String productKey = "<填写>"; //这个是设备模版productkey
  10.     public static final String ACTION_DRIVE = "/<填写>/<填写deviceName>/cmd";
  11.     private DefaultAcsClient mClient;
  12.     private static AliyunIOT mIntance;
  13.     public static AliyunIOT getIntance(){
  14.         if(mIntance == null){
  15.             mIntance = new AliyunIOT();
  16.         }
  17.         return mIntance;
  18.     }
  19.     public void init(){
  20.         try {
  21.             DefaultProfile.addEndpoint("cn-shanghai", "cn-shanghai", "Iot", "iot.cn-shanghai.aliyuncs.com");
  22.         } catch (ClientException e) {
  23.             e.printStackTrace();
  24.         }
  25.         IClientProfile profile = DefaultProfile.getProfile("cn-shanghai", accessKey, accessSecret);
  26.         mClient = new DefaultAcsClient(profile); //初始化SDK客户端
  27.     }
  28.     public void open(int lightNo){
  29.         //{"LightStatus":1}
  30.         JSONObject json = new JSONObject();
  31.         try {
  32.             json.put("LightStatus",1);
  33.         } catch (JSONException e) {
  34.             e.printStackTrace();
  35.         }
  36.         new Drive(json.toString()).execute();
  37.     }
  38.     class Drive extends AsyncTask<String,Integer,String>{
  39.         String mMsg;
  40.         Drive(String msg){
  41.             mMsg = msg;
  42.         }
  43.         @Override
  44.         protected String doInBackground(String... params) {
  45.             PubRequest request = new PubRequest();
  46.             request.setProductKey(productKey);
  47.             //此处必须用Base64加密
  48.             request.setMessageContent(Base64.encodeToString(mMsg.getBytes(),Base64.DEFAULT));
  49.             request.setTopicFullName(ACTION_DRIVE);
  50.             request.setQos(0); //目前支持QoS0和QoS1
  51.             //如果不加,则报错,官方文档没写
  52.             //Specified signature is not matched with our calculation
  53.             request.setMethod(MethodType.POST);
  54.             try {
  55.                 PubResponse response = mClient.getAcsResponse(request);
  56.                 Log.d(TAG,"success:"+response.getSuccess());
  57.                 Log.d(TAG,"error:"+response.getErrorMessage());
  58.             } catch (ClientException e) {
  59.                 e.printStackTrace();
  60.             }
  61.             return null;
  62.         }
  63.     }
  64. }

 原文地址http://www.bieryun.com/3626.html

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
2月前
|
消息中间件 DataWorks 物联网
MQTT问题之接入阿里云物联网平台如何解决
MQTT接入是指将设备或应用通过MQTT协议接入到消息服务器,以实现数据的发布和订阅;本合集着眼于MQTT接入的流程、配置指导以及常见接入问题的解决方法,帮助用户实现稳定可靠的消息交换。
268 1
|
7天前
|
Android开发
Android Studio(2022.3.1)设置阿里云源-新旧版本
Android Studio(2022.3.1)设置阿里云源-新旧版本
43 1
|
6天前
|
Java Maven Android开发
安卓项目使用阿里云镜像加速构建过程
安卓项目使用阿里云镜像加速构建过程
8 0
|
2月前
|
物联网 测试技术 Android开发
构建未来:基于Android的智能物联网家居控制系统
【5月更文挑战第28天】 随着物联网(IoT)技术的不断演进,智能家居系统正变得越来越普遍。本文深入探讨了利用Android平台构建一个高效、可扩展的智能物联网家居控制系统。我们将分析系统架构、关键技术组件以及开发中的最佳实践,旨在为开发者提供一个清晰的指南,以实现设备之间的无缝通信和自动化控制。
|
2月前
|
安全 搜索推荐 物联网
构建未来:基于Android的智能物联网家居系统
【5月更文挑战第15天】 在快速发展的数字化时代,智能物联网(IoT)技术与移动操作系统的结合正在塑造未来家居的生活方式。特别是Android平台,以其开放性、灵活性和广泛的用户基础,成为智能家居创新的理想选择。本文将探讨如何利用Android系统构建一个高效、安全且易于扩展的智能家居控制系统,涵盖系统设计、关键技术实现以及可能面临的挑战。通过分析具体案例,我们旨在为开发者和企业提供一套可行的解决方案蓝图,以促进智能家居领域的进一步发展。
|
2月前
|
Cloud Native 安全 物联网
【阿里云云原生专栏】云边端一体化:阿里云如何利用云原生技术赋能物联网
【5月更文挑战第22天】阿里云借助云原生技术赋能物联网,实现云边端一体化,提升系统弹性与敏捷性。通过容器化部署,保证高可用性与可靠性。在智能交通等领域,阿里云提供高效解决方案,实现实时数据分析与决策。代码示例展示如何使用阿里云服务处理物联网数据。同时,阿里云重视数据安全,采用加密和访问控制保障数据隐私。丰富的工具和服务支持开发者构建物联网应用,推动技术广泛应用与发展。
198 1
|
2月前
|
消息中间件 存储 JavaScript
阿里云IOC物联网异步处理基础概念
该内容介绍了异步处理基础和消息队列的相关概念。首先,同步处理指任务完成后才能执行其他操作,而异步则允许任务并行执行,不阻塞程序。异步能提高系统并发性和响应性,但也增加复杂性和资源消耗。接着,提到了消息队列,包括生产者、消费者、队列、broker和topic等概念,并指出在IoT中,设备作为生产者发送消息到特定topic,消费者从队列获取数据。最后,简要介绍了AMQP协议,它是用于应用程序间消息传递的开放标准,常用于分布式系统和物联网,如RabbitMQ和Apache Qpid。课程将以Apache Qpid为例接收IoT数据。
157 6
阿里云IOC物联网异步处理基础概念
|
2月前
|
物联网 区块链 Android开发
构建高效Android应用:Kotlin与Jetpack的实践之路未来技术的融合潮流:区块链、物联网与虚拟现实的交汇点
【5月更文挑战第30天】 在移动开发领域,效率和性能始终是开发者追求的核心。随着技术的不断进步,Kotlin语言以其简洁性和现代化特性成为Android开发的新宠。与此同时,Jetpack组件为应用开发提供了一套经过实践检验的库、工具和指南,旨在简化复杂任务并帮助提高应用质量。本文将深入探索如何通过Kotlin结合Jetpack组件来构建一个既高效又稳定的Android应用,并分享在此过程中的最佳实践和常见陷阱。
|
2月前
|
监控 物联网 数据处理
构建未来:基于Android的智能物联网家居系统
【4月更文挑战第24天】 随着物联网技术的飞速发展,智能家居系统作为其重要分支之一,正逐渐渗透到千家万户。本文将详细探讨如何利用Android平台的灵活性和开放性,设计并实现一个高效、可靠的智能物联网家居系统。我们将从系统的架构设计出发,深入分析关键技术点,包括设备通信协议、用户界面设计以及后台数据处理等方面,并展示通过Android设备进行实时控制和监控的实用性。文章不仅聚焦于技术细节,还将对未来发展趋势及潜在挑战进行前瞻性讨论。
39 0
|
2月前
|
存储 安全 物联网
安防摄像头IPC如何快速接入阿里云Link Visual视频服务(阿里云生活物联网)
Link Visual是生活物联网平台针对视频产品推出的增值服务,提供视频数据上云、存储、转发、AI计算等能力。 大白话就是:通过阿里云的Link Visual视频服务,可以让你的IPC摄像头设备完成上云功能,并快速实现如下功能介绍中的功能。其中可以享受阿里云P2P协议支持,帮助企业节省流量服务器流量带宽。
445 7

相关产品

  • 物联网平台