Document

クイックスタート WiFi Module2

目的

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

準備リスト

  • WiFi Moduleデバイス
  • Sesameデバイス (登録済)
  • Android 5.0以上の端末 (BLE操作可能な端末)

フロー

  • クイックスタート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を取得する

  • Android 端末の横に未登録の WiFi Moduleデバイスを用意します
  • CHBleManagerdidDiscoverUnRegisteredCHDevicesから未登録のWiFi Moduleのdelegateイベントを取得します
  • RSSIはWiFi Moduleデバイスが発信しているBLEアドバイタイシングの信号強度
CHBleManager.delegate = object : CHBleManagerDelegate {
override fun didDiscoverUnRegisteredCHDevices(devices: List<CHDevices>) {
devices.forEach {
if (!deviceList.contains(it) && it.rssi!! > -50) { // limit -50 rssi near device
deviceList.add(it)
runOnUiThread {
(recycle.adapter as GenericAdapter<*>).notifyDataSetChanged()
}
}
}
}
}

WiFi ModuleのBLE状態を取得する

  • 各操作によりBLE状態変化が異なります。状態一覧はWiFi Module状態遷移図までご参照ください。
  • 登録済のWiFi ModuleデバイスとBLE接続をする前に、delegateイベントがCHSesame2Status.ReceivedBle状態になる必要な場合がございます。
device.delegate = object : CHWifiModule2Delegate {
override fun onBleDeviceStatusChanged(
device: CHWifiModule2,
status: CHSesame2Status
) {
updateUI(device)
if (device.deviceStatus == CHSesame2Status.ReceivedBle) {
device.connect { }
}
}
override fun onNetWorkStatusChanged(
device: CHWifiModule2,
settings: CHWifiModule2NetWorkStatus
) {
updateUI(device)
}
override fun onAPSettingChanged(
device: CHWifiModule2,
settings: CHWifiModule2MechSettings
) {
updateUI(device)
}
override fun onScanWifiSID(
device: CHWifiModule2,
ssid: String,
rssi: Short
) {
}
}

WiFi ModuleとBLE接続する

  • WiFi ModuleデバイスのBLEアドバタイジングを取得できたら、WiFi ModuleとBLE接続するコマンドが使用可能となります。
  • WiFi ModuleデバイスのBLEアドバタイジングを取得できたら、未登録のWiFi Moduleのdelegateイベントが伝わってきます。未登録のデバイスの初期BLE状態は必ずCHSesame2Status.ReceivedBleとなります。
device.connect { }

WiFi Module を登録する

  • WiFi ModuleデバイスとBLE接続する完了後、WiFi ModuleのBLE状態がCHSesame2Status.ReadyToRegisterと変わります。registerコマンドを使って、WiFi Moduleデバイスを登録します。
  • WiFi Moduleデバイスの登録が完了後、WiFi ModuleのBLE状態がCHSesame2Status.WaitApConnectに変わり、次のステップにてWiFi Moduleデバイスに Routerの設定をします
  • WiFi ModuleデバイスのLEDは登録前に紫色、登録後は赤色となるので、ご確認下さい
if (device.deviceStatus == CHSesame2Status.ReadyToRegister) {
device.register {
it.onSuccess {
device.configureLockPosition(0, 256) {}//1024 = 360 degree
}
}
}

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

  • scanWifiSSIDメソッドを叩き、WiFi Moduleに近くにあるWiFi SSIDリストをスキャンさせる
  • onScanWifiSID から 2.4GHz WiFi SSID リストのdelegateイベントを取得する
device.scanWifiSSID {}
// ...
object: CHWifiModule2Delegate {
// ...
override fun onScanWifiSID(device: CHWifiModule2, ssid: String, rssi: Short) {}
}

WiFi ModuleにWiFiのSSIDを設定する

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

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

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

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

  • connectWifiを使って、WiFi Moduleに設定されたWiFiに接続させます
  • CANDY HOUSE Cloudに接続成功後、WiFi Moduleデバイスの青色LEDランプが点灯します
device.connectWifi {
it.onSuccess {
deviceList.forEach {
Log.d("hcia", "CHSesame2 1:" + (it is CHSesame2))
if (it is CHSesame2) {
Log.d("hcia", "CHSesame2 2:" + (it is CHSesame2))
device.insertSesames(it) {
it.onSuccess {
Log.d("hcia", "CHSesame2 3:" + (it is CHSesame2))
}
}
}
}
}
}

WiFi ModuleにSesame情報を追加する

  • insertSesamesに(CHDevices)パラメーターを入力します。こちらのCHDevicesCHSesame2型クラス
  • WiFi ModuleがCHSesame2の鍵オブジェクトを受け取ったら、WiFi ModuleデバイスがSesameデバイスをBLEスキャンすることを行います
  • WiFi ModuleがBLEスキャンをしている場合、WiFi Moduleデバイスの赤いLEDランプが3回ずつ点滅します
  • 赤いランプが消灯後、onBleDeviceStatusChangedの中のCHSesame2Status状態がLockedからLockedWm2に変更し、またsesame.isConnectedByWM2trueになります
if (it is CHSesame2) {
device.insertSesames(it) {
it.onSuccess {
Log.d("hcia", "CHSesame2:" + (it is CHSesame2))
}
}
}

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

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

GitHub テンプレ

前へ SesameSDK_Android クイックスタート 次へ SesameSDK_Android 參考資料