Document

クイックスタート WiFi Module2

目的

iOS 開発者向けに SesameSDK のクイックガイドです。コピペですぐ使えるサンプルコードを通じて、WiFi Module 経由でセサミを遠隔操作できるアプリを一瞬で作りましょう。

準備リスト

  • WiFi Module デバイス
  • Sesame デバイス(登録済みスマートロック)
  • iOS10 以上の端末

フロー

  • クイックスタート Sesame の通り Sesame を登録します
  • 未登録の WiFi Module を取得する
  • WiFi Module の状態を取得する
  • WiFi Module と BLE 接続する
  • WiFi Module を登録する
  • WiFi Module に近くにあるSSIDリストをスキャンさせる
  • WiFi Module に WiFi のSSIDを設定する
  • WiFi Module に WiFi のパスワードを設定する
  • WiFi Module に設定した WiFi に接続させる
  • WiFi Module に Sesame 情報を追加する
  • WiFi Module 経由でセサミを遠隔操作してみる!

クイックスタート Sesame 通り Sesame を登録する

  • WiFi Module は登録済の Sesame デバイスにのみ対応しますよ
  • BLE スキャンは必ずオンにして下さいね

未登録の WiFi Module を取得する

  • iOS 端末の横に未登録の WiFi Module デバイスを用意します
  • CHBleManagerの delegate の通知先をselfに設定します
  • CHBleManagerDelegatedidDiscoverUnRegisteredCHDevices(_ devices: [CHDevice])から未登録の WiFi Module の delegate イベントを取得します
CHBleManager.shared.delegate = self // delegateの通知先をselfに設定します
extension ViewController: CHBleManagerDelegate {
func didDiscoverUnRegisteredCHDevices(_ devices: [CHDevice]) {
// 未登録の WiFi Module を発見します
}
}

WiFi Module の BLE 状態を取得する

  • BLE スキャンにより WiFi Module の取得後、CHWifiModule2Delegate の delegate メソッドを使って、WiFi Module の状態変化の delegate イベントを取得します
  • 各操作により BLE 状態変化が異なります。状態一覧はWiFi Module 状態遷移図をご参照ください。
extension ViewController: CHWifiModule2Delegate {
func viewDidLoad() {
super.viewDidLoad()
self.wifiModule.delegate = self // WiFi Module のdelegateの通知先をselfに設定します
}
// wifi-module の状態変化をdelegate
func onBleDeviceStatusChanged(device: CHWifiModule2, status: CHSesame2Status) {
}
// wifiModule の代理事件
func onAPSettingChanged(device: CHWifiModule2, settings: CHWifiModule2MechSettings) {
}
func onNetworkStatusChanged(device: CHWifiModule2, status: CHWifiModule2NetworkStatus) {
}
func onSesame2KeysChanged(device: CHWifiModule2, sesame2keys: [String: String]) {
}
func onOTAProgress(device: CHWifiModule2, percent: UInt8) {
}
func onScanWifiSID(device: CHWifiModule2, ssid: SSID) {
}
}

WiFi Module と BLE 接続する

  • WiFi Module デバイスの BLE アドバタイジングを取得できたら、WiFi Module と BLE 接続するコマンドが使用可能となります。
  • WiFi Module デバイスの BLE アドバタイジングを取得できたら、未登録の WiFi Module の delegate イベントが伝わってきます。未登録のデバイスの初期 BLE 状態は必ずreceivedBleとなります。
extension ViewController: CHWifiModule2Delegate {
func onBleDeviceStatusChanged(device: CHWifiModule2, status: CHSesame2Status) {
if status == .receivedBle() {
device.connect() { _ in } // デバイスのBLE状態が receiveBle になったら、connectコマンドをする。
}
}
}

WiFi Module を登録する

  • WiFi Module デバイスと BLE 接続する完了後、WiFi Module の BLE 状態がreadyToRegisterと変わります。registerコマンドを使って、WiFi Module デバイスを登録します。
  • WiFi Module デバイスの登録が完了後、WiFi Module の BLE 状態がwaitApConnectに変わり、次のステップにて WiFi Module デバイスに Router の設定をします
  • WiFi Module デバイスの LED は登録前に紫色、登録後は赤色となるので、ご確認下さい
extension ViewController: CHWifiModule2Delegate {
func onBleDeviceStatusChanged(device: CHWifiModule2, status: CHSesame2Status) {
if (wifiModule.deviceStatus == .readyToRegister()) {
device.register { _ in } // デバイスのBLE状態が receiveBle になったら、registerコマンドをする。
}
}
}

WiFi Module に近くにある WiFi SSID リストをスキャンさせる

  • scanWifiSSIDメソッドを叩き、WiFi Module に近くにある WiFi SSID リストをスキャンさせる
  • onScanWifiSID から 2.4GHz WiFi SSID リストの delegate イベントを取得する
self.wifiModule.scanWifiSSID { _ in } // 近くの SSID をスキャンする.
extension ViewController: CHWifiModule2Delegate {
func onScanWifiSID(device: CHWifiModule2, ssid: SSID) {
// 2.4g WiFi SSID リストのコールバックが返ってきます
}
}

WiFi Module に WiFi の SSID を設定する

  • setWifiSSIDメソッドを使ってSSIDを入力します
  • もし WiFi Module デバイスが入力されたSSIDを検知できない場合、失敗のコールバックが返ってきます
wifiModule2.setWifiSSID("your-ssid") { setResult in
if case let .failure(error) = setResult {
}
}

WiFi Module に WiFi のパスワードを設定する

  • setWifiPasswordメソッドを使ってパスワード入力します
device.setWifiPassword("your-wifi-ssid-password") { _ in }

WiFi Module に設定した WiFi に接続させる

  • connectWifiを使って、WiFi Module に設定された WiFi に接続させます
  • CANDY HOUSE Cloud に接続成功後、WiFi Module デバイスの青色 LED ランプが点灯します
wifiModule.connectWifi { _ in }

WiFi Module に Sesame 情報を追加する

  • insertCHDevice(device)CHDeviceオブジェクトを入力します。こちらのCHDevicesCHSesame2型クラス
  • WiFi Module がCHSesame2の鍵オブジェクトを受け取ったら、WiFi Module デバイスが Sesame デバイスを BLE スキャンすることを行います
  • WiFi Module が BLE スキャンをしている場合、WiFi Module デバイスの赤い LED ランプが 3 回ずつ点滅します
  • 赤いランプが消灯後、onBleDeviceStatusChangedの中のCHSesame2Status状態がLockedからLockedWm2に変更し、またsesame.isConnectedByWM2trueになります
    • locked -> lockedWifiModule2
    • unlocked -> unlockedWifiModule2
    • moved -> movedWifiModule2
    • isConnectedByWM2true
wifiModule2.insertCHDevice(device) { _ in }

WiFi Module 経由でセサミを遠隔操作!

  • BLE 経由で Sesame を施解錠するメソッドとは変わりません。BLE 経由でするか、WiFi 経由でするかを SesameSDK が自動的に判断します
  • インターネット経由で施解錠をする時に、WiFi Module デバイスの赤い LED ランプが一瞬点滅します
device.toggle { _ in } // 施/解錠
device.lock { _ in } // 施錠
device.unlock { _ in } // 解錠

サンプルプロジェクト

前へ SesameSDK_iOS クイックスタート 次へ SesameSDK_iOS 参考資料