Обнаружить изменение логического значения с True на False и наоборот - PullRequest
0 голосов
/ 22 января 2019

Это веб-приложение на основе колбы.

@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"}'

Функция API receive вызывается с HTTP POST из аппаратного обеспечения на основе Arduino. Я хочу отправить SMS, когда значение логической переменной изменится. Аппаратное обеспечение непрерывно отправляет True при отключении электроэнергии и False при отсутствии отключения. Я хочу запустить шлюз SMS и отправлять пользователю SMS только один раз, когда просто происходит отключение электропитания и когда оно заканчивается, и устройство отправляет первое False значение. Устройство на базе Arduino отправляет poweroutage каждую секунду.

что я могу сделать, чтобы обнаружить это изменение?

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Я думаю, что вам лучше всего отправить два параметра в запросе POST на получение функции, одна переменная, содержащая старшее значение отключения электроэнергии, и одна переменная с самым последним значением. Я считаю, что это необходимо, потому что вам нужно проверить следующие условия:

  1. old_pwr_outage != new_pwr_outage
  2. new_pwr_outage == False

Кроме того, кожух верблюда не питоничен, вы можете это изменить. ;)

0 голосов
/ 22 января 2019

Существует несколько решений для считывания значения переменной.В зависимости от вашей IDE вы можете отлаживать приложение и ставить точку останова после переменной.При использовании более простого текстового редактора распечатка значения в консоли также будет полезна.Вы можете напечатать значение в консоли Arduino, а также в командной строке Python.

Еще одно замечание: ваша функция будет возвращать только что-то, когда условие выполнено, вы можете захотеть повторить код состояния 400 (неправильный запрос), когда условие не соответствует вашему оператору 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"}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...