ナニバヌサルモバむル電子キヌ

「GoogleのDevice Lab」プロゞェクトに参加するよう申し出られたずき、私は非垞に興奮したずは蚀えたせんが、もちろん興味がありたした。 Bluetoothを介しおさたざたなやり取りを行うプロゞェクトを実行するず、非垞に興味深い実装が埗られたした。 ただし、Bluetoothの操䜜䞭に、所有者がBluetoothの動䜜範囲内で意図せずに電源を入れたたたにしたすべおの電話機は、通垞より3倍速く充電を倱いたした。 もちろん、同僚はあたり幞せではありたせんでした。 プロゞェクトは閉じられなければなりたせんでした。 この点で、私は「最埌の䞖代」のビヌコンを「粘り匷い」手に保持したいずずっず思っおいたした。 そしお、Device Labプロゞェクトは私にそのような機䌚を䞎えおくれたした。









Google Lab Labコンテストの䞀環ずしお、著者Dmitry Senashenko @DmitrySen による蚘事 。



珟圚、垂堎には倚くのビヌコンずそのメヌカヌがいたす。 そしおそれらのほずんどは、建物内の地理的䜍眮を決定するように蚭蚈されおいたす。 ビヌコンをスヌツケヌスに埋め蟌んで、空枯で信号でビヌコンを怜玢するずいうカテゎリの興味深いアむデアがありたす。 しかし、力があれば、おもちゃのように芋えたす。 独創的で䟿利なものを思い぀いお同時に実装したかったのです。 そのため、りェブサむトずHabrのオフィスでのいく぀かの手続きず、私の手にあるiBKSビヌコン









灯台に぀いおは倚くのこずが曞かれおいたす。 䟋「 Googleのビヌコンプラットフォヌム。 パヌト1 「たたは」 Googleのビヌコンプラットフォヌム。 パヌト2 」。 繰り返しはしたせんが、Googleのビヌコンプラットフォヌムでビヌコンを䜿甚し、APIを介しお操䜜するこずになっおいたず蚀いたす。 珟実には「i」が点圚しおいたす。これに぀いおは埌で説明したす。



私の人生では、電子メヌル、html、smsなどをサポヌトするテレフォニヌずむンテリゞェントIVRを䜿甚しおいたす。 したがっお、既補のスタンドがあり、必芁な機噚などを簡単に入手できたす。 そしお、このトピックに察しお、ビヌコンを適応させたかったのです。



アむデア



そこで、ビヌコンをオフィスのドアぞの認蚌キヌずしお䜿甚するずいうアむデアが思い぀きたした。 誰もが知っおいるように、すべおのオフィスには、電子ロック付きのドアず入り口にリヌダヌがありたす。 各埓業員はカヌドの圢のキヌを持ち、ドアに入るためにこのカヌドをリヌダヌに取り付ける必芁がありたす。その埌、ドアが開きたす。 䞖界では、そのようなドアの数は数十億に達し、カヌドの数はおそらく1兆になりたす。 実際にそれらを䜿甚するこずはあたり䟿利ではありたせんが。 重芁な䌚議に急いでいる堎合、カヌドを抜出するたたは、このカヌドが眮かれおいるオブゞェクト財垃、ドキュメントのあるフォルダヌを抜出するのに時間を浪費するのは非垞に退屈です。



ただし、各人のポケットには電話がありたす。 たた、䞀郚にはハンドヘルド゚レクトロニクスもありたす。 電話を忘れるよりも、カヌドを忘れた人に䌚う方が簡単です。 したがっお、カヌドを電話に、リヌダヌをビヌコンに眮き換える方が䟿利で経枈的です。 もちろん、この方向には良いアむデアがありたす。



たずえば、指王リヌダヌ付きのドアハンドル、電話のNFCなど。 しかし、NFCテクノロゞヌはすべおのスマヌトフォンに搭茉されおいるわけではありたせんが、Bluetoothはすべおのスマヌトフォンに搭茉されおいたす。 したがっお、技術的にはこのアむデアは実際に実装する準備ができおいたす。



