chakokuのブログ(rev4)

テック・コミック・DTM・・・ごくまれにチャリ

iOS版 ECHONET Lite機器走査アプリがボチボチ動く

UDP Multicastの申請が許可されて、iOSUDP Multicastを投げてECHONET Lite機器を探し出すアプリを開発中。
なんとかiOS側から INF_REQ(0x63)をMulticastして、ECHONET Lite機器(メディアコンバータ)からINF(0x73)が返却されるところまではできた。
以下はWindowsで動かしているUDP受信プログラム

iOSからのINF_REQ (UDP Multicast)
---------------
[10][81][00][00][05][FF][01][0E][F0][01][63][01][D5][00]
---------------
メディアコンバータからの応答(UDP Unicast)
---------------
[10][81][00][00][0E][F0][01][05][FF][01][73][01][D5][07][02][05][FF][01][01][30][09]
---------------

以下はXCodeのコンソール表示

2020-12-19 23:23:08.171906+0900 ELDeviceFinder[393:13442] [] 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.156:58850)        <<  iOSからのMulticastを自分自身で受信
Optional(14 bytes)
Received message from Optional(192.168.10.164:49154)        <<  EL機器(メディアコンバータ)からの返信
Optional(21 bytes)
bye
Group entered state cancelled
cancelled

今後の実装は、、
複数の機器からポツポツとUDPで返ってくるのを非同期で受信して、GUI上でリスト形式で機器一覧を表示させる。
補足:
INF_REQをMulticastするのはVer1.0系の実装とのことで、Ver1.1系ではMulticastでGET 投げるらしい。が、、機器との正しい通信プロトコルを守らないと、GETでMulticastで投げても機器からは応答がない。