クイックスタート 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デバイスを用意します
CHBleManager
のdidDiscoverUnRegisteredCHDevices
から未登録の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 devicedeviceList.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
)パラメーターを入力します。こちらのCHDevices
はCHSesame2
型クラス- WiFi Moduleが
CHSesame2
の鍵オブジェクトを受け取ったら、WiFi ModuleデバイスがSesameデバイスをBLEスキャンすることを行います - WiFi ModuleがBLEスキャンをしている場合、WiFi Moduleデバイスの赤いLEDランプが3回ずつ点滅します
- 赤いランプが消灯後、
onBleDeviceStatusChanged
の中のCHSesame2Status
状態がLocked
からLockedWm2
に変更し、またsesame.isConnectedByWM2
がtrue
になります
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 { }