<Raspberry Pi-55>

Raspberry Pi-51とmjpg-streamaerを組み合わしたものを紹介します。

例えば、2階の部屋に置いた、LEDスタンドの点灯・消灯の操作を1階の部屋からタブレット(wifi)で
行い、その様子もタブレット(wifi)で見れると言うものです。

下の画像をクリックすると、タブレットの操作で、LEDの点灯、消灯させているところを映像で見ている
様子が見れます。

 


必要ファイルはconfig、index.htmlとscript.pyで、/home/pi/webiopi_kisoフォルダを作成し
ここに置きます。

それでは、下記の@ABを行っていきます。

@/etc/webiopi/configファイルで、index.htmlとscript.pyを/home/pi/webiopi_kisoフォルダに置く設定をします。
(下の←←←←←ここですを追加)
#------------------------------------------------------------------------#

[SCRIPTS]
# Load custom scripts syntax :
# name = sourcefile
#   each sourcefile may have setup, loop and destroy functions and macros
#myscript = /home/pi/webiopi/examples/scripts/macros/script.py
myscript = /home/pi/webiopi_kiso/script.py             #←←←←←ここです
#------------------------------------------------------------------------#
[HTTP]
# HTTP Server configuration
enabled = true
port = 8000

# File containing sha256(base64("user:password"))
# Use webiopi-passwd command to generate it
passwd-file = /etc/webiopi/passwd

# Change login prompt message
prompt = "WebIOPi"

# Use doc-root to change default HTML and resource files location
#doc-root = /home/pi/webiopi/examples/scripts/macros
doc-root = /home/pi/webiopi_kiso               #←←←←←ここです
# Use welcome-file to change the default "Welcome" file
#welcome-file = index.html

#------------------------------------------------------------------------#

Aindex.html(<は半角に修正のこと)
-------------------------------------------------------------------------------
<!DOCTYPE html>
<html lang="ja">
<head>
<meta  charset="UTF-8">

<title>webiopi_kiso</title>

<script type="text/javascript" src="/webiopi.js"></script>

<script>

/* 起動直後のボタンクリックで動作しないので、ここで一度実行させる*/
webiopi().callMacro( "Controlmode", 0 )

function control(mode){
        webiopi().callMacro( "Controlmode", mode ); //
}

</script>

<style>
/*下の<input class="class1" id="idx" type="button" value="GPIO5" onclick="control(x)" >の
ボタンのサイズ・色を設定*/

/*上位.class1を指定しているので、ボタン全部の指定*/
        .class1 {
                width: 110px;
                height: 70px;
                background-color:aqua;
                color:black;
                font-size:26px
        }
/*下位指定なのでid5だけ別の色に指定*/
          #id5 {
                background-color:yellow
        }
/*.class1のボタンにカーソルが乗ると色を変える*/
        .class1:hover{background-color:white}

/*id5のボタンにカーソルが乗ると色を変える*/
        #id5:hover{background-color:white}


</style>
</head>

<body>
<!-- mjpgの部分ここから(script.pyはGPIO関係だけを記述している)-->
<center>
JA3RUA Live Video
<br>

<!--時刻取得・表示の部分はここから-->
<p id="Clock1" style="display: inline"></p>
<script type="text/javascript">
 setInterval('showClock1()',1000);
 function showClock1() {
 var DWs = new Array('Sun.','Mon.','Tue.','Wed.','Thu.','Fri.','Sat.');
 var Now = new Date();
 var YY = Now.getYear();
 if (YY < 2000) { YY += 1900; }
 var MM = set0( Now.getMonth() + 1 );
 var DD = set0( Now.getDate() );
 var DW = DWs[ Now.getDay() ];
 var hh = set0( Now.getHours() );
 var mm = set0( Now.getMinutes() );
 var ss = set0( Now.getSeconds() );
 var RTime1 = ' ' + YY + '.' + MM + '.' + DD + ' ' + DW + ' ' + hh + ':' + mm + ':' + ss + ' ';
 document.getElementById("Clock1").innerHTML = RTime1;
 }
 function set0(num) {
 var ret;
 if( num < 10 ) { ret = "0" + num; }
 else { ret = num; }
 return ret;
 }
 </script>
<!--時刻取得・表示の部分はここまで-->
</center>
<center>
<!--シンプル映像を配信させるための記述(ポート8080で接続)-->
<!--ポート番号は、LD_LIBRARY_PATH・・・の中で設定している-->
<img src="http://192.168.0.30:8080/?action=stream" />

</center>
<!--mjpgの分ここまで-->

<br><br>

<center>
<input class="class1" id="id1" type="button" value="GPIO5" onclick="control(1)" >

<input class="class1" id="id2" type="button" value="GPIO13" onclick="control(2)" >

<input class="class1" id="id3" type="button" value="GPIO17" onclick="control(3)" >

<input class="class1" id="id4" type="button" value="GPIO19" onclick="control(4)" >

<input class="class1" id="id5" type="button" value="CLEAR" onclick="control(0)" >
</center>
</body>
</html>
-------------------------------------------------------------------------------

Bscript.py
-------------------------------------------------------------------------------

import webiopi

GPIO = webiopi.GPIO

SW1 = 5
SW2 = 13
SW3 = 17
SW4 = 19

GPIO.setFunction( SW1, GPIO.OUT )
GPIO.setFunction( SW2, GPIO.OUT )
GPIO.setFunction( SW3, GPIO.OUT )
GPIO.setFunction( SW4, GPIO.OUT )

def pinclear():
                GPIO.pwmWrite(SW1, 0 )
                GPIO.pwmWrite(SW2, 0 )
                GPIO.pwmWrite(SW3, 0 )
                GPIO.pwmWrite(SW4, 0 )

@webiopi.macro
def Controlmode( mode ):
        if mode == "0":
                pinclear()

        if mode == "1":
                pinclear()
                GPIO.digitalWrite(SW1, GPIO.HIGH )

        if mode == "2":
                pinclear()
                GPIO.digitalWrite(SW2, GPIO.HIGH )

        if mode == "3":
                pinclear()
                GPIO.digitalWrite(SW3, GPIO.HIGH )

        if mode == "4":
                pinclear()
                GPIO.digitalWrite(SW4, GPIO.HIGH )
-------------------------------------------------------------------------------

webiopiを起動させます、コマンドラインから、下のように打ち込みます。
pi@raspberrypi:~ $ sudo /etc/init.d/webiopi start
停止はstartをstopにする

そして、webブラウザから、http://192.168.0.30:8000/にアクセスするとスライダーが
表示します。(IPアドレスは自分の環境)

また、Raspberry Piの電源ON時に自動起動させるには、下記の/etc/rc.localファイルの
←ここを追加をすれば、自動で起動します。

/etc/rc.local
---------------------------------------------------------------------
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

sudo /etc/init.d/webiopi start      #←ここを追加

exit 0
---------------------------------------------------------------------



Raspberry メニューに戻る