阿里雲物聯網平台體驗 樹莓派 Nodejs篇

2021-09-02 23:30:46 字數 2592 閱讀 5588

阿里雲物聯網平台體驗(樹莓派+nodejs篇)

我們在《阿里雲物聯網平台體驗(樹莓派+python篇)》裡,寫了通過python語言開發雲到端的物聯網程式,本篇文章將介紹通過nodejs來實現類似功能。

同樣在阿里雲官方文件裡已經有了乙個nodejs裝置接入說明:

文中的**也是把模擬的溫濕度資料上傳到物聯網雲平台的,我們依然對這個**進行擴充套件,實現接入實際的溫濕度感測器,把資料上傳到雲端,同時雲端下發控制指令,控制led的開和閉。

相關硬體平台的搭建由於在python篇裡已有描述,我們這裡就不在贅言了。

目前用nodejs直接操作gpio,根據網上的資源,有兩種常見方式,一種是採用是操作rpio庫(目前最新版本是rpio2 0.4.1),一種是quick2wire-gpio-admin。(其他更好的方案,也希望網友推薦)。根據使用習慣,我這次選用的是rpio2。

需要注意的是,rpio2裡面的pin和python操作的有些不一樣,它指定的pin是物理排針的pin腳位置。比如我們的led模組控制腳接入的是gpio4,在python中我們定義pin=4,在rpio2中,我們需要定義pin=7了。

使用rpio2庫之前需要安裝一下,輸入如下命令:

npm install rpio2 –production

操作gpio的**也比較簡單,如下面的示例**:

const gpio = require('/home/pi/node_modules/rpio2/lib/index.js').gpio;
var led = new gpio(7);  //建立 pin7 引腳
led.open(gpio.output, gpio.low); //設定為 output、預設低電平
for(var i = 0; i < 20; i++)
led.close();
安裝bcm2835-1.46沒有出現什麼問題,不過安裝node-dht-sensor,如果直接輸入 sudo npm install -g node-dht-sensor 命令進行安裝會出現如下錯誤:
我們必須要這樣執行命令才行:
1ã 先執行:sudo chmod -r 777 /var/root
2ã 後執行:sudo npm install -g --unsafe-perm node-dht-sensor則可以正確安裝,如下圖所示:
獲取溫濕度的**比較簡單,如下:
var sensorlib = require('node-dht-sensor');
// setup sensor, exit if failed
var sensortype = 11; // 11 for dht11, 22 for dht22 and am2302
var sensorpin  = 16;  // the gpio pin number for sensor signal
if (!sensorlib.initialize(sensortype, sensorpin))
// automatically update sensor value every 2 seconds
setinterval(function() , 2000);
執行sudo node_path=/usr/local/lib/node_modules node ./nodejs_dht11.js 命令,則執行結果如下:

有了以上的操作,那麼我們把上面的**糅合進阿里雲官方的示例,實現阿里雲的雙向通訊。

增加message函式,獲取雲端傳送的資料:

client.on('message', function(topic, message) {

var   json = json.parse(message.tostring());

console.log("led="+ json.params.led.tostring());

led.write( json.params.led);      

getpostdata函式需要改造一下,把溫濕度函式增加進去:

function getpostdata(){  

var readout = sensorlib.read();

const payloadjson = {

id: date.now(),

params: {

temperature: readout.temperature.tofixed(1),

humidity: readout.humidity.tofixed(1)

method: "thing.event.property.post"

阿里雲物聯網平台上我們所建立的裝置保持不變(參見python篇),我們去對接雲端的這個裝置。

執行**需要前面加 sudo,否則會出錯。執行結果如下:

阿里雲物聯網平台體驗 樹莓派 Nodejs篇

我們在 阿里雲物聯網平台體驗 樹莓派 python篇 裡,寫了通過python語言開發雲到端的物聯網程式,本篇文章將介紹通過nodejs來實現類似功能。同樣在阿里雲官方文件裡已經有了乙個nodejs裝置接入說明 文中的 也是把模擬的溫濕度資料上傳到物聯網雲平台的,我們依然對這個 進行擴充套件,實現接...

阿里雲物聯網平台體驗 樹莓派 Nodejs篇

我們在 阿里雲物聯網平台體驗 樹莓派 python篇 裡,寫了通過python語言開發雲到端的物聯網程式,本篇文章將介紹通過nodejs來實現類似功能。同樣在阿里雲官方文件裡已經有了乙個nodejs裝置接入說明 文中的 也是把模擬的溫濕度資料上傳到物聯網雲平台的,我們依然對這個 進行擴充套件,實現接...

阿里雲物聯網平台總結

基於物模型開發裝置步驟 獲取裝置的身份認證資訊。當裝置已經獲取到ip位址之後,呼叫sdk提供的api將裝置連線到物聯網平台並進行認證。當裝置連線到阿里雲物聯網平台並通過認證後,呼叫sdk提供的api將裝置屬性的最新資料上報雲端。當裝置的屬性發生變化時,呼叫sdk提供的api將裝置屬性的最新數值上報雲...