2022年10月01日
IP Power 9258 をPICマイコンを使ってシリアルポートから制御する
IP Power 9258 というネットワークから電源を制御できる便利なデバイスがあります。
正面パネルのボタンで、個別でON-OFFするモードに入れるのですが、そのモードに入った途端すべての電源ポートが同時にON-OFFしだす謎仕様のために、事実上ローカルでの操作は出来ません。
仕方なく、目の前でいちいちスマホを取り出してブラウザで接続してON-OFFしていたのですが、さすがに面倒なのでなにか方法はないかと考えました。
正面パネルにはボタンの他にシリアルコントロール用のD-SUB 9ピンコネクタが付いていて、ここにコマンドを流し込めば任意のポートを制御できそうです。
マニュアルにはコマンド一覧のようなものはありませんでしたが、gist で公開されていたPythonプログラムを動かしてコマンドを解析したところ、以下のようになっていました。
・シリアルポートの設定は 19200 bps - 8-n-1
・コマンドは "0\\A" と "\\Z" で挟む。
・"DEBUG9258"でシリアルポートから制御可能な状態になる。
・P060? で最後の1文字を4bitとして個別にポートを設定する。
論理は0でONなので、"P0600"なら全部ON、"P060F"なら全部OFF、"P060E"はポート1だけON
シリアルポートからは応答用の2ピン以外は電圧が出ておらず、ジグには別途電源が必要です。
ACアダプタを用意するのは面倒なので、乾電池1本を昇圧させて5Vを生成し、電源が入ったら4P DIPスイッチの状態を見て一度だけコマンドを送る方針にしました。
ハマったのは、コマンドを一度に送るとデバイスが反応しなかったことで、参照元にあるように、60msに1バイトずつ送ることで上手くいきました。
コードは github に公開しています。
https://github.com/7m4mon/ip9258_ctrl
欲しい物が設計したとおりに動作して満足です。リファレンスとなるコードを公開してくださった nrclark 様に感謝します。