PIQaplaの覚書・メモ・備忘録・独言プログラミングやサーバ設定などの覚え書きを中心に書いています。PIから操作スマートコンセントというものを買ってみた。コンセント自体がWiFiに接続でき、スマートスピーカやスマートフォンからON/OFFできる。tplink-smarthome-apiこれでインストール終了。Wifi越しにもらっているIPアドレスを調べて置く。'{"system":{"set_relay_state":{"state":0}}}'ただ、コマンドを実行してから実測で8~9秒後にコンセントが反応するので、タイミングがシビアな制御はできない様子。192.168.1.100:9999情報はjson形式で返ってくるからPHPなどでも簡単に処理できそう。単純に、コンセントのON/OFFだけ取りたければ、こんな方法も使える。relay_stateこれで「relay_state:1」とか、「relay_state:0」といった文字列が取得できる。標準でSSH接続設定がある。ファイル認証で接続できるようにしている。SSHでファイル認証SSH接続のポートフォワーディング機能を使えば、別のパソコンやサーバにもアクセスできる。通信を、ルータ(192.168.1.1)に送れるので、後はWebブラウザで「http://127.0.0.1/」にアクセスすれば、SSH経由で家のルータの設定画面を見ることができる。WebブラウザのHTTP接続であれば、何の問題もないが、これがFTPになると話が変わってしまう。制御用の通信と、データ転送用の2種類の通信をする。制御用通信は、FTPクライアントからFTPサーバ向けの通信で、デフォルトではポート21宛に通信を行う。SSHのポートフォワーディングでは、このポート21の通信を通しておけば良い。問題となるのはもう1つのデータ転送用の通信だ。この通信にはアクティブモードとパッシブモードというものがあって、アクティブモードにすれば、データ転送時にはFTPサーバからFTPクライアントへの接続が行われる。WikipediaSSHのポートフォワーディングを使っている場合、このサーバからの接続、というのができない。パッシブモードにすれば、FTPクライアントからFTPサーバへの接続になるので、この通信をSSHのポートフォワーディングで相手に送れば良い。この設定が面倒だった。使っていたFTPサーバ「proftpd」で、泥臭い設定をしてみた。設定は、FTPクライアントからFTPサーバに接続する時に使えるポートの範囲を示す。5ポートを使うことにして、これらもポートフォワーディング対象にしておく。ポートフォワーディング設定をSSHクライアントに入れておけば良い。FTPクライアントから接続する先のIPアドレスを示す。本来は、このFTPサーバのIPアドレス(もし外部に公開しているのであれば、グローバルIPアドレスなど)を書くべきだが、今回のようにSSH経由で接続している場合は、FTPサーバのIPアドレスで接続できない。(下図)接続すべき先は、ポートフォワーディングを行っているパソコン自身(127.0.0.1)だからだ。接続されているときには、無条件にパソコン自身(127.0.0.1)に接続するという設定を固定で書いた。この場合、FTPサーバと同一ネットワーク内にあるパソコンなどからはパッシブモードで接続できなくなる。SSH経由ではないパソコンからは、アクティブモードで接続することになる。この運用方法がイヤなら、FTPサーバの上流にあるルータに設定を入れて、パッシブモードで指定したポート番号宛の通信をFTPサーバに通すように設定することもできる。この場合「MasqueradeAddress」には、ルータのWANのIPアドレス(グローバルIPアドレス)か、ドメイン名を指定することになる。SSHでログインする時に、ファイル認証をするようにした。SSHでファイル認証これで、SSH用に作った鍵ファイルを持っている人しか認証できないので、知らない第三者にログインされてしまうことは無いはずだ。念のため、ログインする度に自動でメール通知するようにしてみた。インストールされていること。インストールしておく。Mail後は、Yahoo!メールなど適当なメールサーバ(メール送信用)を準備しておいて、メール送信をする以下のプログラム(login.php)を作成する。※日本語対応は手抜き部分があります※[メールサーバのアドレス]などは適宜、変更してください。実行するのは、どこからSSHに接続されたかを知るためです。"ログインを検知しました。"\n";?>これで、準備完了。上記のプログラム(login.php)を実行すれば、メール通知が行なえる。ファイルの内容は以下。)に置いていることを想定しています。ファイルを実行可能に変更する。rcこれで、全ての準備が完了。利用してメール通知が行なわれます。前回は、16文字x2行のLCDディスプレイでCPUの使用率を表示した。CPU使用率をLCD表示ただ、この方法では制御コード用に3本、データ用に4本、計7本もGPIOを消費してしまう。