ESP8266 應用一:智能插座 .7 SSL 通訊加密

官方範例

在寫這篇的時候 (2019/12) 可以查到指紋憑證已經和範例網站 api.github.com 不同,如果沒有 OTA 機制更新 SSL 指紋憑證就是一個大問題,所以 Hoyo 使用自己發憑證的方式解決,因為 ESP8266 並不會像瀏覽器一樣審核發行單位。

自己發憑證

根據自己的網站發行一個超久的憑證給 ESP8266 使用,Hoyo 這裡示範的是一個極端的例子

如此即可使用

24 total views, 9 views today

ESP8266 應用一:智能插座 .5 改用 Socket 通訊為主動控制做準備 TCP Client

在完整的應用,ESP8266 除了上傳監測器數據,還需要接收主機送過來的繼電器控制訊號,必須建立即時、可控的雙向通訊機制

為了簡約開發使用 TCP Text 通訊 JSON 當成通訊格式,最後加上 SSL 加密就完成規劃

此階段只做到 Text 雙向通訊完結

TCP Server

這裡還是使用多年以前使用的 TCP Server Tool 來擔任 Server 角色,等 Client 開發完成再自行架設

Socket_TCPServerTool

ESP8266 TCP Client

ESP8266 使用 TCP Socket 做通訊沒有想像中的困難,反而是相當的容易

使用 netstat -nt 指令查看確定網路通訊狀態正常

TCP Server 推送

ESP8266 Arduino

  • client.readStringUntil(‘\n’); 從 client 接收字串,使用 \n 換行區隔
  • Serial.println(Control); 將收到的字串輸出看看

從 TCP Server Tool 發送訊息,會自動送出換行,其他軟體請注意設定

ESP8266_SocketClient_TCPServer_Push

在串列監視就可以收到訊息

ESP8266_SocketClient_Seria

131 total views, 1 views today

ESP8266 應用一:智能插座 .6 接收 Server 指令及繼電器控制

為了可以擁有指令擴充能力,還是採用 JSON 格式

增加 JSON 處理能力

到 GitHub 下載 zip 後,Arduino → 草稿碼 → 匯入程式庫 → 加入 .ZIP 程式庫,選擇剛剛下載的 zip 檔案

在整理資料的時候版本已經升到 6 了,以前的程式碼不適用了 … = =a

JSON 接收處理

參照 GitHub 上的 example 加上上一章 ESP8266 應用一:智能插座 .5 改用 Socket 通訊為主動控制做準備 TCP Client 的 TCP Server 程式來發送 json 測試

運作起來的結果大概就像這樣

ESP8266 接收 JSON 字串處理

繼電器控制

繼電器有分高電平和低電平,意思就是有電還是沒電可以導通,選擇要看需求,例如在本次的專案是智能插座,打算沒通電的時候就也不通電,所以選擇的是高電平控制繼電器

把上面的程式加上繼電器的接腳輸出定義,以及將從 TCP Server 接收的 JSON 指令解析控制繼電器即可完成

2 total views, no views today

ESP8266 應用一:智能插座 .3 DHT-11 溫濕度

終於要把現實世界和數位世界連接了,一開始的現實對象是環境溫、濕度,所以要使用溫、濕度監測器或是說監測模組。

模組一般都是將主功能電子零件加上必要的配套電路成為獨立零件,非電子專業使用會比較方便,Hoyo 使用的模組是 DHT-11

(非業配,賣場內還有另一個是只有監測器,比較便宜可是沒有應用電路)

加入程式庫

為了讀取 DHT11 數據,所以直接用其他大大分享的程式庫是比較快速的方式

從 GitHub 下載 zip 打開 Arduino IDE,草稿檔 → 匯入程式庫 → dht11-master.zip

程式範例 – 從串列埠觀看溫、濕度

 

下圖中的 delay 時間為 200 ,並非上面設定的 2000

ESP8266 DHT11 串列埠輸出

將 DHT11 讀取溫、濕度上傳到主機

先假設你已經有一個可以使用 HTTP API 上傳資料的主機,然後接下來就是如何把資料丟上去,在此假設的規格是使用 GET 傳遞

上傳到其他 IoT 平台 – 以 Ubidots 為例

從 Devices 查看上傳數據

點選單一監測數據可以看到詳細數據

接腳接反會燒壞!

其實電子零件大多是這樣的下場,以前搞音響 DIY 燒的更慘 …

優、缺點

極限值以及準確度是 DHT11 的硬傷,所以在熟悉 DHT11 之後可以選擇更高階的同類產品,例如 DHT2x 系列

37 total views, 2 views today

CentOS 7 – MySQL 5.6 升級到 MySQL 5.7

為了把自己的主機 MySQL 同步公司的環境,所以必須從 MySQL 5.6 更新到 5.7 ,升級 MySQL 很簡單倒是升級 phpMyAdmin 遇到了一些困難

升級 phpMyAdmin 4.9.1

120 total views, 1 views today

NanoPi – USB 網路卡 ( WiFi AP 應用 )

USB WiFi

本次測試的 USB WiFi dongle 硬體資訊

NanoPi 有支援驅動,可以掃描 AP

將 wlx??? 網路卡名稱改成 wlan0

AP mode

vi /etc/network/interfaces

啟用

vi /etc/hostapd/hostapd.conf

vi /etc/dnsmasq.conf

啟用

vi /etc/NetworkManager/NetworkManager.conf

啟動

初次使用時,可以使用以下指令顯示執行訊息方便除錯

USB 插入

加入自己的 USB 插入程序

/etc/udev/rules.d/99-usbwifi.rules

/home/wifi_script

完整的 USB WiFi 插入 & 拔出 log 紀錄

實際使用

NanoPi_USB_WiFi

NanoPi_USB_WiFi_AP

NanoPi_USB_WiFi_HTTP

201 total views, 5 views today