图中较为全面的抽象化了物联网的整个流程,数据从各种各样的设备如机械设备、人体穿戴设备、移动设备等接到IoT套件中,当设备支持标准的通信协议时,通过在设备端写SDK的方式,向云上传输数据,如老旧的设备甚至可以集成芯片去支持新的通信协议;阿里云支持如C/JAVA版本的MQTT及CCP协议,反过来通过云上服务器端也提供如:JAVA/Python/.NET/PHP等SDK来管理和控制设备,例如开、关灯等场景。
IoT套件的帮助页面提供更多的介绍以及SDK下载和样例。
本次实践以图中加粗红线的为主线实践整个解决方案中的最简易流程,目的整个让链路通过几个例子形象的串起来。
数据进入IoT套件后,由规则引擎解析数据成结构化数据,规则引擎用类似SQL的语法去解析JSO的数据,但它不是标准的SQL语法,只是更已于用户理解。解析的部分形如:
SELECT nowtime,deviceid,devicecategory, "location.lng" as lng, "location.lat" as lat,RunningTime, "pressure.InletPr" as InletPr, "pressure.OutletPr" as outletPr, "Frequency.No1.[0]" as No1FreqTemp, "Frequency.No1.[1]" as No1FreqTotalKW, "Frequency.No2.[0]" as No2FreqTemp, "Frequency.No2.[1]" as No2FreqTotalKW, "Frequency.No3.[0]" as No3FreqTemp, "Frequency.No3.[1]" as No3FreqTotalKW, "FreqFailure.[0]" as No1FreqFailure, "FreqFailure.[1]" as No2FreqFailure, "FreqFailure.[2]" as No3FreqFailure FROM "/1000076497/pump" WHERE RunningTime>1数据解析完成之后,添加转发方法,把数据转发至大数据平台的数据枢纽DataHub中。在者之前也应在DataHub中创建对应的Topic,Schema如:
nowtime STRING, deviceid BIGINT, devicecategory STRING, lng DOUBLE, lat DOUBLE, InletPr DOUBLE, OutletPr DOUBLE, RunningTime DOUBLE, No1FreqTemp DOUBLE, No1FreqTotalKW DOUBLE, No2FreqTemp DOUBLE, No2FreqTotalKW DOUBLE, No3FreqTemp DOUBLE, No3FreqTotalKW DOUBLE, No1FreqFailure BIGINT, No2FreqFailure BIGINT, No3FreqFailure BIGINT 3.DataHub数据分发DataHub起着数据枢纽的作用,可将数据分发到离线规模计算、实时流计算、多维分析等。本文数据将以订阅的方式流向流计算,只要DataHub进来数据,就会触发流计算的任务。
数据也可归档到ODPS中用于建模等离线计算和历史数据沉淀。
4.流式计算分析 在流计算中创建以下的简单任务,形如: -------------------------- --DataHub数据源 -------------------------- CREATE STREAM TABLE device_condition ( nowtime STRING, deviceid BIGINT, devicecategory STRING, lng DOUBLE, lat DOUBLE, inletpr DOUBLE, outletpr DOUBLE, runningtime DOUBLE, no1freqtemp DOUBLE, no1freqtotalkw DOUBLE, no2freqtemp DOUBLE, no2freqtotalkw DOUBLE, no3freqtemp DOUBLE, no3freqtotalkw DOUBLE, no1freqfailure BIGINT, no2freqfailure BIGINT, no3freqfailure BIGINT ) WITH ( type='datahub', endpoint='http://dh-cn-hangzhou-internal.aliyuncs.com', roleArn=' XXXXX ', projectName='XXXX', topic='XXXX' ); ----------------------------------------- ---MySQL result ----------------------------------------- CREATE RESULT TABLE result_state ( gmtdate STRING, messagecount BIGINT, maxtemp DOUBLE, avgtemp DOUBLE, PRIMARY KEY (gmtdate) ) WITH ( type='rds', url='jdbc:mysql://XXXXXX.mysql.rds.aliyuncs.com:3306/iot_demo', username='XXX', password='XXX', tableName='result_state' ); insert into result_state select nowtime as gmtdate, count(deviceid) as messagecount, max(no1freqtemp) as maxtemp, sum(distinct no1freqtemp) as avgtemp from device_condition group by nowtime; 5.业务应用 业务部分,可以将流式计算的结果存入关系型数据库RDS/高并发读写的OTS等,或者做更多的业务分析应用,在此过程中也可以根据结果反过来控制设备,使其能动态的调整,以达到智能的效果。 6.数据可视化 联物网的数据需要实时分析并能及时从宏观层面得以呈现,可以用DataV来实现相应效果,参考教程 DataV实践 ,最后得到形如: 相关资源:python入门教程(PDF版)