Raspberry Pi + WebIOPi 準備

前回は Raspberry Pi に WebIOPi をインストールした。
今回は、Tutorial : Framework basisで基本的な動きを見る。

  1. ホームディレクトリにプロジェクトディレクトリを作成する
    チュートリアルのままこのように作成する。
    home
    - pi
      - myproject
        - python
        - html
    これをするコマンドはこう。
    $ cd /home/pi/
    $ mkdir myproject
    $ cd myproject/
    $ mkdir python
    $ mkdir html
  2. python スクリプトファイル script.py を作成し、python フォルダに置く
    チュートリアルでは8時から18時となっているが、そんなにのんびりできないので、10秒から30秒とする。
    #!/usr/bin/env python
    # coding: UTF-8
    """
    /home/pi/myproject/python/script.py
    """
    import webiopi
    import datetime
    
    GPIO = webiopi.GPIO
    LIGHT = 17
    
    SECOND_ON  = 10  # Turn Light ON at 10 second
    SECOND_OFF = 30  # Turn Light OFF at 30 second
    
    def setup():
        GPIO.setFunction(LIGHT, GPIO.OUT)
        now = datetime.datetime.now()
        if ((now.second >= SECOND_ON) and (now.second < SECOND_OFF)):
            GPIO.digitalWrite(LIGHT, GPIO.HIGH)
    
    def loop():
        now = datetime.datetime.now()
        if (now.second == SECOND_ON):
            if (GPIO.digitalRead(LIGHT) == GPIO.LOW):
                GPIO.digitalWrite(LIGHT, GPIO.HIGH)
        if (now.second == SECOND_OFF):
            if (GPIO.digitalRead(LIGHT) == GPIO.HIGH):
                GPIO.digitalWrite(LIGHT, GPIO.LOW)
        webiopi.sleep(1)
    
    def destroy():
        GPIO.digitalWrite(LIGHT, GPIO.LOW)
  3. html/index.html
    html/index.html はそのままでよいので、チュートリアルのページからコピペする。
  4. /etc/webiopi/config
    いくつか追加する。
    • [SCRIPTS] myscript
      myscript = /home/pi/myproject/python/script.py
    • [HTTP] doc-root
      doc-root = /home/pi/myproject/html
    • [REST]
      gpio-export = 17
      gpio-post-value = true
      gpio-post-function = false
  5. 動かしてみる
    ブート時に自動起動するようにしている時は、そのプロセスをいったん止めて、もう一度起動する。
    $ sudo webiopi -d -c /etc/webiopi/config
    1分ごとの10秒から30秒まではボタンが青に、それ以外は黒になっている。GPIO 17 なので、ピン番号は11。この11番ピンに LED をつないでおくと青と黒とでついたり消えたりしているのがわかる。
というわけで、python script、html、config の関係が何となくわかった。
次回は SPI の ADC をつないでみる。