UDP Multicastの申請が許可されて、iOSでUDP 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で投げても機器からは応答がない。