Im folgenden Beispiel ist die Warteschlange in der Messroute Flask @app.route('/measurements') leer, obwohl sie im TCP-Nachrichtenhandler aktualisiert wird. Wenn mich jemand aufklären kann, wäre ich dankbar.
Ich verwende dies auf Ubuntu mit Python3, falls das relevant ist.
Code: Select all
from flask import Flask, render_template
import socket
from threading import Thread
import os
from wyze_sdk import Client
from dotenv import load_dotenv
from wyze_sdk.errors import WyzeApiError
import time
from queue import Queue
load_dotenv()
app = Flask(__name__)
start_time = time.time()
response = Client().login(
email=os.environ['WYZE_EMAIL'],
password=os.environ['WYZE_PASSWORD'],
key_id=os.environ['WYZE_KEY_ID'],
api_key=os.environ['WYZE_API_KEY']
)
client = Client(token=response['access_token'])
HOST = '192.168.1.207' # Listen on all network interfaces
PORT = 9000 # The same port as in your ESP8266 sketch
PORT_UI = 7001
MIN_WATER_DIST = 20 # minimum distance from sensor to water in cm
MAX_WATER_DIST = 45 # maximum distance from sensor to water in cm
MAX_TIME_PLUG_ON = 600 # maximum amount of time plug should be on
# Initialize state variables
plug_on_time = None # Track when the plug was turned on
measurements = Queue(maxsize=86400)
@app.route('/measurements')
def measurements_api():
current_time = time.time()
recent_measurements = [m for m in list(measurements.queue) if current_time - m['timestamp']