访问URL时打开LED

时间:2015-04-09 10:02:21

标签: python bash flask raspberry-pi2

我想要做的是在浏览器尝试访问我的Raspberry Pi URL(http://192.168.10.191:5000/console)LED将打开,而无需在前端键入任何python,但此刻,我仍需要在Web控制台上键入python才能使其按预期运行。

代码如下:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

@app.route('/user')
def here():
    return '<h1>user here</h>'

@app.route('/console')
def console():
    import pexpect
    child = pexpect.spawn('python')
    child.expect('\n>>>')
    child.sendline('import os')
    child.sendline('os.system("cd /sys/class/leds/led0 && sudo sh -c \'echo 1 > brightness\' ")')
    child.expect('\n>>>')

if __name__ == '__main__':
    app.run(host='0.0.0.0', debug=True)

1 个答案:

答案 0 :(得分:1)

您是否有理由使用/console网址?如果你使用另一个,你就不会遇到这个问题。

Werkzeug默认使用它进行调试。

您需要通过设置use_evalex=False来关闭它。有关详细信息,请参阅this question

此外,您不需要使用pexpect。直接拨打os.system

@app.route('/console')
def console():
    import os
    os.system("cd /sys/class/leds/led0 && sudo sh -c \'echo 1 > brightness\' ")

    return '<h1>changed brightness</h>'

if __name__ == '__main__':
    app.run(host='0.0.0.0', debug=True, use_evalex=False)