设置将使用 Python 插入 MySQL 的温度和湿度的最大值和最小值

亚琛费尔南多

我有一些关于如何设置温度或湿度的最大值/最小值的问题,因为有时就像在重启期间,湿度值突然飙升至 >5000% 或有时温度 >100C 所以,我想确保这些数据未插入到 SQL 并使用添加到 .py 的 python 脚本进行过滤

我应该改变这条线吗?

            if temp is not and hum is not None:

import serial
import time
import pymysql.cursors
#Connect to database
connection = pymysql.connect(host='localhost',
                             user='ubuntu',
                             password='testing',
                             database='Blabla',
                             cursorclass=pymysql.cursors.DictCursor)
arduino = serial.Serial('/dev/ttyACM0', 9600)
print('Established serial connection to Arduino')
with connection:
    while True:
            arduino_data = arduino.readline()
            decoded_values = str(arduino_data[0:len(arduino_data)].decode("utf-8"))
            list_values = decoded_values.split(' ')
            print(f'Collected readings from Arduino: {list_values}')
            arduino_data = 0
            temp = list_values[0]
            hum = list_values[1]
            #Here we are going to insert the data into the Database
            if temp is not and hum is not None:
                with connection.cursor() as cursor:
                    cursor.execute("INSERT INTO `SensorTest` (`Temperature`, `Humidity`) VALUES (%s,%s)", (temp,hum))
                    connection.commit()
                    cursor.close()
            else:
                print('Failed to read the sensor')
            time.sleep(60)

在此处输入图片说明

在此处输入图片说明

布卡

当然,您可以向此行添加更多过滤器以确保值没有错误。

我建议在脚本开始时(导入后)为 temp 和 hum 设置 const 有效的最小值和最大值,例如:

MIN_VALID_TEMP = -20
MAX_VALID_TEMP = 90
MIN_VALID_HUM = 10
MAX_VALID_HUM = 1000

接下来,我建议将 temp 和 hum 验证拆分为辅助函数,例如:

def validate_reading(temp, hum):
    if not temp or not hum:
        return false
    if (temp > MIN_VALID_TEMP  and temp < MAX_VALID_TEMP and
    hum > MIN_VALID_HUM and hum < MAX_VALID_HUM):
        return true
    return false

并在以下情况下切换您的原件:

if temp and hum is not None:

到:

if validate_reading(temp, hum):

此外,您接下来可以做的是在读数无效时添加不同的打印!

最终文件将如下所示:

import serial
import time
import pymysql.cursors

# define valid temp and hum
MIN_VALID_TEMP = -20
MAX_VALID_TEMP = 90
MIN_VALID_HUM = 10
MAX_VALID_HUM = 1000


def validate_reading(temp, hum):
    if not temp or not hum:
        return False
    if temp > MIN_VALID_TEMP and temp < MAX_VALID_TEMP and hum > MIN_VALID_HUM and hum < MAX_VALID_HUM:
        return True
    return False


# Connect to database
connection = pymysql.connect(
    host="localhost", user="ubuntu", password="testing", database="Blabla", cursorclass=pymysql.cursors.DictCursor
)
arduino = serial.Serial("/dev/ttyACM0", 9600)
print("Established serial connection to Arduino")
with connection:
    while True:
        arduino_data = arduino.readline()
        decoded_values = str(arduino_data[0 : len(arduino_data)].decode("utf-8"))
        list_values = decoded_values.split(" ")
        print(f"Collected readings from Arduino: {list_values}")
        arduino_data = 0
        temp = list_values[0]
        hum = list_values[1]
        # Here we are going to insert the data into the Database
        if validate_reading(temp, hum):
            with connection.cursor() as cursor:
                cursor.execute("INSERT INTO `SensorTest` (`Temperature`, `Humidity`) VALUES (%s,%s)", (temp, hum))
                connection.commit()
                cursor.close()
        else:
            print("Failed to read the sensor")
        time.sleep(60)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Python的字典的最大值和最小值

如何使用 python pandas 找到 ID 1 和 5 的最小值和最大值?

使用Group BY通过一个MySQL查询获取最小值和最大值

使用迭代查找最大值和最小值时的Python TypeError

使用 Numpy Python 返回最大值和最小值以及索引

在 Python 中,如何使用正确的最小值和最大值索引周的名称?

mysql。滑动日期和时间,设置最小值为签入,最大值为签出

MySQL NFL QB 评级 - 如果总和超出设定范围,可以设置最小值和最大值吗?

如何在Python中使用raw_input附加列表并打印最小值和最大值

MySQL查询以限制最大值和最小值

mysql插入按日期分组的最大值最小值

在轴上设置最小值和最大值

设置 kivy 整数的最小值和最大值

AngularJS设置变量的最小值和最大值

使用 javascript 查找最小值和最大值

使用awk提取最大值和最小值

使用 awk 打印最小值和最大值

使用awk查找最小值和最大值?

使用最小值和最大值的置信带

如何在不使用python内置的max和min函数的情况下将给定列表的最大值和最小值转换为元组形式

在php和namevalue中显示最小值和最大值mysql?

Python MySQL - 插入空值

如何使用DocumentFilter设置可以在Jformattedtextfield中输入的最大值和最小值?

如何使用iOS图表设置x轴的最小值和最大值

如何在接受浮点值的输入类型上设置最小值和最大值?

MySQL:查询字段的最小值和最大值之间的缺失行

MySQL如何在求和一列后找到最大值和最小值

仅用于最大值和最小值的 MySQL 索引

mysql子查询中的最小值和最大值