さらに、この゜リュヌションにより、埓業員の快適性が向䞊したす。 ドアに近づいお、アプリケヌションアむコンをクリックするだけで、承認埌、ドアが開きたす。 ぀たり ゚レベヌタからでも、ドアに近づいおでも開くこずができたす。 たた、時蚈からドアを開けたり、マむクを䜿っおヘッドフォンのパヌ゜ナルアシスタントに話しかけたりするこずもできたす。 重芁な芁玠は認可です。 これをもっず詳しく芋おみたしょう。 図1を参照しおください。



䜜業の抂略図



電話機はビヌコンの可芖範囲に入り、Beacon Discoverを䜿甚しおビヌコンを怜出し、Nearby messages APIを介しおGoogleビヌコンレゞストリから添付ファむルを受信したす。 次に、暗号化されたセッションでWifiたたはモバむルむンタヌネットを介しお、電話はこの添付ファむルずIMEIたたは他の䞀意のコヌドセットを承認サヌバヌにむンストヌルするずきに送信したす。 蚱可サヌバヌはアクセス暩を識別し、そうであれば、ドアを䞀意に特城付ける添付ファむルからのデヌタに基づいお、察応するロックを開くためのコマンドを電子ロック管理サヌバヌに䞎えたす。 電子ロック制埡サヌバヌは、アクチュ゚ヌタヌにドアを開くように指瀺したす。









図1.盞互䜜甚の線成のスキヌム



ここで私に起こった解決策がありたす、そしお今それを実装しおみたしょう。



私たちは鉄のアむデアを具珟化したす



G250ゲヌトりェむを備えたAvaya PBXを自由に䜿甚できたした。 これは叀いゲヌトりェむであり、長く廃止されたした。 しかし、その新しい代替品であるG450 / G430ゲヌトりェむには、必芁なコンポヌネント、぀たり電子ドアロック制埡ドラむブも含たれおいたす。 小芏暡オフィスのニヌズに察応するため、このゲヌトりェむにはドラむリレヌが組み蟌たれおいたす。いわゆる接点閉鎖補助装眮です図2を参照。









図2. Avaya Gateway G430



このコネクタは、事前定矩された電話番号のダむダルを制埡するために䜿甚できたす。 この番号をダむダルするず、ゲヌトりェむはリレヌを閉じ、電子ロックを開くための信号を送りたす。



さらに、AvayaがプロデュヌスしたIVRInteractive Voice Responseを備えたワヌクスタンドも利甚できたした。 これは完党に゜フトりェアのサヌビスであり、音声リク゚ストだけでなく、メヌル、SMSも凊理できたす。この゜リュヌションでは、htmlリク゚ストが必芁になりたす。 たた、このIVRは、電子メヌルずSMSだけでなく、音声通話も開始できたす。 ぀たり このプロゞェクトに関連しお、このIVRは倉数の転送を䌎うhtmlリク゚ストを受け取り、これらの倉数の凊理結果に基づいお、特定の番号ぞの音声通話の発信を開始できたす。 IVRでの芁求凊理は、組み蟌みツヌルずJavaプログラミング蚀語の䞡方を䜿甚しお実行できたす。 この点で、このIVRは蚱可サヌバヌずしお䜿甚されたした。 G250ゲヌトりェむを備えたAvaya Aura Communication Manager PBXが電子ロック制埡サヌバヌずしお䜿甚されたした。 電子ロックも利甚できたした。



したがっお、携垯電話のアプリケヌションは、ビヌコンの識別子を取埗し、Googleビヌコンレゞストリに連絡し、その添付ファむルを取埗する必芁がありたす。その埌、htmlリク゚ストでこの情報ずIMEIをIVRに送信したす。 G250の接点閉鎖ドラむリレヌを短絡させお、ドアを開けたす。



さお、実装の準備の最埌のステップは、Androidオペレヌティングシステムを実行する携垯電話を入手するこずでした。 これは、Android Lollipop 5.1.1を搭茉したHTC Desireでした。 もちろん、ラップトップにAndroid Studioをむンストヌルする必芁もありたした。



すべお準備が敎ったので、私は準備を敎えたした。 い぀ものように、珟実はiに点圚しおいたす。



萜ずし穎



たず、ビヌコンをGoogleビヌコンレゞストリに登録する必芁がありたす。 これを行う最も簡単な方法は、Google Play MarketずApple App Storeの䞡方で利甚可胜なGoogle Beacon Toolsモバむルアプリを䜿甚するこずです。



ビヌコンをオンにしお、マむクロ回路ずバッテリヌの間のプラスチックの断路噚を取り倖し、Googleビヌコンツヌルをむンストヌルしお、ビヌコンの怜玢を開始したした。 圌は珟れたせんでした。 次に、メヌカヌのアプリケヌションiBKS Config Toolをダりンロヌドしたした。 このアプリケヌションは、AndroidデバむスずiOSデバむスの䞡方でも䜿甚できたす。 そしお-芋よ ビヌコンが珟れたした。









図3. iBKS構成ツヌル



しかし、圌は氞続的にGoogleビヌコンツヌルに衚瀺したくありたせんでした。 むンタヌネットを勉匷した埌、iBKS Config Toolで線集モヌドに入り、ビヌコンのブロヌドキャストのタむプを倉曎する必芁があるこずを読みたした。 アプリケヌションはAndroidずiOSの䞡方で頑固に線集モヌドに入るこずを拒吊したした。 バッテリヌを取り倖しおビヌコンをオフにしおから再びオンにした埌にのみ、このモヌドに入るこずができたした。 すべおに぀いお玄30秒があり、その埌ビヌコンは再びブロックされたした。 この機胜たたはバグを理解できたせんでした。 これはどこにも蚘茉されおいたせん。 図4を参照しおください。









図4. iBKS構成ツヌルの線集モヌド



広告モヌドを1から7に倉曎するず図5を参照、぀いにGoogleビヌコンツヌルにビヌコンが衚瀺されたした図6を参照。 しかし、圌は頑固に登録を拒吊したした。









図5.広告モヌドの遞択









図6. Googleビヌコンツヌル



登録甚のGoogleビヌコンツヌルでは、ビヌコンをiBeaconたたはEddystone UUIDモヌドにする必芁がありたしたが、このモヌドでは頑固に衚瀺されたせんでした。 Eddystone URLモヌドでは、圌はそれを芋たしたが、登録を拒吊したした。 AndroidずIOSでのこのアプリケヌションの動䜜は同じでしたが、Androidではアプリケヌションが最初にプロゞェクトを遞択し、その埌ビヌコンの登録を拒吊したした。



ビヌコンのこの動䜜の理由は䜕でしたか、プロゞェクト䞭に芋぀けるこずができたせんでした。 ビヌコン自䜓に問題があったようです。 もちろん、亀換する䟡倀はありたしたが、プロゞェクトの期間は限られおおり、Habrのオフィスぞの新しい旅行の時間はありたせんでした。 iBKS Config ToolおよびGoogle Beacon Toolsを䜿甚した実隓から、ビヌコンが発信し、䞀意の識別子を送信しおいるこずが明らかになりたした。 したがっお、デモスタンドのビヌコンは、Googleビヌコンレゞストリから受信した添付ファむルではなく、その識別子によっお識別するこずに決定されたした。 䞀般に、プロトタむプ゜リュヌションの堎合、このような眮換は非垞に適切です。



そのため、Android Studioがビヌコン識別子の怜出を敎理できるようにするJavaラむブラリを芋぀けるだけです。 もちろん、GitHubずRadiusnetwork.com.eddystonedemoラむブラリが助けになりたした。 このラむブラリを䜿甚するず、ビヌコンによっおブロヌドキャストされる識別子を確認できたす。これは、iBKS Config Toolでも衚瀺できたす。 ここで説明したす 。



倧きな灰色のボタンがあるアクティビティが線成されたした図7を参照。 このボタンは、ビヌコンを芋぀けた埌、Clickableの色、名前、およびプロパティを倉曎したした。 ぀たり、ビヌコンが芋぀かるたで、ボタンを抌しおも䜕も起こりたせん。 ビヌコンが芋぀かるずすぐに、ボタンが赀に倉わり、クリックできたす。 ボタンが抌されるず、URLが呌び出され、IMEI送信でIVRアプリケヌションに぀ながりたす。IMEIはそれをチェックし、成功するず、SIPを介しお電子ロック制埡サヌバヌに呌び出しを圢成したす。 ビヌコン信号が倱われた堎合それたでの距離が長くなるか、オフになる、ボタンの色が倉わり、Clickableプロパティが元に戻りたす。









図7.アプリケヌションのスクリヌンショット



コヌドず最終実装



プロゞェクト党䜓は、Githubでここにありたす。 詳现に぀いお説明したす。 以䞋は、ビヌコンが芋぀かったずきに呌び出される関数です。



public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) { for (Beacon beacon: beacons) { if (beacon.getServiceUuid() == 0xfeaa && beacon.getBeaconTypeCode() == 0x00) { // This is a Eddystone-UID frame Identifier namespaceId = beacon.getId1(); Identifier instanceId = beacon.getId2(); foundBeacon = namespaceId.toString(); //       .       . if (foundBeacon.equals("0xba1c51bab3147efee8e5")) { Log.d("Found beacon", foundBeacon); //         found = true; runOnUiThread(new Runnable() { public void run() { //   ,    Clickable   . mainButton.setText("You can open the door now"); mainButton.setBackgroundColor(0xffef0606); mainButton.setClickable(true); } }); } Log.d("RangingActivity", "I see a beacon transmitting namespace id: " + namespaceId + " and instance id: " + instanceId + " approximately " + beacon.getDistance() + " meters away."); runOnUiThread(new Runnable() { public void run() { ((TextView) RangingActivity.this.findViewById(R.id.foundbeacon)).setText("Found beacon - " + foundBeacon); } }); } } }
      
      





以䞋は、IVRでURLを呌び出す関数です。



 public void buttonClick(View view) { //    IMEI  String ret = telephonyManager.getDeviceId(); Log.d("IMEI", ret); //URL    IP  IVR     HTML    OpenTheDoor       IMEI webview.loadUrl("http://192.168.0.204:7080/Redirector/?AVAYAEP__LaunchId=OpenTheDoor&beacon=" + foundBeacon + "&imei=" + ret.toString()); }
      
      





このアプリケヌションのタむマヌは、電話が玛倱しおから5秒埌に䜿甚できなくなったずきにボタンを消すために必芁です。



 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ranging); mainButton = (Button) findViewById(R.id.mainbutton); telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); webview = (WebView)findViewById(R.id.webView); //   mTimer = new Timer(); mMyTimerTask = new MyTimerTask(); mTimer.schedule(mMyTimerTask, 1000, 5000); } class MyTimerTask extends TimerTask { @Override public void run() { if (found) { found = false; } else { runOnUiThread(new Runnable() { public void run() { //       mainButton.setText("Open the door"); mainButton.setBackgroundColor(0xffcfc3c3); mainButton.setClickable(false); ((TextView) RangingActivity.this.findViewById(R.id.foundbeacon)).setText(""); } }); } } } }
      
      





IVRのアプリケヌション開発は、特殊な環境Avaya Aura Orchestration Designerで実行され、開発環境Eclipseに基づいおいたす。 基本的に、各芁玠の䞋にはJavaコヌドがありたす。 アプリケヌションは、ドラッグドロップのスタむルで開発を簡玠化するように構築されおいたす。 図8は、IVRのアプリケヌション開発環境のスクリヌンショットを瀺しおいたす。









図8. Avaya Aura Orchestration Designer開発環境



このアプリケヌションには、Data1ずOutcallingの2぀のメむンモゞュヌルがありたす。 これらのモゞュヌルのスクリヌンショットを図9および10に瀺したす。









図9. Data1モゞュヌル









図10.呌び出しモゞュヌル



ビヌコン識別子ずIMEIの実際の認蚌はData1モゞュヌルで実行されたす。䞡方が正しい堎合、Outcallingモゞュヌルに転送が行われ、CalledNumber倉数に栌玍されおいる事前構成番号ぞの発信コヌルが生成されたす。 この倉数は、ATCで構成された番号を蚭定しお、電子ドアロックに接続されたドラむContactClosureリレヌをアクティブにしたす。



完党なプロゞェクトはこちらにありたす 。



たあ、結論ずしお、ビデオがこのアドレスに投皿され 、プロゞェクトの説明が行われ、既に完了したプロゞェクトのデモンストレヌションが行われたす。 ご枅聎ありがずうございたした



All Articles