在Python

时间:2017-07-09 15:30:37

标签: python mysql raspberry-pi mysql-python

我目前编写了一个小型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不熟悉,不知道要使用哪些数据结构,希望你能帮助我。

0 个答案:

没有答案