準備
在之前的博客《(七)樹莓派3B+ 花生殼內網穿透》中介紹了花生殼的使用,這樣我們就可以訪問內網中的樹莓派了。
但是之前只是特定的22端口,也就是遠程連接上樹莓派。那麼我們能不能遠程控制樹莓派的GPIO呢?實際是可以的。花生殼的6元體驗版本給我們提供了1個域名2個端口,之前我們使用了一個花生殼分配的端口映射到樹莓派的22端口,現在我們使用花生殼提供的另外一個端口映射到3000端口,這樣我們可以外網訪問樹莓派上的node.js 項目。
希望看過我之前的Node.js 博客。
操作
打開3000端口
- 安裝ufw
apt-get installufw
- 啓用ufw
ufw enable
ufw default deny
- 開啓3306、22(ssh端口)端口
ufw allow 3306
ufw allow 22
注意:如果不開啓22端口,下次啓動樹莓派時,系統的22端口會禁用,不能使用ssh登錄樹莓派。
原文鏈接:《樹莓派安裝mysql並開啓遠程訪問(開啓3306端口)》
編寫代碼實現
如果看過我的Node.js 博客和樹莓派學習記錄的應該可以看懂下面的代碼。
var express = require('express');
var router = express.Router();
var rpio = require('rpio');
var LED_PIN = 29;
rpio.open(LED_PIN, rpio.OUTPUT,rpio.LOW);
// 打開LED
function turnOn() {
rpio.write(LED_PIN, rpio.HIGH);
}
// 關閉LED
function turnOff() {
rpio.write(LED_PIN, rpio.LOW);
}
router.all('/raspberry/index', function(req, res, next) {
var param = req.query || req.params;
let status = param.status;
if (status === '1') { // 開
turnOn();
res.end(JSON.stringify({
msg: '開燈成功',
status: 100,
}));
} else { // 關
turnOff();
res.end(JSON.stringify({
msg: '關燈成功',
status: 100,
}));
}
})
module.exports = router;
啓動項目
之前的《(二)樹莓派3B+ Node.js/pm2/git/nginx的安裝》這裏安裝的pm2 就開始起作用了,其實不用pm2 也可以的。
pm2啓動項目:pm2 start ./bin/raspberry
bin目錄下啓動文件。
npm 啓動項目: npm start
訪問接口
瀏覽器地址欄輸入一下地址:這個是打開LED,
http://樹莓派分配的域名:樹莓派分配的端口/raspberry/index?status=1
總結
其實我們也可以看見其實這個操作並不難也不復雜,就是把之前node.js 項目和樹莓派端口操作簡單的結合了一下,但是需要有明確的思路和目的,然後就是把之前和各種知識結合使用了。