Wi-SUNゲートウェイのWio Terminal化を検討中ですが、やはりWiFiではなくEthernetで運用したいと思いました。
また、単純にWio TerminalでEthernetを使いたい、という需要もあるのではないか、と。
そこで、WIZ550ioを使ったEthernet HATを試作しました。(とりあえず、ユニバーサル基板で。近日中にプリント基板を起こす予定です。)
なお、動作確認は、Ardiono開発環境でEthernet3ライブラリを使用して行いました。
と言っても、Wi-SUNインタフェースボードをケースに入れただけです。
Fusion360の1年ライセンスを購入したので、その習作としてケースを作成してみました。なかなか綺麗にできたので満足しているところです。
seeed社製Wio Terminalを買ってみました。40ピンのGPIOヘッダ(ソケット)があり、ピン配置はラズパイ互換となっています。
そこで、Wi-SUNインタフェースボードとの接続実験を行ってみました。
と言っても、繋ぐ信号はUARTのTxD、RxD、(無線モジュール用)リセットの3本のみです。
4連休の後半2日を使って、最終的に疎通確認までできましたが、単純なところで躓いてしまいました。(できれば、もう少し先に進めたかったんですが…)
UnicodeDecodeError: ‘cp932’ codec can’t decode byte 0x98 in position 134: illegal multibyte sequence
というエラーメッセージで、C++(Arduino)のswitch~case文の中で起きました。「multibyte」とありますが、特に日本語を使ってるとかはありません。
case 0xc0: uint8_t r = 0x00; break;
各プロパティ値の表示を意味ある形にして、ノード一覧をソートしました。プロパティの設定は制約としてできないようにしていますが、スキャナ(Echonet機器のプロパティ値の取得)としては、それなりに使えるようになったと思います。
プログラムソースはGitHubで公開しています。
nginx-proxy&letsencrypt-nginx-proxy-companionコンテナ環境下で仮想ホストを追加する手順を残しておきます。
しばらく待たないと情報取得できない件ですが、依存ライブラリの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()を呼び出せば同等の結果になることを確認できました。
色々と試行錯誤した結果、マシンタイプe2-microを1インスタンス立ち上げ、7つのコンテナを稼働させることにしました。(nginx-proxy、letsencrypt-nginx-proxy-companion以外の5コンテナは仮想ホストとして稼働)
パフォーマンスが気になったので、nginxコンテナ とWordpress/My SQLコンテナだけ起動して走確してみました。
結果としては、まともにブラウザ表示できない状況でした。試しに、VMインスタンスのファイアウォール設定で8080を空けて、Wordpressコンテナに直接アクセスできるようにすると問題なかったので、nginxを経由していることが原因と思われます。
見栄えはともかく、LAN内のECHONET機器を検索、各プロパティ値を取得して表示するところまでできました。