Wio Terminal用Ethernet HATに使うつもりのW5500(WIZnet社製)ですが、マルチキャスト通信を行うには注意が必要ということがわかりました。
結論としては、マルチキャスト受信とユニキャスト送信が必要な場合、ソケットを2つ使う必要があるようです。
ググったところ、こちらの情報(can’t receive multicast packet and respond)にも同様のことが書かれていました。
Wio Terminal用Ethernet HATに使うつもりのW5500(WIZnet社製)ですが、マルチキャスト通信を行うには注意が必要ということがわかりました。
結論としては、マルチキャスト受信とユニキャスト送信が必要な場合、ソケットを2つ使う必要があるようです。
ググったところ、こちらの情報(can’t receive multicast packet and respond)にも同様のことが書かれていました。
各プロパティ値の表示を意味ある形にして、ノード一覧をソートしました。プロパティの設定は制約としてできないようにしていますが、スキャナ(Echonet機器のプロパティ値の取得)としては、それなりに使えるようになったと思います。
プログラムソースはGitHubで公開しています。
しばらく待たないと情報取得できない件ですが、依存ライブラリのELSwiftに1行追加したところ、すんなり情報が返ってくるようになりました。(後述の通り、依存ライブラリの修正は不要)
追加したのは、ELSwift.swiftのinitialize()メソッドの最後に、自ノードインスタンスリストSの取得パケット送信(マルチキャスト)。
try ELSwift.sendOPC1( EL_Multi, [0x0e,0xf0,0x01], [0x0e,0xf0,0x01], 0x62, 0xd6, Node_details["d6"]! );
オリジナルのコードでは、
だけだったのが、
となる格好となります。
よく見たら、追加する行はELSwift.search()メソッドの内容と同じでした。
依存ライブラリをオリジナルに戻し、ELSwift.initialize()を呼び出した直後にELSwift.search()を呼び出せば同等の結果になることを確認できました。
見栄えはともかく、LAN内のECHONET機器を検索、各プロパティ値を取得して表示するところまでできました。
とりあえず、ビューだけ実装してみました。表示内容はハードコーディングしています。
色々と気に入らないところが多いですが、引き続きEchonet情報収集ロジックを組み込んでみようと思います。