owned this note changed 6 years ago
Linked with GitHub

致敬「米家」 - 我家就是米家 - 黃志賢

歡迎來到 MOPCON 2019 共筆

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

共筆入口:https://hackmd.io/@mopcon/2019
手機版請點選上方 按鈕展開議程列表。

會場 wifi-SSID: mopcon-2019
會場 wifi-PASSWD: mopcon-2019

tags: MOPCON 2019

從這開始

議題資源

今天目的 - 以小米智能插座 WiFi 版為例

  • 一開始講者有分享影片,並敘述沒有在影片中看到什麼。而沒看到的東西為:
    • 閘道器(Gateway)
    • 如何設定 WiFi SSID & 密碼(SmartConfig)
    • SSL 傳輸加密
    • 廠商如何出貨及設計
  • 為什麼要自己做
    • ㄑㄑㄑ譜
    • 隱私
    • 在荒郊野外
    • 參加MOPCON, \OwO/
  • 從選擇 IoT 開始 - ESP8266

    • 可用 Arduino IDE 開發的最便宜 WiFi 模組(NodeMCU NT 100)
    • 支援 802.11 b/g/n
    • 具備類比 I/O & 數位 I/O
  • 決定架構 - 把 IoT 設定為 AP Mode(Server)

    • 在設為 AP Mode 後,該裝置的 IP 就會變成是固定 IP。
    • 缺點:若使用「區域網路」可能就無法進行連線。但若是將 IP 設定為固定 IP 又可能會有安全性的問題。
  • 決定架構 - 把 IoT 設為 Client

    ​​​​​​  user <--> server <--> IoT(Client)
    
  • 決定架構 - Client 也可雙向連線

  • IoT 連線需求

    • 商家出貨需有辨識身份 SN(Token)
    • WiFi 連線設定方法 - SSID, Password
    • SSL 傳輸加密

相關的問題可以搜尋「小米」

  • Arduino 範例程式

    • 類 C,至少需要 setup() & loop()
    • 程式特性為由上往下執行。
  • Arduino - 使用 SmartConfig 設定 WiFi

    • 無螢幕 Client IoT 較佳 WiFi 設定方案

SmartConfig 會自動把手機裡面的連線資訊傳送到 IoT,而 IoT 就會自動存入該連線資訊裡面的使用者設定。
原理是算 UDP 的封包長度,因此 APP 是 (Cordova + Pluging)

  • Arduino - SSL 加密 BearSSL::setFingerprint

    • 2.5.0 後開始支援,SSL 證書更新指紋也會更新。
    • 但要注意 Arduino 的版本是否支援該 SSL 的 SDK。
    • 第三方SSL 證書需要一直更新
    • 可以自己頒一個N年證書(由於IoT不是網頁不太需要儼僅的第三方證書)
  • Hoyo 的選擇? Socket Server

    • 發彈幕功能就是使用 Web Soclet
    • 隔行如隔山,還是找框架吧
    • Socket Server 框架是使用 Work man

講者使用的程式語言是 PHP
框架: Workerman

  • 長連結通訊難點
    • 通訊協定:內容自訂
    • 設計「認人」方法
    • 長時間逾時 Time Out
    • 通訊
      • 1 to 1
      • 1對多

在開發過程中,因為 IoT 的 socket 通訊機制跟 WebSocket 是不同的,但因為為了開發上測試的方便,也可以先用 WebSocket 來測試,後續再轉成 IoT 用的 socket 來去實現 IoT 的功能。

  • Socket 架構

IoT <-> Server
port: 3000
port: 3001

  • Hoyo 怎麼做?Web - 前後端分離

    • 前端:HTML, JS, CSS, JQuery, php.js
      • php.js: js 使用 php function
    • 後端:PHP, PHP query
  • 情境 - 將單一或多個動作組成 HTTP API

    • 假設插座有「開關」功能,則可以將該功能轉為一個 HTTP API。藉由這個 API 來去呼叫開燈或關燈的動作。
  • 觸發情境的方法

    • 智能音箱
    • 語音助理
    • 其它:IFTTT, Chat Bot, 密室逃脫
  • 智能音箱 & 語音助理

    • 智能音箱:Server - Server
    • 語音助理:
  • 決定架構 - 智能音箱串接

    • 需要特定步驟才能在 APP 裝置清單內。
Select a repo