raspberry pi3 webiopiにて、LEDをオンオフする。

WEBの遠隔で100Vのコンセントをオンオフできるような仕組みを作る為の方法を残す。

本当は、iphoneからsiriを使うことを考えたが、インターネットから行う事が難しくWiFi環境しか対応してないようなのであきらめた。まだ、時期的にはちょっと早いのかもしれません。raspaiにhomebridgeなるソフトをインストールしてiphoneのアプリから検索することから挙動がおかしくまだまだを感じさせる。

ということで、今回はとにかくWEB上で、スマホから電源のONOFFをやれる仕組みを作った。基本的には、Webiopiを使ってちょっと手を加えただけだ。

webiopiをインストールするまでは、既に掲載したので割愛する。

今回は、/home/pi/joy/htmlをWEBのトップページする為に、/etc/webiopi/config をちょっと修正する。

myscript = /home/pi/joy/python/script.py
doc-root = /home/pi/joy/html

に#をコメントアウトしてスクリプトとHTMLの場所を指定してあげた。

script.pyの内容は下記(2chの場合を想定)
import webiopi
import datetime

GPIO = webiopi.GPIO

LIGHT = 17 # GPIO pin using BCM numbering
LIGHT = 18 # GPIO pin using BCM numbering

HOUR_ON = 8 # Turn Light ON at 08:00
HOUR_OFF = 18 # Turn Light OFF at 18:00

# setup function is automatically called at WebIOPi startup
def setup():
# set the GPIO used by the light to output
GPIO.setFunction(LIGHT, GPIO.OUT)
GPIO.setFunction(LIGHT2, GPIO.OUT)

# retrieve current datetime
now = datetime.datetime.now()

# test if we are between ON time and tun the light ON
if ((now.hour >= HOUR_ON) and (now.hour < HOUR_OFF)): GPIO.digitalWrite(LIGHT, GPIO.HIGH) GPIO.digitalWrite(LIGHT2, GPIO.HIGH) # loop function is repeatedly called by WebIOPi def loop(): # retrieve current datetime now = datetime.datetime.now() # toggle light ON all days at the correct time if ((now.hour == HOUR_ON) and (now.minute == 0) and (now.second == 0)): if (GPIO.digitalRead(LIGHT) == GPIO.LOW): GPIO.digitalWrite(LIGHT, GPIO.HIGH) 時間でオンオフ機能を使う場合は、パーツを追加する。今回はLightだけタイマー機能を使う事にしている。 # toggle light OFF if ((now.hour == HOUR_OFF) and (now.minute == 0) and (now.second == 0)): if (GPIO.digitalRead(LIGHT) == GPIO.HIGH): GPIO.digitalWrite(LIGHT, GPIO.LOW) # gives CPU some time before looping again webiopi.sleep(1) # destroy function is called at WebIOPi shutdown def destroy(): GPIO.digitalWrite(LIGHT, GPIO.LOW) GPIO.digitalWrite(LIGHT2, GPIO.LOW) index.htmlの内容。



WebIOPi | Light Control



起動させる。
sudo /etc/init.d/webiopi start
これで、http://決めたドメイン(IP):8000
で大きなボタンが2つ出現して、オンオフできるようになる。

自動起動させる為に、
sudo update-rc.d webiopi defaults

にて、リブートしても自動起動することになる。

RaspberryPi WebIOPiインストール

目的が、WEBから遠隔操作することなので、WEBサーバーやその他のプログラム言語をインストールしなければならないんだろうなってことで、ネットで探しまくっても一向に決断できない。ならば、簡単にオールインワンでできるようなものは無いかとさがしたらすぐにでてきたのが、WebIOPiっていう単語。それなに?ってことで調べてみると、ま、いろいろとつまったRaspberryPiをwebでコントロールできるソフトのようです。

http://webiopi.trouch.com/

そして、サイトからダウンロードしてインストール

WebIOPi-0.7.1.tar.gzっていうファイルをダウンロードして解答して、そのディレクトリまで移動して、

sudo ./setup.sh でインストールが始まる。そして、10分くらいで終わる。

って先輩方のサイトをみるとかいてあるのに、途中でYes/Noって何回か聞かれた。最初は、Yesしておけば間違いないだろうと思ってやっていたが、何やらユーザーidとパスワードを聞いてくる。そして、なにやら、怪しげなurlの記載がある。怖くなり、一旦強制終了して、再度インストール。アンインストールの仕方もわからないので、試しに起動コマンドを打ってみたが、faildのメッセージ。(後々インストールできていた可能性が高いことがわかった。コマンドが違っていた。)

3度目の正直でNoにしたら、idを聞かれることなく普通にインストール終了した。
たぶんであるが、internet overってでてたので、たぶんダイナミックdnsを使わせて、nat越えの接続をさせるための選択かと判断する。ルータのポートなどをいちいち開けなくて済む点はいいのだが、怖いので使わない。

そして、起動コマンド

sudo /etc/init.d/webiopi start

エラーがでて起動できない。No such file ファイルがない???調べてみると、

sudo webiopi -d -c /etc/webiopi/config

※オプション-d デバッグモードでコマンドラインに進捗がでる。

で起動できた。そして、192.168.11.00:8000(自分の環境に合わせること)

アパッチの入室制限窓のようなものがでたので、

webiopi
Raspberry

で無事にログインできた。

WebIOPiアプリケーションは、Ctrl + Cで終了になる。

自動起動は、

WebIOPi をサービスを自動開始(Raspberry 起動時に開始)するには、以下のコマンドを実行

sudo update-rc.d webiopi defaults

WebIOPi のサービスの自動開始を解除するには、以下のコマンドを実行。

sudo update-rc.d webiopi remove