====== サーバを外からリセットする ====== サーバの調子が悪くなり、突如、頓死することが多くなりました。もちろん、原因を究明し、根治するのが肝心ですが、とりあえず、リセットして様子をみたいこともしばしばあります。 家にいれば、自分で押しますし、外出中でも、大抵の場合は、妻に頼んで、リセットボタンを押してもらえば事足りるのですが、忙しかったり、機嫌が悪かったりしたときには頼みにくかったりします。 そこで、リセットくらいは、外からでもできるようにしよう、というのがこのプロジェクトです。もちろん、リセット機能を外部から操作するというのは大変に危険なことでもあります。利便性と安全性のバランスを、自分なりにとりながら作業を進めることになります。 この内容は、したがって、決して万能ではありません。むしろ、お勧めできるような内容ではありませんが、同じような悩みをお持ちの方や、セキュアである必要性が低い、実験マシンの制御などにお困りの方の一助にはなるかもしれません。但し、実施に当たっては自己責任でお願いします。 ====== リセットボタンを制御する ====== 要は、リセットスイッチにリレーを直結し、そのリレーを外部から制御することで、リセットを実現できる。応用としては、ATX電源スイッチや、その他、スイッチ制御を行なうことができるので、応用範囲は広いだろう。 以下に、二種類の方法を挙げる。前者IP Power9202を使う方法は、電子工作の知識が少なく、半田ごてなど握りたくも無い向きにはお勧めであるが、少々、高くつく。(IP Power 9202が4,300円で、その他の細かい部品もあわせると5,000円前後。) 他方、自分で回路を組む方法は、比較的安価に上げられる点がポイントだ(1,000円弱?)。但し、中学校の技術家庭程度の半田付けのスキルは要求されるし、トランジスタのスイッチング動作と、各回路要素の値の決定くらいは理解していないとならない。 用途と環境に合わせて、どちらをとるか選んでほしい。 ===== IP Power 9202を使った制御 ===== ==== IP Power 9202 ==== IP Power 9202は秋月通商で販売されている、リレー制御キットである。特徴は4つのリレーと、それを制御するための制御部とからなり、制御部は、独立したIPを持ったサーバとして振舞う。従って、LANにつないでIPを設定してやれば、即利用可能となる。あとは、リレーに、PCのリセットスイッチをつなぐだけだ。 ==== Windows以外から制御したい ==== IP Power 9202は、それ自身がウェブサーバとして機能し、CGIを使って、リレーを制御できるようになっている。つまり、つないだら、後は、ウェブサーバを外部に公開すれば、どこからでも制御ができる。但し、これを行なうと、サーバにセキュリティホールがあった場合に、ネットワーク全体を危険にさらすことになるし、CGI自身も、パスワード保護があるとはいえ、httpsではなくhttpなので非常に脆弱である。 IP Power 9202はウェブサーバを通して制御する他に、付属のSDKを利用して、VC++やVBで制御プログラムを書くことができる。この場合、ウェブサーバを通すことなく、制御ができるので、便利である。但し、この制御プロトコルの仕様は公開されておらず、SDKのソースもないので、詳細はわからない。 わからないでは、話にならないので、SDKのサンプルの制御ツールと、IP Power 9202の間のパケットを観測して、プロトコルの一部を解明した。その情報を元に、[[http://www.wildtree.jp/~araki/archive/ruby/ipp.zip|ipp.rb]]というRubyの暮らすライブラリを作成した。socketライブラリにのみ依存するので、ほとんどのRubyが動作する環境で利用できると思う。 #!/usr/bin/ruby require 'ipp' control = IPController.new '192.168.0.100' # IP Power 9202のIP control.on 0 # スイッチ#0をオン(但し、9202はこのスイッチはリレーONで切れる) control.off 0 # スイッチ#0をオフ control.inv 0 # スイッチ#0を反転 n = 0 control.status.each do |i| print "スイッチ \##{n}は" if i print "ON" else print "OFF" end print "です。\n" n += 1 end このようにして使う。なおコメントに書いたように、9202では#0, #2はリレーONでスイッチ切で、#5, #7がリレーONでスイッチONになるように配線されている。#1, #3, #4, #6はパターンがあいていてなにも接続されていない。 リセットは、スイッチをいったんONにしてからOFFにする必要があるので、使えるリレーとしては#5か#7になる。 なお、この制御に使うプロトコルの中身は、ipp.rbを読めばわかると思うが、このプロトコルを使って、外部からリレーを操作してはならない。そこには何らセキュアな機構はないからである。従って、この機能を使うには、内部に、サーバとは別個に、安定した常時運転のサーバが必要だということになる。たとえば、玄箱を使って、サーバの状態を pingなどで監視し、たとえば5回連続で、タイムアウトしたら、自動的にリセットを発呼するような用途に限って使うべきだろう。 ==== サーバへの接続 ==== 物理的な、サーバへの接続は、次のようにした。 [[http://www.wildtree.jp/~araki/photo/ipp/IMG_0854.JPG|{{http://www.wildtree.jp/~araki/photo/ipp/IMG_0854.JPG}}]] まず、写真のように、PC用のLED延長ケーブルの一部の被服をむき、そこに、オーディオ用の二芯ケーブルをつないだ、よじってテープで巻くなどでいいと思うが、簡単に外れると困るのでしっかりと撚ること。半田付けしてもいい。絶縁のために必ずしっかりテープをまくこと。テープがはずれて、接触などしようものなら、勝手にリセットマシンになってしまうので注意。被服をむく位置を、すこしずらすのもいいだろう。ヒシチューブやスミチューブなどで覆えばなおよいだろう。 オーディオケーブルは、3.5φのピンジャックにつながっている。片方が、IP Power 9202につながることになる。 [[http://www.wildtree.jp/~araki/photo/ipp/IMG_0855.JPG|{{http://www.wildtree.jp/~araki/photo/ipp/IMG_0855.JPG}}]] ケーブルの加工ができたら、PCのマザーボードからリセットスイッチのコネクタを抜き、それを、作成した延長ケーブルにつなぎ、延長ケーブルをマザーボードのリセットスイッチの位置につなぐ。これで、ケースのリセットスイッチも生きた状態になる。ケースのリセットスイッチが不要な場合には。ケース側のスイッチからケーブルをはずし、直接 IP Power 9202へつないでもいいだろう。 [[http://www.wildtree.jp/~araki/photo/ipp/IMG_0856.JPG|{{http://www.wildtree.jp/~araki/photo/ipp/IMG_0856.JPG}}]] 我が家のサーバは、Cubid 2699(PROCASE III)を使っているので、ケースの一部に切り欠きをつけて、そこからケーブルを引き出すことにした。100円ショップで買ってきたφ3mmのピンバイスで適当に穴を開け、残りをニッパーで切り、やすりで形を整えた。 [[http://www.wildtree.jp/~araki/photo/ipp/IMG_0857.JPG|{{http://www.wildtree.jp/~araki/photo/ipp/IMG_0857.JPG}}]] そしてこのように、ケーブルを引き出して完成である。後は、IP Power 9202の側とこのコネクタを接続して完了である。 なお、後述する電子工作編で作成する、制御リレーにも、φ3.5のオーディオジャックをつなげば、サーバ側はこれ以上の改造を必要としないので、便利である。 え、二種類もそんなもの作って遊ばない? ごもっともである。但し、両者が簡単に分離可能になっていることは、メリットが大きいので、面倒くさがらずに、このくらいの加工はしてもいいのではないだろうか? ===== RS-232C/パラレルから制御できるリレー回路を組む ===== 以下、今後追記の予定。 ==== 回路と必要な部品 ==== ==== 制御 ==== ==== サーバへの接続 ==== [[その他:Tips]]へ戻る。