阿里云 IoT HaaS(Hardware as a Service)物聯(lián)網設備云端一體低代碼開發(fā)框架集合阿里云、達摩院、平頭哥相關技術,基于數(shù)億臺物聯(lián)網設備接入經驗,提供積木式硬件開發(fā)能力,實現(xiàn)低代碼快速開發(fā),幫助中小開發(fā)者聚焦業(yè)務,實現(xiàn)設備安全上云,加速設備創(chuàng)新迭代。本書主要對 HaaS 開發(fā)框架中的技術進行詳細的介紹,主要包括 HaaS 云端一體低代碼開發(fā)框架、國產全自研 AliOS Things 物聯(lián)網操作系統(tǒng)、物聯(lián)網云平臺、IoT Studio 物聯(lián)網應用開發(fā)新模式、HaaS 輕應用開發(fā)新模式,以及輕應用進行 HaaS 云端一體實戰(zhàn)等內容。全書覆蓋了從 HaaS 硬件生態(tài)及積木、物聯(lián)網操作系統(tǒng)、物聯(lián)網設備端輕應用開發(fā)、物聯(lián)網設備上云到物聯(lián)網應用開發(fā)新模式的全鏈路知識,并且結合的都是行業(yè)應用新案例,呈現(xiàn)的是通過項目實戰(zhàn)積累的技術經驗和解決方案,參考價值高。HaaS是阿里云IoT部門針對物聯(lián)網開發(fā)痛點推出的特色解決方案,目前已經在多個行業(yè)中有比較廣泛的應用,是物聯(lián)網行業(yè)的開發(fā)創(chuàng)新模式。本書適合物聯(lián)網開發(fā)者、物聯(lián)網操作系統(tǒng)愛好者、嵌入式開發(fā)者及計算機相關專業(yè)學生參考閱讀。
眼看到這個題目的時候,想到的句話就是,這不就是物聯(lián)網界的樂高嗎?有框架,有硬件,再加上云端和低代碼,讓萬物互聯(lián)變得如此簡單易行。
看了數(shù)遍這本書的書稿之后,越發(fā)敬佩不斷在物聯(lián)網領域深耕的技術專家們,敬佩阿里的技術專家們,大平臺高見識,能夠整合阿里云、達摩院、平頭哥技術,基于數(shù)億臺物聯(lián)網設備接入經驗創(chuàng)造出IoT HaaS(Hardware as a Service)物聯(lián)網設備云端一體低代碼開發(fā)框架,基于此,智能家居,智能辦公等場景更普及,讓我們的生活工作越來越便捷,有時只要張張嘴就能做到以前得動手動腳才能做的事情。
如果你是物聯(lián)網從業(yè)人員,無論是應用開發(fā)者還是產品經理,想在AIoT時代做點事情,一定不能錯過這本物聯(lián)網開發(fā)界寶典圖書;
如果你剛剛進入物聯(lián)網開發(fā)領域,也一定要仔細研討這本代表物聯(lián)網開發(fā)界潮流書,讓你站得高,看得遠。
如果你完全是物聯(lián)網行業(yè)外人士,只是感興趣,那么讀這本書,會幫助你形成對物聯(lián)網整體開發(fā)布局有更全面的拓撲圖,有可能會比一般行業(yè)內人士更有大局觀。
物聯(lián)網概念的出現(xiàn)已經有幾十年了,曾經喧囂過,也曾經落寞過,起起落落很多次。近幾年,萬物互聯(lián),萬物智能又隨著AI技術再次火熱起來。雖然概念火了,但還是新瓶裝舊酒,沒有新花樣。例如,物聯(lián)網的經典分層結構仍然是感知層、網絡層、平臺層和應用層;物聯(lián)網的端到端全鏈路也無非是云端、網絡、邊緣、設備端(包括App端),這些簡稱云網邊端。當然,這些方面沒有太大變化恰恰說明了人們對物聯(lián)網認知的一致性,反而是好事,但也說明了物聯(lián)網領域這么多年缺乏重大創(chuàng)新。為了解決碎片化問題,提高物聯(lián)網設備云端一體開發(fā)效率,讓開發(fā)者聚焦業(yè)務創(chuàng)新,我們提出了一套全新的物聯(lián)網開發(fā)框架。
在介紹這套開發(fā)框架之前,先回顧一下歷史。從物聯(lián)網概念被提出到現(xiàn)在,從來就沒有一套統(tǒng)一的開發(fā)框架來提高開發(fā)效率,開發(fā)者都是從零開始做產品、項目的,這些技術沉淀和積累都沒有形成框架并共享給全社會使用。而其他很多領域,如前端領域就非常不一樣,前端領域有3大開發(fā)框架,即Vue、React和Angular。特別是Vue開發(fā)框架,在我國甚至全世界都有很多擁躉。其實開發(fā)框架并不神秘,它就是一個提高開發(fā)效率的工具,并且可以提供更多功能賦能開發(fā)者。
看一個真實的案例。我有一個朋友,他創(chuàng)業(yè)做了一款共享餐巾紙盒,是如何做的呢?我給大家先介紹一下用戶場景,在一個餐廳里,每張桌子上都會有一個共享餐巾紙盒,它是通過Wi-Fi和路由器連接上云的,用戶通過App掃描這個紙盒上面的二維碼,可以有償使用里面的餐巾紙。就是這么一個簡單的智能硬件,就包含了以下4塊工作內容:是硬件階段,需要制作控制電路板,并且要調試Wi-Fi性能,還要解決供應鏈交付問題;第二是軟件階段,需要開發(fā)相應的硬件驅動;第三是服務階段,需要投入人力做云端開發(fā);第四是App階段,需要設計好人機交互界面。做這樣一個簡單的智能硬件,需要搭建至少10人以上的小團隊,因此投入產出比極低,終公司倒閉了。因此,我有一個HaaS(Hardware as a Service)的夢想,即通過HaaS幫助AIoT(人工智能物聯(lián)網)中小開發(fā)者聚焦業(yè)務,降低開發(fā)低門檻,快速組裝軟/硬件積木,實現(xiàn)設備安全上云,加速AIoT的創(chuàng)新迭代。
HaaS是一種物聯(lián)網設備云端一體低代碼開發(fā)框架,其戰(zhàn)略目的是通過數(shù)量收斂的硬件積木(如主控板、Wi-Fi BT Combo模組、各種通過HaaS認證的傳感器)和豐富、標準的軟件積木(包括各種組件、服務)持續(xù)降低物聯(lián)網的開發(fā)門檻,讓用戶(包括C/C 、JavaScript、Python用戶)可以快速用軟/硬件積木搭建應用,并且不用關心任何硬件調試(如根據(jù)硬件ID自動加載硬件驅動代碼),而只需關注云端釘(阿里云、設備端及釘釘)的業(yè)務邏輯代碼。這里的硬件積木主控板需要不斷地收斂為一個小集合,降低用戶選擇成本,但是傳感器可以越來越豐富;這里的軟件積木是一個應用市場,需要越來越豐富,但是必須標準化,如JSAPI、驅動代碼等,一定要達到屏蔽底層硬件細節(jié)的目的,不能讓用戶在這里花費時間調試代碼。后,我們需要打造一個供需生態(tài),即幫助中小IHV/ISV(軟/硬件積木貢獻者)來服務千千萬萬碎片化的物聯(lián)網需求。
我們的HaaS開發(fā)框架從下往上包含了5個分層,分別是硬件積木、AliOS Things物聯(lián)網操作系統(tǒng)、軟件積木、輕應用框架(JavaScript&Python)和云端積木。HaaS框架要落地,AliOS Things是基礎,因為它是解決硬件碎片化問題、屏蔽底層硬件細節(jié)的重要的中間層。具體內容在后面還會講到,這里不再贅述。軟件積木包含了諸如Link Kit、OTA、文件訪問和存儲等各種設備端能力。為了屏蔽軟件積木的細節(jié)并降低開發(fā)門檻,讓云端工程師、AI工程師都可以使用軟件積木,我們提出了輕應用這個新概念。輕應用可以把JavaScript和Python這樣的解釋型語言引入嵌入式開發(fā)中。這是革命性的,之前還沒有成熟的解決方案,有了HaaS,嵌入式開發(fā)不僅能由嵌入式工程師來做,任何人都可以來做物聯(lián)網創(chuàng)新。輕應用支持熱更新、熱加載。之前的嵌入式C/C 開發(fā)需要安裝編譯器,還要燒錄,而我們的輕應用開發(fā)由于使用了解釋型語言,而且主控板都出廠內置JavaScript和Python解釋器,所以開發(fā)者不用安裝任何編譯器,也不用燒錄,只要用任何文本編輯器寫上很少的幾行代碼就可以調用豐富的設備端能力,如串口收發(fā)、PWM頻率控制燈閃爍。當然也可以調用更加豐富、海量的云端資源,如用幾行代碼就可以調用并完成支付,這在幾年前是完全不可想象的。說到這里,就不得不提我們的云端積木了,由于物聯(lián)網必然是云端一體的,所以未來趨勢是更瘦的終端和更豐富的云端能力,如云端提供OTA、支付、TTS、ASR、定位、健康碼、AI等,這些組成了能力豐富的云端積木。
介紹完HaaS開發(fā)框架,我們來回顧一下前面提到的AliOS Things。我們知道,物聯(lián)網的幾個痛點就是硬件碎片化、軟件碎片化、應用場景碎片化,要解決它們,就必須提供一個統(tǒng)一標準的物聯(lián)網操作系統(tǒng),AliOS Things就是為此而生的。我們在2017年發(fā)布了AliOS Things V1.0,它是一個輕量級的RTOS(實時操作系統(tǒng))。到今天,我們已經發(fā)布了V3.3版本,這是一個彈性內核操作系統(tǒng),既支持RTOS,又支持微內核,在性能和穩(wěn)定性之間取得了更好的平衡。我們的AliOS Things支持設備的范圍非常寬,既可以支持藍牙模組、Wi-Fi模組、插座、燈泡等低端無屏設備,又可以支持兒童手表、智慧面板等低端帶屏設備(4寸以下),還可以支持廣告機、平板、帶屏POS機等高端帶屏設備。
另外,在介紹硬件積木時,我想提一下連接積木,因為物聯(lián)網的核心是一定要先解決連接問題,不管是藍牙、Wi-Fi、ZigBee等局域網連接,還是4G Cat.1、5G等廣域網連接,都是物聯(lián)網重要的連接方式。當然,這些連接都各有其優(yōu)點和缺點。例如,藍牙雖然功耗低、配網簡單、價格低,但是通信距離近,需要網關支持;Wi-Fi的通信距離雖然可以達到100m以上,但是功耗高,配網復雜;ZigBee雖然穩(wěn)定性不錯,在工業(yè)領域有很多應用場景,但是價格高,也仍然需要網關支持。在廣域網方面,5G剛剛興起,價格是4G的10倍,在物聯(lián)網領域還很難快速普及。目前,速率稍低的4G Cat.1反而是一個不錯的選擇,特別是現(xiàn)在正處于2G、3G退網的階段,4G Cat.1逐步取代了2G/3G,因此,4G Cat.1是一個性價比不錯的選擇。既然稱為硬件積木,就是希望大家做硬件就像搭積木一樣,拿幾個積木就可以搭建一個產品,而不用考慮畫原理圖、Layout、飛線測試、電烙鐵、熱風槍、元器件及量產。如果不用我們的積木,要做一個前面提到的共享餐巾紙盒,就需要6~12個月;用了我們的積木,7天就可以做好并接近量產的原型機,極大地提高了開發(fā)效率。我們發(fā)布了幾個經典的硬件積木:HaaS100、HaaS200、HaaS600等。其中,HaaS100是Wi-Fi BT AP(應用處理器,比一般MCU的性能更高的CPU),可以用在工業(yè)、農業(yè)、商業(yè)的各種復雜場景中;HaaS200是Wi-Fi BT的連接加少量控制能力的硬件積木;HaaS600是性價比極高的4G Cat.1模組,可以用在遠程控制、DTU、RTU、商業(yè)共享中。我們后續(xù)還會陸續(xù)推出各種HaaS硬件積木,作為不同細分領域的主控、連接單元。當然,這些板子的軟件積木,特別是各種驅動(如SPI、I2C、UART、PWM、GPIO等)開發(fā),我們已經提前完成,開發(fā)者只要使用輕應用框架靈活調用這些軟件積木,就可以快速搭建自己需要的業(yè)務邏輯。
后,我想說的是,物聯(lián)網領域期待一個開發(fā)框架已經很久了,現(xiàn)在HaaS的提出只是邁出了一小步,要繼續(xù)走下去,急需廣大開發(fā)者的加入。不管是原來的嵌入式開發(fā)者,還是JavaScript、Python開發(fā)者,只有更好的開發(fā)者一起共建生態(tài),物聯(lián)網領域才會出現(xiàn)一個大家共建、共享、共創(chuàng)的偉大的開發(fā)框架,進而讓這幾十年的技術積累、沉淀賦能所有熱愛物聯(lián)網開發(fā)的開發(fā)者。
胡俊鋒(崮德)
阿里云IoTHaaS技術團隊負責人
2022年1月于杭州
第1章 物聯(lián)網概述 1
1.1 物聯(lián)網的基本概念 2
1.1.1 物聯(lián)網的定義 2
1.1.2 物聯(lián)網分層架構 2
1.2 物聯(lián)網典型應用場景 3
1.2.1 智能家居 4
1.2.2 智慧城市 4
1.2.3 智慧能源 5
1.2.4 車聯(lián)網 5
1.2.5 智能物流 5
1.2.6 智能安防 6
1.2.7 智慧醫(yī)療 6
1.2.8 智能制造 6
1.2.9 智慧商業(yè) 7
1.2.10 智慧農業(yè) 7
1.3 常見物聯(lián)網操作系統(tǒng) 8
1.3.1 uC/OS 8
1.3.2 FreeRTOS 9
1.3.3 LiteOS 10
1.3.4 Linux 10
1.3.5 AliOS Things 12
1.4 物聯(lián)網無線連接方式介紹 13
1.4.1 無線局域網通信技術介紹 13
1.4.2 無線廣域網通信技術介紹 16
1.5 常見物聯(lián)網開發(fā)板 20
1.5.1 Arduino開發(fā)板 20
1.5.2 樹莓派開發(fā)板 21
1.5.3 STM32開發(fā)板 23
1.5.4 HaaS EDU K1物聯(lián)網教育開發(fā)板 24
1.6 常見外設接口介紹 26
1.6.1 UART 26
1.6.2 GPIO 27
1.6.3 Flash 28
1.6.4 ADC 29
1.6.5 DAC 30
1.6.6 PWM 30
1.6.7 I2C 31
1.6.8 SPI 33
1.7 常見物聯(lián)網傳感器介紹 35
1.7.1 溫濕度傳感器 35
1.7.2 人體感應傳感器 37
1.7.3 煙霧傳感器 38
1.7.4 RFID讀卡器 40
1.7.5 陀螺儀 41
1.7.6 光強度及接近傳感器 44
第2章 HaaS開發(fā)框架 46
2.1 HaaS開發(fā)框架介紹 47
2.1.1 HaaS硬件積木簡介 48
2.1.2 HaaS自研系統(tǒng)簡介 49
2.1.3 HaaS軟件積木簡介 50
2.1.4 HaaS應用框架簡介 52
2.1.5 HaaS云端服務簡介 53
2.2 HaaS硬件積木 54
2.2.1 HaaS IoT開發(fā)板介紹 55
2.2.2 廣域網連接積木4G Cat.1開發(fā)板 62
2.2.3 局域網連接積木HaaS200開發(fā)板 68
2.2.4 HaaS音/視頻積木 70
2.2.5 HaaS生態(tài)積木組件 71
2.3 AliOS Things介紹 79
2.3.1 AliOS Things版本與獲取 80
2.3.2 AliOS Things的特征 81
2.3.3 典型應用場景 82
2.4 HaaS軟件積木 84
2.4.1 AliOS Things內核積木 85
2.4.2 文件系統(tǒng)積木 85
2.4.3 連接積木 85
2.4.4 網絡積木 88
2.4.5 多媒體積木 90
2.4.6 HaaS AI積木 91
2.4.7 云服務積木 92
2.5 HaaS輕應用 94
2.5.1 HaaS輕應用概述 95
2.5.2 JavaScript輕應用及Python輕應用 97
2.6 云端工具 98
2.6.1 物聯(lián)網平臺 98
2.6.2 IoT Studio 101
2.7 HaaS解決方案 104
2.7.1 一分鐘上云方案 104
2.7.2 HaaS解決方案介紹 111
2.7.3 HaaS解決方案開發(fā)流程 113
2.7.4 HaaS解決方案的市場推廣 115
2.8 HaaS認證 115
2.8.1 HaaS認證簡介 115
2.8.2 認證流程與規(guī)范 116
2.8.3 認證檢測 117
2.8.4 發(fā)布上線 117
2.8.5 注意事項 118
2.9 HaaS技術社區(qū)與開發(fā)者支持 118
2.9.1 HaaS技術社區(qū) 119
2.9.2 HaaS技術視頻 120
2.9.3 HaaS官網 121
2.9.4 HaaS開發(fā)者釘釘群 122
2.9.5 HaaS訓練營 123
第3章 AliOS Things物聯(lián)網操作系統(tǒng) 124
3.1 系統(tǒng)架構 124
3.2 系統(tǒng)內核 125
3.2.1 內核基礎 125
3.2.2 中斷管理 128
3.2.3 定時器管理 136
3.2.4 內存管理 146
3.2.5 任務管理 152
3.2.6 任務間的同步與互斥 161
3.2.7 任務間通信 168
3.3 系統(tǒng)組件 171
3.3.1 系統(tǒng)驅動框架 171
3.3.2 網絡框架 176
3.3.3 文件系統(tǒng) 188
3.4 CLI命令行調試診斷 197
3.4.1 CLI原理簡介 197
3.4.2 常用CLI命令介紹 199
3.4.3 自定義CLI命令 205
第4章 物聯(lián)網通信協(xié)議 209
4.1 低功耗局域網通信 210
4.1.1 常見局域網通信方式介紹 210
4.1.2 藍牙m(xù)esh技術 210
4.1.3 Wi-Fi 技術 230
4.2 低功率廣域網通信 243
4.2.1 常見廣域網通信方式介紹 243
4.2.2 4G Cat.1 244
4.2.3 NB-IoT 249
4.2.4 LoRa 255
4.3 應用層通信協(xié)議 264
4.3.1 MQTT協(xié)議介紹 264
4.3.2 MQTT模式與角色 265
4.3.3 MQTT消息 266
4.3.4 MQTT消息服務質量 267
4.3.5 MQTT業(yè)務流程 269
第5章 物聯(lián)網平臺 272
5.1 物聯(lián)網平臺簡介 272
5.1.1 亞馬遜物聯(lián)網平臺 272
5.1.2 微軟物聯(lián)網平臺 273
5.1.3 阿里云物聯(lián)網平臺 274
5.2 阿里云物聯(lián)網平臺詳解 278
5.2.1 設備接入 278
5.2.2 消息處理 288
5.2.3 數(shù)據(jù)流轉 300
5.2.4 監(jiān)控運維 309
第6章 IoT Studio 322
6.1 IoT Studio簡介 322
6.1.1 IoT Studio的架構和特點 322
6.1.2 IoT Studio功能介紹 323
6.2 IoT Studio項目管理 324
6.2.1 項目介紹 324
6.2.2 產品介紹 325
6.2.3 設備說明 326
6.2.4 空間說明 327
6.2.5 賬號說明 328
6.3 IoT Studio應用開發(fā) 330
6.3.1 Web可視化開發(fā) 331
6.3.2 移動可視化開發(fā) 345
6.3.3 業(yè)務邏輯開發(fā) 350
第7章 HaaS輕應用開發(fā)實踐 358
7.1 HaaS Studio 358
7.1.1 初識HaaS Studio 359
7.1.2 Python輕應用開發(fā) 362
7.1.3 JavaScript輕應用開發(fā) 362
7.2 HaaS輕應用Python篇 364
7.2.1 Python輕應用介紹 364
7.2.2 Python輕應用開發(fā)指南 368
7.2.3 Python輕應用組件擴展 372
7.2.4 Python輕應用實踐 386
7.3 HaaS輕應用JavaScript篇 400
7.3.1 JavaScript輕應用介紹 400
7.3.2 運行原理 400
7.3.3 豐富的組件支持 401
7.3.4 目錄結構 402
7.3.5 JavaScript輕應用開發(fā)環(huán)境 405
7.3.6 JavaScript輕應用開發(fā)指南 410
7.3.7 JavaScript輕應用輕量級UI 418
7.3.8 JavaScript輕應用組件擴展 424
7.3.9 JavaScript輕應用實踐 424