IoT 企业物联网平台端到端开发实战

28 篇文章 18 订阅
订阅专栏
19 篇文章 14 订阅
订阅专栏
5 篇文章 3 订阅
订阅专栏

通过本次 IoT 开发实战教程你将学会一下技能:

  1. 设备通过MQTT协议与您在阿里云上购买的IoT企业实例建立双向连接,设备上报采集的数据,监听云端下达的指令;

  2. 通过规则引擎配置把上报的数据实时存储到指定数据库,无需编写代码

  3. 通过规则引擎配置把上报的数据实时流转到业务服务器,需要使用AMQP协议SDK

  4. 业务服务器调用IoT平台的API,下达控制指令到设备端

一、创建IoT企业实例

首先,我们登录物联网平台控制台(https://iot.console.aliyun.com), 点击购买实例来创建一个企业实例。

然后,在购买页面,根据实际业务需求,选择地域、实例类型、设备数量、消息上下行TPS、规则引擎TPS等参数,点击立即购买,付费成功后,即可看到企业实例创建中。

稍等几分钟后,企业实例创建完成。进入企业实例,我们可以看到当前规格参数,设备接入点信息,AMQP订阅接入点信息,云端API调用接入点信息。如下图:

二、创建产品和注册设备

在企业实例的设备管理页面,我们需要先创建一个产品家庭温控器,数据通信以JSON格式认证方式为设备秘钥

在产品的功能定义页面,我们添加温度和湿度两个属性,具体细节如下图:

最后,我们在设备管理页面,基于家庭温控器产品,注册一个物理设备,并获取设备身份认证的三元组。如下图:

三、设备开发和数据上报

获取设备身份三元组后,即可通过MQTT协议接入到我们开通的企业实例。设备端应用程序逻辑如下图:

完整的Nodejs示例代码如下:

const mqtt = require('aliyun-iot-mqtt');
// 1. 设备身份信息
var options = {
    productKey: "产品productKey",
    deviceName: "设备deviceName",
    deviceSecret: "设备deviceSecret",
    host: "实例化MQTT接入点"
};


// 2. 建立MQTT连接
const client = mqtt.getAliyunIotMqttClient(options);


client.subscribe(`/${options.productKey}/${options.deviceName}/user/get`)
client.on('message', function(topic, message) {
    console.log("topic " + topic)
    console.log("message " + message)
})


setInterval(function() {
    // 3.上报温湿度数据
    client.publish(`/sys/${options.productKey}/${options.deviceName}/thing/event/property/post`, getPostData(), { qos: 0 });
}, 5 * 1000);


function getPostData() {
    const payloadJson = {
        id: Date.now(),
        version: "1.0",
        params: {
            temperature: Math.floor((Math.random() * 20) + 10),
            humidity: Math.floor((Math.random() * 20) + 10)
        },
        method: "thing.event.property.post"


    }
    console.log("payloadJson " + JSON.stringify(payloadJson))
    return JSON.stringify(payloadJson);
}

启动模拟脚本后,我们看到设备状态为在线物模型数据中可以看到最新上报的温度和湿度值

监控运维日志服务里,也可以看到设备上报数据的日志。如下图:

四、数据存储到DataBase

首先,我们创建一个表格存储实例 IoTDataStore,建立一张数据表 iot_data,以deviceName和timestamp为主键。如下图:

在IoT企业实例,云产品流转中创建规则引擎,编写数据处理SQL,配置流转目的地为上面创建的数据库表。

数据处理SQL编辑界面:

数据流转到表格存储编辑界面:

当设备有数据上报后,我们就可以在表格存储的iot_data表中实时看到存储的数据了。如下图:

在企业实例的日志服务中,我们可以查看到完整的流转日志,协助我们排查数据链路异常。如下图:

五、资源受限类设备

IoT场景中有些数据需要业务系统实时处理,这时我们可以通过服务端订阅AMQP方式,实时接收设备上报的数据。

首先,我们要在企业实例的服务端订阅中,创建一个新的消费组,用来接收特定类型的消息。如下图:

然后,我们在云产品流转中创建规则引擎,编写数据处理SQL,配置流转目的地为上面创建的服务端订阅消费组

最后,我们在业务服务器编写程序,使用阿里云账号的AccessKey与IoT企业实例建立AMQP连接,参考代码如下:

public static void main(String[] args) throws Exception {
        //参数说明
        String accessKey = "子账号accessKey";
        String accessSecret = "子账号accessSecret";
        String consumerGroupId = "消费组Id";
        String iotInstanceId = "企业实例Id";
        long timeStamp = System.currentTimeMillis();
        //签名方法:支持hmacmd5,hmacsha1和hmacsha256
        String signMethod = "hmacsha1";
        String clientId = "ecs_"+System.currentTimeMillis();
        
        String userName = clientId + "|authMode=aksign"
                + ",signMethod=" + signMethod
                + ",timestamp=" + timeStamp
                + ",authId=" + accessKey
                + ",iotInstanceId=" + iotInstanceId
                + ",consumerGroupId=" + consumerGroupId
                + "|";
        //password组装
        String signContent = "authId=" + accessKey + "&timestamp=" + timeStamp;
        String password = doSign(signContent,accessSecret, signMethod);
        //按照qpid-jms的规范,组装连接URL。
        String connectionUrl = "failover:(amqps://"+iotInstanceId+".amqp.iothub.aliyuncs.com:5671?amqp.idleTimeout=80000)"
                + "?failover.reconnectDelay=30";
        Hashtable<String, String> hashtable = new Hashtable<>();
        hashtable.put("connectionfactory.SBCF",connectionUrl);
        hashtable.put("queue.QUEUE", "default");
        hashtable.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.qpid.jms.jndi.JmsInitialContextFactory");
        Context context = new InitialContext(hashtable);
        ConnectionFactory cf = (ConnectionFactory)context.lookup("SBCF");
        Destination queue = (Destination)context.lookup("QUEUE");
        // Create Connection
        Connection connection = cf.createConnection(userName, password);
        ((JmsConnection) connection).addConnectionListener(myJmsConnectionListener);
        // Create Session
        // Session.CLIENT_ACKNOWLEDGE: 收到消息后,需要手动调用message.acknowledge()
        // Session.AUTO_ACKNOWLEDGE: SDK自动ACK(推荐)
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        connection.start();
        // Create Receiver Link
        MessageConsumer consumer = session.createConsumer(queue);
        consumer.setMessageListener(messageListener);
    }

在AMQP的回调中处理收到的业务数据,参考代码如下:

private static MessageListener messageListener = new MessageListener() {
        @Override
        public void onMessage(Message message) {
            try {
                //如果要对收到的消息做耗时的处理,请异步处理,确保这里不要有耗时逻辑。
                byte[] body = message.getBody(byte[].class);
                String content = new String(body);
                String topic = message.getStringProperty("topic");
                String messageId = message.getStringProperty("messageId");
                String tag = message.getStringProperty("tag");
                logger.info("receive message"
                        + ",\n topic = " + topic
                        + ",\n messageId = " + messageId
                        + ",\n tag = " + tag
                        + ",\n content = " + content
                        +"\n");
                System.out.println();
                
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    };

启动业务服务器后,我们看到不断有设备数据流转过来,如下图:

在企业实例的控制台,服务端订阅中,我们也可以看到消费组的运行情况,包括消费速率,消息堆积量,消费客户端列表,如下图:

在企业实例的控制台,日志服务中,我们可以看到完整的消息流转日志,如下图:

六、云端下达控制指令

业务系统通过调用IoT物联网平台提供的HTTPS API 可以给指定设备下发控制指令,调用过程如下:

Pub API调用的参考代码:

const co = require('co');
const RPCClient = require('@alicloud/pop-core').RPCClient;


const options = {
    accessKey: "子账号accessKey",
    accessKeySecret: "子账号accessKeySecret"
};


//1.初始化 API Client
const client = new RPCClient({
    accessKeyId: options.accessKey,
    secretAccessKey: options.accessKeySecret,
    endpoint: 'https://iot.cn-beijing.aliyuncs.com',
    apiVersion: '2018-01-20',
});
// 指令内容
const payload = {
    washingMode: 2,
    washingTime: 30
};
//2.构建Pub API 请求
const params = {
    TopicFullName: "下行指令的Topic",
    MessageContent: new Buffer(JSON.stringify(payload)).toString("base64"),
    ProductKey: "产品ProductKey",
    IotInstanceId: "实例化Id",
    Qos: 1
};


co(function*() {
    //3.发起Pub API调用
    try {
        const response = yield client.request('Pub', params);


        console.log("Pub SUCCESS =====>", JSON.stringify(response));
    } catch (err) {
        console.log("Pub ERROR =====>", JSON.stringify(err));
    }
});

业务系统和设备端 运行日志:

在企业实例的控制台,日志服务中,我们也可以追踪到完整的下行链路日志,如下图:

往期推荐

1、39张传感器工作原理GIF图

2、智能手持测温枪开发实践

3、IoT+TSDB+Quick BI 搭建楼宇环境监控

4、JS全栈开发,构建智能家居小程序

iot-dc3:IOT DC3是基于Spring Cloud的开源分布式物联网IOT)平台。 它用于物联网项目的快速开发物联网设备的管理。 是物联网系统的一套解决方案
04-29
:rocket: 项目文档请阅读 ! :collision: 你的 Star 是我开发的动力,下载源码 git clone https://gitee.com/pnoker/iot-dc3.git ! :seedling: 为了便于你的二次开发和理解,DC3 开源了 Demo Web UI , DC3是基于Spring Cloud的开源可分布式物联网(IOT)平台,用于快速开发、部署物联设备接入项目,是一整套物联系统解决方案。IOT DC3 is an open source, distributed Internet of Things (IOT) platform based on Spring Cloud. It is used for rapid development of IOT projects and management of IOT devices. It is a set of solutions for IOT
Iot工业物联网平台方案介绍
07-27
Iot平台对生产,质量,研发等领域的数据进行采集,存储,管理和分发;对数字应用提供稳定的数据和平台支撑。方案介绍了: • 实现物联设备采集和管理功能;支持网关接入,网关子设备接入,直连接入的方式; • 实现...
华为鸿蒙开发者学堂网络应用开发笔记
qq_62557167的博客
07-25 585
MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输协议),是一种基于发布/订阅(publlish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。.UDP协议相关APl.UDP客户端创建流程·UDP通信流程。.1、掌握TCP协议相关API.2、掌握如何创建TCP服务端。-UDP协议相关API.UDP服务端创建流程UDP通信流程。.1、掌握UDP服务端创建流程.2、掌握UDP通信流程。...
IoT开发手册】小白也能玩转IoT开发之创建移动应用
机智云gizwits_csdn的博客
05-13 607
在上一篇【IoT开发手册】中讲到了如何创建标准方案智能产品、自定义方案的智能产品、产品页面开发、数据点(功能点)定义、硬件产品上架等内容,熟悉以上信息或者说以上流程后能让新用户快速上手,能避免踩坑。 今天,主要讲创建移动应用,机智云物联网平台在创建移动应用方面有哪些特点呢? 支持创建智能家居、商用租赁、资产跟踪管、设备安防、自定义类型的应用。 应用页面的功能可以在线、可视化配置,换句话就是点一点鼠标就能完成页面功能开发。 通过配置证书就可以快速构建应用,设备升级、管理均能可.
物联网规则引擎设计
xw2sy的博客
12-14 1887
监听器 定义数据源获取方法,通过监听条件对输入消息进行过滤,输出符合条件的消息。 过滤条件 对监听到消息之外的数据进行判断是否要执行下一步。 动作定义 对满足条件的数据进行处理。
IOT-DC3配置指南
weixin_38615065的博客
07-07 1万+
入门指南 环境 本指南环境: 系统 : win7 JDK: 1.8.0_201 Maven: 3.3.9 IDE : IntelliJ IDEA2017 NODEJS: npm 6.14.5 docker: 19.03.1 win10家庭版和win7安装docker https://blog.csdn.net/vitaair/article/details/80894890 配置 #在开发模式下进行的 # Docker Toolbox 默认IP 是192.168.99.100 # A
开源物联网平台建设、参考解决方案
爱是与世界平行
09-22 4213
开源物联网平台建设、参考解决方案一、什么是物联网平台1.1 物联网应用基础服务平台应具备的能力1.2 物联网平台定位要求1.2.1 提供统一的终端接入平台1.2.2 提供统一的应用基础运行平台1.2.3 提供统一的安全认证1.2.4 提供统一的数据交换平台1.2.5 提供统一的门户支撑平台1.2.6 提供多种业务基础构件1.3 物联网平台功能结构1.3.1 数据通讯模块1.3.2 报警处理模块1.3.3 策略联动1.3.4 脚本服务1.3.5 日程管理1.3.6 数据备份1.3.7 双机备份1.3.8 权限
超详细“华为IoT物联网(OceanConnect)平台环境搭建教程
热门推荐
Micah's Blog
12-29 1万+
该文章详细的讲述了“华为IoT物联网平台环境的搭建”教程,适合新手阅读,让新手更快的上手华为物联网开发平台。
IOTOS物联网中台(中间件平台)产品介绍 v2.10.20.1.pptx
04-20
IOTOS物联网平台平台功能支持物联网多协议接口适配、数据可视化展示、应用模块化开发,以及提供驱动和应用的开发社区生态支持,行业应用开发成本缩减到20%,开发效率提高10倍。 平台架构采用SOA分布式软总线,支持...
OneLinks IoT 行业物联网平台与应用案例
12-05
”行业物联网平台与应用案例PPT“,专注于打造行业物联网基础平台,构建行业应用系统;可含盖智慧农业、智能交通、电力电网、智能制造、智慧物流等各个行业.
DC3 是基于 Spring Cloud 的开源可分布式物联网 (IOT) 平台
05-03
功能设计,定位目标 可伸缩:水平可伸缩的平台,构建使用领先的 Spring Cloud 开源技术; 容错:没有单点故障弱,集群中的每个节点是相同的; 健壮和高效:单一服务器节点可以处理甚至数百成千上万的设备根据用例; 可定制:添加新的设备协议,并注册到服务中心; 跨平台:使用 Java 环境可异地、分布式多平台部署; 自主可控:私有云、公有云、边缘部署; 完善性:设备快速接入、注册、权限校验; 安全(开发中...):数据加密传输(mqtt 驱动已实现数据加密传输); 多租户:命名空间,多租户化; 云原生:Kubernetes; 容器化:Docker。
IoT--物联网平台架构设计分析
02-24
用户如何管理,数据包如何解析,大数据如何展示等也是物联网模块中非常重要的部分,所以作者就根据自身工作中总结出来的建构在云端的物联网平台基本架构分享给大家,并基于此架构如何一步一步来开发一套物联网平台。...
NB-IoT物联网平台介绍方案.pptx
04-11
NB-IoT物联网平台介绍方案
IOT-DC3 报错怎么解决
weixin_42674912的博客
12-25 576
IOT-DC3 报错怎么解决,那位大神
物联网云平台设计与开发:springboot项目搭建与开发(后端)
weixin_47314602的博客
07-19 4709
掌握通过脚手架搭建springboot项目;掌握SSM框架的搭建;掌握Mybatis框架的集成开发;掌握MybatisGenerate逆向工程使用方式;掌握Mysql数据库搭建与连接方式;实验内容。
从程序员的角度,来拆解物联网系统中的开发工作
06-25 627
物联网的概念已经被炒了好多年了,奇怪的是:市场中对这个概念的反应总是不愠不火。随着5G的迅速普及,不知道是否能够再次把这个领域带火起来。但是不管怎样,很多大学已经把物联网这个专业给坐实了...
MQTT协议与阿里云IoT物联网平台
12-18 1万+
1.MQTT协议介绍 1.1 MQTT协议 MQTT(消息队列遥测传输) 是基于 TCP/IP 协议栈而构建的支持在各方之间异步通信的消息协议。MQTT在空间和时间上将消息发送者与接收者分离,因此可以在不可靠的网络环境中进行扩展。虽然叫做消息队列遥测传输,但它与消息队列毫无关系,而是使用了发布和订阅(Pub/Sub)的模型。 MQTT 是一种轻量级的、灵活的网络协议,致力于为 IoT 开发人员实现...
微信小程序-MQTT模拟器 连接阿里云IoT物联网平台
02-13 9272
微信小程序-MQTT模拟器 微信小程序码 1. 准备工作 1.1 注册阿里云账号 开通阿里云账号,并通过支付宝实名认证 https://www.aliyun.com 1.2 免费开通IoT物联网套件 产品官网 https://www.aliyun.com/product/iot 2. 控制台操作步骤 2.1 创建高级版产品 ** 高级版,JSON格式** 2.2 产品功能定义 添加产品属性** ...
Arduino+ESP8266+WIFI+人体红外监测HC-SR501数据上云
01-24 8463
[C]NodeMCU(ESP8266)接入阿里云IoT 原文链接 https://www.yuque.com/cloud-dev/iot-tech/dzgwqc 物模型定义 C程序代码 esp8266.ino 代码 #include &amp;lt;ESP8266WiFi.h&amp;gt; /* 依赖 PubSubClient 2.4.0 */ #include &amp;lt;PubSubClient.h&amp;gt...
iotos物联网中间件平台源码
最新发布
06-24
iotos物联网中间件平台源码是一款基于开源的物联网中间件平台,它可以帮助企业快速实现物联网应用开发和管理。iotos物联网中间件平台源码主要有四大模块:设备接入、规则引擎、数据存储和应用服务。 设备接入模块...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 阿里智能App下架,智能家居平台淘汰赛拉开大幕 23086
  • MQTT协议与阿里云IoT物联网平台 15571
  • 2021年中国无线通信模组企业排名 11838
  • 2021年国内四大 IoT 物联网平台选型对比综合评估报告 11161
  • IoTGateway 国内开源工业 IoT 物联网网关 10092

分类专栏

  • 华为IoT 8篇
  • 物联网 19篇
  • 微信小程序 5篇
  • 阿里云IoT 28篇

最新评论

  • 开源 | 智能家居场景,基于 AriKiss 配网的微信小程序

    babong: AirKiss

  • OpenRemote: Java 开源 IoT 物联网开发平台,匹配智慧城市、智能家居、能源管理

    李秀才: 演示系统,账号是啥啊?

  • TLink 工业物联网平台,支持云组态、实时计算、微信告警

    小霖在学c: 怎么手动刷新啊

  • iThings 基于 EMQ X + TDengine + React 开源云原生 IoT 物联网平台

    m0_66769313: 什么时候出这个对应小程序或者APP?谢谢

  • 开源 | 智能家居场景,基于 AriKiss 配网的微信小程序

    一天快乐的鱼: AirKiss

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 直播|涂鸦 MiniApp 开发者线上交流会,3 分钟带你玩转 IoT 小程序开发
  • 中国公共云,堵在哪、怎么解?
  • 腾讯云史诗级翻车:15 项服务大面积崩溃,正在紧急修复中....
2024
04月 6篇
03月 22篇
02月 14篇
01月 26篇
2023年103篇
2022年142篇
2021年129篇
2020年75篇
2019年9篇
2018年6篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司泰安SEO按天扣费公司哈尔滨百度标王公司张掖网站优化按天扣费永州百度seo价格萍乡seo网站优化价格塔城企业网站建设推荐丽江推广网站公司广东企业网站设计推荐宜宾网站排名优化哪家好银川推广网站价格民治如何制作网站塔城网站推广系统公司横岗网站制作定西SEO按天扣费怒江阿里店铺托管哪家好阜新百度seo哪家好永新网页制作多少钱延安网站推广方案公司保定seo网站推广价格朝阳网站推广方案推荐泸州SEO按效果付费公司霍邱建站推荐南充SEO按天扣费濮阳至尊标王多少钱四平网站优化推荐坪山网站搜索优化株洲网站建设多少钱岳阳百度关键词包年推广价格秦皇岛网站优化公司和县高端网站设计多少钱歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化