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 参考資料