我目前编写了一个小型python应用程序,它允许我从几个不同的传感器记录温度数据,并将其保存到MySQL数据库。现在我想通过使用规则对该数据做一些有用的事情。这些规则应该是动态的,所以我总是能够通过我正在开发的Web界面来改变它们。
问题是,我无法完全理解如何执行此操作,将规则保存到数据库,然后在Python中使用它们。让我们举个例子:
TURN ON LIGHT 1: IF SENSOR1 > x and SENSOR2-SENSOR3 > y
其中x和y是变量。我认为我出错的地方在于我所选择的数据结构。我的传感器在列表中被构造为对象,如下所示:
import os
tempSensors = []
def initializeSensors():
for dirname, dirnames, filenames in os.walk('/sys/bus/w1/devices/'):
for subdirname in dirnames:
sensorID = subdirname
if sensorID != 'w1_bus_master1':
tempSensors.append(Sensor(sensorID))
传感器类:
import RPi.GPIO as GPIO
import MySQLdb
import time
from pathlib import Path
class Sensor:
def __init__(self, id):
self.id = id
self.temperature = 0
self.timestamp = 0
def temp(self, timestamp):
sensorPath = '/sys/bus/w1/devices/%s/w1_slave' % self.id
if Path(sensorPath).is_file():
sensorFile = open(sensorPath)
sensorText = sensorFile.read()
sensorFile.close()
tempLine = sensorText.split('\n')[1]
tempData = tempLine.split(' ')[9]
temperature = float(tempData[2:])
temperature = temperature/1000
self.timestamp = int(timestamp)
self.temperature = int(temperature)
#print('Temperature is %.2f on %s' % (temperature, self.id))
print('INSERT INTO %s (unixtime, temperature) VALUES (%d, %.2f)' % (self.id, self.timestamp, self.temperature))
#self.log()
也许我对Python不熟悉,不知道要使用哪些数据结构,希望你能帮助我。