1. 程式人生 > >騰訊IOT之樹莓派物聯網裝置

騰訊IOT之樹莓派物聯網裝置

[TOC] # 騰訊IOT之樹莓派物聯網裝置 本次實驗的目的是將**樹莓派**設定為一個**物聯網終端**,通過微信小程式可以控制樹莓派,實現蜂鳴器的開關。 微信小程式介面如下所示,點選這個開關,就可以控制蜂鳴器。 ![](https://img2020.cnblogs.com/blog/1439869/202101/1439869-20210111011309131-595911639.png) 專案地址:https://github.com/xiaohuiduan/IotForTecentBeep ## 硬體配置 1. 樹莓派 2. 蜂鳴器 在這裡我將樹莓派接的是`GPIO_00`,使用的樹莓派是樹莓派4B版本。不同的樹莓派的GPIO介面可能不同,可以根據自己的需要按情況考慮。 實物圖如下所示,VCC——3.3V ,GND ——GND,IO——GPIO_00(低電平觸發) ![](https://img2020.cnblogs.com/blog/1439869/202101/1439869-20210111011311955-476053761.png) ## 軟體配置 程式語言使用的是Java,也就是說將使用Java實現騰訊雲IOT平臺的連線和樹莓派GPIO口的控制。使用的IDE是`IntelliJ IDEA`。 ## Tecent IOT 開發平臺的使用 Tecent IOT開發平臺的官方參考文件網址:[https://cloud.tencent.com/document/product/1081](https://cloud.tencent.com/document/product/1081),不過個人覺得其文件對於Java SDK的描述不夠詳細,建議去看其 [Demo ](https://github.com/tencentyun/iot-device-java/tree/master/explorer/explorer-device-android)原始碼才能明白其工作流程。 騰訊雲IOT開發平臺的專案結構如下所示:分為兩層——`專案` 和 `產品`。在使用其平臺的時候,既需要建立project,也需要建立product。 ![](https://img2020.cnblogs.com/blog/1439869/202101/1439869-20210111011321114-1679874630.png) > 我們可以將**專案**理解為智慧家居整個系統,因此在專案中有很多**產品**,比如說智慧空調,智慧報警器等等產品。而在空調中有溫度、溼度等**屬性**,同時也有著開關等**控制器**。 > > 而在這篇部落格中,專案名稱是**物聯網實訓**,產品名為**樹莓派**,但是樹莓派只有一個**功能**——控制蜂鳴器。也就是說,沒有**屬性**,只有**控制器**。 ### 新建專案 開啟網址:[https://console.cloud.tencent.com/iotexplorer](https://console.cloud.tencent.com/iotexplorer)新建專案,專案名稱隨意就行,建立好專案後,進入專案,然後建立產品。 ![](https://img2020.cnblogs.com/blog/1439869/202101/1439869-20210111011321404-1560664340.png) ### 新建產品 建立產品的選項如下: - 裝置:因為我們是準備將樹莓派作為一臺裝置來使用的,因此,應該選擇**”裝置“**,當然,如果是準備將它作為閘道器,則看著選就行了。 - 認證方式:認證方式選擇金鑰認證,這樣在程式碼中間直接寫裝置的密碼就行,比證書稍微方便一點(不過實際上證書方便一點)。 - 資料協議:使用資料模板即可。 ![](https://img2020.cnblogs.com/blog/1439869/202101/1439869-20210111011321711-92143623.png) ### 新增自定義功能 物聯網裝置,之所以叫物聯網,是因為大家想把感測器獲得的資料放在雲端,或者通過雲端去控制物聯網裝置。那麼放什麼資料,控制什麼功能,則需要我們去定義。這裡選擇控制樹莓派上面的蜂鳴器,因此只需要定義蜂鳴器即可。 在騰訊IOT中,可以使用`新建功能`定義這些功能。選擇**屬性**,資料型別選擇**布林型**(因為只有控制蜂鳴器的開/關)。請記住這個識別符號`beep_switch`,這個將在後面的程式碼中用到。 ![](https://img2020.cnblogs.com/blog/1439869/202101/1439869-20210111011321970-692578450.png) 關於功能型別的不同,可以參考下面的表格。(不過在個人看來,在他的官方 Demo 中,無論是物聯裝置的資料(比如說溫度溼度),還是物聯網的控制(比如說燈的開關),它都定義成為了屬性。也就是說,儘管 **蜂鳴器的開關** 是人為下發的控制,但是還是定義為屬性。至於事件和行為有什麼作用,我也不清楚……) > 以下來自官方文件 > > | 功能元素 | 功能描述 | 功能識別符號 | > | :------- | :----------------------------------------------------------- | :----------- | > | 屬性 | 用於描述裝置的實時狀態,支援讀取和設定,如模式、亮度、開關等。 | PropertiesId | > | 事件 | 用於描述裝置執行時的事件,包括告警、資訊和故障等三種事件型別,可新增多個輸出引數,如環境感測器檢測到空氣質量很差,空調異常告警等。 | EventId | > | 行為 | 用於描述複雜的業務邏輯,可新增多個呼叫引數和返回引數,用於讓裝置執行某項特定的任務,例如,開鎖動作需要知道是哪個使用者在什麼時間開鎖,鎖的狀態如何等。 | ActionId | 點選下一步,進入裝置開發。 ![](https://img2020.cnblogs.com/blog/1439869/202101/1439869-20210111011322333-1611653495.png) ### 裝置開發 因為這裡使用的是Java SDK進行開發,沒有使用模組也沒有基於OS開發,因此直接點選下一步。 ![image-20210106165342612](https://img2020.cnblogs.com/blog/1439869/202101/1439869-20210111011322601-262907442.png) 點選下一步就到了微信小程式配置。 ### 微信小程式配置 騰訊IOT平臺相比較於其他平臺,有一個很大的特點就是可以很好的支援小程式。也就是說,在開發的階段,就可以使用小程式去驗證裝置的功能。並且這個微信小程式不需要自己寫樣式程式碼,只需要進行簡單的配置,就可以直接從小程式上面看到物聯網裝置的資料。 因為這裡我們使用的資料很簡單,只有開關,所以隨便配置一下面板即可。 ![](https://img2020.cnblogs.com/blog/1439869/202101/1439869-20210111011322904-1494654844.png) #### 面板配置 這裡面板型別選擇**標準面板**,簡單的配置一下開關即可,效果圖如右圖所示。 ![](https://img2020.cnblogs.com/blog/1439869/202101/1439869-20210111011323188-1192830049.png) 儲存退出之後,就進入到新建裝置功能頁面。 ### 新建裝置 > 新建裝置`的意義:建立一個裝置代表啟動了一個賬號(這個裝置會提供一個金鑰),我們的裝置使用這個金鑰,就可以讓我們的裝置連線騰訊雲IOT平臺進行資料互動。 > > 從現實意義來說,就是我手中有一個樹莓派,我需要讓它連線騰訊雲IOT平臺,就需要賬號密碼,所以就需要建立一個裝置。 新建裝置的步驟如下所示: ![](https://img2020.cnblogs.com/blog/1439869/202101/1439869-20210111011323655-563197527.png) ### 使用裝置 點選 **my_pi** ,進入裝置管理。 ![](https://img2020.cnblogs.com/blog/1439869/202101/1439869-20210111011324109-1059251643.png) 裝置管理介面如下所示: - 裝置資訊:這裡面是裝置的一些基本屬性,其中通過裝置``名稱``,`裝置金鑰`,和`產品ID`就可以唯一定位一個`裝置`,然後對其進行操作。 - 裝置日誌:裝置日誌裡面儲存著裝置的上行和下行資料。 - 線上除錯:通過線上除錯,可以模擬裝置的行為,或者對裝置下發控制命令。 ![](https://img2020.cnblogs.com/blog/1439869/202101/1439869-20210111011324358-1247732115.png) ### 線上除錯 可以使用線上的除錯功能對物聯網裝置進行功能下發。(比如說下發開關資料,控制蜂鳴器的開關) ![](https://img2020.cnblogs.com/blog/1439869/202101/1439869-20210111011324707-374385829.png) ### 裝置日誌 可以在裝置中看到物聯網裝置與雲平臺之間的上行和下行資料。 ![](https://img2020.cnblogs.com/blog/1439869/202101/1439869-20210111011325798-1121187172.png)