前言:

拜 ESP32 本身內建 Wifi 之賜,所以 ESP32 可以很容易的就像一般的電腦一樣,透過 Wifi 登入家中的基地台,變成家中區域網路中的一個網路節點。

為此 ESP32FORTH 設計了非常酷的兩個模式:一個是 Web UI 終端機模式,另一個是 Telnet 模式

也就是説,一但登入變成家中區域網路中的一個網路節點後。你可以開啟 Web Server 的功能,將 FORTH 的交談環境透過 ESP32FORTH 內建的 WebServer 分享出去。這時候,只要有任何一台電腦或平板電腦 iPad 的網頁瀏覽器,都可以登入 ESP32FORTH ,透過網路終端機控制 ESP32FORTH 的交談環境,編譯或執行或編輯 FORTH 程式。

另一個是 Telnet 模式,既然都是網路節點了,所以也可以開啟 ESP32FORTH 的 Telnet Server 功能。這時候,只要用任何一台電腦或平板電腦 iPad 的 Telnet Client 都可以連接上 ESP32FORTH 進入 FORTH 的交談環境編譯或執行或編輯 FORTH 程式。

這兩個模式都超棒的啦,對於家庭裡的 IoT 控制,一般有人的做法是把它弄成網頁,然後透過已經設計好的網頁來控制並讀取感測器例如家裡溫度計或濕度計的值。可是啊,我們 FORTH 的交談環境其事就是世界上最好 Script 系統呀。我們除了連上去可以很彈性的要求 FORTH 系統幫我們讀感測器的值外。還可以即時動態編寫執行程序,變成最棒的家庭數位控制中樞呀。所以,根本可以直接丟棄那些累贅的 html code 的編寫啊。只要把 FORTH 的交談環境上網,透過遙控來控制,就是最棒的 IoT 方案。

所以我們來開啟這兩個任督二脈吧。

 

ESP32FORTH 的 Web UI 模式

這個模式超級容易的,在 ESP32FORTH 裏面,一行指令搞定:

z" [Wifi-AP-SSID]"  z" [Wifi-AP-Password]"  webui

這裡 [Wifi-AP-SSID] 是你家 Wifi 基地台的 SSID, 而 [Wifi-AP-Password] 是你家 Wifi 基地台的登入密碼。

webui 是開啟 Web UI 的登入指令,它接受兩個引數:第一個引數是以 z" text" ,用 \0 來當結束字元的字串,所標示wifi網路基地台的 SSID。第二個引數一樣是以 z" text" ,用 \0 來當結束字元的字串,所標示wifi網路基地台的登入密碼。

指令下達後, webui 會用這兩個參數登入所指示的wifi網路基地台,待登入成功,得到基地台所分配的網路位址後,顯示在螢幕上。同時進入開啟 Web伺服器模式, 並將 FORTH 的終端機服務導向 Web伺服器之中。

之後,只要找到任何一台在這個網域賞的任何電腦,透過電腦上的網頁瀏覽器,都可以直接透過這台 ESP32 的網路位址直接連線,進入網頁形式的終端機服務,直接跟這 ESP32 上面的 ESP32FORTH 溝通,編寫跟執行程式囉。

 

來個範例吧,這樣就會非常清楚囉。

這裡要先說的,筆者的 ESP32FORTH 一般都會先試用比較新的版本 7.06.19,但很奇怪,這個功能不是很穩定呢。一開啟 webui 模式很大機會會直接當掉。但退回 Long Term Stable Release: 7.0.5.4 卻是非常穩定,一點問題都沒有。 官方的 ESP32FORTH team 要加加油啊。

來示範一下,先在二樓書房的 ESP32 上的 ESP32FORTH 開啟 webui 功能。這片 ESP32 上面有掛了一顆 DHT22 溫度濕度感測器,所以我們在樓下一樓的客廳,利用 iPad 的 Safari 瀏覽器,連上二樓書房的 ESP32,然後請 ESP32FORTH 執行一下 DHT22 的溝通程式,幫我們量一量現在二樓書房的溫度跟濕度的呀。

二樓書房的 ESP32

IMG_9254.png

首先,我們家的 wifi 基地台的 SSID 是 "Frank home network orbi" 密碼是 "******",所以

z" Frank home network orbi"  z" ********" webui

這樣就搞定囉,進入 Web UI 模式

webui login2.png

ESP32FORTH 系統回報: 192.168.1.28   MDNS started

基地台分配給 ESP32 的網址為 192.168.1.28,所以之後用 192.168.1.28: port 80 這個網址就可以用瀏覽器連線進來囉。

