Echonet Lite搭載機器を探し出すプログラムを開発しようとして、Multicast送信のためには許可が必要と分かった。Apple Developperサイトから適当な申請を出したら機器間でどんなメッセージを送るのか説明しろと返事が来た。。EchonetLiteの仕様を知らないのだろうか。。EchonetLite機器って日本だけの流通??
Thank you for your interest in Multicast Networking. Can you please provide more details on which multicast or broadcast protocol (IP address and port) you need to use? What messages are exchanged between devices?
ちゃんと返事しないと、、こじれると厄介だ。。。
引き続き日本語で返事してもいいのやら。。
■追記(2020/12/13)
以下のような説明用のPDFを作成して、「ECHONET Liteプロトコルで機器情報をやり取りします」といった内容で回答した。どういう判断になるのやら。。
■追記(2020/12/19)
催促しようかどうしようかと思っていたら、承認のメールが来た。よかった。これでiPhoneアプリでEchonet Lite機器のスキャナーが作れる。。UDP Multicastが正しく実装できれば、だけど。
Your request to use Multicast Networking was approved. You can now add the Multicast Networking entitlement with your Provisioning Profile. Instructions for using the entitlement are available and, for more information on using multicast, please read How to use multicast networking in your app. If you have questions or issues, please use the “Network” tag on the Apple Developer Forums.
嬉しかったので、へなちょこ英語でお礼を書いた。
早速、Apple DeveloperのID管理ページでMulticastを有効にする
XCodeとAppleDeveloperは同期処理をしているようで、AppleDeveloper側で有効にしつつXCode側でEntitlementを修正していないと、不一致が起きていると怒ってくる。com.apple.developer.networking.multicast についてはプルダウンメニューから選べないようなので、entitlementファイルを手で修正する。
権限のところでこじらせてしまい、これまでビルドしてたProjectを破棄して、あらたに作り直した。ビルドが通りUDP MulticastもExceptionを吐かずに正常動作するようになった。以下はXCodeのコンソール画面
2020-12-19 16:42:58.212195+0900 ELDeviceFinder[3577:516244] [] nw_listener_socket_inbox_create_socket IP_DROP_MEMBERSHIP 224.0.23.0:3610 failed [49: Can't assign requested address] Group entered state waiting(POSIXErrorCode: Network is down) waiting POSIXErrorCode: Network is down Group entered state ready ready send...UDP Send complete with error nil Received message from Optional(192.168.10.158:52652) Optional(8 bytes) Group entered state cancelled cancelled bye
PC側ではUDP MulticastのClienteを走らせていて、以下の通りiOSから配信されたパケットを受信することができた。
--------------- [68][65][6C][6C][6F][41][6C][6C] ---------------
技術的に一番やっかいなUDP Multicatは動かせるようになったので、、残る処理は、UDPパケットを正しいECHONET Liteパケットに直すのと、ECHONET Lite機器からの応答パケットを解析してリストに追加する処理だ。これはそれほどトラブルもなく実装できると思ってるのだが。。
EchonetLite仕様書
https://echonet.jp/wp/wp-content/uploads/pdf/General/Standard/ECHONET_lite_V1_12_jp/ECHONET-Lite_Ver.1.12_02.pdf
ESV:0x62 , EPC:0xD6
UDP Multicast Addr: 224.0.23.0 Port:3610