将传感器数据从Pi保存到csv文件中

时间:2019-08-01 17:53:56

标签: python raspberry-pi sensor raspberry-pi-zero

我正在设置一个覆盆子pi零,以检测空气质量,温度和湿度。我能够运行脚本以每60秒获取感测到的数据。如果我需要定期将数据保存到csv文件中怎么办?


import bme680
import time
import datetime
from datetime import datetime
from bme680 import BME680
from pms5003 import PMS5003, ReadTimeoutError

try:
    sensor = bme680.BME680(bme680.I2C_ADDR_PRIMARY)
except IOError:
    sensor = bme680.BME680(bme680.I2C_ADDR_SECONDARY)


pms5003 = PMS5003()
readings = pms5003.read()
sensor.set_humidity_oversample(bme680.OS_2X)
sensor.set_pressure_oversample(bme680.OS_4X)
sensor.set_temperature_oversample(bme680.OS_8X)
sensor.set_filter(bme680.FILTER_SIZE_3)

print('Data sensing')

try:
    while True:
        if sensor.get_sensor_data():
            output = datetime.now().strftime('%Y-%m-%d,%H:%M:%S,')+'{0:.2f} C,{1:.2f} hPa,{2:.3f} %RH'.format(
                sensor.data.temperature,
                sensor.data.pressure,
                sensor.data.humidity)

            if pms5003.read():
               print(output, readings)
            else:
                print(output)

        time.sleep(60)

except KeyboardInterrupt:
    pass

我希望程序将数据保存在具有日期,时间,温度,湿度等标题的csv文件中。

1 个答案:

答案 0 :(得分:0)

要将数据存储为CSV或任何其他文件格式,python中提供了很多方法。如果您想要更受控和更详细的csv,则可以使用Pandas或Numpy。

但是,如果您只是想要一个简单的解决方案,那就在这里。

def store_data(time,temperature,pressure,humidity):
    append = [time,temperature,pressure,humidity]
    with open('sensor_output.csv', 'a') as csvFile:
        writer = csv.writer(csvFile)
        writer.writerow(append)
    csvFile.close()

只需在此函数中传递您的值,Python便会处理其余部分。文件将自动创建,并且每次都会附加。

   store_data(datetime.now().strftime('%Y-%m-%d,%H:%M:%S,'),sensor.data.temperature,sensor.data.pressure,sensor.data.humidity)

这是根据情况调用函数的方式。

#UPDATE: 如果您熟悉pandas和DataFrame,那么此答案可能会帮助您:

Writing a pandas DataFrame to CSV file