簡體   English   中英

將傳感器數據從Pi保存到csv文件中

[英]Saving sensor data from Pi into csv file

我正在設置一個覆盆子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文件中。

要將數據存儲為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,那么此答案可能會幫助您:

將pandas DataFrame寫入CSV文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM