樹莓派 自啟動連接阿里雲物聯網平台(二)


一、前言

在上一篇 樹莓派 自啟動連接阿里雲物聯網平台(一) 中,我們講了 "樹莓派 連接阿里雲物聯網平台" 的部分,這一篇我們講如何使 aliyun_iot_device_quickstart 的腳本程序實現開機自啟動上報數據到阿里雲物聯網平台。

二、修改啟動腳本文件

1. 查看啟動腳本文件

  • 如果你嘗試在 aliyun_iot_device_quickstart 文件夾外(例:/home/pi),調用該文件夾下的 start.sh 文件,你就會發現在 /home/pi 文件夾下出現 package-lock.json 文件並報錯:
pi@raspberrypi:/home/pi $ sudo vim /usr/local/Extension/aliyun_iot_device_quickstart/start.sh
...
...
Error: Cannot find module '/home/pi/index.js'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:581:15)
at Function.Module._load (internal/modules/cjs/loader.js:507:25)
at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:743:3)
  • 這個時候,如果直接將這個 start.sh 腳本文件設置為自啟動,在下次開機時是不會運行的。因為執行自啟動的目錄同樣不是 start.sh 的父目錄。

  • 使用 sudo vim ./start.shaliyun_iot_device_quickstart 目錄下打開腳本文件,顯示:

set -e

if [ ! -d ./node_modules ]; then
printf "Installing Aliyun Iot Device SDK...\n"
npm install
fi

node ./index.js
  • 可以看出 start.sh 只能在 aliyun_iot_device_quickstart 目錄下運行的原因,出在:

  • 第 3 行的 ./node_modules 和第 8 行的 ./index.js 上——它們都是使用的相對路徑。

2. 修改啟動腳本文件 start.sh

  • /將第 3 行 "./node_modules" 修改為 node_modules 的絕對路徑
$(cd `dirname $0`; pwd)"/node_modules"
  • 將第 8 行 "./index.js" 修改為 index.js 的絕對路徑
$(cd `dirname $0`; pwd)"/index.js"
  • 修改結束的內容:
set -e

if [ ! -d $(cd `dirname $0`; pwd)"/node_modules" ]; then
printf "Installing Aliyun Iot Device SDK...\n"
npm install
fi

node $(cd `dirname $0`; pwd)"/index.js"

三、設置腳本自啟動

請閱讀我的另一篇博客 樹莓派 腳本程序自啟動 ,實現腳本程序自啟動。

四、重啟測試

輸入 sudo reboot 重啟,觀察得:

  • 輸入 ps -nux | grep index 查詢含有 index 字符的進程:

    pi@raspberrypi:/usr/local/Extension/aliyun_iot_device_quickstart $ ps -aux | grep index
    root      2035 22.4  1.9 155876 38892 pts/1    Sl+  13:17   0:02 node /usr/local/Extension/aliyun_iot_device_quickstart/index.js
    pi        2049  0.0  0.0   7348   576 pts/0    S+   13:17   0:00 grep --color=auto index
    

    其中,root 權限、PID 為 2035 的進程就是自啟動 aliyun_iot_device_quickstart 下的主程序,pi 權限、PID 為 2049 的就是查詢進程。

  • 再查看"阿里雲物聯網平台'',就可以看到設備在線並上報數據:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM