这是基于烧瓶的Web应用程序。
@app.route('/receive', methods=['POST'])
def receive():
if request.method == 'POST':
data = request.json
powerOutage = data['powerOutage']
# Send SMS here only once when the powerOutage value changes
return '{"status":"OK"}'
使用基于Arduino的硬件的HTTP POST调用API函数 receive 。 我想在布尔变量的值更改时发送SMS。 硬件在断电时会连续发送 True ,在没有断电时会连续发送 False 。我只想触发一次SMS网关,并且仅在发生停电,结束并设备发送第一个 False 值时,才向用户发送一次SMS。 基于Arduino的设备每秒发送一次 停电 。
我该怎么做才能检测到这一变化?
答案 0 :(得分:1)
我认为您最好的选择是在POST
请求中发送两个参数以接收功能,一个变量携带停电的旧值,另一个变量携带最新的停电值。我认为这是必需的,因为您需要检查以下条件:
old_pwr_outage != new_pwr_outage
new_pwr_outage == False
另外,骆驼肠衣不是pythonic,您可能需要更改它。 ;)
答案 1 :(得分:0)
有多种解决方案可以读取变量的值。根据您的IDE,您可以调试应用程序并在变量后放置一个断点。当使用更简单的文本编辑器时,在控制台中打印出该值也将很有用。您可以在arduino控制台以及Python命令行中打印该值。
另一件事就是知道您的函数仅在满足条件时才返回某些内容,您可能希望在条件不符合if语句时重新调整False
状态代码(错误请求)。当条件为@app.route('/receive', methods=['POST'])
def receive():
if request.method == 'POST':
data = request.json
powerOutage = data['powerOutage']
# Send SMS here only once when the powerOutage value changes
return '{"status":"OK"}'
return '{"status":"BAD_REQUEST"}'
因此您可以像这样重构您的方法:
fireworks.start(); //Start the fireworks.