You can read this blog in any language using google translate as follows:

Goto http://translate.google.com/
Paste URL in the box and select "Japanese for From Language" and "To Language". Then click "Translate".

English translated pages are here:
http://bit.ly/xPuXoy

你可以閱讀這個博客,在任何使用“Google”的語言翻譯

本ブログのアクセス統計: 60万アクセスを達成しました。ご訪問ありがとうございました。

60万アクセスまでの経過

2009年12月に始めた本blog。2011年7月ごろに10万アクセスを達成し、2011年12月13日には15万アクセスを達成。
その後、私も更新しておらず、アクセスは少し減りましたが、3月1日には18万アクセス。2012/4/18に20万アクセス、2012/8/21に25万アクセス、2013/1/18に30万アクセス、2013/12/17に40万アクセスを達成しました。しばらく見ていなかったら、2015/5/1に50万2584アクセスになっていました。またまた、しばらく更新しないうちに、2017/6/11に60万7197アクセスになっていました。2018/7/7 .. おお七夕 .. には63万0656アクセスになっていました。久しぶりに更新しました。

2017年6月12日月曜日

RaspberryPIを使って、コンセントを制御する。


久々に投稿します。かなりネタが溜まっているので、順次投稿し、本稿も随時加筆します。
RaspberryPI 2 modelB v1.1 を使って、電灯制御を作っている。

完成した基板とRaspberryPi (ずっと、ブレッドボード版を使っていたが..)

完成した基板
完成した基板とRaspberryPI

基板裏面とRaspberryPI
基板裏面とRaspberryPI

補足)
 リモコン信号を受信して、LEDを点滅したり止めたりするDaemon もおまけで走らせている。

方針)

  1. 他にもRaspberryPI, Raspberry PI3 BやRaspberryPI Zero W等も購入した。
    おいおい拡張したい。
  2. RaspberryPI 3B+ には、Ubuntu mateをいれ、Elecrow RPA05010R HDMI 5-Inch 800x480 TFT LCD Display with Touch Screen Monitor for Raspberry Pi B+/2B/3B をamazon.comで購入して、接続しタッチパネル操作できるようしている(以下写真)。DRAMも多いし、CPUも速い(別途投稿したい)
  3. Raspberry PI 2 modelB v1.1はRaspbian Wheezyで使っている。設定法や上記Ubuntu mateの設定法は別途記事にする。(上記、Ubuntu mateやJessieとかも入れてみたが、やはり、木の実マークのWheezyが良いかも)
  4. 電灯制御に関する記事: https://www.samkear.com/hardware/control-power-outlets-wirelessly-raspberry-pi の通りにやった。

    1. ここではEteckcity という430MHzの無線のリモコンコンセントを使う。
    2. リモコン制御はSMKNという430MHzの送受信カードセットを使う。信号はRS232Cのような、調歩式の振幅変調(1,0)コーディングではなく、パルス幅(FM)コーディングなので、RaspberryPI等のGPIOを使うのが良さそう。
      1. 以下に書いたwiringPIライブラリを使って信号を入出力するバイナリがある。
        1. 送信機で押された無線コードを表示するRFSnifferを起動して、無線コード(10進6桁から7桁)を得る。
        2. codesendというアプリにコードを与えると無線送信する。
      2. このカードも大変安い。5個入りパックの無名ブランドはもっと安い。
    3. 以下にamazon.comでの値段を掲載する。
  5. 上記では、wiringPIというパッケージを使い、GPIO (RaspberryPIシリーズの入出力ポート)を制御している。
    1.  GPIOポートの結線図:: https://projects.drogon.net/raspberry-pi/wiringpi/pins/  
    2.  例題LED点滅: http://wiringpi.com/examples/blink/
  6. 上記の点滅を改造して3色LEDの点滅アプリ (blinkRGB) を作った。root(特権ユーザで実行する必要があるが、以下のようにつかう
    1. 自動点滅: 引数なし。以下のように点滅する。
    2. 所定点滅: (R,G,B) = で所定色を指定。(1,1,1) = 7が白を示す。4が赤、0が黒など。
  7. スイッチで電灯を点滅させたいので、Eteckcity から電線を引き出した。従来、TP-Link Smart Plug w/ Energy Monitoring http://amzn.to/2scgjzr  からスイッチを引き出していたので、このプラグが入るジャックにして、コンセント部分を入れ替えて使えるようにした。


    従来のTP Linkのもの

    引き出した線が繋がる、壁スイッチ

    改造作業。TP LinkもEteckCityも、もともとスイッチがあるので、そこから線を引き出すだけ
    左: 従来のTP Link,  右: EteckCityにつけた壁スイッチへのコネクタ。
  8. RaspberryPIへ外出先からのアクセス
    1. RaspberryPIは、192.168.のローカルLANからしかみえない。
    2. Broadband routerからsshポート(安全のためport番号は規定の22番とは全然違うものにしている)をポートマッピングしている、ゲートウェイのLinuxサーバ ホスト名: Linux02 がある。
    3. Linux02は No-IPのDynamicDNSサービス(有料。そうしないと更新が面倒)を使いホスト名を与えてある。無料だったminiDNSはサービスが打ち切られた。
    4. RaspberryPIのapache2, sshdに対して、Linux02でsshトンネルを掛けて、外部からアクセスしている。sshポートが特殊なうえ、rsaのprivate鍵がないとログインできないので、ハッキングに対する安全性は高いと思う。
  9. 電灯制御のweb pageを改造している。
    1. 設定部分のファイルをJSONにして分離。
      1. 部屋・電灯の名前、受信機がないスイッチ、つながっていない受信機などが分かるアノテーションをいれた
    2. 読み込み部分とtrigger部分を分離
    3. デバッグ用表示を追加: デバッガphpdbgを使おうとphp 5.6をコンパイルしてみた。php 5.6は、phpdbgが使えるまでには至らず。
    4. タイマー設定のJSONを読み込み表示。(末尾に写真をつける)
      1. formのradio buttonでのPOSTにしたが、いちいちhtmlを読み込むのは面倒なのでJavascript化したい。
      2. スイッチの状態で色を変え、また、現在の状態をJSON (or cookie) に保存したい。
      3. 肝心のタイマーのコード(多分PHP)を完成させる。
制御画面)

現状のもの:Allでは全部のリモコンにon/off信号を送る。webからのon/offは動作している。

タイマーは、JSONの設定ファイルの時刻設定を表示。ただし、タイマーの機能をする本体はまだない。タイマーformのラジオボタンもJavascript化する予定。。

リモコンパラメータなどが入った設定JSONファイルを読み込み、表示も自動作成する。
送信ボタンだけで受信機がない行を排除した表示。つかっていないコンセントを表示しない仕様にも簡単に切り替えられる。

上記と違い、送信機にある全部の無線信号を表示させたもの。

記事のものをとりあえず動かした版、手でhtmlを改造してB1,B2,B3を追加。