检测布尔值从True到False,反之亦然的变化

时间:2019-01-22 09:21:39

标签: python flask

这是基于烧瓶的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的设备每秒发送一次 停电

我该怎么做才能检测到这一变化?

2 个答案:

答案 0 :(得分:1)

我认为您最好的选择是在POST请求中发送两个参数以接收功能,一个变量携带停电的旧值,另一个变量携带最新的停电值。我认为这是必需的,因为您需要检查以下条件:

  1. old_pwr_outage != new_pwr_outage
  2. 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.