腳本可程式控制器的本機功能基本上已完成,開始實現遠端相關功能。
遠端系統整體架構如下:
使用ESP8266的SDK實作tcp伺服器和tcp客戶端。
在tcp伺服器的基礎上編寫http協議解析程式碼,設計簡單的http伺服器,處理與瀏覽器的資料交互,包括內建網頁的下載,並使用ajax技術獲取狀態並保存資料。
使用html、js、css設計網頁並下載儲存到ESP8266模組的flash中,結合後端c語言的資料處理,實現基於網頁的腳本程式設計、狀態檢視、參數設定等功能;
雲端伺服器端,購買了一台linux雲端伺服器主機,選擇swoole作為TCP/IP通訊閘道;
Swoole是適用於生產環境的PHP非同步網路通訊引擎,讓PHP開發者能夠編寫高效能非同步並發TCP、UDP、Unix Socket、HTTP、WebSocket服務。
在Swoole框架中實現tcp伺服器和websocket伺服器,其中tcp伺服器用於連接控制器和雲端,控制器的tcp客戶端與雲端伺服器的tcp伺服器建立TCP長連接,以便從互聯網獲取資料可透過TCP連接遠端傳送給控制器,實現對控制器的遠端控制;
遠端網頁使用websocket客戶端與Swoole的websocket伺服器建立長連接,實現雲端伺服器與網頁之間的遠端穿透,從而可以將控制器的狀態即時推送到網頁顯示時間;
websocket伺服器和tcp伺服器之間的資料透過記憶體共享,PC、網頁和控制器都有唯一的編號,PC主機、控制器和網頁之間的資料封包以這個編號為來源目的位址, tcp伺服器和websocket伺服器收到資料封包後依目的位址轉發,實現PC上的資料傳輸。 tcp伺服器和websocket伺服器收到資料封包後,根據目的位址進行轉發,從而實現PC工具、網頁和控制器之間的資料互聯。
採用redis作為記憶體資料庫,可將控制器的狀態資料暫時儲存在資料庫中,實現電話異常警報等功能,而採用mysql作為永久資料庫,儲存一些設定資料。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3