【问题标题】:Light a LED with a Raspberry Pi when a call is made to a web service (Flask, python)当调用 Web 服务(Flask、python)时,使用 Raspberry Pi 点亮 LED
【发布时间】:2016-06-02 20:17:37
【问题描述】:

每次在我们后端的 Web 服务上进行调用时,我都想让 LED 闪烁。

它正在工作,但只工作了几个小时,之后它就停止工作了。

每次我们在此 URL (http://IP_ADRESS:PORT/scan) 上发帖时,我们的 LED 都会闪烁。

我想知道为什么在一段时间后它停止工作..

这是 POST 完成时调用的代码:

@app.route('/scan', methods = ['POST'])
def scan():
    time.sleep(0.5)
    try:
            LED.rainbow()        
    finally:
           print("Scanned")
    return 'Scanned!!!'

可以在here 找到 LED.rainbow() 代码。 整个项目的代码可以在here找到。

当它停止工作时,我通过树莓派上的 ssh 进行连接,然后:

python
>>> import app
>>> app.scan()

这会使 LED 闪烁!!我不明白为什么它使用 ssh 而不是通过 http POST。

一开始我以为Flask服务器崩溃了,但是当我尝试通过CURL调用它时,一切都很好:

$ http -f POST http://IP_ADDRESS:PORT/scan
HTTP/1.0 200 OK
Content-Length: 13
Content-Type: text/html; charset=utf-8
Date: Thu, 02 Jun 2016 20:11:02 GMT
Server: Werkzeug/0.11.9 Python/2.7.9

Scanned!!!

这是我在树莓派上启动 Flask 服务器的方法:

$ sudo crontab -e
# Add this line at the end of the file
@reboot python /home/pi/Desktop/Claudie/app.py &

我错过了什么?

感谢您的帮助!

谢谢!

【问题讨论】:

  • 我认为我们在 try 周围缺少一些代码。你也可以在工作时尝试time http -f POST http://IP_ADDRESS:PORT/scan(因为有一些睡眠可能需要一些时间)和停止工作时相同的命令?看看执行是否需要相同的时间,或者是否有一些东西提前响起并且“睡眠”没有被执行。
  • 谢谢@JulienPalard!我只是编辑我的代码,我删除了 finally 块,因为它只是一个日志,把它放回去。谢谢,我会及时监控的!
  • 即使找到了也不要忘记告诉我们 ;-)
  • 我会的!你有同样的问题吗?还是仅仅出于好奇?
  • 两者都不是,因为将来其他人会在 SO 上找到这个问题 ;-) 他们需要答案。

标签: python flask raspberry-pi webserver crontab


【解决方案1】:

发现错误!

问题出在rainbow() 函数中。

这个函数被多次调用,到了一定时间就停止工作了。

这是函数的作用:

def rainbow():
    RED, GREEN, BLUE = initializeGPIO() # setup the GPIO, outputs, and PWM

    # Light the LED

    GPIO.cleanup()

我注意到循环调用此函数(没有 Web 服务器)停止工作。

所以我删除了cleanup() 和initializeGPIO(),现在一切正常:) 我真的不知道为什么初始化 GPIO(或清理)会使 LED 停止工作,如果有人知道,我会祝您阅读愉快!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-06
    • 1970-01-01
    • 2021-04-29
    • 2015-10-28
    • 1970-01-01
    相关资源
    最近更新 更多