Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

ラズパイ、webiopiを用いてタイマー付きLチカを作成したい

ラズパイでwebiopiを用いてブラウザから遠隔でLEDの点灯を行っております。
その中でタイマー付き(LEDの点灯時間の設定)も行うことができるようになりました。

ブラウザのボタンを押す→5秒間LEDが点灯する→5秒経ったらLEDが消灯する

script.py
import webiopi
import RPi.GPIO as GPIO
from time import sleep

GPIO = webiopi.GPIO

LIGHT = 17 # GPIO pin using BCM numbering



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



# loop function is repeatedly called by WebIOPi 
def loop():
    # gives CPU some time before looping again
    GPIO.output(17, GPIO.HIGH)
    sleep(0)
    GPIO.output(17, GPIO.LOW)
    sleep(5)



# destroy function is called at WebIOPi shutdown
def destroy():
    GPIO.digitalWrite(LIGHT, GPIO.LOW)
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>WebIOPi | Light Control</title>
    <script type="text/javascript" src="/webiopi.js"></script>
    <script type="text/javascript">
    webiopi().ready(function() {
        // Create a "Light" labeled button for GPIO 17
        var button = webiopi().createGPIOButton(17, "Light");

        // Append button to HTML element with ID="controls" using jQuery
        $("#controls").append(button);

        // Refresh GPIO buttons
        // pass true to refresh repeatedly of false to refresh once
                webiopi().refreshGPIO(true);
    });

    </script>

<style type="text/css">
        button {
            display: block;
            margin: 5px 5px 5px 5px;
            width: 160px;
            height: 45px;
            font-size: 24pt;
            font-weight: bold;
            color: white;
        }

        #gpio17.LOW {
            background-color: Black;
        }

        #gpio17.HIGH {
            background-color: Blue;
        }
    </style>

</head>
<body>

<div id="controls" align="center"></div>

</body>
</html>

こちらがコードになります。

今の現状ですと、ブラウザのボタンを押すと5秒間固定でしかLEDを点灯させることができません。

script.py

    GPIO.output(17, GPIO.LOW)
    sleep(5)

sleep(5)の5の部分を10にしたボタンや15にしたボタンなど複数ボタンを作成するのも考えましたが、ボタンが多くなることがネックです。

ユーザーがHTMLのテキストボックスに任意の分数秒数を入力して、LEDの点灯時間を設定できるようにしたいです。
そこでHTMLからテキストボックスから値を入手して、その値をsleep(”ここを変数にする”)変数に代入する方法がよいのではないかと調べました。

HTMLから、値を入手する方法としてFlaskがあることを知りました。しかし、勉強していくうちに、HTMLの値をPythonの変数に代入したいだけなのにやることが多いなと感じました。

何とか簡素的に行うプログラムがあれば、ご教授いただけないかと思い質問した次第です。

Flaskが一番良いやり方なのであればそれだけでもよいので教えてください。
何かヒントになるものだけでもお教えいただけないでしょうか。

0

1Answer

Your answer might help someone💌