SmartTriggerはBluetooth Smartなデバイスであり、各プラットフォームで提供されるBluetooth4.0のAPIを利用して、独自アプリケーションを開発できます。
SmartTriggerではカスタムプロファイルを使用しており、開発に必要なServiceUUIDやCharacteristicsUUIDの紹介、SmartTriggerを操作するAPI、SmartTrigger側の機能も併せて、最後には簡単なサンプルアプリケーションの紹介します。
また本APIで開発されたアプリケーションのサポートは開発者に直接お問い合わせください。
加えて、本ページによって開発されたアプリや、開発によって生じたSmartTriggerの故障、トラブルは一切の保証を致しかねます。
*便宜上、以下からはiPhoneやiPodなどSmartTriggerの接続対象はセントラルと呼びます。
上記で紹介したUUIDを利用して、SmartTriggerが提供するAPIを紹介します。
またBluetoothで送信するデータはビッグエンディアンに変換して送る必要があります。
同様にSmartTrigger情報通知で取得したデータはビックエンディアンから戻す必要があります。
// CFSwapInt32HostToBigを使って送信する例
- (void)timer:(unsigned short)delay shutter:(unsigned int)aShutter {
if (_timerReleaseCharacteristic) {
unsigned short swapedDelay = CFSwapInt16HostToBig(delay);
unsigned int swapedShutter = CFSwapInt32HostToBig(aShutter);
*_bleTransferData = 0x01;
*(_bleTransferData + 1) = swapedDelay & 0xFF;
*(_bleTransferData + 2) = swapedDelay >> 8 & 0xFF;
*(_bleTransferData + 3) = swapedShutter & 0xFF;
*(_bleTransferData + 4) = swapedShutter >> 8 & 0xFF;
*(_bleTransferData + 5) = swapedShutter >> 16 & 0xFF;
*(_bleTransferData + 6) = swapedShutter >> 24 & 0xFF;
[_peripheral writeValue:[NSData dataWithBytes:_bleTransferData length:7]
forCharacteristic:_timerReleaseCharacteristic type:CBCharacteristicWriteWithoutResponse];
}
}
APIでは操作できないSmartTriggerが持つ機能を紹介します。
自動電源OFF
セントラルと接続していない状態で10分経過したら自動で電源OFFにします。
またレリーズボタンの押下があった場合は、その時点から10分後になります。
接続拒否
SmartTriggerを複数のセントラルでペアリングし、再度ペアリング済みのセントラルで接続を試みると、
SmartTriggerが持つそのセントラルのペアリング情報が古いため接続状態にも関わらず各APIが利用できない状態になります。
その場合は、SmartTriggerから接続を切断します。セントラル側ではペアリングを解除するように促す必要があります。
自動SmartTrigger情報通知
SmartTriggerは自動で最長1分間隔で自身の情報を能動的に通知します。
電源をOFFにしない限りSmartTriggerは撮影枚数を保持し続けます。
詳しくは、
SmartTrigger情報通知を参照してください。
独立した撮影処理
撮影処理はセントラルとの接続と関係ないので、撮影に入った後は接続を切断しても問題ないです。
また、撮影がタイムラプスなのかタイマー撮影なのかや撮影枚数は何枚かは電源をOFFにしない限り保持するので、
再度セントラルはSmartTriggerと接続した後にSmartTrigger情報通知で知ることができます。
ただしAPIで送ったパラメータ(タイマーやインターバル時間など)は保持していないので、セントラル側が保持する必要があります。
レリーズボタン
SmartTriggerにあるレリーズボタンを押すことで写真が撮れます。
赤外線ケーブルによる撮影も事前にカメラメーカを正しくSmartTriggerに設定してあればセントラルがなくても可能です。
また押したときに1度押している状態をSmartTirgger情報通知によって通知され、離したときに再度同APIによって通知されます。
撮影実行とキャンセル
撮影のキャンセル処理は各APIのキャンセルパラメータを設定すれば可能ですが、
例えばタイマー撮影中にタイムラプスのAPIを呼ぶことでタイマー撮影はキャンセルされ直後にタイムラプスを実行することができます。
LED点灯・点滅
リモート撮影、タイマー撮影、タイムラプスのAPI(キャンセルは除く)を受け取ったSmartTriggerはLEDを点滅して知らせます。
また、タイマーが設定されている場合、撮影まで10秒以内で点滅、3秒以内であれば撮影開始まで点灯します。
ファームウェア更新に失敗している状態
バージョンが0xFFの場合は、ファームウェア更新が失敗してる状態で、更新が正しく完了するまで一切の撮影機能が使えません。
そのため、開発者はSmartTrigger Appでファームウェア更新を完了させるよう促した方が良いでしょう。