來,用 iPad Air 連一下,

IMG_9250.png

來用 .dht22 指令,請 ESP32 告訴一下 DHT22,幫我們量量書房裏面的溫度濕度吧。

為了方便,即時定義了 : study .dht22 ;  所以以後只要鍵入 study (書房) ,立刻回回報此時書房裡的溫度跟濕度囉。

IMG_9252.png

 

整個 FORTH 系統都在你的控制之下,

IMG_9253.png

 

 

ESP32FORTH 的 Telnet 模式

ESP32FORTH 除了剛剛所說的 Web UI 模式外,因為本身支援 wifi 跟 socket 連線,所以自然,系統也順便內建 Telnet Server 的模式。

在這個模式下, FORTH 的終端機交談環境會被導向 Telnet Server。所以只要任何電腦,都可以透過 Telnet 程序連入 ESP32FORTH 來進入 FORTH 的終端機交談環境,來對 ESP32 進行 FORTH 程式編譯或執行。

不過,傷腦筋也,不同版本行為有一點點不一樣。舊的版本 7.0.5.4 網路穩定,但 Telnet Server 的程式的處理可能沒有寫得很好,在 MacOS 下終端機的 Telnet 連上後, enter 無法正確辨識跟處理。Telnet 斷線後,會無法重新連線,幾乎是不可用的程度。

新的版本 7.06.19 則是網路不穩,第一次登入 wifi 後必當機,都必須登入兩次後才能成功。

但新的版本 Telnet Server 程式則是可以正常跟 MacOS 下終端機的 Telnet 正確運作。一堆問題有賴於 ESP32FORTH 官方的解決啊。或是等筆者研究完 ESP32FORTH 的原始碼後,來改進修改成自己所需要的形式。

所以這裡, Telnet 模式我們改用沒問題的 7.06.19 來做示範。

 

1. 登入無線 wifi 網路

就像一般電腦一樣,使用前我們需要先登入 wifi 網路,然後 wifi 基地台會分配網路 IP 位址給我們。這裡, ESP32FORTH 簡化了登入的程序,只要利用 login 指令即可將 ESP32 登入 wifi 網路基地台。

z" [Wifi-AP-SSID]"  z" [Wifi-AP-Password]"  login

這裡 [Wifi-AP-SSID] 是你家 Wifi 基地台的 SSID, 而 [Wifi-AP-Password] 是你家 Wifi 基地台的登入密碼。

登入成功後,它會回報wifi基地台所分配的網路位址回來。

 

實際範例

我們家的 wifi 基地台的 SSID 是 "Frank home network orbi" 密碼是 "******",所以

z" Frank home network orbi"  z" ********" login

telnet setup.png

成功登入後,系統會回傳

192.168.1.25

MDNS started

代表 192.168.1.25 為這個 ESP32 的網址。

 

2. 開啟 Telnet Server

Telnet Server 的指令都放在 telnetd 的詞彙裡面。

所以要先鍵入 telnetd ,要求系統先搜尋 telnetd 詞彙裡的指令。

Telnet Server 的主程式是 server ( port --) 這個指令。也就是說,例如要監控 port 23 來當 telnet server,就鍵入 23 server 後就開啟 telnet server 模式囉。

此時程式會不斷監控 port 23,發現連線後就會以 telnet 服務的方式,將 FORTH 的終端機交談環境導向 telnet 服務。

 

實際範例

上圖的下面,鍵入 telnetd 及 23 server 則開啟了 port 23 聆聽的 telnet server 的動作, telnet server 服務啟動囉。

 

 

3. 透過網路上的任一電腦的 telnet 來連線 ESP32FORTH,對其做控制。

直接範例囉

打開 MacOS 的終端機,直接 telnet 192.168.1.25 啟動 telnet 連線 192.168.1.25

很順利的連上 ESP32FORTH 囉

telnet 1.png

雖然前兩次 0 list 不成功,但最後總算順利顯示 block 0 的資料囉。

block 9 我存放了 9x9 乘法表的程式碼,讓我們載進來執行吧!

就鍵入 9 load,程式碼就被載入編譯,然後執行囉。

telnet 2.png

 

棒棒的 FORTH 系統,現在可以透過網路,遠端連線過來控制跟執行。只要穩定性能再持續改進下去,相信就天下無敵囉。

💪💪💪

 

xxx

 

arrow
arrow

    ohiyooo2 發表在 痞客邦 留言(0) 人氣()