HOYO 的 2019 回顧

公司

  • 年初維護 OiKID 專案,不過客戶已經打算自行維護,所以處理的都是比較麻煩的功能
  • 使用 LINE Message API 將網站客服和 LINE 生活圈整合,在其他公司也是直接拿來當作唯一產品的功能,例如 https://no8.io/ or https://www.cresclab.com/
  • 九月時「被動」離開了明郅科技,話說已經很久沒被「被動」過了,一開始就是以每年簽約的方式,有這麼一天也不意外
  • 十月進入了「台科電科技股份有限公司」,這間公司有很多事情可以做,「希望」可以讓我順利的做到第二年

個人

  • 丈母娘離開我們先去修行了
  • 老大上大學,因為在外縣市所以整個暑假都是忙上學的事情,遊樂園計畫又失敗了 …
  • 將去年開始搞的 ESP8266 整理了一個從硬體出貨到消費者使用綁定的完整生態平台,因為沒有利益衝突決定將所有成果公開分享,所以參加了「堅持濁水溪以南,南台灣最大行動科技年會 MOPCON 2019」,分享了「致敬「米家」 – 我家就是米家」議題,不過因為野心太大沒講好 … 對不起來參加的聽眾 m(_ _)m
  • 因為攜帶的硬碟壞軌進行資料轉移,然後把原先的硬碟資料全部遺失,還燒了另一顆硬碟還有裡面的資料,雖然平時有備份資料可是還是有遺失資料,這已經是第二次了,應該是這些資料也長大了所以獨立離開父母了吧 😭 (Emoji 列表)
  • 久違的又到酷學園分享,議題還是 ESP8266 那個,果然議題太大了還是沒講好,現在想想這種場合還是不適合互動環節,互動環節都應該自己互動後播放影片就好
  • 在公司的員工活動贊助下終於實現了去玩密室逃脫的願望,場地是「神不在場 – X伯爵的委託」,太好玩了,鐵腿了兩天 …

2019 代表字

操心、操勞、或只是單純「操」

277 total views, 1 views today

NanoPi – RTL8188CUS hostapd 安裝

前面有一篇 NanoPi – USB 網路卡 ( WiFi AP 應用 ) 真的要測試的同學應該都失敗了,因為文章內的網卡是多年前的產品使用 Ralink RT2573 晶片,雖然原生支援預設 hostapd nl80211 driver ,可是根本就買不到了。

友善之臂官網有賣 EDUP EP-N8508 USB WiFi ,使用的是 Realtek8188CUS 晶片,經過九九八十一難安裝過程如下

環境準備

設定 wlan 固定 IP

重新啟動網路讓設定生效

安裝支援 RTL8188  的 hostapd 版本

驗證是否安裝完成

將 wlan 脫離 NetworkManager 管理

重新啟動 NetworkManager

wlan0 已經脫離 NetworkManager 管理

hostapd.conf

啟動程式測試

如果執行訊息沒有錯誤停止,那就是已經成功完成了

自訂 hostapd service

開機執行及啟動

RT8188CUS 晶片資訊

652 total views, 8 views today

ESP8266 應用一:智能插座 .8 建制自己的 Socket Server

TCP Client 請自行根據作業系統以及個人喜好選擇,記得通訊字串最後要「換行」

Socket1.php – 只會顯示接收訊息的 Socket Server

這是第一個功能最簡單的 Socket 程式,只會把接收的訊息顯示

執行起來像這樣

Socket2.php – 將接收訊息複製回傳並加上流水號

Socket3.php – 儲存資料到資料庫

常駐程式內要使用資料庫,要注意 timeout 問題,Hoyo 目前的解決方法是使用短連結 PDO::ATTR_PERSISTENT=>false ,以及不使用 global 傳遞資源,每個 funtion(){} 內建立 PDO 資源,如此每個 MySQL 連線都是新建立,沒有長連結共用問題就沒有 MySQL server has gone away 錯誤

Socket3.php

Socket4.php – 紀錄 Client 以及推送

Socket5.php – 不須 restart 更新程式方式

只須將程式片段另外儲存 php 後,使用 require 引入使用即可,不過修改對象是 Socket5.php 還是需要 stop 再 start 才行

mysql.php

Socket6.php – SSL 通訊加密

如果是 Python 這類較高階程式可以複製 apache.crt 就可以建立 SSL 加密通訊,ESP8266 目前是使用指紋憑證,可以使用 How to View a Certificate Fingerprint as SHA-256, SHA-1 or MD5 using OpenSSL 的查詢指令

253 total views, no views today

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

官方範例

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

自己發憑證

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

如此即可使用

287 total views, 1 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

240 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 指令解析控制繼電器即可完成

132 total views, 2 views today