2022AIoT物聯(lián)網(wǎng)規(guī)則引擎、監(jiān)控運維技術(shù)_第1頁
2022AIoT物聯(lián)網(wǎng)規(guī)則引擎、監(jiān)控運維技術(shù)_第2頁
2022AIoT物聯(lián)網(wǎng)規(guī)則引擎、監(jiān)控運維技術(shù)_第3頁
2022AIoT物聯(lián)網(wǎng)規(guī)則引擎、監(jiān)控運維技術(shù)_第4頁
2022AIoT物聯(lián)網(wǎng)規(guī)則引擎、監(jiān)控運維技術(shù)_第5頁
已閱讀5頁,還剩180頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

阿里云IoT規(guī)則引擎SQL參 兩張圖秒懂IoT設(shè)備數(shù)據(jù)云端流 IoT設(shè)備數(shù)據(jù)轉(zhuǎn)存到DB表格存 IoT設(shè)備運行狀態(tài)緩存到 IoT設(shè)備之間M2M場景聯(lián)動實 App和IoT設(shè)備數(shù)據(jù)實時同步和控 IoT物聯(lián)網(wǎng)平臺3種計費方 IoT平臺消息軌跡全景 IoT平臺性能壓測工具 IoT設(shè)備OTA固件升級實 用Wireshark抓包分析IoT設(shè)備網(wǎng)絡(luò)行 IoT平臺日志服務(wù)詳 IoT設(shè)備日志采集利器服 IoT平臺端到端開發(fā)實 7分鐘視頻講解全鏈路開 自建MQTT遷移阿里云 TCP協(xié)議IoT設(shè)備遷移上 AI人臉識別,監(jiān)控老板行蹤 IoT+DB+DataV搭建實時環(huán)境監(jiān)控大 IoT+TSDB+QuickBI環(huán)境監(jiān) 20元自制Arduino環(huán)境監(jiān)測 IoT二維碼收款播報音 IoT智能手持測溫槍開 IoTSQLIoTSQLIoTSQL在使用規(guī)則引擎時,處理數(shù)據(jù)邏輯通過一種類似SQL的語法來定義。SQL語句結(jié)構(gòu)如下:二、.SQLSQL語句的示例如下:deveNam)asdevceame,temperatureFROMpm25>設(shè)備在IoT ddevceame:dnimei=site西溪濕地-mqtt當設(shè)備消息在'/pk/dn/data'主題上發(fā)布,則觸發(fā)規(guī)則引擎數(shù)據(jù)處理SQL語句。如果"pm25"屬性大于60,SQL語句將提取selectIoTSQLpoom_mpoom_兩張圖秒懂IoT兩張圖秒懂IoTIoTSQLTopic可以轉(zhuǎn)發(fā)到RDS、表格存儲、HiTSDBDataHubStreamcomputeMaxcompute可以轉(zhuǎn)發(fā)到另一個Topic實現(xiàn)M2M可以轉(zhuǎn)發(fā)到隊列MQ可以轉(zhuǎn)發(fā)到消息服務(wù)MNSTopicSQL基礎(chǔ)版TopicTopic,數(shù)據(jù)格式是自定義的,物聯(lián)網(wǎng)平臺不高級版系統(tǒng)默認的Topicpayloadpayload>兩張圖秒懂IoTIoTIoTDB >IoT設(shè)備數(shù)據(jù)轉(zhuǎn)存到DBIoT設(shè)備數(shù)據(jù)轉(zhuǎn)存到DB開通物聯(lián)網(wǎng)套件pwwod設(shè)備上報數(shù)據(jù)結(jié)構(gòu)添加設(shè)備獲取三元組,添加標簽信息開通表格存儲服務(wù):wm三、IoT模擬設(shè)備的nodejs腳本:device-2-iot-2-啟動虛擬設(shè)備腳本:$nodedevice-2-iot-2-ots.js實時監(jiān)聽設(shè)備在線/實時監(jiān)聽設(shè)備在線/離線事件 >實時監(jiān)聽設(shè)備在線/topicTopicpayload數(shù)據(jù)格式:"time":"2018-08-3115:32:28.205","lastTime":"2018-08-3115:32:28.195",meamp)asmeamp,timeascuenmetatuscrrntTimeltTime了。SQL配置界面:DBstatuslastTime是最后一次通信時間currentTime是這條消息生成時< >IoTKey-Value的數(shù)據(jù)庫--表格存儲TResogD中,技術(shù)方案如下:10IoT平臺,具體通信Topic和payload如下://對應(yīng)payloadstatus:RUNIN,RUNNING,STOP,SHUTDOWNspeed:3000,waterOutput:125,//當前出水量okngme:72//工作時長xxTSeviceNme數(shù)據(jù)處理的SQL參考:devceame)asdevceame,attribute('city')ascity,meamp-MM-dd:mm)ascurrentTime,IoTNode.jsOTSkeyvarclientnewTableStore.Client({accessKeyId:'acceKe,secretAccessKey:'eceAceKe,endpoint:'表格存儲接入點',nancename:'ID',maRee:3varparams={ abeNme:'表名',pmaKe:[{devceame:'Id'}],maVeon:1cen.geopaa,function(err,data){if(err){console.log('error:',err);ifdaa..maKe){daao.maKe.fachfuncnem){console.log('======>getRow:',emname+'='+ddata.row.ttributes.forEach(function(item)console.log('\t\t'+em.cumname+'='+$$node======>getRow:deceNaexxxIoTIoTM2M >IoTM2MM2M(即cito-acie是一種端對端通信技術(shù)。IoT物聯(lián)網(wǎng)平臺支持使用規(guī)則引擎的Topic轉(zhuǎn)發(fā)功能,實現(xiàn)M2MIoTM2M能力和設(shè)備標簽功能,我們可以組合出設(shè)備Az001s001IoTz001targetId:s001。z001Topic:/a***h/z001/user/change/rangehood后,會在云端規(guī)則引擎處理后,轉(zhuǎn)發(fā)給油煙機s001訂閱的Topic:a***s001useronr/araTopicTopics001s001。四、配置M2MSQLrangehoodId,status,windPower3轉(zhuǎn)發(fā)數(shù)據(jù)過程中,我們用${rangehoodId}Nodejss001subscribeTopicvaroptions{productKey"替換",devceame:"替換",deviceSecret"替換",regionIdcn-shanghai"ccen.nmeage,function(topic,message){console.log("subtopic=>"+topic)conoeogmeage=>"+message)z001varoptions{productKey"替換",devceame:"替換",deviceSecret"替換",regionIdcn-shanghai"varpubTopic=functiongetPostData(){constpayloadJson={windPower:"high"console.log("PubTopic=>"+pubTopic)console.log("Payload=>"+JON.ngfpaadJon)returnJSON.stringify(payloadJson);s001z001z001IoTM2Ms001。s001IoTApp和App和IoT >AppIoTApp和IoTAppAppIoTTopicM2M)AppTopicAppTopicM2MTopicpayloadAppAppvaroptionsproductKey:"",devceame:"",deviceSecret:"",regionId:"cn-shanghai",varsendDataTopic="/"+ductKey+"/"+oon.evceNme+"/user/updata";varubmdoc="/"+ductKey+"/"+oon.dvceNae+varclient=if(error){cen.nmeage,function(topic,message){conoeogmeage,執(zhí)行Appif(topic==ubmopc)message=JSON.parse(message.toString())},10*MQTTIoT >IoT3IoTIoT3種計費方式< IoT3IoT儲等功能。根據(jù)企業(yè)IoT業(yè)務(wù)情況,評估設(shè)備接入量,消息上下行TPS,規(guī)則引擎流轉(zhuǎn)TPS,TPS,時序數(shù)據(jù)庫存儲規(guī)格,來確定實例費用。SLA鉑金版實例的計算、網(wǎng)絡(luò)、存儲資源完全獨享,穩(wěn)定性好,SLA購買鉑金版實例可享受大客戶服務(wù)支持,7*24 >IoTIoTIoT IoT|IoT阿里云IoT企業(yè)物聯(lián)網(wǎng)平臺上線了消息軌跡全景圖功能,幫助IoT開發(fā)者追蹤消息TraceIdIoTIoT設(shè)備到業(yè)務(wù)服務(wù)端全鏈路開發(fā)實戰(zhàn)。在日志服務(wù)的消息軌跡TraceIDOTS和AMQP隊列全過程和對應(yīng)時間點。PubAPI下發(fā)控制指令到設(shè)備后,在企業(yè)實例的控制臺,日志服務(wù)中,可在日志服務(wù)的消息軌跡TraceIDPubIoTIoT硬件設(shè) >IoTIoTIoTJMeter IoT平臺性能壓測工具(IoT)AB發(fā)送本文以充電寶機柜上報狀態(tài)場景為例介紹如何使用MQTT插件和JMeter腳本壓IoTMQTT服務(wù)性能。開通IoT物聯(lián)網(wǎng)設(shè)備接入服務(wù)。twwwlyompodtotJMeter5.1.1mo準備設(shè)備身份信息CSVIoTUserName、Password、ClientId3個身份信息,上報狀態(tài)數(shù)據(jù)時需要知道自身的productKey和evicNmeTopic。IoTUserNamePassword、ClientIdclient.csvJmeterMQTT下載mqtt-jmeter插件最新版本JAR包:mqtt-xmeter-2.0.2-jar-with-dependencies.jar:pghbmmx-jmeterJARJMeterlib/ext/編輯JMeterJMeter5.1.1配置客戶端CSV數(shù)據(jù)文件打開JMeter在JMeter左側(cè)文件目錄中右鍵單擊TestPlan,選擇Add>Threads(ThreadGroup在JMeter左側(cè)文件目錄中右鍵單擊TestPlan,選擇Add>Listener>>ViewResultsTree,添加ViewResultsTree監(jiān)聽器,方便本地調(diào)試測試腳本。在TestPlan區(qū)域右鍵單擊ThreadGroupAddLogicController>OncenlyController。JMeter中一個線程模擬一個MQTT客戶端設(shè)備,使用OncenlyController保證一個線程僅讀取一次客戶端CSV數(shù)據(jù)文件,綁定一條在TestPlan區(qū)域右鍵單擊OncenlController,選擇Add>ConfigeenCSVDataSetConfigCSVDataSetConfig對話框中配置Filnme:客戶端信息CSV文件路 UTF-Fileencoding:CSV文件編碼格式,本示例使 UTF-elimitr這里我們輸入#RecycleonEOF:是否循環(huán)讀取文件。選擇False。建立MQTT連接我們使用OncenlyControllerTestPlanOncelControllerAddmpl>MQTTConnect。MQTTConnectTestPlanThreadGroupAddmplMQTTPubaer。MQTTPubamlerQoSLevel:0,即只發(fā)送一次,Topicname:消息topic。MQTTtopic支持層次結(jié)構(gòu),使用/分割,類似文件pts_test/jmeterAddtmtminpayload:是否添加消息頭添加發(fā)送時間戳。一般勾選此項,方Payloads:thismessageisfrommete${clientId}!,即在消息體中添加客戶端ID,方便測試和調(diào)試檢查。在TestPlan區(qū)域單擊ThreadGroup,配置LoopCount為10(10在JMeter在ViewResultsTree在SummaryReportGraphResultsIoTIoTIoTOTA >IoTOTAIoTOTA固件升級TAver-theAirechnlgy)TTAT件升級,而不必讓運維人員各地奔波。本文以MQTT協(xié)議下的固件升級為例,介紹OTApic二、固件升級OTA流程MQTTTopicTopicTopicpYdomTopico$IoTTabTabTabIoTPayload8constoptions={productKey:"替換pk",devceame:"替換dn",deviceSecretds",regionIdcn-shanghai"constdeviceUpgrade=`/ota/device/upgrade/${ductKey}/${options.deviceName}`constdevceIfom=`/ota/device/inform/${ductKey}/${options.deviceName}`client.publish(deviceInform,geFmaeeon1-45-345a"))//OTAconstdeviceProgress=cen.nmeage,function(topic,message)functiondoUpgrade(message){message=JSON.parse(message)client.publish(deviceProgress,getOTAUpgradeData(23))2gnehod驗證文件簽名是否和sign////3//burn&functiongetOTAUpgradeData(step){constpayloadJson={"id":"params":"step":step,"desc":"xxxxxxxx"http://functiongeFmaeeonveon){constpayloadJson={"id":"params":{ >用WrehakIoT用W用Wrehak抓包分析IoT 用Wireshark抓包分析IoTir來幫我們分析設(shè)備行為,定位問題。下面我們通過一個簡單案例,給大家講解WirharkIoTNodejsdevice**nodealiyun-iot-constoptions{"productKeyPK",devceNme:DN","regionIdcn-shanghai"http://1emeoufuncn){},3*emeoufuncn){iet.pblih(/$duty}${optons.dviae/sr/pdae},5*emeoufuncn){},8*functiongetPostData(){constpayloadJson=temperature:ah.ooahandm)*20)+humidity:ah.foah.ndo)*20)+returnJSON.stringify(payloadJson);使用ehaIoTMQTTtcptcpandportMQTTwiresharkipdeviceIoTIPTCP上面截圖紅框部分就是TCP的三次握手行為。由device56150。MQTTCONNECTMQTTConnect點擊Connect記錄,在底部可以看到詳細報文。其中clientid,username,password是這次CONNECT身份驗證完成,IoTCONNACKCONNECTMQTTSUBSCRIBEdeviceIoTtopicdeviceTopic,見紅框部分。IoTdevice下圖展示了device向IoT物聯(lián)網(wǎng)平臺PUBLISH一條QoS=1TopicPayload。由于是QoS=1消息,IoT物聯(lián)網(wǎng)平臺會回復一條PUBACK給deviceMQTTDISCONNECTdeviceDISCONNECTMQTTTCPWirshrkIoTIoTTCPIoTIoT >IoTIoTIoTHubTopic如果消息對外通過規(guī)則引擎和服務(wù)端訂閱(AMQP/MNS)APIAPIAPI如果有消息發(fā)送到設(shè)備側(cè),IoTHubTopic一、設(shè)備上線/設(shè)備→IoTAMQP→ECS→服務(wù)AMQP(ACK響應(yīng))消息鏈路:業(yè)務(wù)服務(wù)器ECS(PubAPIIoT平臺(PublishIoT平臺(PubAckIoTIoT >IoTIoTIoT設(shè)備本地日MQTTPub"id":"params""utcTime":"utcTime":"2020-03-"logLevel":modue:"code""traceContext":"ai1289sa8dss","logContent":"networkerror""method":Payload結(jié)構(gòu)體參數(shù)說明:constconstlogTopic=//functiongetLogData(){constpayloadJson={params:[{"utcTime":"2020-03-"logLevel":modue:"code""utcTime":"2020-03-"logLevel":modue:"code""traceContext":"123456536",method:returnJSON.stringify(payloadJson);設(shè)備上報日志后,我們登錄控制臺,在日志服務(wù)里選擇產(chǎn)品,點擊設(shè)備本地日志的Tab,輸入設(shè)備名eviceName >IoTIoTIoT IoTIoTMQTTIoT建立雙向連接,設(shè)備上報采通過規(guī)則引擎配置把上報的數(shù)據(jù)實時流轉(zhuǎn)到業(yè)務(wù)服務(wù)器AMQP協(xié)議IoTAPI,下達控制指令一、創(chuàng)建IoT然后,在購買頁面,根據(jù)實際業(yè)務(wù)需求,選擇地域、實例類型、設(shè)備數(shù)量、消息上下行TPS規(guī)則引擎TPS立即購買接入點信息,AMQPAPI在企業(yè)實例的設(shè)備管理頁面,我們需要先創(chuàng)建一個產(chǎn)品家庭溫控器,數(shù)據(jù)通信以JSON格式,認證方式為設(shè)備秘鑰。MQTT協(xié)議接入到我們開通的企業(yè)實例。設(shè)備端應(yīng)Nodejsconstconstmqtt=require('aliyun-iot-varoptions={productKey:"產(chǎn)品productKey",devceame:"devceame,deviceSecretdeviceSecret",host:"MQTT接入點"http://2.MQTTconstclient=cen.nmeage,function(topic,message){console.log("topic"+topic)conoeogmeage"+message)setInterval(function()//3.上報溫濕度數(shù)據(jù)st`,getPostData(),{qos:0},5*functiongetPostData(){constpayloadJson={id:Date.now(),version:"1.0",params:{temperature:ah.ooahandm)*20)+humidity:ah.foah.ndo)*20)+method:console.log("payloadJson"+JON.ngfpaadJon)returnJON.ngfpaadJon;}四、數(shù)據(jù)存儲到首先,我們創(chuàng)建一個表格存儲實例IoTDataStore,建立一張數(shù)據(jù)表iot_data,以dim和tmesam為主鍵。如下圖:IoT云產(chǎn)品流轉(zhuǎn)中創(chuàng)建規(guī)則引擎SQL,配置流轉(zhuǎn)目的地數(shù)據(jù)處理SQLIoTAMQP方然后,我們在云產(chǎn)品流轉(zhuǎn)SQL,配置流轉(zhuǎn)目的地為上AccessKeyIoTAMQP連接,參考代碼如下:publicpublicstaticvoidmanng]args)throwsExceptionStringaccessKey="accessKey";StringaccessSecretaccessSecret";StringconsumerGroupId="Id";StringiotInstanceIdlonglongmeamp=hmacmd5,hmacsha1和hmacsha256Stringgnehodhmacsha1";StringclientId="ecs_"+System.currentTimeMillis();StringuserName=clientId+auhodeakgn"+",signMethod="++",timestamp="++",authId="++",iotInstanceId="++//passwordStringsignContent="authId="+accessKey+&meamp"+meam;Stringpassword=doSign(signContent,accessSecret,signMethod);//qpid-msURLStringconnectionUrl=filoe:(aqps://"+ioIstned+".aqp.otub.aiyns.o:5+Hashtable<String,String>hashtable=newHashtable<>();tb.pCox.TCETT"org.apache.qpid.jms.jndi.JmsInitContextcontext=newConnectionFactorycf=(ConnectionFactory)context.lookup("SBCF");Destinationqueue=(Destination)context.lookup("QUEUE");//CreateConnectionconnection=cf.eaeoneconueNme,password);(msonetooncion.addConcionisee(ymsonetioLstnr//Create//Session.CLIENT_ACKNOWLEDGE:收到消息后,需要手動調(diào)用//eion.UOAKNLDE:SDK自動ACK(推薦Sessionsession=connection.createSession(false,esion.T_CKWEGE//CreateReceiver在AMQP的回調(diào)中處理privateprivatestaticeageLenermeageLener=neweageLene){publicvoidonMessage(Messagemessage){try{byte[]body=meage.geBdbe.ca);Stringcontent=newStringtopic=Stringtag=message.getStringProperty("tag");("receivemessage"+",\ntopic="++",\nmessageId="++",\ntag="++",\ncontent="+}catch(Exceptione){IoT物聯(lián)網(wǎng)平臺提供的HTTPSAPI可以給指定設(shè)備下發(fā)控制指PubAPIconstconstco=constRPCClient=eqe@acoupo-constoptions=accessKeyaccessKey",accessKeySecret:"子賬號accessKeySecret"constclient=newRPCClient({accessKeyId:options.accessKey,endpoint:'-endpoint:'-bng.aunc.cm,apiVersion:'2018-01-20',//指令內(nèi)容constpayload={ahngode:2,ahngme:constparams={opcFName:"下行指令的MessageContent:newBuffer(JSON.stringify(payload)).toString("base64"),ProductKey:"產(chǎn)品ProductKey",IotInstanceIdId",Qos:1//3PubAPItry{constresponse=yieldclient.request('Pub',console.log("PubSUCCESS=====>",}catch(err)console.log("PubERROR=====>", >IoT77 7 >自建MQTT遷移阿里云自建MQTT自建MQTT遷移阿里云loT MQTTIoTMQTT企業(yè)10萬終端設(shè)備接入自建MQTT集群,設(shè)備15分鐘上報一次業(yè)務(wù)數(shù)據(jù)到接入MQTT集群,實時流轉(zhuǎn)到消息隊列Kafka中,業(yè)務(wù)系統(tǒng)從Kafka消費數(shù)據(jù),按業(yè)務(wù)邏輯管理人員通過手機App下發(fā)配置參數(shù)到業(yè)務(wù)系統(tǒng),業(yè)務(wù)系統(tǒng)調(diào)用MQTT集群的業(yè)務(wù)APIMQTTIoT設(shè)備做固件升級IoTendpoint配置規(guī)則引擎,把設(shè)備數(shù)據(jù)流轉(zhuǎn)AMQP消費組,業(yè)務(wù)服務(wù)器實時接收設(shè)IoT產(chǎn)品,連網(wǎng)方式WiFi(可以根據(jù)情況選擇JSON(TopicTopic最后,我們進入產(chǎn)品詳情Topic,點擊TopicTopic,IoTAMQP我們進入控制臺的服務(wù)端訂閱創(chuàng)建AMQP消費組擇云產(chǎn)品流轉(zhuǎn),點擊創(chuàng)建規(guī)則,選擇二進制格式(JSON結(jié)構(gòu)數(shù)據(jù))。如下SQL,IoTdevceame)asdevceame,meamp)asmeamp,payload()aspayloadFROM最后,我們配置數(shù)據(jù)轉(zhuǎn)發(fā)AMQP消費組MacnodejsMQTT連接,數(shù)據(jù)上報,指令接收。mqtt//varoptions{productKey"pk",devceame:"dn",deviceSecretds",12cen.nmeage,function(topic,message){console.log("topic"+topic)conoeogmeage"+message)3TopicsetInterval(functione.pbi(/{opos.podK/$opos.di/s/d/p},functiongetPostDataletpayload=D02+ah.foah.anom)*20)+++ah.foah.ndo)*20)+console.log("payload=["+payload+"]")returnJONngfpaoad;Java為例,演示設(shè)備數(shù)據(jù)接收和控制指令的下發(fā)。maven依賴如下:<!--<!--amqp1.0qpidclient--<artifactId>qpid-m-<!--aliyunpopsdk--<artifactId>aliyun-java-sdk-<!--IoTpopsdk--<artifactId>aliyun-java-sdk-IoTAMQP文檔:poom_iimportog.pace.cmmn.cdecbnaBae64;importog.pace.qdm.Jmonncon;mpotmpotog.pace.qdm.meage.JInbondeageDpach;mpotorg.slf4j.Logger;mpotmpotmpotjavax.crypto.spec.SecretKeySpec;mpotjavax.jms.*;mpotava.namngone;mpotava.namngInaone;.URI;mpotjava.util.Hashtable;publicclassAMQPClientprivatefinalstaticLoggerlogger=publicstaticvoidmanng]args)throwsException//參數(shù)說明,請參見上一篇文檔:AMQPStringaccessKey"ak";StringaccessSecretas";StringconsumerGroupIdID";longmeampem.cuenme);hmacmd5,hmacsha1和hmacsha256Stringgnehodhmacsha1";StringclientIdec+yem.cueme);//UserName組裝方法,請參見上一篇文檔:AMQP客戶端接入說明。StringuserNameclientIdauhodeakgn"+",signMethod="++",timestamp="++",authId="++",consumerGroupId="++//password:AMQPStringsignContent="authId="+accessKey+&meamp"+meamp;Stringpassword=doSign(signContent,accessSecret,signMethod);//qpid-msURLStringconnectionUrlfailover:(amqps://替換你的阿里云賬號UID.-shanghai.al+Hashtable<String,String>hashtable=newHashtable<>();hahabepuquue.UU,"default");tb.pott._ETT"org.apache.qpid.jms.jndi.JmsInitiContextcontext=newConnectionFactorycf=(ConnectionFactory)context.lookup("SBCF");Connectionconnection=cf.eaeoneconueNme,password);Jmonneon)conecon)adonnconLenemJonnecnLene);//Session.CLIENT_ACKNOWLEDGE:收到消息后,需要手動調(diào)用//eon.AUOAKOLD:SDK自動ACK(推薦Sessionsession=connection.createSession(false,//CreateReceiverMessageConsumerconsumer=session.createConsumer(queue);privatestaticeageLenermeageLener=neweageLene){publicvoidonMessage(Messagemessage){try{byte[]body=meage.geBdbe.ca);Stringcontent=newString(body);Stringtopic=StringmessageId=meage.gengoemeageId);("receivemessage"+",messageId="+//Session選擇的是eion.LNAKNOLDE,ACK//}catch(Exceptione){privatestaticCoeioitesontoLse=newCoeioiener(){publicvoidonConnectionEstablished(URIremoteURI){("onConnectionEstablished,emoe:},remoteURI);publicvoidonConnectionFailure(Throwableerror){publicvoidonConnectionInterrupted(URIremoteURI){("onConnectionInterrupted,emoe:},remoteURI);publicvoidonConnectionRestored(URIremoteURI){("onConnectionRestored,remoteUri:{}",remoteURI);publicvoidonInboundMessage(JmsInboundMessageDispatchenvelope)publicvoidonSessionClosed(Sessionsession,Throwablecause)publicvoidonnumeoeeageonumerconsumer,Throwablecause)publicvoidonduceedeageoducerproducer,Throwablecause)*password簽名計算方法,請參見上一篇文檔:AMQP客戶端接入說明。privateprivatestaticStringdoSign(StringtoSignString,Stringsecret,StringiMtodthrowsException{SecretKeySpecsigningKey=newSecretKeySpec(secret.getBytes(),signMethod);Macmac=Mac.getInstance(signMethod);byte[]rawHmac=mac.doFinal(toSignString.getBytes());returnBae64.ecoeBae64ngamac);PubAPIpoom_mmpotcomaunc.DeauAcen;mpotcomaunc.IAen;mpotcomaunc.eceon.encepon;mpotcomaunc.omde.2010420.ubeque;mpotcomaunc.omde.2010420.ubepone;file.DefaultProfile;mpotcomgoge.on.on;publicclassPubClient{publicstaticvoidmanng]args)DefaultProfileprofile=DefaultProfile.getProfile("替換你的"替換你的IAcsClientclient=newPubRequestrequestnewPubRequest();request.setTopicFullNamepkdn/user/cmd/down");rrequest.setMessageContent("Q01ELDgyOTIzLGFkMzIyCiA=");//原始報文:request.setProductKeypk");tryPubResponseresponse=client.getAcsResponse(request);System.out.println(newGson().toJson(response));}catch(ClientExceptione){em.ou.nnode:"+e.getErrCode());em.ou.nng:"+e.getErrMsg());System.out.println("RequestId:"+e.getRequestId());IoTPubTopicPayloadIoTTCP協(xié)議TCP協(xié)議IoT >TCP協(xié)議IoTTCP協(xié)議IoT設(shè)備遷移上云一、GPSGPSGPSGPS模塊獲得的定GPS定位器可用于兒童和老人的行蹤掌控,公路巡檢,貴重貨物跟蹤,追蹤與勤務(wù)派二、存量設(shè)備TCP方案TCPTCP/IP令來同步時鐘,之后定時發(fā)送心跳包來保持TCP長連接,GPS數(shù)據(jù)變化超過閾值時,自GPS三、TCP70%TCPMQTT協(xié)議的方案也IoT物聯(lián)網(wǎng)平臺之后,重新梳理業(yè)務(wù)鏈路,會發(fā)現(xiàn)IoT定位器設(shè)備和IoT物聯(lián)網(wǎng)平臺基于MQTT協(xié)議通信,TCP報文調(diào)整為MQTT的CONNECT/CONNACK報文,此時業(yè)務(wù)服務(wù)器不需要做身份校驗工作,IoT物聯(lián)網(wǎng)平臺企業(yè)基于TCP搭建的時鐘同步服務(wù)也可以下線了,IoT物聯(lián)網(wǎng)平臺提供了完整的NTP服務(wù),解決嵌入式設(shè)備資源受限,端上沒有精確時間戳的問題。詳細文檔MQTTPINGREQ/PINGRESP器介入,IoTMQTTtopicpayload,為了減少業(yè)務(wù)系統(tǒng)改動,我們增TopicTopic:/{pk}/{dn}/user/upIoTTopic:/{pk}/{dn}/user/uppayloadIoTGPSTopic,hexTagelaoel3。TagGPSAIAI >AIAIB站的時候,總是擔心著老板來了!ESP-EYEIoT輕松搞定首先,眾籌一塊ESP-EYE本地人臉識別開發(fā)板;其次,錄入老板人臉信息;然后,IoT二、ESP-EYE8MBytePSRAM4MByteflashiFiicroUSB調(diào)試與供電,可廣泛應(yīng)用于AI智能物聯(lián)網(wǎng)領(lǐng)域的應(yīng)用開發(fā)。我們基于Arduino編程來降低ESP-EYE人臉識別程序開發(fā)難度。Preferencesarduino-esp32URL:然后,我們在BoardsManager中搜索并安裝esp32package(1.0.4安裝完成后,我們基于CameraWebServer示例程序做二次開發(fā)。打開CameraWebServerCAMERA_MODEL_ESP_EYE,設(shè)置辦ssidpassword,用于開發(fā)板聯(lián)網(wǎng)。ToolsBoardAIThinkerESP32-CAM點擊左上角的編譯和燒錄ArduinoESP32開啟人臉識別,點擊EnrollFace來完成老板們的人臉庫錄入。MatchFaceID:0三、IoT我們在IoTesp-eye攝像頭,并添加物模型-屬性:老板編號bossId0~10。物模型屬性esp-eye產(chǎn)品下,注冊一個設(shè)備,并獲取到設(shè)備身份三元組,用于和云流轉(zhuǎn)到函數(shù)計算pushData2DingTalk中。數(shù)據(jù)處理SQL3.0函數(shù)計算腳本IoTconstconsthttps=constaccessToken='釘釘機器人token';constbossmoue.ep.haner=function(event,context,callback)vareventJson="msgtype":"markdown","markdown":{"at":"isAtAll":constoptions=hostname:oapdngakcm,port:443,path:'/robot/send?access_token='+accessToken,method:O,headers:onenType':onenLength':constreq=https.request(options,(res)=>{res.on('end',()=>{callback(null,'success');req.on('error',(e)=>{4.釘釘群機器人打開摸魚群,群管理>Webhook四、ESP-EYEMQTTPubSubClientMQTT連#definePRODUCT_KEY "替換PRODUCT_KEY"#defineDEVICE_NAME "替換DEVICE_NAME"#defineDEVICE_SECRET "替換DEVICE_SECRET"#define "cn-/*IoTEndpoint#defineMQTT_SERVER PRODUCT_KEY".iot-as-mqtt."REGION_ID"."#defineMQTT_PORT #define DEVICE_NAME"&"http://MQTT_PASSWD和#defineCONTENT_STR_FORMAT"clientIdesp32deviceName"DEVICE_NAME"productKey"PRODUCT_KEYmeampd"charCLIENT_ID[80]=char*FentespClient;PubSubClientclient(espClient);TopicPayload/*/*topicpayload#definePROP_POST_TOPIC"/sys/"PRODUCT_KEY"/"DEVICE_NAME"/thing/event/prope#defineBODY_FORMAT charcharsprintf(jsonBuf,BODY_FORMAT,if(client.connected())booleandcen.ubhROOTOI,jsonBuf);最后,我們把完整版程序燒錄到ESP-EYE IoT+DBDataVIoT+DBIoT+DBDataV< IoT+DBDataV今天給大家?guī)砘诎⒗镌艻oT物聯(lián)網(wǎng)平臺+Tablestore表格存儲數(shù)據(jù)庫+DataV我們在室內(nèi)每層部署410IoT物聯(lián)網(wǎng)平臺,通過規(guī)則引擎寫入表格存儲TablestoreDataV二、IoTIoT溫濕度環(huán)境監(jiān)測器,并在功能定然后,我們在產(chǎn)品下注冊一個設(shè)備,獲取設(shè)備身份證書IoTMQTT長連接時的身份認證。1.4TSDBSQLdevceame)asdevceame,meamp-MM-dd:mm)asme,attribute('floor')asfloor,em.emeauevaueastemperature,em.hum.vaueashumdy我們以Node.jsmqtt//varoptions=devceame:"設(shè)備devceame,regionId:"cn-shanghai"setInterval(function(){,},10*functiongetPostData()constpayload={id:Date.now(),params:{temperature:10+ahfoah.ano)*ah.fo0)),humd:10ah.foahandm)*ah.fo0))method:console.log("payload=["+payload+"]")returnJONngfpaoad;我們在表格存儲控制臺,創(chuàng)建數(shù)據(jù)庫iotMsg,并創(chuàng)建iot_thermometer_data數(shù)據(jù)deviceName和time四、DataV可視化大屏IoTDataVDataV控制臺,在我的數(shù)據(jù)下,添加數(shù)據(jù)源,輸入表格存儲iot_dataAccessKeyDataV我的可視化下面創(chuàng)建一個大屏,根據(jù)業(yè)務(wù)需求添加IoIoTukBI >IT+B+QuickBIIoT+TSDB+QuickBI環(huán)境監(jiān)控IoT物聯(lián)網(wǎng)平臺+TSDB時序時空數(shù)據(jù)庫+QickBI本次IoT物聯(lián)網(wǎng)開發(fā)實戰(zhàn)我們在室內(nèi)部署410秒發(fā)送到阿里云IoT物聯(lián)網(wǎng)平臺,通過規(guī)則引擎寫入TSDBQuBIIoT創(chuàng)建產(chǎn)品室內(nèi)溫濕度計器2TSDBNode.js////依賴mqttconstmqtt=require('aliyun-iot-//varoptions=productKey:"deviceproductKey",devceame:"devicedevceame,deviceSecret:"devicedeviceSecret",regionId:"cn-shanghai"};//constclient=setInterval(function,},10*functiongetPostData()constpayload={id:Date.now(),params:{temperature:10ah.foahandm)*ah.fo0)),humd:10+ahfoah.ano)*ah.fo0))method:console.log("payload=["+payload+"]")returnJON.ngfpaad);創(chuàng)建時序數(shù)據(jù)庫,并開通公網(wǎng)TSQLIoT設(shè)備數(shù)據(jù)寫入TSDB四、QiucBITSDB >20Arduino2020Arduino 20元自制Arduino環(huán)境監(jiān)測儀20IoTesp8266dht11DHT11采集溫度,濕度數(shù)據(jù),通過MQTT協(xié)議上報到阿里云IoT物聯(lián)網(wǎng)OTS數(shù)據(jù)庫中,整體技術(shù)方案如下:在溫濕度計TopicTopic,這就是我們用Topic。itMsit_romr_t表,IoT已有的表格存儲數(shù)據(jù)庫實例io中的ot_rmomt_dt表中,規(guī)則引擎配置如SELECTSELECTdevceame)asdevceame,meamp)astime,FROM"/a1k3547Gr0v/+/user/update"TopicPayloadArduinoC設(shè)備和云端通過PubSubClient建立MQTT/*/*FiMQTT*/cen.eeveSRVR,MQTT_PORT);client.connect(CLIENT_ID,MQTT_USRNAME,設(shè)備讀取傳感器數(shù)據(jù),并通過MQTT通道發(fā)送到云端:floathumy=dh.adum);charsprintf(jsonBuf,BODY_FORMAT,temperature,MQTTif(client.connected()){booleand=cen.ubhROOTOI,//delay使用ArduinoIDE燒錄程序到esp8266IoT控制臺的日志服務(wù)中查看到上報的數(shù)據(jù),在表格存儲控制臺,可以看到存儲在itthemmete_at物模型TopicTopicPayload我們修改Arduino查詢中TopicPayload在設(shè)備詳情頁面,Tab運行狀態(tài) >IoTIoTIoT IoT,,百味羹、蓮子頭、鵝鴨包、鏡面糕、魚桐皮面等。他們用銅錢結(jié)賬,翌日,那些銅錢都變?nèi)司褪枪?。App收錢吧,新大陸,哆啦寶等聚合支付公司順勢而生:一柜一碼IoTTTS語音合成技術(shù)的到賬實時語音播報,每日對賬報表匯總,讓收款頓時輕松起來。阿里云IoTMQTTPUB/SUB的安全、可靠、低延時 >IoTIoTIoT IoTIoT基于穩(wěn)定性,高并發(fā),低時延的考量我們選擇阿里云IoT物聯(lián)網(wǎng)平臺搭建整套系統(tǒng)。AMQP消費組,實時推送到我們業(yè)務(wù)服務(wù)器。TopicTopicM

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論