基於Ngrok內網穿刺實現web端控制樹莓派IO口。

基於Ngrok內網穿刺實現web端控制樹莓派IO口。

Ngrok服務

1.1 參考

1.png
註冊Ngrok賬號

2.png
開通隧道,可以選擇免費的,也可以付費購買

3.png
購買之後會生成id號

4.png
對於去下載樹莓派上使用的服務端

5.png
上傳至樹莓派上並解壓,本文放置路徑/home/pi/
6.png
解壓後進入目錄,會發現有一個可執行文件——“sunny”,執行命令"./sunny clientid <你的Ngrok隧道id>"進入下面界面,顯示在線,說明服務部署成功。此時等到執行後面的index.py文件7.png

2 樹莓派本地網頁準備

2.1 代碼編寫

本文想實現通過web遠程控制樹莓派,效果圖如下:

index.png
點擊函數通過正則表達式篩選出點擊的按鍵,並通過$(post)將請求傳至後臺腳本index.py

 $(function () {

                   $(".btn-trigger").click(function (){

                       var text = $(this).text().replace(/ /g, "").replace(/\n/g, "").replace(/\r/g, "").replace(/\t/g, "");

                       var cmd = "";

                       switch(text){

                           case "空調開":

                               cmd = "空調開";

                               break;

                           case "空調關":

                               cmd = "空調關";

                               break;

                           case "臥室燈開":

                               cmd = "臥室燈開";

                               break;

                           case "臥室燈關":

                               cmd = "臥室燈關";

                               break;

                           case "排氣扇開":

                               cmd = "排氣扇開";

                               break;

                           case "排氣扇關":

                               cmd = "排氣扇關";

                               break;

                           case "冰箱開":

                               cmd = "冰箱開";

                               break;

                           case "冰箱關":

                               cmd = "冰箱關";

                               break;

                           case "電飯煲開":

                               cmd = "電飯煲開";

                               break;

                           case "電飯煲關":

                               cmd = "電飯煲關";

                               break;

                           case "加溼器開":

                               cmd = "加溼器開";

                               break;

                           case "加溼器關":

                               cmd = "加溼器關";

                               break;

                           case "窗簾開":

                               cmd = "窗簾開";

                               break;

                           case "窗簾關":

                               cmd = "窗簾關";

                               break;

                           case "電視機開":

                               cmd = "電視機開";

                               break;

                           case "電視機關":

                               cmd = "電視機關";

                               break;

                       }

                       if(confirm("確定要執行該命令嗎?")){

   $.post("/cmd",cmd,function(data,status){});

                       }

                   });

               })
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from bottle import get,post,run,request,template

@get("/")
def index():
    return template("index")
@post("/cmd")
def cmd():
    print ("按下了按鈕: "+request.body.read().decode())

    return "OK"
run(host="0.0.0.0")

2.12執行

將index.html和index.py上傳到樹莓派某個文件夾下面,執行python3 index.py

3 運行效果

test.gif

4 完整代碼地址

喜歡的可以給個star鼓勵一下~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章