
暂无个人介绍
企业实例续费步骤第一步:登录物联网平台控制台,进入实例概览界面。在该界面选择想要续费的实例,可以在实例的左下角看到该实例的到期日期第二步:点击实例右上角的续费。点击续费进入实例续费界面第三步:在续费界面选择购买时长同时可在该界面查看该实例的相关规格注意:续费和升配不可同时操作,如需对实例升配需要另外单独操作,请参考文档:企业物联网平台实例升配指引第四步:支付成功后回到控制台。可以看到该实例的到期时间延长了,续费操作完成了想了解物联网平台详情介绍,请前往:https://www.aliyun.com/product/iot/iot_instc_public_cn想了解物联网平台活动信息,请关注:https://www.aliyun.com/activity/iot/iot_instc_public_activity欢迎钉钉扫描二维码加入群聊,获取更多物联网平台资讯
一、物联网市场的发展趋势以及挑战根据 IoT 市场研究机构相关报告,在全球范围内,物联网设备的连接量将从 2021 年的 123 亿台增长至 2025 年的 271 亿台,年均复合增长率22%。IoT 市场发展至今,依然处于于快速增长期,无论是局域网还是广域网的连接设备,在未来几年都具有非常大的增长潜力。在政策方面,国家多次提到要大力发展物联网。去年 9 月份,中央八部委联合印发了《物联网新型基础设施建设三年行动计划》。在规划中提到,要加速推进全面感知、泛在连接、安全可信的物联网新型基础设施,并且提出了明确的行动目标,这也为国内的物联网发展注入了新的政策势能。从市场的发展和政策的制定综合来看,物联网的相关企业与开发者都面临着巨大的发展机遇。而在巨大的发展机遇面前,每家企业的业务都在经历着激烈的市场竞争。在竞争中,产品推向市场的速度、产品的差异化、产品是否足够安全稳定、是否具备足够的成本优势等,都将成为产品的核心竞争力。而与此同时,产品的研发团队面对业务的要求,往往显得力不从心。因为物联网系统是多角色、多技术栈的复杂系统,除了复杂的硬件设计、生产和服务外,还需要考虑软件系统的设备端、云端和多角色应用开发的问题。尤其是对于第三方服务的选型,往往具备很高的学习门槛,而且在短时间内验证第三方服务是否足够稳定。因此,这些问题往往会引发产品研发团队与业务团队之间的矛盾。如何简化物联网系统的开发,让客户的产品具备足够的竞争力,是阿里云物联网团队一直在思考的问题。二、定位、价值以及整体架构经过充分的准备,阿里云在物联网平台的基础上,推出了物联网平台增值服务中心,包含了视频智能、数据智能、音频智能、场景智能、网络与安全、应用开发、设计与定制、云端一体这八大类服务,涵盖了市场上多个业务场景。物联网平台增值服务中心提供的服务主要面对客户的业务场景和用户场景,它的特点是智能化和场景化。对于客户来说,增值服务中心针对的是客户业务诉求。在客户的业务诉求方面提供了四大核心价值: ① 降低了开发门槛,加速物联网产品研发、上市的速度。 ② 提供了丰富的智能化的能力,能够提升客户产品与业务的竞争力。 ③ 提供了多种安全能力,保证客户产品与业务的安全和稳定。 ④ 提供了应用开发平台,进一步加快应用的构建速度,并且提供了托管服务,能够降低客户开发和运维的成本。当前,物联网平台增值服务中心的服务也在不断新增和迭代,持续帮助客户开发出具备更强市场竞争力的产品。开发者使用物联网平台增值服务中心也非常方便,只需要在现有的平台控制台上选用相应的服务开通即可。与平台一体化的设计,能够降低开发者的学习与使用门槛。三、核心服务无论是在 2B 还是在 2C 的领域,带屏与带摄像头的设备越来越多。因此,基于音视频的对讲功能带来非常好的用户体验。比如儿童手表,孩子通过手表可以与父母进行视频通话,父母不仅可以听到孩子的声音,而且还可以通过摄像头看到孩子和周边的环境;传统门禁升级成智能门禁之后,可以通过手机的 App 查看访客并通过 App 开门,用户不再受地点的约束。基于互联网的音视频对讲与监控也会存在安全问题。为此,阿里云物联网团队与阿里云视频运营团队联合推出面向 IoT 领域的实时对讲与监控服务:音视频通信服务。开发者只需要集成 SDK 与调用相应的 API 即可快速实现智能设备的视频对讲与视频监控。基于阿里云在物联网与视频通信领域的多年技术积累,音视频对讲服务与 IoT 场景进行了深度适配,包括音视频的编解码、适配通信的保活以及 SDK 的裁剪,以此满足嵌入式设备资源紧张、流量敏感与续航的要求。另外,基于服务大规模设备的能力,底层物联网平台可以支持亿级的连接,音视频的节点部署在全球六大洲,无论是初创企业还是高速成长的业务,都可以得到平稳的支撑。目前服务已经内置了 7 种安全威胁检测能力,对信令与媒体进行了全链路的加密,能够保障客户的产品安全稳定。传统的语音播报设备,比如车站的广播、收款音箱、共享设备等播报的内容相对单调固定。针对此问题,阿里云推出了面向智能设备的千里传音语音播报服务,实现了基于云端生成个性化语料后分发到设备,在设备端进行播放的服务。千里传音语音播报服务在云端支持了四大场景、34种真人语音,可以在云端进行语料合成,并根据设备支持的格式,生成 WAV 、 MP3 与 AMR 的格式,使语音播报不再机械单调。 针对语料文件的分发,千里传音提供了流量优先和触达优先的灵活策略。客户可以根据自己的实际应用来选择,所有语料都支持动态更新。在物联网的应用中,规模的增长会给基于云端的服务带来越来越大的挑战,另外物联网设备所处的网络环境也千差万别,如何在实际的应用中保持稳定至关重要。千里传音服务依托多年的技术积累,可支撑海量设备的接入与语料分发,同时能够在复杂的网络环境中保持较高的推送到达率。在物联网的应用中,技术创新往往会带来商业模式的创新,能否及时采用最新的技术,往往会成为商业成败的关键。 阿里云物联网团队的智能声码服务向客户提供了信息传递的新方式,可以在机场、地铁站、火车站等场所,结合广播音频设备进行优惠券的派发,或者在商场停车场实现无接触缴费。对服务提供者的设备要求也比较低,设备具有语音播放的功能即可。在用户端,用户可以通过 App 或小程序进行服务的接收。智能声码与现有的技术相比具有以下优点: ① 用户体验好,采用“不可见”声波来传递服务信息,用户在整个的服务过程中感知不到任何异常 ② 传播效率高,可以进行一对多的传播。用户无需靠近声源,只需要在声码辐射的范围内即能接收到服务的信息。另外一些光线较差的环境下如果扫码无法完成服务,也可以通过声码实现完美的支持。 ③ 提供了移动端的 SDK 也支持小程序,客户可以根据自己的实际情况灵活选择。在生产制造领域,数字化转型决定了企业未来竞争力。许多制造业的企业都在进行供应链、生产制造、销售服务、公司经营的数字化改造。其中生产制造环节的数字化,不仅需要依赖行业经验过程的数据,还需要利用数据智能进行建模和分析。但是数据智能往往是传统行业企业所不擅长的。因此,阿里云物联网团队通过服务众多的制造业客户,沉淀出了面向生产制造行业的数据智能服务生产工艺分析,帮助客户解决在数字化转型过程中数据建模和实时分析的问题。如上图所示,在使用服务的流程中,客户将设备的运营数据、供应链数据以及生产数据上传到物联网平台的数据型实例上,启用生产工艺分析服务进行模型训练。模型训练完后,可以根据实际的生产数据进行生产线的控制。相对于传统经验式的控制,生产工艺分析采用了多维度、大规模的数据进行训练,能够根据实际的运行情况进行持续迭代与优化。因此在整个生产过程中可以提供更全面、更系统、更精确的控制生产工具分析的服务。生产工艺分析服务接入简单,不需要针对设备进行大规模的改造,客户只需将设备的数据上传到物联网平台的数据型实例即可。在物联网领域,设备位置相关的应用也越来越广泛,比如共享车辆的运营、商业无人机的行驶。在此背景下,阿里云物联网团队推出了面向 IoT 领域的位置服务,提供了设备定位、地理围栏和历史轨迹查询的功能,能够帮助客户进行快速的开发产品。设备位置服务提供了融合定位服务,客户可以根据设备 IP 、移动基站,也可以通过 WiFi 进行多种形式的定位。在准确率和稳定性方面,设备位置服务提供了最高达 5 米的定位准确率,以及 99.8% 的定位成功率,为业务的正常运营提供了关键性的保障。在产品形态上,它提供了两种形式供客户使用:第一种是免开发的、面向运维人员的控制台,第二种是面向应用开发人员的 API 方式。客户可以根据自己的实际场景来选择适合自己的使用方式。物联网应用的重要价值之一就是利用多维度、多设备的数据和状态,来预测和及时捕获到异常,并采用有效的措施防止异常造成更大的损失。比如在工业场景中,设备的损坏往往意味的就是产品的不良率提升、生产过程的停止以及生产效率的降低。因此及时感知设备异常并采取行动对于企业来说非常关键;在医疗健康场景中,医生也需要通过多维度的数据来综合判断人的健康状态以及是否需要进行进一步检查。而针对不同场景的规的定义、维护设备的自动联动往往需要花费很大的精力。为了解决此问题,阿里云物联网团队推出了事件响应服务,客户免于开发即可灵活定义自己的异常场景。异常发生的时候,可以根据配置的规则及时通知相关人员,或通过联动的设备对故障进行自动处置,以此够减少异常带来的损失。这一项基础的通用服务,可以应用在各个物联网场景中,它具备以下几个优点: ① 场景规则的策略灵活,支持定时检测与基于状态的检测。客户可以定义的规则高达十种, 能够满足复杂场景的定义。 ② 融合通知的能力,可以支持钉钉、邮件、短信、电话多种不同形式。也可以根据不同的场景、不同的异常来定义不同的通知类型。既可以保证不错过重大异常,也可以解决轻微异常发生时相关处置人受到过度通知的困扰。 ③ 规则联动的能力,设备的异常被捕获后,可以定义联动其他的设备进行自动处置,以此缩短整个异常处置的时间。四、结语 经过介绍,相信大家对物联网平台增值服务已经有初步了解,若还想了解增值服务详情欢迎访问链接https://iotservice.iot.aliyun.com/。 同时也可以点击链接在线咨询https://ai.alimebot.taobao.com/intl/index.htm?from=3kMRyQHHTS。
一、企业实例升配步骤第一步:登录物联网平台控制台,进入实例概览界面。第二步:点击要升配的实例,进入实例详情可以看到当前实例所拥有的功能第三步:点击实例右上角的升配按钮进入升配选择界面第四步:在升配界面选择您想要升级的规格或想要新增的功能可以根据实际业务需求来选择同时在线设备数量、消息上下行TPS、规则引擎TPS等参数,亦或是开通新服务项目。第五步:支付成功后会弹出支付完成的界面点击管理控制台快速进入实例概览界面第六步:点击升配完的实例可以看到实例目前拥有的功能升配完成后您就可以使用实例下的新增功能,原先的设备及数据均会保留,无需重新部署 二、通过升配可开通的新服务项 可通过升配选择开通视频服务、数据分析、Link WAN和ID²设备安全认证功能 1.物联网视频服务(LinkVisual) 支持视频流上云、存储、转发、告警事件等视频基础能力,提供丰富的视频算法以及云边协同(算法云端训练、云端下发、边缘计算推理)服务。旨在帮助视频设备厂商、方案商与服务提供商,快速将存量或者新增的视频设备上云。2.物联网数据分析LA(Link Analytics) 阿里云为物联网开发者提供的设备智能分析服务,全链路覆盖了设备数据采集、管理(存储)、清洗、分析等环节,有效降低了数据分析门槛,实现了设备数据与业务数据的融合分析透视。物联网数据分析可与物联网应用开发(IoT Studio)结合使用,配置数据可视化大屏,完成设备状态监控、园区环境监测、运营大屏等业务场景的开发工作,助力物联网开发者基于数据实现业务创新,创造更多业务价值。3.物联网络管理平台(Alibaba Cloud Link WAN,简称Link WAN) Link WAN是阿里云面向物联网企业所推出的网管平台,旨在帮助开发者搭建企业物联网络,实现企业级、大容量、高并发的网络专网服务。Link WAN可与阿里云物联网平台搭配使用,确保物联网平台每个环节的开发者都能轻松实现各自功能,并且拥有可自主管理的物联网无线覆盖区。4.IoT设备身份认证ID²(Internet Device ID) 一种物联网设备的可信身份标识,具备不可篡改、不可伪造、全球唯一的安全属性,是实现万物互联、服务流转的关键基础设施。有以下特点:①轻量化:使用ID²代替CA证书,即节省了存储空间又节省了网络资源的消耗。仅连接握手阶段就可以节省70%的网络资源消耗。②高安全:为IoT设备提供云端可信根,基于可信根为上层业务提供可信服务,从源头确保IoT设备的合法性和数据的安全性。③广覆盖:适用于多种安全等级的IoT应用场景,支持不同安全等级的载体(SE、SIM、TEE、secure MCU、软件沙箱)。
一、企业版实例,企业用户首选企业物联网平台 提供设备上云必备的基础服务,用户无需自建物联网的基础设施即可便捷地接入和管理设备,而企业版实例具备绝对优势,是企业设备上云首选:l 数据完全隔离,独享云端资源,海量设备稳定连接l 免费上线安全威胁检测服务,7*24小时实时防护l 支持高可用版本,双副本容灾,SLA可达到99.99%l 开通规格可自由选择,还赠时序数据存储l 支持更多种的增值服务,适配业务场景化需求 二、新版公共实例升级为企业实例开发实战接下来为大家详细介绍新版公共实例升级为企业实例的步骤 第一步:登录控制后台,进入实例概览界面,点击公共实例右上角的“升级企业版” 第二步:选择您想升级的企业版类型。注意:当前仅支持一键升级至华东2(上海) 第三步:按照您的需求选择规格。规格选型可参考文档https://help.aliyun.com/document_detail/196230.html 第四步:选择好规格后点击立即购买,进入订单详情页面在这个页面,您可以确认您的配置详情有没有问题,在确认没有问题后点击去支付。目前,新用户首单5折不限购买规格,最低0.031元/月/台! 第五步:支付成功后会弹出支付完成的界面,点击管理控制台会进入实例概览界面这时候您就可以看到您的公共实例升级成功为企业实例了升级完成后您就可以使用企业实例的功能,原先公共实例的设备和数据均保留,无需重新部署,并且可以按照您的需求进行升配、续费以及开通增值服务。 欢迎钉钉扫描下图二维码加入群聊,获取更多物联网平台资讯、教程!
企业物联网平台新版公共实例升级企业实例教程简介:2021年7月30日企业物联网平台重磅升级,发布的新版公共实例支持一键升级企业版实例,本文将为大家介绍一键升级教程 一、企业版实例,企业用户首选企业物联网平台 提供设备上云必备的基础服务,用户无需自建物联网的基础设施即可便捷地接入和管理设备,而企业版实例具备绝对优势,是企业设备上云首选:l 数据完全隔离,独享云端资源,海量设备稳定连接l 免费上线安全威胁检测服务,7*24小时实时防护l 支持高可用版本,双副本容灾,SLA可达到99.99%l 开通规格可自由选择,还赠时序数据存储l 支持更多种的增值服务,适配业务场景化需求 二、新版公共实例升级为企业实例开发实战接下来为大家详细介绍新版公共实例升级为企业实例的步骤 第一步:登录控制后台,进入实例概览界面,点击公共实例右上角的“升级企业版” 第二步:选择您想升级的企业版类型。注意:当前仅支持一键升级至华东2(上海) 第三步:按照您的需求选择规格。规格选型可参考文档https://help.aliyun.com/document_detail/196230.html 第四步:选择好规格后点击立即购买,进入订单详情页面在这个页面,您可以确认您的配置详情有没有问题,在确认没有问题后点击去支付。目前,新用户首单5折不限购买规格,最低0.031元/月/台! 第五步:支付成功后会弹出支付完成的界面,点击管理控制台会进入实例概览界面这时候您就可以看到您的公共实例升级成功为企业实例了升级完成后您就可以使用企业实例的功能,原先公共实例的设备和数据均保留,无需重新部署,并且可以按照您的需求进行升配、续费以及开通增值服务。 欢迎钉钉扫描下图二维码加入群聊,获取更多物联网平台资讯、教程!
第一步 创建产品第二步 定义物模型第三步 创建设备完成三步之后就可以进行设备模拟上云啦!第四步 设备上云第一种方案,利用Node.js进行上云完整流程可参考此文档https://help.aliyun.com/document_detail/189226.html?spm=a2c4g.11186623.6.573.5d52712dyEFako第一步:下载安装node.jshttps://nodejs.org/en/download/?spm=a2c4g.11186623.2.7.60213acbG0fqIo点击上方链接进行下载安装成功后,打开CMD窗口,通过以下命令查看node版本。windows电脑:Mac电脑:打开终端即可,打开桌面搜索终端在终端中输入node --version,查看相应node版本。第二步重点步骤:编写代码在本地计算机创建一个JavaScript文件(例如iot_device.js),用来存放Node.js示例代码,如没有JS开发工具也没关系,创建一个TXT文档。代码如下:const mqtt = require('aliyun-iot-mqtt'); // 1. 设备身份信息 var options = { productKey: "g34q2******", deviceName: "hxt93489234", deviceSecret: "b42db5a4fb95deb947f61655ad******", host: "iot-cn-6ja1y******.mqtt.iothub.aliyuncs.com" }; // 2. 建立MQTT连接 const client = mqtt.getAliyunIotMqttClient(options); //订阅云端指令Topic client.subscribe(`/g34q2******/hxt93489234/user/get`) client.on('message', function(topic, message) { console.log("topic " + topic) console.log("message " + message) }) setInterval(function() { // 3.定时上报温湿度数据 client.publish(`/sys/g34q2******/hxt93489234/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); }下方所示数据都要进行修改,host:企业实例-实例详情-查看开发配置-公网终端节点。三元组信息:企业实例-设备管理-设备-Devicesecret-查看修改完后即可,TXT的同学,记得保存好后,修改文件后缀名,改为.js第三步:下载阿里云iot的mqtt库打开CMD/终端窗口,使用cd命令找到代码文件(XXX.Js)所在路径,在该路径下使用NPM命令下载阿里云IoT的MQTT库。命令:npm install aliyun-iot-mqtt -S下载后的MQTT库文件如下图所示最后一步:运行代码文件(XXXX.js)在CMD/终端窗口输入如下命令,运行XXXX.js代码,启动设备.命令:node XXXX.js如下图则表示设备运行成功,在往平台时时发送数据。第二种方案,使用Mqtt模拟器进行上云第一步:下载安装模拟器模拟器下载地址:https://developer.aliyun.com/article/781940第二步:设备三元组信息,连接上云下载安装成功后,打开mqtt模拟器,设置完三元组信息后,点击连接即可。连接成功后,设备就已经上云了,但是在物模型上是不会上报任何数据的,只是表示设备上线了。第三步:编写topic上报数据(属性)topic:/sys/{productKey}/{deviceName}/thing/event/property/posttopic中的productkey和devicename一定要改成自己的,括号不要!如下图中具体的payload内容有固定格式,参考ALINK协议里https://help.aliyun.com/document_detail/89301.html?spm=a2c4g.11186623.6.738.18922437ArvRZZ简单payload可参考:点击发送后,云平台会回复相关消息,code:200则为发送成功,可在云平台物模型中查看相关数据,日志中也可查看。第三种方案,使用在线设备模拟器模拟上云并实现数据上报第一步:进入设备模拟器第二步:上报属性即可相关属性上报后,可新开一个页面观察设备的属性。
阿里云IoT 企业物联网平台 资料汇总 一、IoT 物联网场景通用架构参考 1.1 上行数据链路 设备以MQTT协议建立和 IoT 物联网平台的长连接,上报数据(Publish发布Topic和Payload)到 IoT 平台 业务研发同学配置规则引擎,上报数据经SQL处理后,流转到 数据库DB /消息队列MQ/函数计算FC等目标云产品或者 通过AMQP消费组流转到你的ECS服务器上 1.2 下行指令链路 ECS业务服务器程序,调用基于HTTPS的Pub API,给某Topic发送指令数据到 IoT 平台 IoT 平台通过MQTT协议,Publish发送数据(指定Topic和Payload)到设备端 1.3 设备端到云端业务系统全链路开发实战教程 企业物联网平台,开发实战 https://developer.aliyun.com/article/778028 1.4 设备端上云方案参考4种 1.5 自建IoT平台和云产品成本构成对比 二、阿里云 IoT 官方资料 产品帮助文档 https://help.aliyun.com/document_detail/30522.html 管理控制台 https://iot.console.aliyun.com 企业实例开通/费用评估 https://common-buy.aliyun.com/?&commodityCode=iot_instc_public_cn 技术咨询工单入口 https://ticket.console.aliyun.com/console.htm#/ticket/add?productCode=iot 三、设备上云视频教程 3.1 企业物联网平台介绍 https://h5.dingtalk.com/group-live-share/index.htm?encCid=0637e60dc2f8e449b123d84ae326f504&liveUuid=313afb20-100b-4e60-82b6-e73a8ac70b6a 3.2 设备接入,数据上报实战 https://h5.dingtalk.com/group-live-share/index.htm?encCid=0637e60dc2f8e449b123d84ae326f504&liveUuid=a4eacdef-d503-47dc-a225-26fb219c01e1 3.3 云端指令下行实战 https://h5.dingtalk.com/group-live-share/index.htm?encCid=0637e60dc2f8e449b123d84ae326f504&liveUuid=a98bcd5f-baee-450e-8aea-9d11d0262240 四、IoT特定场景最佳实践 业务场景 参考方案 IoT设备三元组烧录4种方案 https://developer.aliyun.com/article/776250 设备离线时,消息触达2种方案 https://developer.aliyun.com/article/720745 设备标签管理功能使用案例 https://developer.aliyun.com/article/720282 设备在线/离线状态缓存方案 https://developer.aliyun.com/article/728646 企业实例设备接入开发完整实战 https://developer.aliyun.com/article/771170 IoT平台各个regionId速查 https://developer.aliyun.com/article/775321 IoT平台+表格存储OTS设备状态缓存方案 https://developer.aliyun.com/article/772245 IoT+TSDB+Quick BI 架构环境监控实战 https://developer.aliyun.com/article/770699 设备三元组免烧录,动态注册方案 https://developer.aliyun.com/article/770299 存量设备零改造,数据上云方案 https://developer.aliyun.com/article/770009 电信NB-IoT,移动OneNet云云对接方案 https://developer.aliyun.com/article/770009 ESP8266 Arduino硬件上云开发实战 https://developer.aliyun.com/article/769306 MQTT协议网络通信详解 https://developer.aliyun.com/article/768917 设备自定义Topic通信最佳实践 https://developer.aliyun.com/article/766549 JMeter工具压测IoT平台性能实战 https://developer.aliyun.com/article/763660 私有协议(电力101,JT808,HJ212)解析开发实战 https://developer.aliyun.com/article/752745 网关-子设备开发实战 https://developer.aliyun.com/article/745737 自建MQTT平台迁移上云开发实战 https://developer.aliyun.com/article/741826 同步调用RRPC开发实战 https://developer.aliyun.com/article/723460 固件升级,系统升级,资源包升级原理和方案 https://developer.aliyun.com/article/718838 三元组免烧录,企业自主认证,动态注册方案 https://developer.aliyun.com/article/721174 五、IoT开发者社区资料 5.1 企业物联网平台介绍PPT 2020企业AIoT技术与解决方案沙龙.pdf 5.2 技术方案最佳实践参考 IoT物联网场景16个案例汇总2020.9.pdf 六、设备上云专家咨询 咨询入口 https://www.aliyun.com/activity/aiotservice/iot-device-on-cloud
阿里云IoT事业部推出了智能停车方案,结合了边缘计算能力,能实现大范围的传感器联动。接下来将演示如何利用阿里云IoT Studio全新推出的移动可视化开发工具,快速的搭建停车场管理应用,实现停车统计,车位显示,费用预计等功能。 技术架构 首先要对整个停车场进行数字空间的数据建模。由于这是一个非常简单的模型(阿里云物联网有标准解决方案,请查看链接https://help.aliyun.com/document_detail/169250 ),我们只需要处理停车位是否占用,占用时间,以及基本的温湿度数据即可。 设备接入 首先打开我们的公共实例,创建一个产品叫“停车场网关”的产品,协议选择“边缘网关”。在边缘网关下创建“地磁传感器”和“温湿度传感器”产品。可以看到具体参数如下。然后创建4个停车场网关设备,分别对应4个停车区域。以及对应车位数量的各传感器。这里用一个网关,一个温湿度传感器加20个地磁为例子。为Gateway001添加1个DHT子设备和20个地磁子设备。边缘设备接入部分可以参考说明文档。https://help.aliyun.com/document_detail/103247 在物联网平台完成边缘设备的接入之后,我们可以在IoT Studio新建一个“停车场”项目用来管理所有资源。为了方便说明,这里创建一个空白项目。将产品与相关设备从物联网平台进行关联,注意要在同一个实例里。这样就结束数据建模与设备接入的部分,接下来就是移动应用的开发了! 移动可视化开发 在11月,万众瞩目的IoT Studio新版移动工作台正式对外开放。与之前的移动工作台相比,新版加强了对数据源与组件交互的支持,使用体验与Web工作台进行了拉齐,并且支持移动端不同分辨率的容器式布局。为了更好的演示整个搭建过程,我们从一个空白应用的模板开始。这个停车场案例已经作为页面模板上架,各位用户在实际使用时点击添加页面即可直接使用。首先通过IoT Studio首页进入移动工作台入口。点击创建移动应用,与web应用的过程一样。进入移动工作台,整体的布局与Web工作台类似,但有几个区别。第一、移动工作台使用的是容器式布局,需要先拖入容器组件(横向分栏/纵向分栏)才能放置功能组件。这是为了适配各种移动端。容器有分横向和纵向,横向最小颗粒度是页面的1/12,纵向可以无限延伸。彼此之间可以嵌套。第二、这种容器布局有“组件树”进行统一管理,可以点击顶部导航栏icon进行查看。好了,接下来开始布局。首先我们定义好整体的主题色为橙色,因此顶部导航先配成橙色。然后将背景调整为一个停车场的图片。接下来先布局组件,我们需要完成首行两个卡片和下部的五个卡片列表。将布局样式调节到合适的比例。关联数据源部分与Web工作台类似。由于数据源种类多样,这里不统一演示。另一个卡片嫌弃重新布局复杂?直接右键“复制”“粘贴”就可以啦!接下来我们做各楼层停车场的演示卡片。先大概划分布局。然后往容器组件里填写内容。然后复制3个卡片。对文案稍作修改。设置一个点击图片跳转停车片区详情页的路由。然后编辑下一个页面。也是同样的做法,不过列表处使用了“重复卡片”。最后再配置一下登录页的样式。注意需要先在项目内开通账号系统。移动应用规定发布之前需要先绑定域名。然后回到编辑器里,点击发布。发布应用成功!这样就可以远程完成停车场的管理了! 欢迎使用IoT Studio! 这里介绍的是一个简单版的停车解决方案实现过程。IoT Studio新上线了移动可视化开发工具,补充了大量的组件与模板,也支持更复杂的云端数据联动。点击链接前往IoT Studio体验>>欢迎感兴趣的朋友使用钉钉扫码进群与我们交流哦~!
9月17日:AIoT商业创业论坛9月18日:AIoT前沿技术论坛;AIoT开发者论坛精彩技术内容、大咖嘉宾等你来约 →请扫码参会
AliOS Things 发布于2017年杭州云栖大会, 是 AliOS 家族旗下的、面向 IoT 领域的、高可伸缩的物联网操作系统。GitHub 仓库地址:https://github.com/alibaba/AliOS-Things。gitee镜像地址:https://gitee.com/alios-things/AliOS-Things。可视化裁剪页面地址:https://aliosthings.iot.aliyun.com/aos/download。AliOS Things 致力于搭建云端一体化 IoT 基础设施,具备极致性能、极简开发、云端一体、丰富组件、安全防护等关键能力。AliOS Things 支持多种多样的设备连接到阿里云IoT平台,可广泛应用在智能家居、智慧城市、工业,新出行等领域。 特性 即插即用的连接和丰富服务 通过 Alink 与阿里云计算 IoT 服务无缝连接 支持 uMesh 即插即用网络技术,设备上电自动连网 差分+安全OTA升级 差分增量包升级 安全数字签名 安全下载通道 断点续传 乒乓升级 版本回溯 彻底全面的安全保护 提供系统和芯片级别安全保护 支持可信运行环境(支持 ARMV8-M Trust Zone) 支持预置 ID2 根身份证和非对称密钥以及基于 ID2 的可信连接和服务 高度优化的性能 内核支持 Idle Task,资源消耗:RAM < 1KB, ROM < 2KB,提供硬实时能力 提供 Yloop 事件框架以及基于此整合的核心组件,避免栈空间消耗,核心架构良好支持极小 footprint的设备 极简开发 基于Linux之上的轻量虚拟化环境,开发者直接在 Linux 平台上开发硬件无关的 IoT 应用和软件库,使用GDB/Valgrind/SystemTap 等 PC 平台工具诊断开发问题 提供 IDE,支持系统/内核行为 Trace, Mesh 组网图形化显示 提供 Shell 交互,支持内存踩踏、泄露、最大栈深度等各类侦测 提供面向组件的编译系统以及 aos-cube 工具,支持灵活组合 IoT 产品软件栈 提供包括存储(掉电保护、负载均衡)在内的各类产品级别的组件 License AliOS Things 开源代码遵循 Apache 2.0 license 开源协议。AliOS Things的架构可以适用于分层架构和组件化架构。 目录结构 AliOS Things core SDK包含以下目录: AliOS-Things ├── application │ ├── example # 示例代码 │ └── profile # 典型场景的应用方案 ├── build # 编译构建相关工具和脚本 ├── components # 功能组件 │ ├── dm # 设备管理组件 │ │ ├── bootloader │ │ ├── ota │ │ ├── ulog │ │ └── und │ ├── linkkit # 阿里云IoT连接套件 │ ├── network # IP网络协议栈组件 │ │ ├── http │ │ ├── lwip │ │ └── netmgr │ ├── security # 安全类组件 │ │ └── mbedtls │ └── utility # 工具类组件 │ ├── cjson │ └── yloop ├── core # 内核及相关组件 ├── document # 说明文档 ├── include # 组件对外的头文件 ├── platform # 芯片平台支持和BSP │ ├── arch # 架构移植 │ ├── board # 板级支持 │ └── mcu # MCU, SoC 移植支持 └── projects # 为不同开发环境提供的工程相关文件 增值类组件,可以通过uCube命令下载、安装、升级和卸载。 增值类组件,一般都安装到components目录。 components ├── bus # 本地通讯协议 │ ├── canopen │ ├── knx │ ├── mbmaster │ └── usb ├── dm # 设备管理 │ └── uagent ├── fs # 文件系统 │ ├── cramfs │ ├── fatfs │ ├── jffs2 │ ├── ramfs │ ├── spiffs │ ├── uffs │ └── yaffs2 ├── gui # 人机交互界面 │ ├── freetype-2.5.3 │ └── littlevGL ├── language # 脚本引擎 │ ├── jsengine │ └── micropython ├── network # IP网络协议栈 │ ├── coap │ ├── httpdns │ ├── libsrtp │ ├── lwm2m │ ├── mal │ ├── rtp │ ├── sal │ ├── umesh2 │ └── websocket ├── peripherals # 外设驱动 │ ├── iot_comm_module │ │ ├── mal │ │ └── sal │ └── sensor ├── security # 安全 │ └── linksecurity ├── service # 应用组件 │ ├── uai │ ├── udata │ └── ulocation ├── utility # 工具类 │ ├── at │ ├── debug_tools │ └── zlib └── wireless # 无线类 ├── bluetooth └── lorawan
物联网应用开发(IoT Studio)是阿里云针对物联网场景提供的生产力工具,是阿里云物联网平台的一部分。可覆盖各个物联网行业核心应用场景,帮助您高效经济地完成物联网数据分析、设备、服务及应用开发,加速物联网SaaS构建。物联网应用开发提供了Web可视化开发、业务逻辑开发与物联网数据分析等一系列便捷的物联网开发工具,解决物联网开发领域开发链路长、技术栈复杂、协同成本高、方案移植困难的问题。 架构图 IoT Studio架构图如下。您可以在设备接入完成的基础上,使用IoT Studio提供的数据分析、业务逻辑开发、Web可视化开发能力,经济高效地开发物联网应用。目前,物联网企业级生产力的数据分析、业务逻辑开发、Web可视化开发三个工具可融合为一,目标是帮助物联网企业完成设备上云的最后一公里。您可分别独立使用三个工具,也可合并使用以发挥IoT Studio的最佳效果。 功能特点 可视化搭建IoT Studio提供可视化搭建能力,您可以通过拖拽、配置操作,快速完成设备数据监控相关的Web应用、API服务的开发。您可以专注于核心业务,从传统开发的繁琐细节中脱身,有效提升开发效率。 与设备管理无缝集成设备相关的属性、服务、事件等数据均可从物联网平台设备接入和管理模块中直接获取,IoT Studio与物联网平台无缝打通,大大降低物联网开发工作量。 丰富的开发资源各开发平台均拥有数量众多的组件和丰富的API。随着产品迭代升级,组件库会愈加丰富,IoT Studio帮助您提升开发效率。 组件开发IoT Studio提供了组件开发能力,您可以开发、发布和管理自己研发的组件,并将其发布到Web可视化工作台中用于可视化页面搭建。大大满足开发者的需求,提升组件丰富性,为可视化搭建提供无限可能。 无需部署使用IoT Studio,应用服务开发完毕后,直接托管在云端,支持直接预览、使用。无需部署即可交付使用,免除您额外购买服务器等产品的烦恼。本文提供LoRa温湿度传感器通过Link WAN接入,同时采用阿里云物联网平台实现端到端应用。 本示例创建一个设备地图大屏,通过物联网应用开发的空间功能监测展示不同区域作物土壤的实时环境数据。 前提条件 已完成创建项目(例如:project_space)。详细操作请参见普通项目。 步骤一:创建土壤传感器设备 在物联网平台控制台左侧导航栏,单击IoT Studio > 项目管理。 在普通项目列表中,找到项目:project_space,单击项目卡片。 在项目详情页,单击左侧导航栏的产品,单击创建产品,完成参数配置,单击保存。本案例为产品命名为土壤传感器,选择自定义品类,其他参数使用默认值。更多参数的说明请参见参数说明表。 在产品列表中,单击土壤传感器产品对应操作栏的查看,单击功能定义,为产品自定义物模型属性,说明如下所示。| 功能名称 | 标识符 | 数据类型 | 取值范围 | 单位 | 读写类型 | 土壤温度 soilTemperature double(双精度浮点型) -10~100 摄氏度/℃ 读写 土壤体积含水率 Soilvolumetricwater double(双精度浮点型) 0~100 百分比/% 读写 地理位置 GeoLocation struct(结构体) 添加JSON对象,参数:- 经度(Longitude)- 纬度(Latitude) 数据类型为double,取值范围为-180~180。 度/° 读写 在产品详情页,单击设备数右侧的前往管理。在设备页面,单击新增设备,添加3个土壤传感器设备。DeviceName(备注名称)分别为:soil_sensor_01(土壤传感器1号)、soil_sensor_02(土壤传感器2号)、soil_sensor_03(土壤传感器3号)。详细操作请参见设备。 本案例使用虚拟设备的属性上报数据。其中地理位置(可使用高德开放平台经纬度拾取工具)设置为3个不同的值,其他属性值可自定义,详情请参见调试虚拟设备。 步骤二:新增空间 在项目详情页,单击左侧导航栏的空间,对应土壤传感器1号、2号、3号所在地理位置,分别新增实验地1号、实验地2号、实验地3号空间。具体操作请参见新增空间。 步骤三:配置设备地图 创建Web可视化应用(例如:设备地图大屏)。详细操作请参见创建Web应用。 在Web应用编辑器中,单击最左侧的组件图标。 在画布左侧组件列表上方,输入设备地图,找到该组件,然后将组件拖拽到中间画布。有关组件添加的详细内容,请参见添加组件。 单击右侧样式栏的编辑设备地图。 在设备地图编辑器的设备数据页面,单击选择产品,将3个土壤传感器导入设备地图组件。 单击土壤传感器右侧的设置按钮,设置气泡展示设备属性值。 步骤四:为设备添加地理空间 返回设备地图编辑器,单击最右侧功能菜单的地理空间,添加已新增的实验地1号、实验地2号、实验地3号空间。然后自定义地理空间样式,如图所示。具体操作请参见(可选)配置地理空间。 单击页面保存按钮,然后返回Web可视化编辑页面,刷新设备地图组件。 单击页面右上角预览按钮,查看设备展示效果。如图所示,您可在Web页面根据地图显示颜色,快速观察分析不同区域对应农作物的土壤环境。单击空间所在区域的任意位置,展示对应的地理空间信息;单击设备气泡点,展示该区域土壤的实时环境数据。 单击发布按钮,将应用发布到云端后使用。
本文提供LoRa温湿度传感器通过Link WAN接入,同时采用阿里云物联网平台实现端到端应用。 背景信息 开通物联网络管理平台完成账号的注册之后,使用账号登录Link WAN 开通服务。 LoRa节点设备接入 搭建与管理网络参见搭建与管理网络搭建和管理网络、创建节点组并添加节点。 配置数据流转目前数据流转支持阿里云物联网平台、消息队列MQ两种方式,这里选择将数据流转至阿里云物联网平台,详情请参见数据接入物联网平台-1对1。 物联网平台LoRa节点设备接入本章介绍如何在物联网平台开发平台上进行设备接入的开发。主要的开发内容包括: 项目和产品创建 产品功能定义 平台脚本开发 本文以一个空气温湿度传感器为例,同时可以配置温湿度的阈值,在温湿度超出阈值时上报事件。 创建产品和设备 登录物联网平台控制台。 在左侧导航栏上选择设备管理 > 产品,单击创建产品, 填写产品信息后单击完成。详情请参见数据接入物联网平台-1对1。| 参数 | 描诉 | 产品名称 可填写任意名称 所属品类 自定义品类 节点类型 直连设备 连网方式 LoRaWAN 入网凭证 从表单选择,如无可单击创建凭证 数据格式 透传/自定义 为产品添加LoRa设备。在左侧导航栏上单击设备,参见单个创建设备添加设备。说明使用LoRaWAN设备的DevEUI需小写作为deviceName。 添加完成后,显示如下,此时设备状态为未激活。 数据流转已自动同步 产品创建完成后,可在Link WAN里看到自动同步的数据流转设置。说明 在网管平台只能查阅,新增终端请移步至物联网平台维护。 产品功能定义 产品创建完成之后,需要在平台上定义产品有哪些功能。功能定义是为了让平台能够理解设备上下行的数据定义,便于上层应用的读写。 在左侧导航栏上选择设备管理 > 产品,单击产品对应操作栏中的查看。 选择功能定义 > 编辑草稿,单击自定义功能 > 添加自定义功能 在添加自定义功能弹框中,功能类型选择属性,添加温湿度属性。 添加温度属性,配置参数如下图所示。 添加湿度属性,配置参数如下图所示。 功能类型选择服务,添加温度湿度阈值,参数配置如下图所示。其中输入参数设置如下图所示。| 参数名称 | 标志符 | 数据类型 | 取值范围 | 步长 | 单位 | 温度过高阈值 MaxTemp int32(整数型) -40~55 1 摄氏度/℃ 温度过低阈值 MinTemp int32(整数型) 40~55 1 摄氏度/℃ 湿度过高阈值 MaxHumi int32(整数型) 1~100 1 百分比/% 湿度过低阈值 MinHumi int32(整数型) 1~100 1 百分比/% 功能类型选择事件,添加湿度过高/过低告警事件。告警输出参数为当前湿度。其中输出参数设置如下。 单击确认,单击页面右下方的发布更新。上述属性、服务、事件添加完成后,在自定义功能一栏下方可确认添加的结果。 平台脚本开发 进入产品的数据解析标签页,可以添加解析脚本。由于数据是以自定义格式透传到平台,所以需要添加脚本来解析自定义协议。 将下列代码添加到上图的脚本编辑区。 var ALINK_ID = "12345"; var ALINK_VERSION = "1.1"; var ALINK_PROP_POST_METHOD = 'thing.event.property.post'; var ALINK_EVENT_TEMPERR_METHOD = 'thing.event.TempError.post'; var ALINK_EVENT_HUMIERR_METHOD = 'thing.event.HumiError.post'; var ALINK_PROP_SET_METHOD = 'thing.service.property.set'; var ALINK_SERVICE_THSET_METHOD = 'thing.service.SetTempHumiThreshold'; /* * 示例数据: * 传入参数 -> * 000102 // 共3个字节 * 输出结果 -> * {"method":"thing.event.property.post", "id":"12345", "params":{"Temperature":1,"Humidity":2}, "version":"1.1"} * 传入参数 -> * 0102 // 共2个字节 * 输出结果 -> * {"method":"thing.event.TempError.post","id":"12345","params":{"Temperature":2},"version":"1.1"} * 传入参数 -> * 0202 // 共2个字节 * 输出结果 -> * {"method":"thing.event.HumiError.post","id":"12345","params":{"Humidity":2},"version":"1.1"} */ function rawDataToProtocol(bytes) { var uint8Array = new Uint8Array(bytes.length); for (var i = 0; i < bytes.length; i++) { uint8Array[i] = bytes[i] & 0xff; } var params = {}; var jsonMap = {}; var dataView = new DataView(uint8Array.buffer, 0); var cmd = uint8Array[0]; // command if (cmd === 0x00) { params['Temperature'] = dataView.getInt8(1); params['Humidity'] = dataView.getInt8(2); jsonMap['method'] = ALINK_PROP_POST_METHOD; } else if (cmd == 0x01) { params['Temperature'] = dataView.getInt8(1); jsonMap['method'] = ALINK_EVENT_TEMPERR_METHOD; } else if (cmd == 0x02) { params['Humidity'] = dataView.getInt8(1); jsonMap['method'] = ALINK_EVENT_HUMIERR_METHOD; } else { return null; } jsonMap['version'] = ALINK_VERSION; jsonMap['id'] = ALINK_ID; jsonMap['params'] = params; return jsonMap; } /* * 示例数据: * 传入参数 -> * {"method":"thing.service.SetTempHumiThreshold", "id":"12345", "version":"1.1", "params":{"MaxTemp":50, "MinTemp":8, "MaxHumi":90, "MinHumi":10}} * 输出结果 -> * 0x5d0a000332085a0a */ function protocolToRawData(json) { var id = json['id']; var method = json['method']; var version = json['version']; var payloadArray = []; // 追加下行帧头部 payloadArray = payloadArray.concat(0x5d); payloadArray = payloadArray.concat(0x0a); payloadArray = payloadArray.concat(0x00); if (method == ALINK_SERVICE_THSET_METHOD) { var params = json['params']; var maxtemp = params['MaxTemp']; var mintemp = params['MinTemp']; var maxhumi = params['MaxHumi']; var minhumi = params['MinHumi']; payloadArray = payloadArray.concat(0x03); if (maxtemp !== null) { payloadArray = payloadArray.concat(maxtemp); } if (mintemp !== null) { payloadArray = payloadArray.concat(mintemp); } if (maxhumi !== null) { payloadArray = payloadArray.concat(maxhumi); } if (minhumi !== null) { payloadArray = payloadArray.concat(minhumi); } } return payloadArray; } // 以下是部分辅助函数 function buffer_uint8(value) { var uint8Array = new Uint8Array(1); var dv = new DataView(uint8Array.buffer, 0); dv.setUint8(0, value); return [].slice.call(uint8Array); } function buffer_int16(value) { var uint8Array = new Uint8Array(2); var dv = new DataView(uint8Array.buffer, 0); dv.setInt16(0, value); return [].slice.call(uint8Array); } function buffer_int32(value) { var uint8Array = new Uint8Array(4); var dv = new DataView(uint8Array.buffer, 0); dv.setInt32(0, value); return [].slice.call(uint8Array); } function buffer_float32(value) { var uint8Array = new Uint8Array(4); var dv = new DataView(uint8Array.buffer, 0); dv.setFloat32(0, value); return [].slice.call(uint8Array); } 脚本解析下行数据的函数 protocolToRawData 中必须设定输出结果的起始三个字节(用于指定下行的端口号以及下行消息类型),否则系统会丢掉下行帧。另外,节点实际接收到的数据将不会包含起始的三个字节。起始三字节的说明如下表所示。| Size(bytes) | LoRa Downlink | 描述 | 1 DFlag 固定为 0x5D 1 FPort 下行端口号 1 DHDR - 0 表示 “Unconfirmed Data Down”数据帧- 1 表示 “Confirmed Data Down”数据帧 示例:0x5D 0x0A 0x00表示:下行帧端口号为10,数据帧为nconfirmed Data Down。 脚本模拟运行。 设备上报数据调试。在脚本调试区1里输入下面数据,模拟类型选择设备上报数据后,单击运行按钮。 说明 000102 中的 00 表示后面的两个字节分别表示温度和湿度,01 表示温度为1摄氏度,02表示湿度为2%。 设备接收数据调试。在脚本调试区1里输入以下数据,模拟类型选择设备接收数据后,单击运行按钮。 { "method": "thing.service.SetTempHumiThreshold", "id": "12345", "version": "1.1", "params": { "MaxTemp": 50, "MinTemp": 8, "MaxHumi": 90, "MinHumi": 10 } } 查看脚本调试区2的运行结果如下: 脚本脚本调试无误后,单击提交按钮提交脚本。 设备在线调试 脚本提交后,可以结合节点测试数据的上下行链路是否打通,LoRa节点如何发送以及接收数据请参考各模组厂商的相关手册。 节点数据上行。 上报温湿度属性。 在LoRa节点侧选择输入十六进制的000102后发送数据。 从左侧导航栏的设备 > 设备列表选择对应节点,单击查看。 单击运行状态。 确认节点的湿度与温度信息是否已经上报且设置如下。 上报温湿度告警事件。 温度告警事件上报 在 LoRa 节点侧选择输入十六进制的0102 后发送数据。 在设备详情 > 事件管理中确认温度告警事件是否已经上报。 湿度告警事件上报 在LoRa节点侧选择输入十六进制的0202后发送数据。 在设备详情 > 事件管理中确认湿度告警事件是否已经上报。 节点数据下行。 在产品详情 > 设备开发单击对应节点的调试按钮,进入在线调试页面。 选择调试功能为之前添加的温度湿度阈值,具体格式如下所示,单击发送指令。发送完成后在节点侧确认输出是否是16进制的0332085a0a。 说明 对于Class A类型的节点,需要先发送数据才能启动接收。 固件升级 LoRa节点设备可以通过本地端烧录方式升级固件,目前不支持网络在线升级(FUOTA)。
基于Pub/Sub模式的同步调用实战 1.同步调用场景 1.1 背景 MQTT协议是基于PUB/SUB的异步通信模式,无法实现服务端下发指令给设备端,同时需要设备端返回响应结果的场景。IoT物联网平台基于MQTT协议制定了一套请求和响应的同步机制,无需改动MQTT协议即可实现同步通信。应用服务器通过POP API发起Rrpc调用,IoT设备端只需要在Timeout内,按照固定的格式回复Pub消息,服务端即可同步获取IoT设备端的响应结果。 具体流程如下: 1.2 Topic格式约定 请求:/sys/${productKey}/${deviceName}/rrpc/request/${messageId}响应:/sys/${productKey}/${deviceName}/rrpc/**response**/**${messageId}** $表示变量,每个设备不同messageId为IoT平台生成的消息ID,设备端回复responseTopic里的messageId要与requestTopic一致 示例: 设备端需要订阅: /sys/${productKey}/${deviceName}/rrpc/request/+ 运行中设备收到Topic: /sys/PK100101/DN213452/rrpc/request/443859344534 收到消息后,在timeout时间内回复Topic: /sys/PK100101/DN213452/rrpc/response/443859344534 2.同步调用RRPC示例 2.1 设备端代码 const mqtt = require('aliyun-iot-mqtt'); //设备属性 const options = require("./iot-device-config.json"); //建立连接 const client = mqtt.getAliyunIotMqttClient(options); client.subscribe(`/sys/${options.productKey}/${options.deviceName}/rrpc/request/+`) client.on('message', function(topic, message) { if(topic.indexOf(`/sys/${options.productKey}/${options.deviceName}/rrpc/request/`)>-1){ handleRrpc(topic, message) } }) function handleRrpc(topic, message){ topic = topic.replace('/request/','/response/'); console.log("topic=" + topic) //普通Rrpc,响应payload自定义 const payloadJson = {code:200,msg:"handle ok"}; client.publish(topic, JSON.stringify(payloadJson)); } 2.2 服务端POP调用Rrpc const co = require('co'); const RPCClient = require('@alicloud/pop-core').RPCClient; const options = require("./iot-ak-config.json"); //1.初始化client const client = new RPCClient({ accessKeyId: options.accessKey, secretAccessKey: options.accessKeySecret, endpoint: 'https://iot.cn-shanghai.aliyuncs.com', apiVersion: '2018-01-20' }); const payload = { "msg": "hello Rrpc" }; //2.构建request const params = { ProductKey:"a1gMu82K4m2", DeviceName:"h5@nuwr5r9hf6l@1532088166923", RequestBase64Byte:new Buffer(JSON.stringify(payload)).toString("base64"), Timeout:3000 }; co(function*() { //3.发起API调用 const response = yield client.request('Rrpc', params); console.log(JSON.stringify(response)); }); rrpc响应: { "MessageId": "1037292594536681472", "RequestId": "D2150496-2A61-4499-8B2A-4B3EC4B2A432", "PayloadBase64Byte": "eyJjb2RlIjoyMDAsIm1zZyI6ImhhbmRsZSBvayJ9", "Success": true, "RrpcCode": "SUCCESS" } // PayloadBase64Byte 解码: {"code":200,"msg":"handle ok"} 3.物模型-服务同步调用InvokeThingService示例 注意:物模型 服务调用 接口InvokeThingService,不是Rrpc 设备订阅subTopic 注意:服务同步调用API是InvokeThingService /sys/${productKey}/${deviceName}/rrpc/request/+ IoT云端下行的payload格式 { "id": 3536123, "version": "1.0", "params": { "入参key1": "入参value1", "入参key2": "入参value2" }, "method": "thing.service.{tsl.service.identifier}"} 设备响应replyTopic /sys/${productKey}/${deviceName}/rrpc/response/request的消息Id 设备响应payload格式 { "id": 3536123, "code": 200, "data": { "出参key1": "出参value1", "出参key2": "出参value2" }} 3.1 物模型-同步服务定义 3.2 设备端实现 const mqtt = require('aliyun-iot-mqtt'); //设备属性 const options = require("./iot-device-config.json"); //建立连接 const client = mqtt.getAliyunIotMqttClient(options); client.subscribe(`/sys/${options.productKey}/${options.deviceName}/rrpc/request/+`) client.on('message', function(topic, message) { if(topic.indexOf(`/sys/${options.productKey}/${options.deviceName}/rrpc/request/`)>-1){ handleRrpc(topic, message) } }) /* * 如果存在多个同步调用服务,需要通过payload里的method区分 */ function handleRrpc(topic, message){ topic = topic.replace('/request/','/response/'); console.log("topic=" + topic) //物模型 同步服务调用,响应payload结构: const payloadJson = { id: Date.now(), code:200, data: { currentMode: Math.floor((Math.random() * 20) + 10) } } client.publish(topic, JSON.stringify(payloadJson)); } 注意:设备端响应的payload要满足物模型定义的出参结构 3.3 服务端POP 接口InvokeThingService const co = require('co'); const RPCClient = require('@alicloud/pop-core').RPCClient; const options = require("./iot-ak-config.json"); //1.初始化client const client = new RPCClient({ accessKeyId: options.accessKey, secretAccessKey: options.accessKeySecret, endpoint: 'https://iot.cn-shanghai.aliyuncs.com', apiVersion: '2018-01-20' }); const params = { ProductKey: "a1gMu82K4m2", DeviceName: "h5@nuwr5r9hf6l@1532088166923", Args: JSON.stringify({ "mode": "1" }), Identifier: "thing.service.setMode" }; co(function*() { try { //3.发起API调用 const response = yield client.request('InvokeThingService', params); console.log(JSON.stringify(response)); } catch (err) { console.log(err); } }); 调用结果: { "Data":{ "Result": "{\"currentMode\":12}", "MessageId": "1536145625658" }, "RequestId": "29FD78CE-D1FF-48F7-B0A7-BD52C142DD7F", "Success": true }
硬件准备 今天我们在只有20元预算前提下,带领大家完成一次IoT物联网开发之旅!感谢万能的淘宝,让我们能采购到esp8266开发板,dht11温湿度传感器: 架构方案 我们通过DHT11采集温度,湿度数据,通过 MQTT 协议上报到阿里云 IoT 物联网平台,并通过规则引擎转发到表格存储OTS数据库中,整体技术方案如下: 创建产品和注册设备 我们登录阿里云IoT物联网平台控制台,创建产品温湿度计。在温湿度计产品详情的Topic类列表可以看到系统默认创建的Topic,这就是我们用来上报温湿度数据的Topic。接下来,我基于温湿度计产品注册一个设备hz9527,并获取到设备身份三元组。 配置数据流转 规则引擎 我们在表格存储控制台,预先创建数据库实例iotMsg和iot_thermometer_data表,如下图:然后,我们回到IoT物联网平台控制台,配置数据流转规则,把设备上报数据存储到已有的表格存储数据库实例iotMsg中的iot_thermometer_data表中,规则引擎配置如下:完整的数据处理SQL: SELECT *, deviceName() as deviceName, timestamp() as time, timestamp('yyyy-MM-dd HH:mm:ss') as date_time FROM "/a1k3547Gr0v/+/user/update" 数据转发配置如下: 设备和云端通信Topic和Payload如下: Topic: /a1k823sJ0v/hz9527/user/update Payload: { "temperature":23, "humidity":65 } 硬件 开发 Arduino开发依赖C库,如下: /* 连接WiFi之后,连接MQTT服务器 */ client.setServer(MQTT_SERVER, MQTT_PORT); client.setCallback(callback); client.connect(CLIENT_ID, MQTT_USRNAME, MQTT_PASSWD) 设备读取传感器数据,并通过 MQTT 通道发送到云端: void loop() { // 从传感器获取温度,湿度数据 float temperature = dht.readTemperature(); float humidity = dht.readHumidity(); char jsonBuf[128]; sprintf(jsonBuf, BODY_FORMAT, temperature, humidity); // 通过 MQTT 发送数据上云 if (client.connected()) { boolean d = client.publish(PROP_POST_TOPIC, jsonBuf); } client.loop(); // delay delay(DELAY_TIME); } 使用 Arduino IDE 烧录程序到 esp8266 开发板: 联机运行 烧录完成后,程序启动,我们就可以在IoT控制台的日志服务中查看到上报的数据,如下图: 物模型开发 物模型指将物理空间中的实体数字化,并在云端构建该实体的数据模型。物模型描述产品是什么、能做什么、可以对外提供哪些服务。我们在物联网平台控制台,产品详情页面的功能定义,添加温度和湿度两个属性,如下图:物模型属性上报的通信Topic,如下图:物模型通信Topic和Payload如下: Topic: /sys/a1k823sJ0v/hz9527/thing/event/property/post Payload: { "id":1596087445906, "params":{ "temperature":23, "humidity":65 }, "method":"thing.event.property.post" } 我们修改 Arduino 查询中Topic和Payload后,重新烧录,设备上报数据后,在控制台可以查看日志,如下图:设备详情物模型数据运行状态
阿里云AIoT 物联网云产品介绍 阿里云物联网平台为设备提供安全可靠的连接通信能力,向下连接海量设备,支撑设备数据采集上云;向上提供云端API,服务端通过调用云端API将指令下发至设备端,实现远程控制。物联网平台也提供了其他增值能力,如设备管理、规则引擎等,为各类IoT场景和行业开发者赋能。物联网平台主要提供以下能力。 设备接入 物联网平台支持海量设备连接上云,设备与云端通过IoT Hub进行稳定可靠地双向通信。 提供设备端SDK、驱动、软件包等帮助不同设备、网关轻松接入阿里云。 提供蜂窝(2G/3G/4G/5G)、NB-IoT、LoRaWAN、Wi-Fi等不同网络设备接入方案,解决企业异构网络设备接入管理痛点。 提供MQTT、CoAP、HTTP/S等多种协议的设备端SDK,既满足长连接的实时性需求,也满足短连接的低功耗需求。 开源多种平台设备端代码,提供跨平台移植指导,赋能企业基于多种平台做设备接入。 设备管理 物联网平台提供完整的设备生命周期管理功能,支持设备注册、功能定义、数据解析、在线调试、远程配置、固件升级、远程维护、实时监控、分组管理、设备删除等功能。 提供设备物模型,简化应用开发。 提供设备上下线变更通知服务,方便实时获取设备状态。 提供数据存储能力,方便用户海量设备数据的存储及实时访问。 支持OTA升级,赋能设备远程升级。 提供设备影子缓存机制,将设备与应用解耦,解决不稳定无线网络下的通信不可靠痛点。 安全能力 物联网平台提供多重防护,有效保障设备和云端数据的安全。 身份认证 提供芯片级安全存储方案(ID²)及设备密钥安全管理机制,防止设备密钥被破解。安全级别很高。 提供一机一密的设备认证机制,降低设备被攻破的安全风险。适合有能力批量预分配设备证书(ProductKey、DeviceName和DeviceSecret),将设备证书信息烧入到每个设备的芯片。安全级别高。 提供一型一密的设备认证机制。设备预烧产品证书(ProductKey和ProductSecret),认证时动态获取设备证书(包括ProductKey、DeviceName和DeviceSecret)。适合批量生产时无法将设备证书烧入每个设备的情况。安全级别普通。 提供X.509证书的设备认证机制,支持基于MQTT协议直连的设备使用X.509证书进行认证。安全级别很高。 通信安全 支持TLS(MQTTHTTP)、DTLS(CoAP)数据传输通道,保证数据的机密性和完整性,适用于硬件资源充足、对功耗不是很敏感的设备。安全级别高。 支持设备权限管理机制,保障设备与云端安全通信。 支持设备级别的通信资源(Topic等)隔离,防止设备越权等问题。 规则引擎 物联网平台规则引擎包含以下功能: 服务端订阅:订阅某产品下所有设备的某个或多个类型消息,您的服务端可以通过AMQP客户端或消息服务(MNS)客户端获取订阅的消息。 云产品流转:物联网平台根据您配置的数据流转规则,将指定Topic消息的指定字段流转到目的地,进行存储和计算处理。 将数据转发到另一个设备的Topic中,实现设备与设备之间的通信。 如果购买了实例,将数据转发到实例内的时序数据存储,实现设备时序数据的高效写入。 将数据转发到AMQP服务端订阅消费组,您的服务端通过AMQP客户端监听消费组获取消息。 将数据转发到消息服务(MNS)和消息队列(RocketMQ)中,保障应用消费设备数据的稳定可靠性。 将数据转发到表格存储(Table Store),提供设备数据采集 + 结构化存储的联合方案。 将数据转发到云数据库(RDS)中,提供设备数据采集+关系型数据库存储的联合方案。 将数据转发到DataHub中,提供设备数据采集 + 大数据计算的联合方案。 将数据转发到时序时空数据库(TSDB),提供设备数据采集 + 时序数据存储的联合方案。 将数据转发到函数计算中,提供设备数据采集 + 事件计算的联合方案。 场景联动:配置简单规则,即可将设备数据无缝流转至其他设备,实现设备联动。
更多活动立即申请
更多活动介绍立即申请地址
6月8日,阿里云联合移远通信共同发布了内嵌AliOS Things轻应用开发框架的4G Cat 1模组,该模组可对所有用户开放二次开发能力,在大幅提高开发效率的同时,进一步降低4G物联网设备成本。 据阿里云相关产品负责人唐颖介绍,阿里云AliOS Things轻应用框架,可用于开发IoT智能设备的应用软件框架,将普通的Native C开发模式,升级为上手更轻便易用的JavaScript脚本化的开发模式,并将上云连接通道、设备日志服务、OTA固件更新、一卡多号等阿里云IoT服务API预置于模组中,使用户可以快速使用对应服务。而移远通信推出的EC100Y模组是面向IoT领域的低成本、高性能的Cat 1模组,该模组采用高性能SOC芯片设计, 主要针对公网对讲、工业网关、智慧能源、共享经济、金融支付、可穿戴设备等中低速率应用场景,将在2G/3G物联网业务迁移转网的大背景下,承接中低速场景和语音需求的连接主力。 此次双方将AliOS Things轻应用框架与EC100Y模组结合,推出的全新4G Cat 1模组,可使用户在模组上直接完成智能设备应用的开发,让设备集成度更高,成本更低。同时,通过提供热更新的能力,将编写好的应用脚本一键推送到设备上运行,为开发者提供极为便捷的调试手段,也使设备的在线运维更加轻松与高效。 阿里云智能IoT业务总监庄勤益表示,根据工信部《关于深入推进移动物联网全面发展的通知》要求,将以4G CAT1模组为主满足中等速率物联需求。移远EC100Y模组结合AliOS Things轻应用框架,使4G智能硬件成本得到大幅度降低,将大大拓展物联网的应用场景,丰富云端一体的解决方案。 移远通信首席运营官张栋表示,EC100Y在支持AliOS Things操作系统之后,集成该模组的客户终端能够一键接入阿里云IoT平台,实现快速高效的连接,并且使用阿里云相关资源和服务。移远拥有丰富的Cat 1产品及量产经验,目前在全球市场实现了超过500万片的出货量。随着移远与阿里云之间的合作日益深入,未来移远将推动更多Cat 1模组支持AliOS Things操作系统,让越来越多的终端用户享受到更为便捷的上云服务,共同加快中低速物联网行业的创新发展。
大赛官网 http://www.gxic.club/#/ 选手辅导计划 课程回放: 第一课,巴壹 基于RTOS和云服务,快速实现设备智能化、场景联动 推荐阅读 1、【6月16日直播】AliOS Things 组件玩法大爆炸,提需求有礼!! 2、设备SDK剪裁节约80%的时间?用这个功能就对了 3、阿里云:物联网平台实现全球设备分发 4、“老板来了!!”-打造一款老板靠近就报警的应用
我们Link SDK的产品经理是一个典型的宅男,就像大多数搞技术的人一样,内向而腼腆。昨天,他找到我,发生了下面对话。 使用SDK定制功能,还可以避免不同平台的无用文件干扰,裁剪的过程全部在云端完成,对本地系统版本无限制。 上面说的功能界面如下(已上线),在阿里云物联网平台控制台-文档与工具-SDK定制即可找到。直达链接:https://iot.console.aliyun.com/lk/document/tools 未支持的编程语言、软硬件平台,如有适配需求,可以此页面的设备OS/模组维度选择“其他”选项,然后补充完整OS名称/模组型号,点击“开始生成”,Link SDK的产品研发团队即可收到您的需求。 阿里云物联网平台作为物联网云服务的基础设施平台,具备海量设备接入、连接、通信的能力,各种设备可以集成阿里云的官方Link SDK,从而获得连接物联网平台的能力和其他云端服务。目前阿里云Link SDK已经支持绝大部分的语言/平台。 官方文档:https://help.aliyun.com/document_detail/100576.html >>>>如需要获取更多信息,欢迎访问阿里云物联网平台 附:开发者交流群(钉钉扫码即可加入)
最新活动安排 【直播】AliOS Things组件能力全解读 全面加强开发者的体验,提升AliOS Things的硬件和APP生态?为什么组件能力被产品研发团队寄予如此厚望?分享人:巴壹 (AliOS Things产品经理)交流沟通:钉钉群(点击此处或者扫码)AliOS Things组件能力介绍,直播回放: 最新版AliOS Things离“更符合开发、使用习惯”又迈了一步,新版本对组件能力进一步优化,各种应用组件可以在不同的设备间快速复用,组件可以独立安装、卸载、更新,支持通过头文件引入组件,支持组件依赖关系图的生成。 什么是组件?(官方文档) 在AliOS Things中,用于实现一个特定功能的软件模块。通过对外提供API,为开发者提供包括设备控制能力,算法,外部器件/设备驱动的能力。使得开发者可以快速地通过组件的组合,实现自己的业务逻辑。 现在,AliOS Things产品研发团队面向所有征集意见,2大开发者福利等您拿! 1、提出有效的组件建议,即可获得 AOS-CUBE Cheat Sheet鼠标垫(限102个)2、对开发者呼声高(点赞、评论)的组件,产品研发团队会优先引入资源实现 如何提交组件需求? 软件类组件需求 此类组件与具体的外设无关,主要体现为数据转换,算法实现等。需求模板如下:需求名称:二维码编解码需求描述:• 将输入的二维码图片解码为字符串。• 将输入的字符串编码为特定规范的二维码图片。我的应用场景:• 二维码扫码考勤设备,通过展现动态二维码,防止考勤作弊。通过云端服务器动态生成加密字符串,本地生成二维码后展示到显示屏上。 通信协议组件需求 需求名称:http客户端协议组件需求描述:• 实现标准http客户端协议。• 实现http标准get,post请求。• 可自定义请求头。• ……我的应用场景:• 空气盒子,使用Http协议,向云端天气服务获取天气预报信息。 外设驱动组件需求 需求名称:HT1632点阵LED驱动需求描述:• 实现HT1632芯片在AliOS Things上的驱动。• 提供HT1632芯片对LED操作的API,如设置亮度,闪烁……• 提供画点,划线,logo显示,英文及数字显示API.我的应用场景:• 智能音箱产品的提醒及时间显示。参考硬件产品wiki或淘宝链接:http://wiki.dfrobot.com.cn/index.php?title=(SKU:DFR0484)FireBeetle_Covers_-_24%C3%978_LED_%E7%82%B9%E9%98%B5%E5%B1%8F_-_%E7%99%BD 会不会还有其他惊喜?建议大家持续关注本帖!(重要!) 附:1、有关奖品的规则:同一个人仅限1次获奖机会,此账号会在获奖意见下留言,请收到留言后2周内将您的通讯地址和留言截图邮件发送到rongxin.lurx@alibaba-inc.com,超时视为放弃奖品,放弃的奖品顺延到下一位获奖用户。2、鼠标垫设计图3、AliOS Things 用户交流群(钉钉)扫码或者点击本链接入群 >>>>>点击此处了解更多AliOS Things新版本特性
新版AliOS Things提供了优异的应用开发环境和体验: 组件化能力:AliOS Things 功能非常强大,但是这些功能都是组件化的,开发者只需要按需下载自己需要的组件就好了,大大节省了空间和看代码的时间 统一的可视化开发环境:代码环境搭建,编译,调试在统一的IDE环境下完成,只需要点击简单的图标就可以编译下载了 应用分离:用户开发应用时可以通过提供的工具创建一个工程,这个工程里面仅仅包含应用的代码,用户可以直接调用OS的头文件来使用系统的功能 应用开发模板:提供大量的应用开发模板,用户不必从头开发应用,只需要从应用模板中选择跟自己贴近的应用,开发者按需修改就可以实现自己功能 易用的文档和支持:非常简洁的开发文档,开发者可以按照文档指引快速开始自己应用的开发,不仅如此,还有非常多的动画视频介绍哦 统一的硬件适配层:提供了统一的硬件HAL 层适配,可以让开发者更加方便的移植而不用大量修改应用代码;比如原来通过WiFi 模组联网,现在只需要更改不到10行代码就可以替换为2G模组联网 AliOS Things围绕着“更符合开发、使用习惯”做了持续多年的优化,除了这些方便的功能外,AliOS Things对于各种设备、不同领域协议的适配也已经比较完善,github的开源项目目前已有1.4K Fork,3.3K Star,约25万开发者群体。 更多优雅的功能,我们留待下次探索! 附: AliOS Things GitHub项目地址 https://github.com/alibaba/AliOS-Things 官方博客 https://yq.aliyun.com/teams/184 快速开始 https://help.aliyun.com/document_detail/161087.html 开发者框架介绍 APP开发框架指的是实现了某应用领域通用功能(除去特殊应用的部分)的底层服务。使用这种框架的开发者可以在一个通用功能已经实现的基础上开始具体的应用开发。比如,要开发一个智能灯,APP开发框架已实现与天猫精灵等连通,通过语音指令开关灯,调节灯的亮度、颜色等基础功能,开发者只需关注特定的应用逻辑,比如检测到附近有人移动,自动开灯,延时关灯等。APP开发框架包含以下功能特点:1、应用工程目录和AliOS Things源码目录分离存储 AliOS Things源码以开发SDK的形式存放在目录A,开发者可以将工程存放在目录B、目录C等其他目录下,不与AliOS Things源码放在相同的目录下。对于开发多个应用的开发者来说,只需要使用一份AliOS Things源码,节省硬盘空间;也使开发者更专注于应用开发,无需关心AliOS Things的内部代码实现。同时,开发框架在建立新应用项目时,将用户可能修改的硬件相关部分拷贝至用户应用中,使得用户可以针对自己的项目硬件配置,调整硬件功能,达到更高的灵活性。 2、基于APP模板创建工程应用开发者可选择一个AliOS Things预置的与所开发应用功能最相近的APP作为模板,创建新的工程,快速搭建应用框架,加快开发进度。拒绝从"0"开始。 3、通过头文件引入组件组件是一组独立功能的集合,类似于其它系统的library。开发者在开发过程中,需要引入新的功能组件,传统的方式是需要修改makefile等构建配置文件,加入新的组件,然后在相应的代码中包含组件的头文件,然后才能调用该组件的API去完成特定的功能。而AliOS Things3.1中,开发者只需包含组件的头文件,组件将会被自动加入,开发者就可调用该组件的API了。*组件依赖关系图对于一个复杂的工程,引用了很多组件,各组件之间依赖关系就比较复杂。有时候开发者想删掉某个组件,但是又无法清楚的知道该组件是被哪个组件依赖的,无法从源头删除。AliOS Things3.1中,可生成组件依赖的关系图,开发者可以一目了然地看到组件的依赖情况。4、menuconfig和头文件两种配置模式相互同步大多win开发者不习惯使用menuconfig,只希望在头文件里面修改组件的配置;而linux开发者则喜欢在menuconfig图形界面下配置参数。AliOS Things3.1考虑了两个不同平台的开发习惯,可以任选一种方式进行配置,配置的参数将会被自动同步。5、通过AliOS Studio插件提供IDE内图形操作APP开发框架的相关功能已通过AliOS Studio插件集成到vs code IDE工具中,用户可实现图形化界面下创建工程、源文件管理,编译、下载、调试等功能。 其他特色功能 除了上面介绍的开发者框架之外,AliOS Things 3.1 还发布了很多其他功能,在之前版本的基础上进一步优化了组件化能力,使各种应用组件可以更加快捷地在不同的硬件设备之间快速复用,并实现了组件的独立安装、卸载和更新能力。并为开发者提供了快捷构建组件框架的工具,使得生态伙伴/开发者,可以快速地将自己在设备端侧的能力封装为组件,通过AliOS Things进行输出,帮助生态伙伴将价值落地。 AliOS Things 3.1还集成了工业、楼宇和园区等多种物联网场景中,包括轻量级的CANopen协议栈、KNX和ModBus总线的支持;连接协议方面新增了WebSocket和RTP/SRTP协议的支持,以方便用户开发音视频流的应用。AliOS Things 3.1支持了145个POSIX API 标准接口包含了pthread以及IPC通讯接口,基本覆盖了主流应用场景,方便其他平台的应用快速移植到AliOS Things上。 同时为了让用户可以更容易地上手,随着AliOS Things 3.1的发布,我们大幅度地丰富了开发文档。有60多篇全新的文档以统一的风格和更完善的内容呈现在用户面前。
几乎所有搞嵌入式的都遇到过 · 做个“Hello World”,下载的OS代码就几百兆,仅仅下载就费了半天的功夫 · 好不容易下载完成之后还要搭建开发环境和熟悉编译调试环境 · 花了大半天的功夫,终于都搞好了还要从main函数开始一步步写起,用到系统的功能还要花费大量的时间到处找文档。 · 终于码完了找个板子去调试,还要安装这个板子的下载环境。花两三周调试完成后,老板说:这块板子不适合量产,我们要换个板子!好吧,我们从头再来! 如果你也有同感,可以来试试AliOS Things 全新的AliOS Things,走心:产品研发团队在准备好PPT前,就先把源码放出来了! 新版AliOS Things提供了优异的应用开发环境和体验: 组件化能力:AliOS Things 功能非常强大,但是这些功能都是组件化的,开发者只需要按需下载自己需要的组件就好了,大大节省了空间和看代码的时间 统一的可视化开发环境:代码环境搭建,编译,调试在统一的IDE环境下完成,只需要点击简单的图标就可以编译下载了 应用分离:用户开发应用时可以通过提供的工具创建一个工程,这个工程里面仅仅包含应用的代码,用户可以直接调用OS的头文件来使用系统的功能 应用开发模板:提供大量的应用开发模板,用户不必从头开发应用,只需要从应用模板中选择跟自己贴近的应用,开发者按需修改就可以实现自己功能 易用的文档和支持:非常简洁的开发文档,开发者可以按照文档指引快速开始自己应用的开发,不仅如此,还有非常多的动画视频介绍哦 统一的硬件适配层:提供了统一的硬件HAL 层适配,可以让开发者更加方便的移植而不用大量修改应用代码;比如原来通过WiFi 模组联网,现在只需要更改不到10行代码就可以替换为2G模组联网 AliOS Things围绕着“更符合开发、使用习惯”做了持续多年的优化,除了这些方便的功能外,AliOS Things对于各种设备、不同领域协议的适配也已经比较完善,github的开源项目目前已有1.4K Fork,3.3K Star,约25万开发者群体。 更多优雅的功能,我们留待下次探索! 附: AliOS Things GitHub项目地址 https://github.com/alibaba/AliOS-Things 官方博客 https://yq.aliyun.com/teams/184 快速开始:https://help.aliyun.com/document_detail/161087.html
原文地址:物联网3A格局:阿里云、亚马逊等入选Gartner最新全球物联网竞争报告近日,国际知名调研机构Gartner发布最新全球物联网平台竞争格局报告, 阿里云等成为最具竞争力的10家企业。Gartner 报告显示,阿里云在物联网市场表现强劲,提供了百亿级IoT设备的连接能力和上万个行业解决方案,已覆盖智慧城市、工业、医疗、航空等多个领域。 在这份最新《竞争格局:物联网平台供应商》年度调研报告中,Gartner对上百家科技公司进行分析,从产品格局、技术优势、生态布局等视角和维度进行对比,最终筛选出十家企业:阿里云、亚马逊AWS、微软Azure IoT、Automation Intellect 、AspenTech、CloudPlugs、Samsara、Samsung SDS、Toshiba、Tuya Smart。 不出意外,在云计算市场占据第一梯队的3A——亚马逊 AWS、微软 Azure 和阿里云也出现在该格局中并占据强有力的地位。亚马逊AWS 侧重在工业IoT领域,微软Azure重点投入制造业、能源、建筑等,而阿里云则聚焦在解决城市、交通、工业、医疗等领域的复杂跨域应用。 3A正将云计算的布局和技术优势转移到物联网领域。如果把云计算比喻成人的心脏,物联网就是神经网络,AI相当于大脑,数据是流动的血液,这样整个机体才能高效运转起来,这也是云计算巨头纷纷布局物联网的原因所在。 制造业是物联网首先要攻破的桥头堡。在中国制造业最发达的广东省,已经有数千家中小企业接入阿里云工业物联网平台,实现机器物联的纵向拉通和产业链协同横向拉通,将企业订单、采购、生产、以及仓储物流全面数字化,平均数字化改造成本下降了80%,生产效能提升了30%。 “阿里云IoT要做三件事情,工厂的重构数字、产业链的产消融合以及产品的智能化升级。“阿里云智能IoT总裁库伟认为,作为数字经济新基建,阿里云要做好物联网的基础设施搭建,为IoT开发者提供更低成本、更高效率的开发平台、连接平台和交易市场。 Gartner在报告中指出,“物联网的未来是由垂直市场细分驱动的,需要关注到细分领域的应用……但大多数供应商还停留在粗糙的技术阶段,因此科技公司需要优先物联网纵深战略,才能在未来市场掌握先机。” 目前,阿里云已推出城市、工业、生活、园区等四大物联网平台,与合作伙伴提供超过2万个物联网解决方案和应用,覆盖城市、交通、工业、医疗、航空等领域的复杂交互应用场景。 ———————————————版权声明:本文为CSDN博主「CSDN资讯」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
阿里云物联网平台是阿里巴巴经济体的统一AIoT设备接入和设备管理平台,在丰富的项目实践中,产品技术团队会根据行业场景的需求,持续升级平台能力。 场景难题 在各种实际应用场景中,用户会经常遇到以下情况: 1、大陆企业开发的设备,可能会被消费者拿去在欧美区域使用(设备跨地域接入) 2、企业A为企业B订制了一批设备,企业B要求把设备+云端服务做整体交割(设备跨实例、跨账号分发) 为了解决诸如此类的问题,阿里云物联网平台必须提供灵活的设备分发能力,开发者可以跨地域、跨实例、跨账号分发设备,实现设备在全球范围内的就近接入和所属权转移。 解题之旅 为了解决这些问题,阿里云物联网平台团队开启了一段艰巨的平台优化之旅。 经过这一轮升级,阿里云物联网平台全面具备设备资源跨区域、跨实例、跨账号分发的能力。 用户价值 全球厂商也因此无需在设备出厂时提前对连接地址进行硬编码,烧录统一全球接入点即可,免二次烧录,解决设备备货、跨地域延迟、区域合规等多维度问题,大幅度降低设备接入成本。 相关云服务推荐:售前咨询 1、阿里云物联网平台(企业版实例),万台设备接入低至9.5元/天 2、阿里云物联网无线连接服务,套餐灵活,资费实惠,电信/移动/联通智能选网 3、建议阅读:企业基于物联网平台最佳业务实现
1.背景 当我们的设备和物联网平台建立mqtt连接通道后,会根据业务需求传输不同的数据。本次以共享快递柜业务场景讲解topic和payload的设计。 在共享快递柜场景中,我们会涉及到C端用户操作: 在App端扫码,操作快递存取,触发后台下发指令到当前机柜,执行相关操作。 用户存取完毕,触发订单结算或其他操作 运营商后台交互操作: 下行指令 开关快递柜门 广告的添加/删除 设备数据处理 用户取走快递的消息的处理,订单结算 用户寄存的消息的处理,订单结算 广告播放的记录存储 2.设计方案 总体思路如下: 根据业务不同划分不同topic,每个topic对应payload结构体。 当数据发送到物联网平台,我们通过规则引擎把数据分流到多个mq队列、DB、时序数据库等。 不同优先级队列,DB分配不同计算资源,配置降级策略 2.1 上行数据逻辑 下图展示了设备数据上行场景的划分和后台系统不同处理方式 2.2 下行控制指令 下图展示了云端下行控制指令的来源和完整链路 3.通信Topic和Payload定义 按照以上分析,整理出在这个场景中的Topic和Payload细节参考表格,如下: 分类 topic 权限 payload 备注 NTP服务 /ext/ntp/${pk}/${dn}/request 发布 { "deviceSendTime":"1000"} 物联网平台提供 /ext/ntp/${pk}/${dn}/response 订阅 { "deviceSendTime":"1000", "serverRecvTime":"1543475763010", "serverSendTime":"1543475763020"} 物联网平台提供 定时上报每5分钟 /${pk}/${dn}/user/bizheart/post 发布QoS=0 { "battery":69, "devices":[0,1,0,0,0,1,0], "net":84} 设备上报指令响应 /${pk}/${dn}/user/borrow 发布QoS=1 { "device":2} 用户上报用户开门触发 /${pk}/${dn}/user/return 发布QoS=1 { "device":2} 开门指令用户App触发->Server->IoT->机柜 /${pk}/${dn}/user/pop 订阅QoS=1 { "device":2} 设备上报开门是否响应 /${pk}/${dn}/user/borrow 发布QoS=1 { "device":2} 广告播放播放记录 /${pk}/${dn}/user/ad/play 发布QoS=1 { "adId":14323} 添加广告资源 /${pk}/${dn}/user/ad/new 订阅QoS=1 { "adId":732124, "uri":"https://ad.com/732124"} 删除广告资源 /${pk}/${dn}/user/ad/delete 订阅QoS=1 { "adId":32546} 设备状态变更 /as/mqtt/status/${pk}/${dn} { "status":"online/offline", "productKey":"pk13543", "deviceName":"dn1234", "lastTime":"2018-08-31 15:32:28.195", "clientIp":"123.123.123.123"} 物联网平台提供 具体实现过程中,业务payload还会id用于实现消息去重逻辑。 至此,我们完成了IoT场景的需求梳理和业务协议设计。 参考信息:企业基于物联网平台最佳业务实现 相关云服务推荐: 1、阿里云物联网平台(企业版实例),万台设备接入低至9.5元/天 2、阿里云物联网无线连接服务,套餐灵活,资费实惠,电信/移动/联通智能选网
底层互联网民工的苦衷 作为互联网设计民工,我们向往“快乐工作,认真生活”。无奈整天对着电脑,眼睛干涩,唇干舌燥。偶尔站起来活动活动,或者在表情分享群收集灵(biao)感(qing)的时候,被后面悄然靠近的老板拍拍肩膀,那感觉,简直是惊悚片现场,直接当前头发-10%! “老板来了”解决方案! 在头发掉了40.951%之后,痛定思痛,秉着“今天最好的表现是明天最低的要求”的价值观,作为IoT设计民工,我们要改变这个情况!使用物联网的手段,做一个“老板来了”的“后视镜”提示! 我们要使用一个简单的摄像头识别老板,如果识别到老板,就往钉钉(八卦)群里紧急推送这个消息,这样就可以减少上班时的惊悚程度与掉发。 就差一个程序员? 然而,我们都是设计民工,不会写算法,更不懂服务器啊!就差(不止)一个程序员了?! 这时候,我们物联网事业部的低代码开发平台IoT Studio就派上用场了!我们决定使用基于Arduino环境的ESP-EYE摄像头WIFI模块 + IoT Studio搭建一个视频监控+告警的应用。 ESP-EYE识别“老板” ESP-EYE是一款专注于图像识别与语音处理的开发板,板载ESP32芯片,集成200万像素摄像头、数字麦克风,拥有8 MByte PSRAM和4 MByte flash的丰富存储,支持Wi-Fi图像传输与Micro USB调试与供电,可广泛应用于智能物联网领域的应用开发。 200大洋的电路板实验 ESP-EYE兼容Arduino IDE,官方Github有直接提供示例程序。需要先安装开发板。这里略过Arduino IDE本身的安装。在preferences里面加上这两行: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json 然后从官方下载源码,使用“CameraWebServer”进行改造。CameraWebServer这个代码里,需要修改开发板类型定义的注释,如图此外需要修改WIFI的信息。这里我修改为自己手机的热点。选择对应的开发板进行Demo程序的烧录。烧录成功之后,打开串口监视器,可以看到连上WIFI的ESP-EYE有反应了。使用同一个热点(作者是手机热点所以直接手机浏览器打开即可)打开其上报的IP地址,可以看到推的流以及一些设置项,点击下方“start stream”开始推流。注意,这里的推流是基于局域网的,如果想用电脑看,电脑也要连到同一个热点才能用这个IP进行浏览。看到了帅气但掉发的作者。这样完成了ESP-EYE的初步调试。然后打开推流设置里的“Face Detection”和“Face Recogntion”选项,等待识别即可。下一步就是要将这个数据上报到阿里云了。 摄像头连接阿里云 在阿里云物联网平台,我们在设备接入中创建一个产品,命名为“ESP-EYE”。产品相当于一种“类”的定义,定义同样的功能,最后实例化为设备身份。 物联网平台这个产品有一定的免费额度,跑这个应用够用了 在这个产品里,我们定义一个FACE_ID的“属性”,用来表示目前识别到第几个人脸,目前第0个人脸就是老板。同时定义一个IP,方便接入不同的局域网(热点)时不需要重新输入IP地址完成推流展示。然后创建一个设备,设备DeviceName命名为esp_eye_001,获得DeviceName和DeviceSecret,加上之前产品的ProductKey,构成一个完整的“三元组”完成设备身份上云的认证。接下来我们在之前的Arduino测试代码上增加部分MQTT接入的代码。这里有一个取巧的地方,ESP-EYE与阿里云官方的DFRobot套装都是基于ESP32的,因此这部分固件可以通过重复使用DFRobot的代码完成构建。 加上上报topic和人脸识别/IP地址的属性配位符之后(见示例代码压缩包),烧录程序到ESP-EYE里。打开热点,看看数据有没有上报上来。物联网平台人脸变化跟设备的subject编号对上了,KO! IoT Studio告警应用 一个H5实时监控应用 数据上来了,当然要使用!我们使用IoT Studio做一个H5应用,能看到摄像头的实时状况,并且每当老板靠近的时候页面颜色变红!在物联网平台IoT Studio页面,创建一个项目,叫“老板来了!”将刚才的产品和设备导入到项目里。并新建一个Web应用。需要首先把Web应用的分辨率调整成手机使用的375*667。首先加入一个iframe组件。用于接收ESP-EYE的推流。 注意由于推流的IP地址是基于局域网的,实际使用的时候需要把电脑也连到同一个热点上。同时由于安全政策,IoT Studio使用基于http协议的iframe需要应用绑定已备案域名才能使用。一个指示灯组件。用于更明显的提醒是否有目标人物靠近。最后改成这样,在开发态看不到效果。发布之后绑定自己的域名。打开手机热点,将电脑和ESP-EYE都连上看看效果。 KO! 一个钉钉群告警 钉钉群里怎么能没有告警?每当检测到老板的时候,自动往钉钉群推送一个警告!首先新建一个业务服务。我们规定根据ESP-EYE上报的值是否为老板的faceID进行告警.然后部署,用ESP-EYE试一试。KO! 实践是检验真理的唯一标准 讲了那么多,把demo部署到现场试试看! 老板の反♂击♂ 听说阿里云IoT非洲分部缺设计师,你这么有才华,不如。。。 欢迎使用IoT Studio! 物联网开发服务(IoT Studio,原Link Develop),是阿里云针对物联网场景提供的生产力工具,可覆盖各个物联网行业核心应用场景,帮助您高效经济地完成设备、服务及应用开发。物联网开发服务提供了移动可视化开发、Web可视化开发、服务开发与设备开发等一系列便捷的物联网开发工具,解决物联网开发领域开发链路长、技术栈复杂、协同成本高、方案移植困难的问题,重新定义物联网应用开发。 以下为IoT Studio的案例,欢迎阅读: IoT SaaS加速器——助力阿尔茨海默病人护理 https://yq.aliyun.com/articles/706042 IoT Studio + LoRa打造“又猛又持久”的智能厕所 https://yq.aliyun.com/articles/689174 如何用Link Develop开发一个智能厕所 https://yq.aliyun.com/articles/645793
目录1、前言 2、实现功能3、准备工具 4、 设备连接图 5、DLT645-2007电表采集 5.1 点表配置 5.2 点表下发 6、DLT645设备接入演示 6.1 上位机软件操作 6.2 物模型导入云平台 6.3 远程配置文件 6.4 设置三元组 7、 部分数据查看 7.1 查看周期数据 7.2 查看设备断连 7.3上下限告警 8、 Iot Studio应用开发 1、前言 本文给大家介绍LS-D3000采集Dlt645-2007多功能电表的一系列流程。LS-D3000采集DLT645电表的数据解析,配置物模型,平台点表下发至DTU,一整套功能均已开发完毕,使用者只需按照流程,自定义采集内容,不需要在阿里云平台开发脚本等额外工作,简单操作即可快速完成DLT645电表采集项目。方便有需之人快速认识此产品,具体操作请阅读如下内容。 2、实现功能 LS-D3000通过RS485端口连接一个DLT645多功能电表,读取电表的组合有功总电能,正向有功总电能,正向有功总最大需量及发生时间,A相电压和电流等等,将数据上传到阿里云IoT平台并在Iot Studio展示出来。具体如下:1、LS-D3000通过RS485端口周期采集电表;2、LS-D3000将读取到的数据上传至阿里云IoT平台;3、阿里云IoT平台数据以Iot studio WEB方式展示出来。 3、准备工具 ① DTU阿里云套件(内含DTU*1,连接线,电源,天线)② DLT645-2007多功能电能表*1③ 乐舜上位机配置软件④ Win7系统或以上电脑⑤ USB转RS232接口工具⑥ 阿里云账号,开通物联网平台,并创建产品和对应设备创建产品的连接地址:https://iot.console.aliyun.com/product选择ICA标准数据格式(Alink JSON) 根据提示创建设备,获取设备三元组 4、设备连接图 如下图所示,表示整体通讯的拓扑图,将DTU的485接口连接到DLT645电表上,RS232接到电脑上。RS232用于上位机的配置DTU参数,RS485用于DLT645多功能电表和DTU通讯。 5、DLT645-2007电表采集 支持DLT645-2007协议的电表,通过RS485接口和DTU连接,可以快速接入到阿里云IoT平台。通过提供的上位机工具,配置好测点(点表)信息,DTU会主动轮训645电表设备,并上报到云端。功能支持:① 数据标识采集范围(DLT645-2007规约附录的表A.1 表A.2 表A.3)数据标识(DI3 DI2 DI1 DI0) | 编码表 | 00 XX XX XX | 电能表数据标识编码表 | 01 XX XX XX | 最大需量及发生时间数据标识编码表 | 02 XX XX XX | 变量数据标识编码表 |②数据标识值超限预警③485通信断开预警 5.1 点表配置 DLT645-2007协议设备的点表支持客户可配,配置可以借助上位机来实现,配置好的点表可以作为工程文件保存,可以复制到其他项目直接使用。 5.1.1 生成点表模板 上位机软件生成模板会创建一个当前时间命名的文件夹。文件夹里面的每一个CSV文件对应一个DLT645从设备。生成模板弹出对话框填写数量确定,会生产对应配置模板文件,打开目录定位到配置模板文件位置,进行填写点表。操作如下 5.1.2 填写点表 打开一个CSV格式点模板配置文件进行修改,如下图所示,配置完成后保存,仍保存为CSV格式文件。 示例(以下示例设备地址为9999):采集组合有功总电能 5.1.3 查看点表 打开PC软件 点表配置选择配置文件选择确定 点击确定弹出下图 其中第②步骤生成物模型在导入阿里云平台其中第③步骤生成配置文件可以通过阿里云平台导入,实现远程配置。 5.2 点表下发 5.2.1 远程配置下发 打开刚才工具生产的配置文件打开后,将内容复制到阿里云远程配置中,如下操作 注意:① 远程配置功能会对该产品下所有在线设备进行下发。② 该产品下的新添加的设备会在上电时自动获取新配置文件信息。③ 阿里云远程配置下发1个小时只允许下发一次。 5.2.2 配置文件管理 远程配置有版本信息,开启配置将以远程配置文件版本为准,本地版本不一致时会优先将远程同步到本地。 配置文件版本号,可以在云端查询,如下所示。 6、DLT645设备接入演示 6.1 上位机软件操作 ① 选择相应的产品,DLT645协议我们使用的LS-D3000,因此选择LS-D3000即可。 ② 生成模板,操作如下,在弹出新窗口打开目录,选择Dlt645协议,数量1 ③ 选择配置文件选择刚才的目录,使用自己配置的配置文件,不做修改。此实例是8个从设备的Dlt645点表 ④ 打开配置文件,查看点表,选择远程下发,生成物模型(相应的产品的ProductKey)和确认生成CFG文件,注意文件保存的目录,下面操作要用到 6.2 物模型导入云平台 打开阿里云物联网平台,设备管理->产品->功能定义->自定义功能 ->导入物模型,选择上一步对应ProductKey的json文件,导入物模型,如下图所示。导入物模型成功之后,再发布更新,新建一个版本号即可物模型发布成功说明已成功导入云平台 6.3 远程配置文件 点表下发有两种方式,可以通过本地和远程,这里采用远程下发。打开CONF.json文件,copy内容到阿里云IoT远程配置模块,该文件在章节6.1的最后几步操作。注意保存配置文件后需要重启DTU设备。 6.4 设置三元组 通过套件中提供的RS232线将DTU主体和PC连接。接上天线、检查SIM卡(默认内置),插上电源。打开软件选择对应COM端口,测试成功说明DTU和PC连接正确。打开后,输入阿里云三元组。点击注册后,DTU会自动连接到阿里云,等待指示灯LINKA常亮。刷新平台,会看到对应设备已经在线。 7、部分数据查看 7.1 查看周期数据 在阿里云平台上可以看出各个属性的周期上报的值 7.2 查看设备断连 在平台 设备找到对应设备事件管理 下查看手动断开DTU和电脑的连接线模拟设备断连,等一个采集周期,重新插上能够模拟恢复连接再等待一个采集周期,平台会产生2条事件数据。{"1_dev_state":0}:表示RS485通讯失败{"1_dev_state":1}:表示RS485通讯恢复 1_dev_state中1表示设备地址,dev_state为固定字符串。 7.3上下限告警 当采集DLT645电表的数值超出上下限的范围,都会发生预警。 8、Iot Studio应用开发 1、新建项目:项目名称根据具体项目名来命名。2、新建Web应用3、选择导航布局,然后增加页面;4、网页制作,左侧有一系列组件供我们使用,然后再配置相应的数据源,即可在图中显示实时的折线图,阿里云IoT有详细的文档说明IoT Studio如何使用。 5、预览效果
目录: 实现功能 所需设备 AliIOT物联网平台配置 设备连接(EW11/EG11) 设备调试 设备WEB应用开发 设备运维大屏展示 完整文档:[点此下载](链接地址http://www.hi-flying.com/download-center-1/application-notes-1/download-item-industry-products-application-manual)实现功能:Elfin-EW11/EG11通过RS485端口连接一个温湿度传感器,读取温度、湿度数据上传到阿里云IOT平台并在WEB网页上展示出来。具体如下: EW11/EG11主动读取温湿度传感器的温湿度值 EW11/EG11将读取的温湿度数值传输到阿里IoT云端 IoT云端数据以Web方式展示出来 使用设备: 1、Elfin-EW11(配RJ45转4Pin端子):1套 点此购买 或 2、Elfin-EG11(配RJ45转4Pin端子):1套 点此购买 3、温湿度传感器(RS485接口):1个 12V1A电源:1个购买点此购买 其中:温湿度传感器参数如下:采用Modbus-RTU通讯规约 串口参数:RS485,波特率9600,数据位8,停止位1,校验位无 地址码:01 温湿度传感器通讯协议示例以及解释: 举例:读取设备地址0x01的温湿度值 问询帧(16进制):应答帧(16进制):(例如读到温度为25.8℃,湿度为62.9%RH) 温度计算: 温度:0102 H(十六进制)= 258 =>温度= 25.8℃ 湿度:0275 H(十六进制)= 629 =>湿度= 62.9%RH 读取命令:01 03 00 00 00 02 C4 0B 回复数据:01 03 04 02 75 01 02 6A 00(示例) (注意:当温度低于0 ℃时温度数据以补码的形式回复,此处例子仅测试0 ℃以上温度) AliIOT物联网平台配置1、 AliIOT物联网平台注册、登录:网址:https://iot.aliyun.com/products/iotstudio 2、 建立设备模型:根据对设备的抽象,在云端建立设备模型。在本例中,创建一个温湿度检测产品。设备端物模型抽象如下表3、 打开https://iot.console.aliyun.com/product,选择【设备管理】->【产品】,点击【创建产品】完成后即可看到新创建的产品,点击【查看】即可看到产品详情。4、点击【功能定义】->【自定义功能】->【编辑草稿】,进入编辑草稿页面【自定义功能】->【编辑草稿】添加产品属性及功能5、 添加自定义功能:当前温度和当前湿度自定义功能添加完毕后,点击【发布更新】定义一个版本号,完成后的功能列表如下:6、编写云端解析脚本在产品详情页中点击【数据解析】,进行解析脚本的编写,解析脚本支持JavaScript和Python2.7语言,此处以JavaScript为例进行编写。 关于数据解析更多说明,参考: https://help.aliyun.com/document_detail/68702.html 此例编写脚本如下,可将下列脚本粘贴至【编辑脚本】中,脚本的逻辑为,将其中湿度和温度16进制值取出,转换为10进制的湿度和温度,赋值给CurrentHumidity和CurrentTemperature。 // 以下为脚本模版,您可以基于以下模版进行脚本编写/** * 将设备自定义topic数据转换为json格式数据, 设备上报数据到物联网平台时调用 * 入参:topic 字符串,设备上报消息的topic * 入参:rawData byte[]数组 不能为空 * 出参:jsonObj JSON对象 不能为空 */function transformPayload(topic, rawData) { var jsonObj = {} return jsonObj;}/** * 将设备的自定义格式数据转换为Alink协议的数据,设备上报数据到物联网平台时调用 * 入参:rawData byte[]数组 不能为空 * 出参:jsonObj Alink JSON对象 不能为空 */function rawDataToProtocol(rawData) { var jsonObj = {} return jsonObj;}/** * 将Alink协议的数据转换为设备能识别的格式数据,物联网平台给设备下发数据时调用 * 入参:jsonObj Alink JSON对象 不能为空 * 出参:rawData byte[]数组 不能为空 * */function protocolToRawData(jsonObj) { var rawdata = []; return rawdata;}var ALINK_PROP_REPORT_METHOD = 'thing.event.property.post'; //标准ALink协议topic, 设备 上传属性数据到 云端var ALINK_PROP_SET_METHOD = 'thing.service.property.set'; //标准ALink协议topic, 云端 下发属性控制指令 到设备端/*示例数据:传入参数 -> 0x010304027501026A00 010304027501026A00为温湿度传感器返回的整体数据 其中0275是CurrentHumidity值,转化为10进制为629,除以10为62.9 其中0102是CurrentTemperature值,转化为10进制为258,除以10为25.8,输出结果 ->{ "method": "thing.event.property.post", "id": "16974850", "params": { "CurrentHumidity": 62.9, "CurrentTemperature": 25.8 }, "version": "1.1"}*/function rawDataToProtocol(bytes){ var uint8Array = new Uint8Array(bytes.length); for (var i = 0; i < bytes.length; i++) { uint8Array[i] = bytes[i] & 0xff; } var dataView = new DataView(uint8Array.buffer, 0); //10进制bytes数组转16进制字符串 var str = ""; for(var j=0; j<bytes.length; j++) { var tmp = (bytes[j] & 0xff).toString(16); if(tmp.length == 1) { tmp = "0" + tmp; } str += tmp; } var jsonMap = {}; var fHead = uint8Array[0]; // command { jsonMap['method'] = ALINK_PROP_REPORT_METHOD; //Alink协议 - 属性上报topic jsonMap['version'] = '1.1'; //Alink协议 - 协议版本号固定字段 jsonMap['id'] = '' + dataView.getInt32(1); //Alink协议 - 标示该次请求id值 var params = {}; //截取16进制字符串并转成10进制,并除以10 var Humidity_bp = parseInt(str.substring(6,10),16)/10; var Temperature_bp = parseInt(str.substring(10,14),16)/10; params['CurrentHumidity'] = Humidity_bp;//对应产品属性中 CurrentHumidity params['CurrentTemperature'] = Temperature_bp;//对应产品属性中 CurrentTemperature jsonMap['params'] = params;//Alink协议 - params标准字段 } return jsonMap;} 7、验证脚本在【数据解析】->【脚本编辑】页面下方,可以模拟设备上报数据,查看解析结果。如输入设备上报数据:0x010304027501026A00,点击【执行】,查看解析结果,结果正确后,点击【提交】,提交解析脚本。 8、创建设备完成产品类型的建立之后,创建真实的设备,在【设备】列表中,选择 产品 后,点击【添加设备】。输入设备DeviceName,自定义一个设备名称,如此处定义为THSensor001,添加完成后,可以一键复制设备证书,等待写入设备中。 如此处添加的设备证书如下:若未及时复制设备证书,也可在建好的设备详情页,DeviceSecret处,点击“查看”,查看设备证书信息。 9、设备添加完成后,会先处于“未激活”状态,如下所示: 至此AliIOT云端配置已经完成,接下来完成DTU的配置。 设备连接(EW11/EG11) 案例一:设备EW11的设置和连接 1.硬件连接: 2.EW11设置连接路由器: (1)EW11供电后,配置EW11为STA模式连接一个路由器 EW11出厂默认AP组网模式,如果要修改为STA组网,可以采用几种方式,方式如下: 方法一: PC无线直连Elfin-EW1X热点,PC打开IOTService工具,通过工具进去配置,执行步骤详见如下。 进入 [设备编辑] 后,在WiFi设置框里 选择模式:STA,扫描需接入的信号热点,最后输入热点密码,点击 确认,后进入 [设备状态] 页面, 重启 DTU设备。 注意:DTU设备设置为STA模式,重启后,不再广播无线热点信号,因此PC或手机不能再搜索到Elfin-EW1X的热点。 设备重启后,EW11与路由器建立连接,PC或手机可通过路由器连接到DTU设备。如下图所示,EW11已经连上路由器并获取到IP地址。 方法二: 采用PC无线直连EW11_XXXX热点,浏览器输入10.10.100.254(产品默认IP),再输入用户名密码(默认为admin,admin,打开产品配置Web页面。 点击 [系统设置] 进入 [无线网络设置], 扫描选择要连接的AP热点,输入密码,提交后,进入[其他]-˃[恢复出厂设置/重启] 框下,点击“重启”按钮。 方法三: Smartlink配网,该方法采用智能家居常用的配网方式,具体步骤可参考《Elfin-EW1X_操作指南》。 3、EW11设置连接AliIOT参数: 电脑安装IOTServcie工具后,绑定设备后,选择EW11设备,进入【设备编辑】页面,设置 【串口】参数和【连接】参数。 填写完成后,点击“确认”->“确认”保存参数,重启设备。 重新进入到AliIOT物联网平台,在【设备管理】->【设备】列表里,可以查看到设备已经激活并显示在线,如下所示: 4、设置EW11串口主动轮询温湿度传感器功能 (1)编辑脚本 EW11可以通过编辑HIS脚本实现串口自动轮询功能,每隔一定时间主动发出轮询命令。此处设置脚本参考如下,可将如下脚本复制到txt文档保存: 更多HIS脚本编辑介绍,请下载说明文档. 下载地址:http://www.hi-flying.com/download-center-1/application-notes-1/download-item-his-script (2)导入脚本 在IOTservice工具里,选择EW11设备后,点击【设备编辑】->【高级设置】->【编辑脚本】->【导入脚本】,选择编辑好的TXT脚本文件,直接会导入到EW11设备里面,然后重启EW11设备。 (3)之后,进入【设备状态】查看EW11接入状态: 5、 AliIOT物联网平台数据接收展示进入到AliIOT物联网平台,在【设备管理】->【设备】列表里选中设备,点击【查看】,进入设备详情页,点击【运行状态】,可查看数据,如下所示: 设备运行一段时间后,点击【查看数据】,可以看到各个时间点温湿度变化情况: 案例二:设备EG11的设置和连接 1、硬件连接 2、EG11设置连接网络:(1)EG11支持移动、联通SIM卡,只需插入SIM卡即可自动连接网络(2)EG11接入网络后,电脑开启IOTService工具,绑定EG11设备,绑定设备方法,可参考《HF DTU 设备快速使用指导》。 3、 EG11设置连接AliIOT参数:电脑安装IOTServcie工具后,绑定设备后,选择EG11设备,进入【设备编辑】页面,设置 【串口】参数和【连接】参数。 填写完成后,点击“确认”->“确认”保存参数,重启设备。重新进入到AliIOT物联网平台,在【设备管理】->【设备】列表里,可以查看到设备已经激活并显示在线,如下所示: 4、 设置EG11串口主动轮询温湿度传感器功能EG11不支持HS脚本功能,可以通过设置串口心跳包方式实现对传感器的定时查询,如下: 设置之后,点击“确认”重启设备,再次进入【设备状态】查看EG11接入状态: 5、 AliIOT物联网平台数据接收展示进入到AliIOT物联网平台,在【设备管理】->【设备】列表里选中设备,点击【查看】,进入设备详情页,点击【运行状态】,可查看数据,如下所示: 设备运行一段时间后,点击【查看数据】,可以看到各个时间点温湿度变化情况: 设备调试 在设备连接上AliIOT物联网平台,并上传数据后,若出现数据显示不正确时,可以使用AliIOT物联网平台的【日志服务】功能,选择产品后,点击【上行消息分析】,选择一个【MessageID】查看设备上传到平台的原始数据,并根据上传的数据查找原因,再做匹配调整。 如此处查看THSensor002上传的一个数据值,16进制显示为:0x01030402a100dd6a30,其中02a1和00dd分别为湿度值和温度值,转换为10进制后为:673和221,则湿度和温度分别为67.3%RH和22.1℃。 设备WEB应用开发 阿里云IoT物联网平台还提供【应用开发】功能,可以自定义Web页面和APP页面。(注:当前APP自定义开发功能暂时关闭,Ali完善后再重新上线) 1、进入Ali IoT Studio菜单下,选择【项目管理】->【新建项目】->【新建空白项目】,自定义填入一个项目名称。 2、之后,进入创建项目的主页,选择【Web应用】,【新建】一个Web应用。3、 进入Web可视化开发页面,根据需要创建自己的Web展示页面。 4、 选择【组件】进行页面设计,比如选择“实时曲线”,然后选择曲线表后,对“样式” 和“交互”进行设置,比如“关联产品”和“配置数据源”。 5、 之后生成页面,可以预览,待设计成熟后,可以发布。比如此Demo预览界面如下: 设备运维大屏展示 阿里云物联网平台还提供强大的监控运维功能,大屏显示所有管理设备运行状态,实时掌握设备最新运行情况。在【运维监控】->【运维大盘】->【设备运维大盘】,可以查看整体状态。
阿里云Link Security(阿里云IoT安全平台)成功通过基于等保2.0要求(第三级)的物联网安全评估,成为全国首个通过的物联网安全服务平台!
阿里云工业互联网平台(数字工厂)通过整合阿里云资源可提供从产品研发、生产制造、销售、物流仓储、能源管理等链路中所需要的全部应用。为大型制造企业提供工业大数据分析以实现更高层次的价值挖掘,赋能中小制造企业用云化工具以较低成本实现信息化与数字化普及。目前阿里云数字工厂客户遍布所有制造行业,如电子制造、机械加工、锂电池、装备制造、表计生产、电力、钢铁、化工等等。为了更好的服务全国3000万制造企业,现招募数字工厂合伙人。 阿里云工业互联网平台(数字工厂)优势: 一站式工业互联网应用构建的平台 端设备接入SDK和AliOS Things 边缘计算网关平台实现本地实时计算 可同时进行设备及项目管理 平台通过API形式对外开放 对合伙人的服务与支撑 1、技术支持:销售、售前等资源支持2、资料支持:产品资料、解决方案、市场分析等3、培训分享:定期组织合伙人免费的技术、产品等全方位的培训 合作伙伴政策 1、具有竞争力的渠道代理价格政策2、完善的渠道合作伙伴代理制度体系 合伙人招募标准 1、愿意深耕制造业,将客户放在第一位2、具有一定的制造业经验或制造业企业客户资源诚邀加入,扫码报名。此时此刻,非你莫属。
1. 简介 非接触红外测温在医疗,环境监测、个人健康等领域得到越来越广泛的应用。本文将向大家介绍如何通过AliOS-Things inside的WiFi模组,快速完成体温检测,流程涵盖从传感器数据采集,到阿里云IoT智能生活平台接入,以及快速构建App完成监控。希望通过阿里云IoT提供的从设备端到云端应用的全套解决方案,快速帮助智能设备厂商,构建出可以替代人力的自动化人体测温设备和方案,在防控中降低人员接触风险,提升排查效率。 2. 软硬件环境 2.1 软件平台 云端 -- 阿里云IoT智能生活平台(飞燕平台)生活物联网平台提供了设备接入能力、移动端的SDK以及免开发的公版App和界面,开发者基于该平台可快速实现设备的智能化。移动端 -- 云智能(公版App)云智能是生活物联网平台提供的公版App,无需额外开发,下载后可直接对设备进行配网和控制。支持在全球主流应用商店中搜索“云智能”下载;设备端 -- AliOS Things 3.0.0版本AliOS Things作为轻量级物联网OS,已支持多款芯片,可以方便的集成温度传感器,并通过设备端SDK连接生活物联网平台;这里选用其最新发布的3.0.0版本。 2.2 硬件平台 硬件平台硬件平台选用ESP8266 nodeMCU,支持Wifi连接,带有I2C、UART等接口,并且带有按键(FLASH按键),可用于触发体温检测上报。传感器--MLX90614ESF-DCI-000-TU(I2C接口)这颗传感器是一款红外的非接触温度计,支持I2C通信协议,主要用到SDA和SCL两条线,可以很方便的连接到ESP8266开发板上。说明如下:硬件连接开发板与传感器的接线引脚对应关系如下: 开发板 传感器 D1 (GPIO_05) SCL D2 (GPIO_04) SDA 3.3V Vcc GND GND 硬件连接图,右键可打开大图 3. 云端配置 智能生活平台上创建产品及设备之前,请先确保以下两点: 已经注册了阿里云账号,并完成实名认证。注册操作请参见阿里云账号注册流程。 已开通生活物联网平台服务。 3.1 产品创建 在控制台上已创建项目、产品,并完成产品的功能定义,可参见概述完成这部分的操作。功能定义时,需要注意以下两点: 产品类型选择“体温计”, 标准功能中已经包含了“人体温度”,这里只需要修改数据定义中的取值范围为0~99。 如上图所示,设备端上报温度使用的标识符,需要与云端的配置保持一致(如上图“人体温度”所对应的标识符); 3.2 测试设备添加 添加测试设备,记录设备的激活凭证(ProductKey、ProductSecret、DeviceName、DeviceSecret,如下图红框处),后续需要将激活凭证配置到设备端。 3.3 App配置使用 公版App的参数配置及流程如下所示: 打开公版App的控制开关,详细参见配置App交付终端。 设置App参数,其中选择产品面板、多语言管理、配网引导为必填参数,详细请参见设置App参数。 下载公版App(云智能),具体参考公版App介绍; 扫描配网二维码,绑定设备后调试,具体二维码参见获取配网二维码。 4. 代码移植 获取参考代码(如图所示),并按以下步骤集成。 4.1 ESP8266单板适配 针对上述选用的ESP8266开发板,为保证按键中断、I2C等功能正常运行,需要做以下修改: FLASH按键对应的GPIO引脚修改; I2C总线对应的引脚修改; 8266不支持C99编译的适配; 具体修改可参考附件中的补丁文件(001-aos-3-0-0-esp8266.patch,基于AliOS Things 3.0.0版本生成)。将其拷贝到AliOS Things 3.0.0根目录下,通过以下命令打入补丁: patch -p1 < ./001-aos-3-0-0-esp8266.patch 4.2 驱动移植 MLX90614是一款用于非接触式温度测量的红外温度计,这里主要介绍其使用方法。MLX90614的EEPROM主要用来做参数配置,具体可参考官方手册:MLX90614的RAM为只读属性,用户可以读取温度等数据,例如,通过RAM上的Tobj1可以获取被检测物体的温度数据。I2C总线通过设备地址0X5A(MLX90614出厂设置)来访问传感器。访问RAM和EEPROM时,操作命令的对应关系如下所示: 例如访问EEPROM上0X4的地址(Emissivity correction coefficient ),其操作可以通过以下方式得到: 访问的是EEPROM,其操作码高3位为0b001 后5位为访问的地址,该地址为0X4,二进制表示为0b00100 按照上图的方式组合,操作命令为 0b00100100,即0X24 按照同样的方式,通过RAM读取被测物体温度寄存器(Tobj1)数据的操作码为0X7。被测物体温度读取的驱动代码(位于drv_temp_melexis_mlx90614.c 中)参考如下: static int drv_temp_melexis_mlx90614_read(void *buf, size_t len) { int ret = 0; size_t size; uint8_t data[2]; int32_t temp; uint32_t value; temperature_data_t *pdata = (temperature_data_t *)buf; if (buf == NULL) { return -1; } size = sizeof(temperature_data_t); if (len < size) { return -1; } /* 通过I2C读取RAM上的Tobj寄存器 MLX90614_ctx.config.dev_addr为设备地址0X5A MLX90614_TOBJ1为访问Tobj1的操作码0X07 */ ret = hal_i2c_mem_read(&MLX90614_ctx, MLX90614_ctx.config.dev_addr, MLX90614_TOBJ1, I2C_REG_LEN, data, 2, I2C_OP_RETRIES); value = data[0] | (data[1]<<8); if (unlikely(ret)) { return -1; } /* 寄存器的值转换成温度数据,单位为0.01℃ */ temp = ((int32_t)value * 2) - 27315; pdata->t = temp; pdata->timestamp = aos_now_ms(); return (int)size; } 下面介绍如何集成驱动,将驱动文件drv_temp_melexis_mlx90614.c拷贝到driverssensordrv目录下,并且在driverssensordrv.mk的第一行添加编译配置。 ifeq ($(AOS_SENSOR_TEMP_MELEXIS_MLX90614),y) $(NAME)_SOURCES += drv/drv_temp_melexis_mlx90614.c endif 4.3 用例移植 将用例代码(thermometer文件夹)拷贝到appexample目录下,并且在appexampleConfig.in中添加用例编译配置。 source "app/example/thermometer/Config.in" if AOS_APP_THERMOMETER config AOS_BUILD_APP default "thermometer" endif 用例初始化流程如下所示,具体请参考入口函数application_start:ESP8266的按键中断相关代码在mcuesp8266bspkey.c中,按下按键后,中断回调函数会根据按键按下的时间(短按、2秒钟长按、6秒钟长按),触发不同的event(通过aos_post_event)。application_start中注册的按键回调,会响应上述事件,按键回调代码如下: /* 按键回调函数 */ void linkkit_key_process(input_event_t *eventinfo, void *priv_data) { if (eventinfo->type != EV_KEY) { return; } if (eventinfo->code == CODE_BOOT) { if (eventinfo->value == VALUE_KEY_CLICK) { /* 短按(>40ms),触发一次体温检测,并上报云端 */ app_sensor_test(); } else if (eventinfo->value == VALUE_KEY_LTCLICK) { /* 长按(>2s), 触发系统进入配网模式 */ do_awss_active(); } else if (eventinfo->value == VALUE_KEY_LLTCLICK) { /* 长按(>6s),会清除配网信息,并复位系统 */ do_awss_reset(); } } } 体温数据检测、上报流程请参考相关代码,检测低于正常人体温度范围(34~42℃),则上报数据0,高于正常人体温度范围,则上报数据99: /* 读取温度数据并上报云端 */ void app_sensor_test() { int ret; char param[128]; temperature_data_t temp; double data = 0.0; /* 读取温度传感器数据 */ ret = sensor_hal_read(TAG_DEV_TEMP, 0, &temp, sizeof(temp)); if(ret <= 0){ printf("\nSensor data read fail \n"); return; } data = (double)temp.t; data = data/100.0; /* 人体温度数据校准 */ data = data - (data * data * data *data * data* data) * 0.000125 + (data * data * data *data * data) * 0.0283429488 - (data * data * data *data ) * 2.67004808 + (data * data * data ) * 133.762569 - (data * data ) * 3758.41829 + (data ) * 56155.4892 - 348548.755; if (data < 34.0) { data = 0.0; printf("\nNot the normal range of human body temperature (34 ~ 42℃ ) \n"); } else if (data > 42.0) { data = 99.0; printf("\nNot the normal range of human body temperature (34 ~ 42℃ ) \n"); } /* 网络连接检测 */ if (!app_conect_check()) { printf("\nNetwork is not connected\n"); return; } memset(param, 0, 128); /* 构建上报云端的payload */ sprintf(param, PROP_POST_FORMAT_TEMP, data); /* 上报体温数据到云端 */ if (app_init_check() != 0) { ret = IOT_Linkkit_Report(app_device_get(), ITM_MSG_POST_PROPERTY, (unsigned char *)param, strlen(param) + 1); if (ret == -1) { LOG("%s %d fail\n", __func__,__LINE__); } } } 4.4 四元组修改 将3.2节中记录的设备的激活凭证(四元组)更新到设备端(appexamplethermometer目录下的app_entry.h中): #define PRODUCT_KEY "xxxxxxxxxxx" #define PRODUCT_SECRET "xxxxxxxxxxxxxxxx" #define DEVICE_NAME "xxxxxxxxxxxxxx" #define DEVICE_SECRET "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 4.5 标识符确认 参考3.1节,确保设备端上报体温对应的功能标识符(appexamplethermometer目录下的app_entry.h中)与云端的配置一致: #define PROP_POST_FORMAT_TEMP "{\"BodyTemperature\":%.1f}" 5. 编译运行 5.1 编译 在OS目录下执行以下命令,完成编译 make thermometer@esp8266 -c config aos make 编译生成的固件thermometer@esp8266.bin在outthermometer@esp8266binary目录下 通过ESP8266的Flash下载工具(FLASH_DOWNLOAD_TOOLS)烧录 5.2 运行 开发板参考如下:复位单板后,长按"FLASH"键(>2s),开启配网流程,APP端参考官方文档中的“公版App使用流程”完成。配网成功后,短按"FLASH"键(>40ms),可以触发一次温度采集,并上传云端,同时推送到手机侧云智能APP。 需要注意的是,用例中增加了校准,检测温度的的范围是34 ~ 42℃,低于这个范围,上报数据为0;高于这个范围,上报数据为99。 6. 附录 问题交流、技术支持群:
1. 简介 非接触红外测温在医疗,环境监测、个人健康等领域得到越来越广泛的应用。本文将向大家介绍如何通过AliOS-Things inside的WiFi模组,快速完成体温检测,流程涵盖从传感器数据采集,到阿里云IoT智能生活平台接入,以及快速构建App完成监控。希望通过阿里云IoT提供的从设备端到云端应用的全套解决方案,快速帮助智能设备厂商,构建出可以替代人力的自动化人体测温设备和方案,在防控中降低人员接触风险,提升排查效率。 2. 软硬件环境 2.1 软件平台 云端 -- 阿里云IoT智能生活平台(飞燕平台)生活物联网平台提供了设备接入能力、移动端的SDK以及免开发的公版App和界面,开发者基于该平台可快速实现设备的智能化。移动端 -- 云智能(公版App)云智能是生活物联网平台提供的公版App,无需额外开发,下载后可直接对设备进行配网和控制。支持在全球主流应用商店中搜索“云智能”下载;设备端 -- AliOS Things 3.0.0版本AliOS Things作为轻量级物联网OS,已支持多款芯片,可以方便的集成温度传感器,并通过设备端SDK连接生活物联网平台;这里选用其最新发布的3.0.0版本。 2.2 硬件平台 硬件平台硬件平台选用ESP8266 nodeMCU,支持Wifi连接,带有I2C、UART等接口,并且带有按键(FLASH按键),可用于触发体温检测上报。传感器--MLX90614ESF-DCI-000-TU(I2C接口)这颗传感器是一款红外的非接触温度计,支持I2C通信协议,主要用到SDA和SCL两条线,可以很方便的连接到ESP8266开发板上。说明如下:硬件连接开发板与传感器的接线引脚对应关系如下: 开发板 传感器 D1 (GPIO_05) SCL D2 (GPIO_04) SDA 3.3V Vcc GND GND 硬件连接图,右键可打开大图 3. 云端配置 智能生活平台上创建产品及设备之前,请先确保以下两点: 已经注册了阿里云账号,并完成实名认证。注册操作请参见阿里云账号注册流程。 已开通生活物联网平台服务。 3.1 产品创建 在控制台上已创建项目、产品,并完成产品的功能定义,可参见概述完成这部分的操作。功能定义时,需要注意以下两点: 产品类型选择“体温计”, 标准功能中已经包含了“人体温度”,这里只需要修改数据定义中的取值范围为0~99。 如上图所示,设备端上报温度使用的标识符,需要与云端的配置保持一致(如上图“人体温度”所对应的标识符); 3.2 测试设备添加 添加测试设备,记录设备的激活凭证(ProductKey、ProductSecret、DeviceName、DeviceSecret,如下图红框处),后续需要将激活凭证配置到设备端。 3.3 App配置使用 公版App的参数配置及流程如下所示: 打开公版App的控制开关,详细参见配置App交付终端。 设置App参数,其中选择产品面板、多语言管理、配网引导为必填参数,详细请参见设置App参数。 下载公版App(云智能),具体参考公版App介绍; 扫描配网二维码,绑定设备后调试,具体二维码参见获取配网二维码。 4. 代码移植 获取参考代码(如图所示),并按以下步骤集成。 4.1 ESP8266单板适配 针对上述选用的ESP8266开发板,为保证按键中断、I2C等功能正常运行,需要做以下修改: FLASH按键对应的GPIO引脚修改; I2C总线对应的引脚修改; 8266不支持C99编译的适配; 具体修改可参考附件中的补丁文件(001-aos-3-0-0-esp8266.patch,基于AliOS Things 3.0.0版本生成)。将其拷贝到AliOS Things 3.0.0根目录下,通过以下命令打入补丁: patch -p1 < ./001-aos-3-0-0-esp8266.patch 4.2 驱动移植 MLX90614是一款用于非接触式温度测量的红外温度计,这里主要介绍其使用方法。MLX90614的EEPROM主要用来做参数配置,具体可参考官方手册:MLX90614的RAM为只读属性,用户可以读取温度等数据,例如,通过RAM上的Tobj1可以获取被检测物体的温度数据。I2C总线通过设备地址0X5A(MLX90614出厂设置)来访问传感器。访问RAM和EEPROM时,操作命令的对应关系如下所示: 例如访问EEPROM上0X4的地址(Emissivity correction coefficient ),其操作可以通过以下方式得到: 访问的是EEPROM,其操作码高3位为0b001 后5位为访问的地址,该地址为0X4,二进制表示为0b00100 按照上图的方式组合,操作命令为 0b00100100,即0X24 按照同样的方式,通过RAM读取被测物体温度寄存器(Tobj1)数据的操作码为0X7。被测物体温度读取的驱动代码(位于drv_temp_melexis_mlx90614.c 中)参考如下: static int drv_temp_melexis_mlx90614_read(void *buf, size_t len) { int ret = 0; size_t size; uint8_t data[2]; int32_t temp; uint32_t value; temperature_data_t *pdata = (temperature_data_t *)buf; if (buf == NULL) { return -1; } size = sizeof(temperature_data_t); if (len < size) { return -1; } /* 通过I2C读取RAM上的Tobj寄存器 MLX90614_ctx.config.dev_addr为设备地址0X5A MLX90614_TOBJ1为访问Tobj1的操作码0X07 */ ret = hal_i2c_mem_read(&MLX90614_ctx, MLX90614_ctx.config.dev_addr, MLX90614_TOBJ1, I2C_REG_LEN, data, 2, I2C_OP_RETRIES); value = data[0] | (data[1]<<8); if (unlikely(ret)) { return -1; } /* 寄存器的值转换成温度数据,单位为0.01℃ */ temp = ((int32_t)value * 2) - 27315; pdata->t = temp; pdata->timestamp = aos_now_ms(); return (int)size; } 下面介绍如何集成驱动,将驱动文件drv_temp_melexis_mlx90614.c拷贝到driverssensordrv目录下,并且在driverssensordrv.mk的第一行添加编译配置。 ifeq ($(AOS_SENSOR_TEMP_MELEXIS_MLX90614),y) $(NAME)_SOURCES += drv/drv_temp_melexis_mlx90614.c endif 4.3 用例移植 将用例代码(thermometer文件夹)拷贝到appexample目录下,并且在appexampleConfig.in中添加用例编译配置。 source "app/example/thermometer/Config.in" if AOS_APP_THERMOMETER config AOS_BUILD_APP default "thermometer" endif 用例初始化流程如下所示,具体请参考入口函数application_start:ESP8266的按键中断相关代码在mcuesp8266bspkey.c中,按下按键后,中断回调函数会根据按键按下的时间(短按、2秒钟长按、6秒钟长按),触发不同的event(通过aos_post_event)。application_start中注册的按键回调,会响应上述事件,按键回调代码如下: /* 按键回调函数 */ void linkkit_key_process(input_event_t *eventinfo, void *priv_data) { if (eventinfo->type != EV_KEY) { return; } if (eventinfo->code == CODE_BOOT) { if (eventinfo->value == VALUE_KEY_CLICK) { /* 短按(>40ms),触发一次体温检测,并上报云端 */ app_sensor_test(); } else if (eventinfo->value == VALUE_KEY_LTCLICK) { /* 长按(>2s), 触发系统进入配网模式 */ do_awss_active(); } else if (eventinfo->value == VALUE_KEY_LLTCLICK) { /* 长按(>6s),会清除配网信息,并复位系统 */ do_awss_reset(); } } } 体温数据检测、上报流程请参考相关代码,检测低于正常人体温度范围(34~42℃),则上报数据0,高于正常人体温度范围,则上报数据99: /* 读取温度数据并上报云端 */ void app_sensor_test() { int ret; char param[128]; temperature_data_t temp; double data = 0.0; /* 读取温度传感器数据 */ ret = sensor_hal_read(TAG_DEV_TEMP, 0, &temp, sizeof(temp)); if(ret <= 0){ printf("\nSensor data read fail \n"); return; } data = (double)temp.t; data = data/100.0; /* 人体温度数据校准 */ data = data - (data * data * data *data * data* data) * 0.000125 + (data * data * data *data * data) * 0.0283429488 - (data * data * data *data ) * 2.67004808 + (data * data * data ) * 133.762569 - (data * data ) * 3758.41829 + (data ) * 56155.4892 - 348548.755; if (data < 34.0) { data = 0.0; printf("\nNot the normal range of human body temperature (34 ~ 42℃ ) \n"); } else if (data > 42.0) { data = 99.0; printf("\nNot the normal range of human body temperature (34 ~ 42℃ ) \n"); } /* 网络连接检测 */ if (!app_conect_check()) { printf("\nNetwork is not connected\n"); return; } memset(param, 0, 128); /* 构建上报云端的payload */ sprintf(param, PROP_POST_FORMAT_TEMP, data); /* 上报体温数据到云端 */ if (app_init_check() != 0) { ret = IOT_Linkkit_Report(app_device_get(), ITM_MSG_POST_PROPERTY, (unsigned char *)param, strlen(param) + 1); if (ret == -1) { LOG("%s %d fail\n", __func__,__LINE__); } } } 4.4 四元组修改 将3.2节中记录的设备的激活凭证(四元组)更新到设备端(appexamplethermometer目录下的app_entry.h中): #define PRODUCT_KEY "xxxxxxxxxxx" #define PRODUCT_SECRET "xxxxxxxxxxxxxxxx" #define DEVICE_NAME "xxxxxxxxxxxxxx" #define DEVICE_SECRET "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 4.5 标识符确认 参考3.1节,确保设备端上报体温对应的功能标识符(appexamplethermometer目录下的app_entry.h中)与云端的配置一致: #define PROP_POST_FORMAT_TEMP "{\"BodyTemperature\":%.1f}" 5. 编译运行 5.1 编译 在OS目录下执行以下命令,完成编译 make thermometer@esp8266 -c config aos make 编译生成的固件thermometer@esp8266.bin在outthermometer@esp8266binary目录下 通过ESP8266的Flash下载工具(FLASH_DOWNLOAD_TOOLS)烧录 5.2 运行 开发板参考如下:复位单板后,长按"FLASH"键(>2s),开启配网流程,APP端参考官方文档中的“公版App使用流程”完成。配网成功后,短按"FLASH"键(>40ms),可以触发一次温度采集,并上传云端,同时推送到手机侧云智能APP。 需要注意的是,用例中增加了校准,检测温度的的范围是34 ~ 42℃,低于这个范围,上报数据为0;高于这个范围,上报数据为99。 6. 附录 问题交流、技术支持群:
物联网应用开发IoT Studio 2.0.0 Beta →立即体验 产品框架调整 新框架融合了数据分析、业务逻辑开发、可视化开发三种核心能力,面向物联网应用开发者推出全新版的IoT生产力工具三剑客。打通物联网数据上云后最后一公里的完整闭环,为AIoT方案商创造更大的价值。 全新的交互体验 优化了产品的交互界面和视觉设计,极大地缩短了操作路径、并简化了操作复杂度。通过突出产品的工具特性,提供了更好的使用体验。 Web可视化新功能 新增IoT大屏组件 与DataV产品联合推出了全新的IoT版本大屏组件,该组件原生支持与物联网设备/物联网数据分析服务的打通,方便用户在短时间内以拖拽的方式快速完成动态大屏的搭建。该组件前期免费对用户开放使用,目前已经提供两个示例模版(通用设备运维大屏、智能生活运营大屏)。今后会陆续更新更多的IoT场景模版,敬请期待! 支持第三方开发的组件(配电房场景组件) 与三方生态ISV共同合作,全新推出变配电场景下的组件包(共18个组件),支持用户快速完成配电场景解决方案的页面搭建。通过此次和三方ISV合作,建立并打通了第三方组件开发、调试、上传、审核、发布的全流程,为后续和更多三方ISV合作,形成组件生态打下了坚实基础。体验Demo(请点击访问) 全新的数据可视化BI组件 详推出新版数据可视化BI组件,包含:表格、折线图、柱状图、条形图、饼图(环形图)组件,支持全新的BI可视化编辑面板,可拖拽字段快速生成可视化图表。 打通与数据分析LA的API和数据表打通,可快速实现LA数据的可视化。 支持数据筛选、查询、导出等功能。 业务逻辑开发(原服务开发)新功能 原“服务开发”现更名为“业务逻辑开发”,目标主要解决物联网领域中用户常常遇到的场景联动及报警逻辑配置。 稳定性提升,新增“钉钉防疫宝”开发模板本次业务逻辑开发重构了产品架构,大幅提高了服务的稳定性,并在疫情期间很好地支撑了“钉钉防疫精灵”的快速开发、上线,现已沉淀为模板之一。 数据分析LA2.0新功能(白名单内测) 我要申请内测资格(查看如何申请)数据分析从解决用户的实际问题入手,对原有架构、页面、交互、功能进行了全新改版,旨在降低数据分析门槛,实现设备数据与业务数据的融合分析透视。新增物标签、可视化物分析、时序透视三大功能: 物标签:对物联网实体设备所具有能力的结构化表达。通过物标签降低用户使用数据分析的成本,提升对物的分析能力,充分利用设备数据拓展业务。 可视化物分析:提供物标签的可视化展现和分析能力,同时支持以零代码开发的方式将可视化物分析制作成数据服务API供应用调用。 时序透视:提供时序数据的可视化展示和分析能力,帮助用户更好地处理设备数据,发现数据价值。 用新版数据分析,快速寻找纺织车间的生产效能低下的原因 下面将以实际场景和问题来展示新版数据分析的使用方式和价值所在【实际场景】 以纺织车间为例,纺织机安装了两种物联网设备: 1)温度传感器:检测机器设备的运行温度2)电参数测量仪:检测机器设备的电压、电流和负荷功率 【用户需求】 1)近期车间的生产效率降低,产能减少,希望知道是什么原因。 2)希望将异常的数据可视化展示,随时可以查看问题。 【使用新版数据分析LA2.0解决问题】 Step1. 通过时序透视功能,查看设备最近1天的设备运行情况,查找异常原因。通过拉取最近一天的设备数据进行可视化分析,能够轻易地发现设备电流在某一时段突增,导致设备功耗增大,运行温度升高,影响产能。 Step2. 通过可视化物分析,对设备温度过高的数据筛选出来并以低代码方式快速生成API,并通过图表组件在IoT Studio中进行展示。对设备数据做处理,筛选出大于36度的设备温度数据,生成API再经过IoT Studio进行前端页面展示。 线上发布 3月3日,我们将在钉钉群中进行线上直播,为大家介绍更多IoT Studio的新功能。点击加入钉钉群直播回放:
全民抗疫,共克时艰,新型冠状病毒的防疫已经到关键时刻,2月3日,阿里云对外宣布,即日起至今年6月,为了支援抗疫,同时支持前线智慧医疗,对全球医疗检测类设备免费开放了接入物联网平台能力。据了解,阿里云物联网平台是AIoT的基础能力平台,具备全球设备接入、设备生命周期管理、设备数据可视化、设备身份认证、设备远程升级(OTA)、设备全链路诊断、设备数据存储和开发、AIoT应用和服务开发等功能,为用户提供全托管免运维的服务,可用性达99.9%,可与阿里云大数据、AI能力打通。阿里云此次免费开放,可以助力智慧医疗、检测、防疫相关领域的发展,有效提升社会医疗资源的利用率和信息互通效率。 阿里云物联网产品运营负责人朱继荣表示,AIoT技术能够通过医疗、诊断、防疫数据的可信采集和实时计算,对医疗资源的充分利用,防疫数据的互联互通提供支持。为了支持新肺炎防疫和智慧医疗产业,阿里云将会对6月底前接入的医疗器械、生物科技类设备,阿里云物联网平台将会提供全年免费平台产品与专属服务。 阿里云物联网平台是万物互联的基础设施平台,在智慧城市、共享经济、新零售等多个领域已经提供了久经考验的基础服务。目前物联网平台累计接入设备已经过亿。具备极强的通用性和稳定性。 2020年新肺炎的爆发,阿里云率先开放AI算力用做相关的技术研究,现在进一步开放AIoT的能力,为后续的医疗资源监控、防疫数据采集互通、实时计算提供支持。 众志成城,齐心抗毒,阿里云物联网平台绿色通道将全力服务,对于有需求的研究机构、院校、企业可以扫描上方二维码或邮件至jirong.zjr@alibaba-inc.com详细咨询。 稳住,武汉能赢,我们能赢,中国能赢!
一、阿里云AIoT产品/资源矩阵 先盘点一下有哪些可用的产品和服务,以便快速集成,搭建出高可靠应用。 设备服务 设备接入服务 提供安全可靠的设备连接通信能力,帮助用户将海量设备数据采集到阿里云物联网平台,并且客户应用可以通过调用平台提供的API下发数据给设备,实现远程控制海量设备的目的。物联网平台还提供了与阿里云众多产品打通的规则引擎,帮助用户将应用快速集成。 AliOS Things(开源AIoT操作系统) 丨 GitHub项目主页丨钉钉群:开发交流 AliOS Things 是 AliOS 家族旗下、面向 IoT 领域的、高可伸缩的物联网操作系统。 设备身份认证 物联网设备身份认证系统,通过可信计算和密码技术为物联网系统提供设备安全认证、安全连接、业务数据加密、密钥管理等端到端的可信接入能力。 物联网云服务 物联网平台 物联网平台提供安全可靠的设备连接通信能力帮助用户将海量设备数据采集上云,提供功能丰富的设备管理和远程运维能力帮助用户更好地管理设备,提供丰富的开放API和与阿里云众多云产品打通的规则引擎,帮助用户快速完成应用开发。 物联网应用开发 IoT Studio 里云针对物联网场景提供的生产力工具,是阿里云物联网平台的一部分。可覆盖各个物联网行业核心应用场景,帮助您高效经济地完成设备、服务及应用开发,加速物联网SaaS构建。物联网开发服务提供了可视化应用开发、服务开发等一系列便捷的物联网开发工具,解决物联网开发领域开发链路长、技术栈复杂、协同成本高、方案移植困难的问题。 物联网数据分析 帮助用户对物联网数据资产进行统一的管理、分析,助力物联网企业实现数据化,通过数据分析产生更多的业务价值。 边缘计算 物联网边缘计算 云边一体的PaaS层软件产品,将云端的能力下沉到边缘侧,解决边缘实时性、可靠性、运维经济性等方面遇到的问题。南向提供通信协议框架为软硬件开发者提供便捷的通信协议开发能力,北向通过Open API为SaaS开发者提供快速构建云端应用的能力。对于运维,云端提供一体化的运维工具,可以在云端集中运维,降低运维成本,提升运维效率。欢 视频边缘智能服务 面向政府、企业、家庭等安防领域,提供大容量、高并发的视频连接、存储服务;并提供云边协同的视频算法与算法训练下发工具。 网络服务 物联网络管理平台(支持LoRaWAN) 提供网络管理服务,可快速组建LoRaWAN网络,解决讯号难以到达的地下室、无固定电源空间,适合公里级、低功耗与上万设备的网络需求。组网灵活便捷,用网成本低。 物联网卡服务 基于三大运营商(移动、联通、电信)提供物联网专用号段(11位或13位)的移动通信接入业务,该业务支持无线数据通信和物联网场景的配套行业解决方案,用户各种物联网设备的应用场景,如车联网、智能家居、穿戴设备、多媒体网络支撑、环境监测,和智慧农业等。 更多应用和资源请访问阿里云AIoT官网 二、开发路径 磨刀不误砍柴工,先看下专家给您划的重点,再动手实操。1、各类型设备接入方案【视频】 相关推荐 钉钉群:设备上云(嵌入式/设备端开发交流) 本视频提及的方案详情(操作文档) 根据阿里云的工程实践和不同AIoT客户使用的经验,为您系统性地介绍不同设备的接入、智能化改造的实施方案 2、官方推荐AIoT开发路径(全链路) 三、阿里云大学视频教程AIoT专区 跟着视频学习AIoT基础知识,注意,部分产品有迭代,产品功能和界面以线上版本为准。立刻学习 四、AIoT云网边端拆解 通过案例,快速了解各个不同环节的工具/平台/服务。 设备端 【官方文档】设备接入开发引导【社区专家】AliOS Things使用指南 物联网络 【官方文档】基于LoRaWAN搭建博物馆环境监测应用 边缘计算 【官方文档】Modbus通过边缘网关上云 云服务(物联网平台、物联网应用开发等) 【官方文档】快速搭建一个气象监测大屏 五、场景DEMO 通过场景化DEMO快速掌握多产品/服务组合使用。1、用树莓派玩转AIoT2、NodeMCU快速上云集锦3、AliOS Things精品合集4、0门槛体验IoT开发:用官方的在线调试功能虚拟设备搭建你的第一款IoT应用5、0门槛体验IoT开发:用小程序虚拟设备体验设备数据上云6、0门槛体验IoT开发:用个人PC模拟设备接入流程(免费体验)7、STM32F103:RTOS设备通过TCP模组上云8、围观牛人,IoT领域阿里云MVP刘洪峰个人博客9、围观牛人,阿里云AIoT架构师个人博客10、全自动洗车机11、岫云村的农业数字化12、工业用变频器上云 13、开源GSM定位器14、网关与子设备开发实战(java)15、阿尔茨海默病人的IoT护理方案 六、实用技巧 1、不是什么难题,但是很多人会遇到:高频问题20条2、用好脚本解析,一年省几台ECS3、自建MQTT撑不住了!怎么迁移到阿里云的物联网平台上去?4、设备端资源包文件(人脸库,音频库,图片资源等)更新方案5、设备在线/离线状态的缓存方案6、远程采集IoT设备运行日志的最佳实践7、查看设备当前运行状况实现方案8、C语言-支持IPv6的地址查询的函数getaddrinfo()9、平台业务通信Topic设计最佳实践(共享场景为例)10、IoT平台实现RRPC同步调用最佳实战11、IoT物联网平台通信用Topic梳理12、生产提效:出厂时免烧录设备证书,运行时动态注册13、业务系统从阿里云物联网平台获取设备数据的3种方案14、离线设备云端指令消息触达方案15、物联网平台提醒欠费该如何查询和处理?16、巧用设备标签功能,实现设备多维度检索和GIS展示17、物联网设备OTA固件升级开发实践18、设备检测自己是否在线19、调用API获取设备状态20、如何从5万设备中找出频繁掉线设备,长期不在线的设备?21、规则引擎SQL数据格式详解22、物联网时代,如何优化你的网络- DNS域名解析服务23、存量设备怎么迁移到阿里云物联网平台?24、物联网平台运行监控最佳实践25、使用抓包工具Wireshark分析IoT设备网络行为26、设备使用HTTPS协议接入IoT物联网平台 七、推荐硬件 使用官方推荐的硬件/方案,开始您的设备智能化之路 八、产品活动 1、大客户专享:挑战设备接入量,平台资费劲省92%2、助力肺炎防疫:医疗、检测类设备免费使用物联网平台 九、用户交流和建议反馈渠道 有奖反馈:提交产品建议有机会获取官方订制台历 钉钉群-IoT开发者俱乐部6000AIoT开发者等您加入 QQ群-阿里云AIoT开发者
作者:阿里云智能IoT事业部 高级技术专家 吕建文 随着接触客户越来越多,也越来越颠覆了我对“传统队列”(kafka、rocketmq、rabbitmq...)的看法。 当然本文不是说“传统队列”做得不好, 这些队列系统经过多年打磨,在高性能、海量堆积、消息可靠性等诸多方面都已经做得非常极致了,都做得非常的优秀。 但今天我觉得大家在设计方案时动不动任何一个异步、系统解耦等就来选用队列,然后线上又频繁出一些问题,这些问题的背后我们得看看到底什么场景适合、什么场景过渡使用了、有没有更好解法, 尤其今天IoT领域场景复杂,既有面向自身SAAS业务又要承担多租户PAAS平台化模式,面临更多的队列方面问题,拿来和大家讨论分享。 本文讨论的产品:阿里云物联网平台 IoT使用队列场景 队列在IoT领域是个极其重要部件,上到服务器,下到一个月发一次消息的嵌入式芯片,都需要传递事件消息;比如共享充电宝的开柜子、开灯指令从服务器发到设备、工业网关高频消息流等, 队列最大意义在于让整个消息事件在不可控的环境因素变成一个平稳运行的系统。 比如设备时不时会网络抖动,某些设备故障、某些抖动导致大量消息飙涨。 我们把队列用于了2个场景,一个是上行,一个是下行;我们在队列网关上即复用了kafka、rocketmq,又加入了自研的实时队列,尽量做到了即使在某一个队列大范围堆积时候,即时的业务也还是相对可用的。比如充电宝,哪怕用户的队列消息大量堆积,新用户过来控制,也开能打开柜子,即时在有大量堆积情况也能快速恢复业务,而不是一定要运维同学清理掉堆积才能快速让业务可用。单纯使用kafka或者rocketmq在大量堆积时很可能是个可怕故障。 设备上行消息,总量qps非常高,通常需要汇集到一组消费者,这个场景适合使用市面上队列kafka、mq等选型,但在IoT控制设备场景对实时性要求较高,直接使用kafka等 在堆积时候 那和这一个队列挂钩的入口设备都会有业务影响,并非最佳方式。 设备下行消息,总量qps不高,一般是下行控制设备开柜子等人为触发操作,这个场景要求到达率很高,而且设备级别隔离要求也高,不能因为一个设备消息拥塞干扰其它设备控制,这个情况比较适合IM 比如钉钉消息类似的情况,也是我们自研的IoT设备级队列。 我们做了哪些优化 1.上下行隔离拆分 下行尤其重要。 比如控制一个设备,比如一个开锁、支付成功要下发打开柜子等等,上行出任何问题,千万不能影响到下行业务。 2.IoT队列-设备级/海量topic 用于下行推送设备消息情况的队列。 图1和图2对比较明显, 一个队列拥塞尽量减少对其它设备影响。 3.IoT队列-服务器订阅 用于把用户设备消息发送给用户服务器的队列。相当于一个队列网关,我们即支持用户规则流转到kafka、rocketmq,也能使用IoT自研的AMQP实时队列网关。即使在消息有堆积情况,把堆积态的消息降级处理,实时生成消息依然优先发送。 大家用队列初衷是什么? 提高业务吞吐、异步化 消峰填谷系统间解耦高息可靠、事务、有序消息、最终一致性 ..... 大家都用得非常多 都很了解了,队列基本上是设计一个分布式系统里面必备的组件,可能还有更多场景就不多举了。 线上出现堆积你的反应是什么? 假如没有堆积,队列就失去意义。大部分使用队列的系统,可能大家都遭遇过“堆积”的案例。 如果你还没碰到堆积,那说明比较幸运,你的生产和消费都还比较稳定,也还没遭受过异常抖动,但是你依然需要为线上系统的稳定性考虑堆积了你的预案是什么,有什么样的影响。 不论是我们自己,还是用户使用,都面临过“堆积”案例。我们IoT这边光内部系统之间流转,使用了RocketMq(阿里内部是metaq)有上W级别数量topic,还有个场景是我们要把用户设备消息流转到用户自己购买的队列里面去。 短暂抖动这种堆积一般自我消化。奇怪的现象是,绝大部分出现堆积的场景,比如有个几十w条堆积的,用户第一反应是什么呢? 很多结论是: 有堆积几乎已经是线上故障了, 需要先清理堆积! 堆积能力强是不是件好事情呢? 1.为什么需要清理堆积? a.先说IoT “实时性让队列始料不及”:例子:一个快递柜业务的队列堆积,然后“此时此刻”在柜子旁边的用户死命的在旁边用手机点开柜子 怎么也打不开,(后端系统都恢复了)可是他还是打不开,问题就是队列里面还有几十w条的消息,新来的消息不好意思,要排队哦。 之前等着的那些消息源源不断的消费,鬼才知道到底这些消息还有没有用。 然后这个“此时此刻”的人 又气急败坏走了, 再过来下一个“此时此刻”的人。。。 。 所以运维的人就要手工清理大量堆积态消息,先让等在设备旁边的人能打卡他的快递。 b.即便不是IoT场景, 我相信肯定有同学碰到过线上清理堆积、重置消费点位案例,可能发生于:业务雪崩、快一点恢复业务 丢失一些数据和快速恢复交易 到底哪个重要点... 等了一会,不行啊 客户都投诉了,压力山大 还是清理堆积吧, 然后后面再补一个设计数据一致性方案。 前断时间活生生碰到个用户反馈情况,kafka在消费端堆积时候写入延时很高,最后发现由于堆积消息数据需要从硬盘加载冷数据导致io打高。 2.不需要清理堆积有多少情况? a.短暂抖动,能自我恢复 (大部分能分钟内消费完可能都不是问题) -- 这种情况确实是比较多的 b.时间不重要的数据,比如日志所以, “需要先清理线上堆积” 就是把双刃剑,没堆积不是队列,堆积多了又影响你的业务;不能过渡拥抱堆积。 有办法优化吗? 先总结下问题1.市面上所有队列承诺的消息实时性,前提都是消费端消费能力足够 也有同学说把实时的消息topic和其它topic分开不同优先不就行了吗? 不好意思,这个跑题了,继续看上面例子把。 2.IoT是一个PAAS平台,内部我可以要求其它团队消费能力上去; 外部ISV用户,客户自己说了算,很难让每个开发者按照你希望优化的方法去做。 虽然我们也可以做很多租户隔离措施,甚至跟用户说,你自己队列问题,是你们业务处理能力不够 或者直接说 你们自己有问题。 可是,用户还是委屈呀,业务出问题就是他得背锅的。 3.队列的存储和内核机制,几乎都是FIFO (就是先进先出,后面进来的一定要等前面的出去) 3.1 这样才能有序,要么是分区有序,要么是全局有序。 3.2 不论如何 一旦发生堆积,新来的消息一定是要前面堆积的出去了才能被消费。这种情况 一定会导致后来的消息被动延时。3.3 注意,有的队列说的无序消息只是发送方是同步还是异步无序,每个子消费队列单元底层还是这个结构运行,底层存储和分发上如果堆积状态有新进来消息是追加在堆积后面的; 4.全局保序能降级吗 在某些场景,保序真的很重要。 但我觉得肯定存在无需保序场景,或者业务上设计时间戳而不是依赖消息的序列也能解决很多场景问题,这2个加起来 至少目前我们了解到的业务80%以上都能满足。 补充下,现实系统中一个业务流程通常链路比较多,要经过ABCD 多个系统->队列0 ->E/F/G ->队列1->XYZ。。。 这条完整链路才是一笔完整的业务交易,仅仅在一个队列0这里做个有序,是不够的,要从A到Z整个都变成有序,代价是非常高的 已经不单是一个队列有序就可以解决的问题。为了保序,队列产品花了很大开销,就像上面提到活生生例子 kafka在堆积时候突然消费端恢复导致kafka需要加载硬盘冷数据把io打崩,原本可以高效的把生产成功的数据直接发送出去,但因为堆积就得先加载硬盘数据,导致新进去数据没机会。目前的队列产品即使有无序队列类型,每个消费队列结构上依然是FIFO的, 并不是设计上的问题,是有史以来“队列” 的基准。 一个大胆的尝试-IoT队列诞生 我们需要一个针对IoT场景,实时优先的“队列”,而且思路和rocketMq、kafka都不一样,得开发:1.实时生成消息优先发送,堆积的消息进入降级模式 保序降级,不保障整体消息序列,仅实时消息相对有序 堆积消息和实时消息是并行任务发送,堆积速率降级实时消息发送失败马上降级为堆积消息 2.海量topic 传统队列核心点是 不论堆积多少不影响它的性能;kafka topic一多 原本消息顺序写文件优势 就会导致一个broker要退化到随机写,失去优势,另外要zk来协调这么多topic也是有局限,所以这些队列本身有提供一个外挂代理桥接器 对外入口是多个设备topic,再桥接映射到少量的实际kafka topic,这方案有一定可行性,但做不到我们希望的隔离效果 只是治标。 我们需要的是“海量topic 尽量相互隔离 并且不影响整体性能”,尽量做到设备A的消息堆积topic,不影响设备B,上面做法基本上一个实际topic问题 这一面的设备就影响。 阿里云物联网平台今天首先面临的是多租户, 10w条消息有影响,你是影响一个厂商的10w设备,还是影响1w个厂商 每个厂商10个设备 完全是不一样的故障面。 我们要先保租户隔离,再保设备隔离,不能完全按设备Id去分散多个队列。理想情况是设备级别的topic数量,那么就是 亿级别topic 了! 面向设备端海量topic和IM聊天系统稍微类似,所以我们也参考了IM产品碰到过的问题,比如阿里内部手淘、钉钉,但有个最大区别是已有产品基于自有协议和客户端,IoT领域做硬件同学可能更体感,端不可控;需要支持开源,也需要IoT的SDK。 最后topic数量也要考虑成本,我们希望是topic数量是几乎无成本的! 我暂时也没办法定义这个产物到底还是不是队列,但我们得弥补目前队列一些问题。 总体思路 目前IoT队列还没有好名字,对外叫服务端订阅,意思就是用户用服务器订阅他们设备消息,欢迎拍砖。 为了降低接入成本,用户可以使用AMQP1.0协议接入 符合开源生态。 注意,AMQP本身是个消息协议,队列可以用AMQP做协议,但协议本身不代表队列。就像Kafka也可以用http消费,但不代表 http是个kafka队列。AMQP1.0是最新的标准,不止于队列本身,它更多是一个消息通信的统一消息标准,而内核是否是队列还是仅仅作为管道由Provider来实现,AMQP1.0标准被逐步用于消息网关,而队列模型只是网关里的一个可选实现。 兼容传统队列和新队列,交给用户按场景来推荐选择,用户即可选择使用kafka、mq(ONS、MNS) 也可以选用iot队列(物联网平台的服务端订阅),甚至组合模式,比如按消息特征规则来配置流转队列。 IoT队列的设计思路 设计目标 :实时优先、使用便捷、海量topic支持的 队列网关、Follow开源客户端这套东西其实已经不再是一个大家理解中的“队列”,不在一个维度。 但是目前队列产品也在做设备接入,所以还是给大家一个对比把: IoT队列-服务端订阅部分 流转传统队列RocketMQ、KAFKA、AMQP for MQ 堆积能力 海量堆积的消息会直接降级,堆积消息不会影响实时消息,优先恢复设备即时可用性 海量堆积不影响性能,突出在性能点。 当同一个队列有堆积时,实时生成的消息一般会排在队末尾,直到堆积的逻辑处理完,或者进入了死信消息 实时处理能力 实时和堆积处理分离; 即使有堆积,实时消息的也会先推送,因此实时性会相对更优 队列在堆积时,实时消息一生成就会变成堆积排队 ,消息实时性要求“消费端必须快速恢复消费能力” 功能对比 云监控、消费者状态、轨迹、多消费组、海量topic、不保序 -- (功能简单) 消息监控、消费者状态、轨迹、多消费组、有限topic、可保序(或分区有序)、事务消息、广播消息、死信等 -- (更丰富)Q 为什么更适合IoT实时优先场景 1.出现海量堆积时,设备实时控制依然能保持一定可用性,无需特别惧怕堆积;2.海量topic,部分设备消息拥塞不要影响整个队列 1. 出现海量堆积时,用户第一反应通常是需要人工运维去清理堆积,才能让系统恢复可用;堆积是个“可怕”的线上问题 ;2.同一个业务场景要用多个topic去拆分来模拟实现消息优先级,一个topic堆积还是会出现多个设备受到影响;3.外挂逻辑设备多个topic映射到内部有限topic,治标不治本 性能差异 依赖分布式存储OTS/HBASE,broker自己不做存储 单机性能较弱 ,需要利用集群发挥性能;堆积态消息性能有限,取决底层存储单分区扫描能力*分区数; broker本地异步/同步刷盘,IO性能非常高, 单机即可达到非常高QPS ;单机性能非常优秀; 成本对比 1.topic无开销,海量topic时成本较低、隔离性较好;2.消息QPS较高时成本比kafka高;3.不利于小型化部署 依赖多 1.topic因为要预分配资源,有成本开销,有数量限制;“海量topic”通过 合用一个topic实现 底层无法较好隔离;2.Kafka按带宽收费成本最低;3.小型化部署成本低,依赖少 消息模式 这个图只是最基本片段,从这个模式可以看出来机制差别,大家都没有错,出发点不同。 消息策略-推拉结合 这个应该是队列的核心难点之一,和传统队列区分在于,我们考虑为平台化模式,独享资源过于昂贵。 但带来问题是消费端不可控,所以使用结合模式,只有在消费者在线时会拉取堆积消息,而拉取是由AMQP队列网关来做,给到用户接口始终是推送过去的onMessage回调。 broker不是直接让consumer来连接,而是把队列网关剥离出来, 这样会更灵活,甚至对于部分用户 我们的queue可以切换到ons、kafka等实现。 kafka、rocketmq做法是在连接时会分配给客户端一个broker接入地址。 2.消息高可用:broker实时消息优先推送给consumer,失败才会落到queue ;这是一个完整事件,如果没有完成 则不给producer commit。如果宕机,需要发送方超时来决定重试。 3.异步ACK 线性扩展-离线消息部分 实时部分消息采用推方式,基本上不会成为瓶颈,消费不过来消息进入堆积模式。底层使用KV存储(阿里云自研表格存储产品ots、hbase)已经解决存储的扩展,剩余主要问题如何消除写入热点和消费热点,这样broker几乎可以做到无状态水平扩展。1.为了更快速方便实现cleansession、清理堆积、消费点位等特性,消息id借鉴了snowflake 使用非自然序自增ID ,这么做好处是 如果需要清理离线消息,那么生成一个当前时间的id即可。 2.消费记录按租户的消费者ID (cid和sharding分区值决定),即同一个租户消费组,可以调整sharding数量,一个sharding分区 是一个单线程任务处理,所以离线消息总消费速率取决于sharding数量,为了谨慎防止热点,目前一个sharding跑1000QPS。 这里碰到过一些坑,比如写前读,尤其消费状态更新问题。阿里云表格存储在自增ID上做了不少优化, Hbase版本目前正在验证。 3.实时消息“看起来没落盘 会丢吗” ,不是不落,是先推后看场景落。 每个发送给消费者的消息,都需要对方ack,如果异常或者超时没有答复 ,一个是落到堆积消息; 另外一个是这个过程如果都失败,将直接告诉发送方失败。 如何解决海量topic问题 首先面对“大量”的问题 一般都是考虑分区,单元化,分组等隔离和拆分,这里海量topic我们讨论针对一个单实例模式下如何尽可能做到更多topic,完全任意数量都能100%没问题肯定是不现实的。 海量的标准这个标准起码一个实例(4c8g ecs虚拟机)支撑10W设备规格,每个设备最多50topic,那么就是500w topic/起步。 由于broker和存储已经隔离,broker和topic已经没有什么关系,或者说任何topic数据生成,broker做的事情就是写入和分发。 1.海量topic,每个topic有限数量订阅: topic和订阅者关系使用ots存储加载redis或本地缓存,针对mqtt topic匹配有个topic tree的树算法,hivemq有实现版本, 详情参考 https://github.com/hivemq TopicTreeImpl.java 2.单个topic 海量订阅: 这个场景其实是组播和广播, 我们不会考虑在队列本身上面去做这个事情,而是在上层封装广播组件来协调任务和批量发送。 简单说就是每个消费者永远订阅自己topic,或者每个人都是自己的收件箱,你不能直接拿别人的;但是我可以一份消息发到多个人的收件箱(topic)里面去。如果是100w topic数量级别,一般使用上面的topic tree能在本地内存构造快速匹配。但平台化这个量级是不够的,所以全局的海量广播需要在上层构建任务系统来做。这个广播目前还在建设中。 回压 实时消息推送fail,将会进入堆积,如果超时或操作失败,由于producer没有收到commit可以决定重试。假如设备是Mqtt协议可以利用qos1,如果borker未推送成功或者写入堆积失败 不给producer ack,那么producer会重试。但是解决不了其它协议或者qos0消息, 这里还有个优化点是在发送方网关来做推送消息的failover ack机制。 由于producer的客户端是开源sdk,不受管控 这个地方是一个局限点。 尤其面向碎片化的设备端协议,回压不能完全依赖设备端机制,有了发送方网关后,我们可以在这里干些活。篇幅有限这里先不展开了。 监控运维 这块云上集成云监控、专有云使用云生态Prometheus等构造 未来探索点 队列网关除了支持AMQP,也支持KAFKA协议,面向开发者编程接口更贴切。 (注意只是kafka的消息protocol,我们绝对没有能力去做一个一样的kafka队列) 总结 IoT场景的队列实践,在现有mq队列、kafka队列融合互补之外,加了种自有的实时优先队列实现;同时加入了队列网关代理,即能让用户选择市面上队列,也可以选择轻便的IoT队列。可能我把这个也叫“队列”不是很贴切,目前只是实现了基本功能,还需要进一步完善和打磨。 再次强调,本文没有说目前队列做得不好,我们系统内部环节也在享受已有队列产品的服务,比如我们系统内部自己某些分支的FO就可能利用了rocketmq或者kafka,只是在某些场景化方向 我们做了些微小的探索,希望能解决更多用户问题。
《阿里云AIoT技术》第二期 [TOC] 产品动态 物联网平台 官网 提供设备接入、管理,设备数据分析、可视化,AIoT应用开发和托管等一站式服务。 1、物联网平台企业版(包年包月实例)正式发布【新能力】详细内容 物联网平台企业版服务正式上线,实例独享,数据隔离,提供性价比更高的服务。1.合理规划您的业务规模,购买匹配的实例规格,可大幅节约您的成本。2.实例规格按需选择,超出最高规格可提交工单付费提升,避免被限流的问题。3.实例间隔离更彻底,您的一个实例出现问题不会影响到您的其它实例。4.现在购买可免费获得实例有效期内100GB的时序数据存储空间(存储功能3月份上线)。5.实例购买1到3年可分别享受9折、8折、7折的总价优惠。万台设备接入日均9.5元起 至此,阿里云物联网平台对外提供的服务模式有如下三种 产品特性 按量计费 企业版(包年包月实例) 独享实例(包年包月) 价格 中 低 高 SLA 99.9% 99.9% 99.95% 扩展性 超出产品限制无法提升 规格可自由扩展 规格可自由扩展 计算隔离 逻辑隔离 实例隔离 完全独享 网络隔离 逻辑隔离 实例隔离 完全独享 数据隔离 逻辑隔离 实例隔离 完全独享 数据存储 不提供时序数据存储 提供时序数据存储 提供时序数据存储 监控报警 无法配置整体业务监控 支持配置实例级别监控 支持配置实例级别监控 购买方式 线上购买 线上购买 提交工单 相关内容推荐1、物联网平台企业版:设备接入实例节点开发实战 手把手引领您第一时间体验企业版的设备接入功能 2、自建MQTT迁移阿里云物联网平台指南 2020年是5G大规模商用的元年,使用阿里云物联网平台在产业爆发前打造一套安全可靠的业务架构,还能解放人力专注业务开发! 2、AMQP服务端订阅消费端支持GO语言 【功能升级】详细内容 AMQP服务端订阅消费端基于开源SDK,提供了GO语言接入的demo。 3、更多更新详细内容 增强平台适用性,降低使用门槛。 云端开放接口更新,新增OTA相关接口13个 规则引擎流转AMQP服务端订阅消费组上线 物模型解析优化 OTA功能新增固件安全检测支持:添加固件时,可选择固件安全检测服务 社区精品 RTOS设备通过TCP模组上云 立即了解 自建MQTT迁移阿里云物联网平台操作指南 立即了解 毫瓦级人脸识别 Powered by AliOS Things 立即了解 用户活动 有奖反馈 立即了解 产品内测招募:物联网平台数据分析2.0 立即了解
《阿里云AIoT技术》第二期 [TOC] 产品动态 物联网平台 官网 提供设备接入、管理,设备数据分析、可视化,AIoT应用开发和托管等一站式服务。 1、物联网平台企业版(包年包月实例)正式发布【新能力】详细内容 物联网平台企业版服务正式上线,实例独享,数据隔离,提供性价比更高的服务。1.合理规划您的业务规模,购买匹配的实例规格,可大幅节约您的成本。2.实例规格按需选择,超出最高规格可提交工单付费提升,避免被限流的问题。3.实例间隔离更彻底,您的一个实例出现问题不会影响到您的其它实例。4.现在购买可免费获得实例有效期内100GB的时序数据存储空间(存储功能3月份上线)。5.实例购买1到3年可分别享受9折、8折、7折的总价优惠。万台设备接入日均9.5元起 至此,阿里云物联网平台对外提供的服务模式有如下三种 产品特性 按量计费 企业版(包年包月实例) 独享实例(包年包月) 价格 中 低 高 SLA 99.9% 99.9% 99.95% 扩展性 超出产品限制无法提升 规格可自由扩展 规格可自由扩展 计算隔离 逻辑隔离 实例隔离 完全独享 网络隔离 逻辑隔离 实例隔离 完全独享 数据隔离 逻辑隔离 实例隔离 完全独享 数据存储 不提供时序数据存储 提供时序数据存储 提供时序数据存储 监控报警 无法配置整体业务监控 支持配置实例级别监控 支持配置实例级别监控 购买方式 线上购买 线上购买 提交工单 相关内容推荐1、物联网平台企业版:设备接入实例节点开发实战 手把手引领您第一时间体验企业版的设备接入功能 2、自建MQTT迁移阿里云物联网平台指南 2020年是5G大规模商用的元年,使用阿里云物联网平台在产业爆发前打造一套安全可靠的业务架构,还能解放人力专注业务开发! 2、AMQP服务端订阅消费端支持GO语言 【功能升级】详细内容 AMQP服务端订阅消费端基于开源SDK,提供了GO语言接入的demo。 3、更多更新详细内容 增强平台适用性,降低使用门槛。 云端开放接口更新,新增OTA相关接口13个 规则引擎流转AMQP服务端订阅消费组上线 物模型解析优化 OTA功能新增固件安全检测支持:添加固件时,可选择固件安全检测服务 社区精品 RTOS设备通过TCP模组上云 立即了解 自建MQTT迁移阿里云物联网平台操作指南 立即了解 毫瓦级人脸识别 Powered by AliOS Things 立即了解 用户活动 有奖反馈 立即了解 产品内测招募:物联网平台数据分析2.0 立即了解
数据分析v2.0核心迭代如下 1.新增数据资产,可以统一查看数据服务API和物标签。官方提供大量实用API和物标签,方便用户在应用和IoTStudio中直接使用。2.新增可视化分析能力,本期上线:时序透视、可视化物分析两大能力,不会代码一样分析了解物联网数据。 内测申请入口 https://survey.taobao.com/apps/zhiliao/kFqgtuQz 用户交流群(钉钉)
推荐阅读:自建MQTT迁移阿里云物联网平台指南 本实践案例介绍使用物联网平台提供的C语言设备端SDK,将搭载实时操作系统(RTOS)的微控制单元(MCU)的设备接入阿里云物联网平台。 原有的工业自动化设备、数据采集设备、实时控制设备、家电等使用的是搭载实时操作系统(RTOS)的微控制单元(MCU)。在对此类设备进行物联网改造时,可以使用阿里云物联网平台提供的C语言设备端SDK,将此类设备接入物联网平台。 接入方案 将MCU与通信模组相连,MCU与通信模组间通过AT指令进行连接和通信。在通信模组上,使用C语言设备端SDK实现与物联网平台的连接和通信。 准备软硬件 本示例中,使用了如下MCU、通信模组开发板和软件开发环境。 MCU为ST公司生产的STM32F103,其开发板为NUCLEO-F103RB。通信模组为SIMCom公司(芯讯通无线科技有限公司)生产的SIM800C,其开发板为SIM800C mini V2.0。开发环境为IAR Embedded Workbench for ARM。 实现过程 创建产品和设备 首先,在物联网平台控制台创建产品和设备,获取设备证书信息(ProductKey、DeviceName和DeviceSecret)。设备证书信息需配置到设备端SDK中。当设备请求连接物联网平台时,物联网平台会根据设备证书信息进行设备身份验证。 操作步骤 登录物联网平台控制台。 创建产品。在左侧导航栏,选择设备管理 > 产品。 在产品管理页,单击创建产品,填入产品信息,然后单击保存。 在产品下,创建设备。在左侧导航栏,选择设备管理 > 设备。 在设备管理页,单击添加设备,在新创建的产品下添加设备。 执行结果 设备创建成功后,会弹出设备证书信息。您也可以在设备管理页,单击设备对应的查看,进入设备详情页查看设备证书信息。 搭建设备端开发环境 将MCU与通信模组开发板相连,搭建软件开发环境,创建工程项目,导入SDK,完成SDK配置。 背景信息 本示例中使用了两个开发板示意图如下。开发板NUCLEO-F103RB引脚示意图如下。SIM800C mini v2.0引脚示意图和说明如下。引脚说明PWR-开关机引脚。默认为自动开机。STA-状态监测引脚。GND-电源接地引脚。RXD-接收串口引脚。TXD-发送串口引脚。EN-电源使能引脚。VIN-5~18V电源输入。 连接硬件 将两个开发板的接收和发送串口连接,作为AT指令通道。如下图所示 搭建开发环境 本示例开发工具为STM32CubeMX。使用详情,请参见STM32Cube Ecosystem。 打开STM32CubeMX,并选择新建项目。 在Board Seletor中,搜索NUCLEO-F103RB,并单击STM32F103RBTx。 单击右上角Start Project。 在左侧Connectivity菜单中,勾选串口USART1作为MCU与模组通信的端口,并进行以下配置。 设置Mode为Asynchronous。 在Configuration栏,完成以下设置。在GPIO Settings下,确认Pin为PA9和PA10。 在NVIC Settings下,将USART1 global interrupt设置为Enable。 在Middleware下,选择FREERTOS,并配置为使用计数信号量和堆大小,用于给每个线程分配栈。 在Project Manager页签下,完成Project设置。 单击右上角GENERATE CODE,生成代码工程。 开发设备端 使用的C语言Link Kit SDK将通信模组接入物联网平台。其他硬件平台也可以在上述SDK获取文档中获取相关SDK自主调试。 设备端SDK配置 单击这里下载C语言Link Kit SDK 3.0.1版。 从下载包中提取SDK代码。本文以Linux系统操作为例。运行make menuconfig。 选中ATM Configurations,单击Select。选中AT HAL Configurations,单击Select。配置如下项目。 FEATURE_PLATFORM_HAS_STDINT=y FEATURE_PLATFORM_HAS_OS=y FEATURE_INFRA_STRING=y FEATURE_INFRA_NET=y FEATURE_INFRA_LIST=y FEATURE_INFRA_LOG=y FEATURE_INFRA_LOG_ALL_MUTED=y FEATURE_INFRA_LOG_MUTE_FLW=y FEATURE_INFRA_LOG_MUTE_DBG=y FEATURE_INFRA_LOG_MUTE_INF=y FEATURE_INFRA_LOG_MUTE_WRN=y FEATURE_INFRA_LOG_MUTE_ERR=y FEATURE_INFRA_LOG_MUTE_CRT=y FEATURE_INFRA_TIMER=y FEATURE_INFRA_SHA256=y FEATURE_INFRA_REPORT=y FEATURE_INFRA_COMPAT=y FEATURE_DEV_SIGN=y FEATURE_MQTT_COMM_ENABLED=y FEATURE_MQTT_DEFAULT_IMPL=y FEATURE_MQTT_DIRECT=y FEATURE_DEVICE_MODEL_CLASSIC=y FEATURE_ATM_ENABLED=y FEATURE_AT_TCP_ENABLED=y FEATURE_AT_PARSER_ENABLED=y FEATURE_AT_TCP_HAL_SIM800=y 配置完成后,运行./extract.sh提取代码。提取的代码位于output/eng目录。其中,各子目录分别包含的代码如下。atm -- AT指令收发模块dev_sign -- 设备身份认证模块infra -- 内部实现模块mqtt -- MQTT协议模块wrappers -- HAL对接模块在wrappers目录下,新建文件wrappers.c,该文件中的代码需实现以下HAL函数。 int32_t HAL_AT_Uart_Deinit(uart_dev_t *uart) int32_t HAL_AT_Uart_Init(uart_dev_t *uart) int32_t HAL_AT_Uart_Recv(uart_dev_t *uart, void *data, uint32_t expect_size, uint32_t *recv_size, uint32_t timeout) int32_t HAL_AT_Uart_Send(uart_dev_t *uart, const void *data, uint32_t size, uint32_t timeout) int HAL_GetDeviceName(char device_name[IOTX_DEVICE_NAME_LEN]) int HAL_GetDeviceSecret(char device_secret[IOTX_DEVICE_SECRET_LEN]) int HAL_GetFirmwareVersion(char *version) int HAL_GetProductKey(char product_key[IOTX_PRODUCT_KEY_LEN]) void *HAL_Malloc(uint32_t size) void HAL_Free(void *ptr) void *HAL_MutexCreate(void) void HAL_MutexDestroy(void *mutex) void HAL_MutexLock(void *mutex) void HAL_MutexUnlock(void *mutex) void *HAL_SemaphoreCreate(void) void HAL_SemaphoreDestroy(void *sem) void HAL_SemaphorePost(void *sem) int HAL_SemaphoreWait(void *sem, uint32_t timeout_ms) int HAL_ThreadCreate(void **thread_handle, void *(*work_routine)(void *), void *arg, hal_os_thread_param_t *hal_os_thread_param, int *stack_used) void HAL_SleepMs(uint32_t ms) void HAL_Printf(const char *fmt, ...) int HAL_Snprintf(char *str, const int len, const char *fmt, ...) uint64_t HAL_UptimeMs(void) 单击这里下载wrappers.c文件的代码Demo。 在代码Demo中,替换设备证书信息为您的设备证书信息。 说明 如果您不是使用NUCLEO-F103RB通信模组开发板,需在配置时,设置FEATURE_AT_TCP_HAL_SIM800=n。且wrappers.c文件中代码需实现以下HAL函数。 int HAL_AT_CONN_Close(int fd, int32_t remote_port) int HAL_AT_CONN_Deinit(void) int HAL_AT_CONN_DomainToIp(char *domain, char ip[16]) int HAL_AT_CONN_Init(void) int HAL_AT_CONN_Send(int fd, uint8_t *data, uint32_t len, char remote_ip[16], int32_t remote_port, int32_t timeout) int HAL_AT_CONN_Start(at_conn_t *conn) int32_t HAL_AT_Uart_Deinit(uart_dev_t *uart) int32_t HAL_AT_Uart_Init(uart_dev_t *uart) int32_t HAL_AT_Uart_Recv(uart_dev_t *uart, void *data, uint32_t expect_size, uint32_t *recv_size, uint32_t timeout) int32_t HAL_AT_Uart_Send(uart_dev_t *uart, const void *data, uint32_t size, uint32_t timeout) int HAL_GetDeviceName(char device_name[IOTX_DEVICE_NAME_LEN]) int HAL_GetDeviceSecret(char device_secret[IOTX_DEVICE_SECRET_LEN]) int HAL_GetFirmwareVersion(char *version) int HAL_GetProductKey(char product_key[IOTX_PRODUCT_KEY_LEN]) void *HAL_Malloc(uint32_t size) void HAL_Free(void *ptr) void *HAL_MutexCreate(void) void HAL_MutexDestroy(void *mutex) void HAL_MutexLock(void *mutex) void HAL_MutexUnlock(void *mutex) void *HAL_SemaphoreCreate(void) void HAL_SemaphoreDestroy(void *sem) void HAL_SemaphorePost(void *sem) int HAL_SemaphoreWait(void *sem, uint32_t timeout_ms) int HAL_ThreadCreate(void **thread_handle, void *(*work_routine)(void *), void *arg, hal_os_thread_param_t *hal_os_thread_param, int *stack_used) void HAL_SleepMs(uint32_t ms) void HAL_Printf(const char *fmt, ...) int HAL_Snprintf(char *str, const int len, const char *fmt, ...) uint64_t HAL_UptimeMs(void) 将SDK整合到IAR工程中。如下图所示。 运行SDK,进行测试。运行成功后,设备端本地日志如下图。 在物联网平台控制台,监控运维 > 日志服务中,也可查看设备上报数据到云端的日志。 阿里云物联网平台公共实例,18元/年起:点此购买物联网平台专属实例,1万台设备接入低至9.5元/天,更划算:查看文档按用量付费6折起:点此购买
阿里云物联网平台公共实例,18元/年起:点此购买 按用量付费6折起:点此购买 NodeMCU(ESP8266)接入阿里云物联网平台 PIR只有三个口,分别是VCC,GND和输出口。接线方法如下(NodeMCU的D7相当于arduino里的Pin 13) 物模型定义 C程序代码 esp8266.ino 代码 #include <ESP8266WiFi.h> /* 依赖 PubSubClient 2.4.0 */ #include <PubSubClient.h> /* 依赖 ArduinoJson 5.13.4 */ #include <ArduinoJson.h> #define SENSOR_PIN 13 /* 连接您的WIFI SSID和密码 */ #define WIFI_SSID "路由器SSID" #define WIFI_PASSWD "密码" /* 设备的三元组信息*/ #define PRODUCT_KEY "设备PRODUCT_KEY" #define DEVICE_NAME "替换DEVICE_NAME" #define DEVICE_SECRET "替换DEVICE_SECRET" #define REGION_ID "cn-shanghai" /* 线上环境域名和端口号,不需要改 */ #define MQTT_SERVER PRODUCT_KEY ".iot-as-mqtt." REGION_ID ".aliyuncs.com" #define MQTT_PORT 1883 #define MQTT_USRNAME DEVICE_NAME "&" PRODUCT_KEY #define CLIENT_ID "esp8266|securemode=3,timestamp=1234567890,signmethod=hmacsha1|" // 算法工具: http://iot-face.oss-cn-shanghai.aliyuncs.com/tools.htm 进行加密生成password // password教程 https://www.yuque.com/cloud-dev/iot-tech/mebm5g #define MQTT_PASSWD "参考上面password教程,算法工具生成" #define ALINK_BODY_FORMAT "{\"id\":\"123\",\"version\":\"1.0\",\"method\":\"thing.event.property.post\",\"params\":%s}" #define ALINK_TOPIC_PROP_POST "/sys/" PRODUCT_KEY "/" DEVICE_NAME "/thing/event/property/post" unsigned long lastMs = 0; WiFiClient espClient; PubSubClient client(espClient); void callback(char *topic, byte *payload, unsigned int length) { Serial.print("Message arrived ["); Serial.print(topic); Serial.print("] "); payload[length] = '\0'; Serial.println((char *)payload); } void wifiInit() { WiFi.mode(WIFI_STA); WiFi.begin(WIFI_SSID, WIFI_PASSWD); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("WiFi not Connect"); } Serial.println("Connected to AP"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); Serial.print("espClient ["); client.setServer(MQTT_SERVER, MQTT_PORT); /* 连接WiFi之后,连接MQTT服务器 */ client.setCallback(callback); } void mqttCheckConnect() { while (!client.connected()) { Serial.println("Connecting to MQTT Server ..."); if (client.connect(CLIENT_ID, MQTT_USRNAME, MQTT_PASSWD)) { Serial.println("MQTT Connected!"); } else { Serial.print("MQTT Connect err:"); Serial.println(client.state()); delay(5000); } } } void mqttIntervalPost() { char param[32]; char jsonBuf[128]; sprintf(param, "{\"idle\":%d}", digitalRead(13)); sprintf(jsonBuf, ALINK_BODY_FORMAT, param); Serial.println(jsonBuf); boolean d = client.publish(ALINK_TOPIC_PROP_POST, jsonBuf); Serial.print("publish:0 失败;1成功"); Serial.println(d); } void setup() { pinMode(SENSOR_PIN, INPUT); /* initialize serial for debugging */ Serial.begin(115200); Serial.println("Demo Start"); wifiInit(); } // the loop function runs over and over again forever void loop() { if (millis() - lastMs >= 5000) { lastMs = millis(); mqttCheckConnect(); /* 上报 */ mqttIntervalPost(); } client.loop(); if (digitalRead(SENSOR_PIN) == HIGH){ Serial.println("Motion detected!"); delay(2000); } else { Serial.println("Motion absent!"); delay(2000); } } PubSubClient.h 修改参数 运行效果 阿里云物联网平台公共实例,18元/年起:点此购买 按用量付费6折起:点此购买
除钉钉群外,售前咨询其他群聊二维码点此查看 活动说明 账号认证类型为个人认证(个人认证类型的账号无法享受物联网卡折扣)、企业认证的账号,报名参加活动后,2019年12月13日起至2020年3月31日(24点前)期间,设备接入量达到指定量级即可获得对应的福利:1、物联网卡和设备接入云资源的专属折扣(限1年服务期)2、物联网平台预付费代金券(2020年9月30日前可用,限物联网平台设备接入云资源的购买,可以跟上述的专属折扣一起使用) 常见问题 1、如何报名?报名地址:https://page.aliyun.com/form/act812694991/index.htm2、专属折扣什么时候生效?截止至2020年3月31日前,您的设备达到1万/5万/10万时,您即可与售前咨询群的小二沟通进行报名,申请生效折扣。每个用户只能获得一次优惠,建议您综合评估以获得最优的折扣力度。3、折扣可以购买哪些产品?物联网平台设备接入云资源:https://common-buy.aliyun.com/?commodityCode=iot_resource_bag#/buy物联网卡:https://package-buy.aliyun.com/?spm=5176.167084.1284902.a22.a9ab13ceFIhJ9D&planId=1018090001136301&aly_as=IjKeWGXA#/buy物联网卡仅限企业认证的客户购买,如果您是个人认证类型的账户是无法享受卡的优惠的。 注意:如果您的设备是属于医疗/检测类,请直接参加下面的活动助阵战疫,共克时艰,阿里云物联网平台为医疗设备提供免费服务
产品动态 一、物联网平台 官网 提供设备接入、管理,设备数据分析、可视化,AIoT应用开发和托管等一站式服务。 1、AMQP服务端订阅发布(不影响原HTTP/2服务的订阅的使用)【功能升级】详细内容 2、固件升级(OTA)计费公告 【功能商业化】详细内容 物联网平台固件升级功能计划于2019年12月27日正式开始计费,并会同步推出预付费和后付费套餐。 每月前100次免费,超出后0.2元/次,预付费套餐提供折扣。 只计算升级成功的次数,以设备上报升级成功后的版本为准。 升级一个设备成功后的计费次数和固件包大小有关,为固件包大小/100MB,并向上取整的值,例如150MB的固件升级一个设备成功后,计为2次升级。 3、支持RAM资源鉴权和资源组【功能升级】 详细内容 物联网平台新增支持针对子账号的RAM资源鉴权和资源组管理,方便您对子账号进行更细粒度的权限管控和资源管理。 新增支持对实例、产品、设备、分组、规则的RAM资源鉴权,可以授予子账号action+resource的组合权限,做到更细粒度的子账号权限管控。 产品和规则接入了RAM资源组,创建时可以指定所属的资源组,设备继承产品的资源组属性,可以授予子账号在某个资源组内的局部权限,不同子账号可以通过归属不同资源组做到资源隔离,子账号在控制台只能切换到有权限的资源组内进行资源管理。 在阿里云资源管理控制台也可以对物联网平台的产品和规则资源进行管理。 4、其他功能升级 OTA功能优化【功能升级】详细内容 优化固件升级的控制台交互,增强搜索能力,提升使用体验。 批次列表增加搜索框,可根据批次ID快速搜索到指定的批次,并可以和批次状态过滤同时使用。 增加固件下的设备列表TAB页,可以查看固件下所有的设备升级记录,并且可以使用DeviceName、批次ID、升级状态同时进行筛选。 优化固件下和批次下中不同状态设备列表的展示,并增加所有状态TAB页。 支持物模型历史数据上报【功能升级】 支持设备上报物模型历史数据,平台可存储历史数据,并支持通过规则引擎流转数据。 设备端C语言版本的SDK在v3.1.0支持了物模型历史数据上报。 SDK下载 设备上报的物模型历史数据也可通过规则引擎做数据流转。 查看使用文档 后续服务端订阅也会支持设备物模型历史数据的流转。 自动生成设备端物模型代码【功能升级】详细内容 在产品详情页的功能定义中,增加设备端物模型代码的生成和下载按钮,可以自动根据产品的物模型生成设备端代码,加速设备端的开发过程。 在线调试支持设置期望属性值【功能升级】 详细内容 在线调试中针对真实设备,可以设置期望属性值进行调试。 产品创建 【功能升级】 优化了创建产品时所属品类选择的交互,并重新调整了所有品类的层级类目。 产品使用限制 【功能升级】 产品名称新增支持4种特殊字符-@();产品功能定义中枚举项的参数值不再限制必须是00~99,只要是int32类型即可。 二、物联网网络管理平台 Link WAN 官网 阿里云提供的AIoT网络管理平台,提供组建网络、使用网络、分享网络、数据流转等能力,支持最新LoRa WAN协议。 物联网络管理平台开始对外收费 详细内容 每个账号提供3个网关接入,提供后付费和预付费两种收费模式,预付费按网关接入量收费。 分享网络需购买网络凭证(10元/个)。 三、物联网安全 阿里云推出IoT固件安全检测服务 详细内容 支持Linux、RTOS系统固件,包括且不限于Yocto、OpenWrt、uClinux、Android、AliOS Things等。 每个账号提供1次免费试用,预付费服务。 社区精品 广州峰会干货回顾:企业如何选择设备上云方案? 立即了解 IoT Studio 一站式服务AIoT开发者【产品新特性】 立即了解 阿里云技术专家回顾物联网平台搭建过程中的技术挑战 立即了解 用户活动 物联网平台PD喊您来提建议啦!立即了解
[TOC] 产品动态 一、物联网平台 官网 提供设备接入、管理,设备数据分析、可视化,AIoT应用开发和托管等一站式服务。 1、AMQP服务端订阅发布(不影响原HTTP/2服务的订阅的使用)【功能升级】详细内容 2、固件升级(OTA)计费公告 【功能商业化】详细内容 物联网平台固件升级功能计划于2019年12月27日正式开始计费,并会同步推出预付费和后付费套餐。 每月前100次免费,超出后0.2元/次,预付费套餐提供折扣。 只计算升级成功的次数,以设备上报升级成功后的版本为准。 升级一个设备成功后的计费次数和固件包大小有关,为固件包大小/100MB,并向上取整的值,例如150MB的固件升级一个设备成功后,计为2次升级。 3、支持RAM资源鉴权和资源组【功能升级】 详细内容 物联网平台新增支持针对子账号的RAM资源鉴权和资源组管理,方便您对子账号进行更细粒度的权限管控和资源管理。 新增支持对实例、产品、设备、分组、规则的RAM资源鉴权,可以授予子账号action+resource的组合权限,做到更细粒度的子账号权限管控。 产品和规则接入了RAM资源组,创建时可以指定所属的资源组,设备继承产品的资源组属性,可以授予子账号在某个资源组内的局部权限,不同子账号可以通过归属不同资源组做到资源隔离,子账号在控制台只能切换到有权限的资源组内进行资源管理。 在阿里云资源管理控制台也可以对物联网平台的产品和规则资源进行管理。 4、其他功能升级 OTA功能优化【功能升级】详细内容 优化固件升级的控制台交互,增强搜索能力,提升使用体验。 批次列表增加搜索框,可根据批次ID快速搜索到指定的批次,并可以和批次状态过滤同时使用。 增加固件下的设备列表TAB页,可以查看固件下所有的设备升级记录,并且可以使用DeviceName、批次ID、升级状态同时进行筛选。 优化固件下和批次下中不同状态设备列表的展示,并增加所有状态TAB页。 支持物模型历史数据上报【功能升级】 支持设备上报物模型历史数据,平台可存储历史数据,并支持通过规则引擎流转数据。 设备端C语言版本的SDK在v3.1.0支持了物模型历史数据上报。 SDK下载 设备上报的物模型历史数据也可通过规则引擎做数据流转。 查看使用文档 后续服务端订阅也会支持设备物模型历史数据的流转。 自动生成设备端物模型代码【功能升级】详细内容 在产品详情页的功能定义中,增加设备端物模型代码的生成和下载按钮,可以自动根据产品的物模型生成设备端代码,加速设备端的开发过程。 在线调试支持设置期望属性值【功能升级】 详细内容 在线调试中针对真实设备,可以设置期望属性值进行调试。 产品创建 【功能升级】 优化了创建产品时所属品类选择的交互,并重新调整了所有品类的层级类目。 产品使用限制 【功能升级】 产品名称新增支持4种特殊字符-@();产品功能定义中枚举项的参数值不再限制必须是00~99,只要是int32类型即可。 二、物联网网络管理平台 Link WAN 官网 阿里云提供的AIoT网络管理平台,提供组建网络、使用网络、分享网络、数据流转等能力,支持最新LoRa WAN协议。 物联网络管理平台开始对外收费 详细内容 每个账号提供3个网关接入,提供后付费和预付费两种收费模式,预付费按网关接入量收费。 分享网络需购买网络凭证(10元/个)。 三、物联网安全 阿里云推出IoT固件安全检测服务 详细内容 支持Linux、RTOS系统固件,包括且不限于Yocto、OpenWrt、uClinux、Android、AliOS Things等。 每个账号提供1次免费试用,预付费服务。 社区精品 广州峰会干货回顾:企业如何选择设备上云方案? 立即了解 IoT Studio 一站式服务AIoT开发者【产品新特性】 立即了解 阿里云技术专家回顾物联网平台搭建过程中的技术挑战 立即了解 用户活动 物联网平台PD喊您来提建议啦!立即了解
一站式开发者服务 分享者:张辉(花名士诚),阿里云高级产品专家
设备上云最佳实践详解 分享者:王雪明(花名一澄),阿里云解决方案架构师 查看完整视频 设备上云资源 设备上云收费按设备与云端连接时长(1元/百万分钟)、收发消息量(1.8元/百万分钟)收费,OTA按次收费(0.2元/次)1、按量购买,6折起,5000设备接入月均不到700元,OTA资源也可以在此购买哦2、限时活动等你报名:设备接入越多越划算,挑战0.8折,劲省92%资费(物联网卡和物联网平台设备接入资源)
-->>产品官网<<--
阿里云物联网络管理平台为企业用户提供便捷的组网能力,每个网关接入费用低至10元 工业和信息化部无线电管理局昨日在官网发布公告指出,为适应无线电技术发展趋势,深入贯彻“放管服”精神,落实《中华人民共和国无线电管理条例》,切实减轻企业负担,近日,工业和信息化部发布了2019年第52号公告,对微功率短距离无线电发射设备生产、进口、销售和使用进行了规范(点击文末阅读原文查看)。 由于在2017年12月13日、以及2018年11月28日,无管局都发布过类似公告,物联网技术Lora的频段问题备受业界关注,因此本次公告如何对待LoRa,也成为圈内讨论的话题。有的自媒体号在工信部公告发布后宣称“LoRa已死”,不过并没有提供任何具有说服力的材料。事实上,LoRa在没有拿到国家法定频谱的状态下,过去这几年被市场驱动着不断前行,已经形成了完整的物联网生态圈,成为全球LoRa生态的核心。有业内人士对C114表示,本次无管局第三度发布公告,从政策层面对LoRa给予支持的同时,进行了一定的限制。换言之,LoRa在中国深耕多年,领取了一张“特别通行证”。 LoRa艰难的领证之路 C114一直都是LoRa产业最严肃的关注者。2017年12月工信部公开征求对《微功率短距离无线电发射设备技术要求(征求意见稿)》的意见,对多个频段的使用增加了物联网应用限制,尤其是针对470-510MHz频段提出了 “限单频点使用,不能用于组网应用”的规定。如果“意见稿”实施,对运行在这一频段的所有物联网技术将是致命打击,令LoRa产业界人心惶惶。(见C114报道:一封《征求意见稿》,物联网产业格局大变天?)2018年1月11日(《意见稿》反馈截止日前),LoRa产业界自发地组织起来,在北京举办了一场“为物联网未来发声——物联网微功率频谱应用研讨会”,经过激烈的讨论后,达成了“十点共识”。最核心的共识是:在1GHz频点以下的、完全免费的物联网应用免授权频段,是推动我国物联网发展的核心基础条件之一,也是在物联网领域中实现国家信息安全和防止无线电干扰的重要手段,无管局应当予以高度重视并尽早落实推出,以建立推动我国物联网进一步发展的千秋大业。(见C114报道:为物联网未来发声:数百家物联网企业向无管局反馈意见并提出十点共识;一场关乎物联网产业方向的研讨会:如何理解“十点共识”?)无管局虽然没有代表出席本次会议,但很快通过专门沟通渠道了解到了LoRa产业界的诉求,并做了积极反馈。2019年1月16日,无管局在官网发布《微功率短距离无线电设备问答》,可以看作是对产业界的回应。当时一位业内人士表示,“这次不得不为工信部点赞,15号反馈意见截止,16号就给我们结论,把对我们的影响减小到最小。通过积极和无管局领导展开友好协商讨论,取得了良好的反馈。我们相当于是把坏事变成了好事,让主管部门听到了、也看到了一个蓬勃发展的产业。”(见C114报道:解读无管局《回答》:充分理解物联网产业诉求,值得点赞!) 经过LoRa产业界一年的沟通,2018年11月28日,无管局对征求意见稿进行了完善和修改,放宽了限制,允许470-510MHz用于组网应用。随后举办的2018第三届中国LoRa物联网国际峰会上,LoRa产业界展示了LoRa在中国的繁荣成果,并表示,频谱问题能够最终解决。(见C114报道:顽强的LoRa:重压之下茁壮成长 成为物联网主流标准)2019年4月2号,无管局还专门主持了一个小范围的研讨会(有20多家企业参加),专门讨论了业界2018年底针对第二次《征求意见稿》后反馈的信息的处理意见。直到昨日,无管局正式发布公告提出:“470-510MHz限在建筑楼宇、住宅小区及村庄等小范围内组网应用,任意时刻限单个信道发射。”意味着LoRa终于领证。“这与我们之前与无管局沟通的结果,基本上是一致的,没有太大差别。”一位LoRa产业界人士对C114表示。 这是一张特别通行证 C114与多位LoRa产业界人士就无管局的政策进行了沟通。一位业内人士表示,无管局本次公告基本上就落定了,应该不会再调整。对LoRa产业链来说,两年来的积极争取,总算取得了一个积极的成果。一位业内人士在圈内的发言表示:“对LoRa应该是利好啊,怎么理解成利空了。2017年初稿LoRa是不让搞; 2018年二稿LoRa只能单频点单信道用于民用抄表; 现在正式稿是只能单频点发送,可以用于企业应用,这明显应用空间大大拓展了。同时目前LoRa基站采用单芯片1301就是单频点发送,对全双工更没影响,全双工也是单下行的。”同时,无管局本次公告,一方面给了470-510MHz频段组网,另一方面则严格限制了发射时间,从5秒下降到了1秒;此外增加了应用场景限制,而且不可变更。那么,LoRa是否就被局限在一个很小的应用场景内,只能做一些特定的应用呢?“并不是。”一位LoRa企业高层对C114强调,LoRa采用扩频技术,1秒的限制尽管会带来一些影响,但本质上影响不大,不影响LoRa继续向前发展。当然,从5秒降至1秒,无管局有自己的考虑,毕竟物联网产业不止有LoRa一种技术。从应用场景来说,无管局早在2005年就对物联网应用场景做了相关规定,但事实上十多年来物联网技术不断发展,应用场景不断拓宽,目前已经很难界定具体场景。从这个角度看,这个公告对应用场景的规定过于细致了,执行起来很难明确场景。换言之,并不会对LoRa的应用拓展带来实质性的影响。不过在C114看来,这依然会有一些负面影响,无管局本次公告,对LoRa而言只能说是一个中性的政策,不管是发射时间、应用场景,以及增加功率谱密度限制等,都具有相应的针对性。一些企业考虑到政策因素,相应的物联网部署会多多掂量;对有意投资LoRa等物联网技术的资本来说,这也会是一个不可控的因素。C114认为,本次公告,是无管局给LoRa发放的一张“特别通行证”。“虽不满意,但可接受。”上述LoRa企业高层表示,LoRa产业会继续向前发展。 LoRa与NB-IoT:万法归宗 LoRa的身份问题之所以备受关注,一方面是众多非授权频谱LPWAN中,LoRa击败了SigFox等竞争对手脱颖而出,从民营小企业开始,逐步获得了中兴、阿里巴巴、腾讯、广电、联通等大企业和运营商的青睐,在中国形成了一个繁荣的生态系统。一方面行业企业看中LoRa优秀的技术特性,面临NB-IoT等政策更支持的技术,在市场中敢打敢拼,另一方面芯片供应商Semtech愿意将知识产权授权给中国企业自行开发,其开放心态也是成就LoRa的重要因素。谈LoRa不能不谈NB-IoT。作为一种基于LTE的低速率蜂窝物联网技术,NB-IoT是电信运营商部署物联网的重要选择。2017年6月,工信部办公厅下发《关于全面推进移动物联网(NB-IoT)建设发展的通知》,要求到2020年,我国NB-IoT基站规模要达到150万个,实现对于全国的普遍覆盖以及深度覆盖。 据C114了解,NB-IoT在2018年商用后并不如人意,而LoRa在中国的芯片发货量就达到千万级。但NB-IoT进入2019年逐步上量,最先发力NB-IoT的中国电信,在上个月宣布其NB-IoT燃气表、水表用户数双双突破千万。按照这个势头发展下去,2020年NB-IoT可能会出现亿级的行业应用。尽管两种技术分别出身“庙堂”和“江湖”,存在较大的竞争关系,但经过市场的洗礼,均迎来了繁荣发展的局面,可谓万法归宗。此外,ZETA等物联网技术也在不断出现。本次无管局公告,通过监管的“有形之手”在政策层面给了LoRa身份,剩下的,就交给市场的“无形之手”来选择吧。 注:本文转载自C114通信网阅读原文
2022年04月
2022年01月
2021年12月
2021年03月
2020年11月
2020年09月
2020年08月
2020年07月
2020年06月
2020年05月
2020年03月
2020年02月
2020年01月
2019年12月
2019年11月
物联网平台不建议固定IP接入,风险非常大!
物联网平台建议域名接入,详细文档请点击: https://help.aliyun.com/document_detail/73742.html
https://help.aliyun.com/document_detail/161047.html
调研已经截止了哈
这个API 是组播命令操作,必须有开通专业版的用户才可成功调用,请留意控制台右上角显示的版本差别,"基础版" or "专业版" "
阿里的mqtt两个客户端能不能客户端A发布topic C,客户端B订阅topic C,然后A可以发布topicC消息,B可以直接收到客户端A发布的topicC消息?
from 钉钉群 Jason胡汭涛
优势是综合成本低,可拓展性非常强,拓展也很便捷,安全性强。提供应用开发工具IoT Studio,支持免代码生成移动或者WEB应用:https://developer.aliyun.com/article/719756?spm=a2c6h.12873581.0.0.c53b58f0ti5OVq&groupCode=aliiot
建议提交工单
https://help.aliyun.com/document_detail/30523.html?spm=a2c4g.11174283.6.546.3a8b1668FTMaKx
如果是服务端订阅,这里有 https://help.aliyun.com/document_detail/101460.html
https://help.aliyun.com/document_detail/89227.html 这个文档是云云对接的,您这边是需要实现在物联网平台收到设备的上报数据吧? 先排除云端的问题,您体验下虚拟设备上云并且上报数据,看一下:https://developer.aliyun.com/article/717951
如果确实需要云云对接,这个问题建议提工单咨询
用规则引擎,把数据转发到自己的数据库
可以
https://help.aliyun.com/document_detail/57699.html?spm=a2c4g.11186623.6.661.5c027144NPyNPG