gpt4 book ai didi

python - 如何使用python将传感器数据输出保存到excel中

转载 作者:太空宇宙 更新时间:2023-11-04 04:36:34 25 4
gpt4 key购买 nike

我目前正在使用 raspberry pi 并使用 DHT11 每秒读取温度和湿度值。我必须将这些值实时保存到数据库中。这是我每秒显示传感器数据的代码,我不知道如何在 excel 中保存数据/结果。

import RPi.GPIO as GPIO
import dht11
import time
import datetime
import os


# initialize GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()

instance = dht11.DHT11(pin=dht11_pin)

while True:

cnt += 1
if cnt%limit_sec == 0 or cnt == 1:

result = instance.read()
if result.is_valid():

if previous_temperature != result.temperature or previous_humidity != result.humidity:

previous_temperature = result.temperature
previous_humidity = result.humidity

counter += 1
rightnow = datetime.datetime.now()

if result.humidity>=40:
print(str(counter)+". Last valid input: " )
print("Date: " + rightnow.strftime("%d/%m/%Y"))
print("Time: " + rightnow.strftime("%H:%M:%S"))
print("Status: Your plant is on the good condition.")
print("Temperature: %d C" % result.temperature)
print("Humidity: %d %%" % result.humidity)
print("*******************************************")


else:
print(str(counter)+". Last valid input: " )
print("Date: " + rightnow.strftime("%d/%m/%Y"))
print("Time: " + rightnow.strftime("%H:%M:%S"))
print("Status: Your plant is on the bad condition. Please open the water supply.")
print("Temperature: %d C" % result.temperature)
print("Humidity: %d %%" % result.humidity)
print("*******************************************")

else:
print "Invalid result!"
pass

time.sleep(sleep_time)

最佳答案

首先是import csv 模块然后使用with open('file_name.csv', 'w', newline='') as csvfile:

writer = csv.DictWriter(csvfile, fieldnames=field_names)field_names 只是您列的键值

writer.writerow(
{'日期': '日期', '时间': '时间',
'Status': 'Status', 'Temperature': 'Temperature', 'Humidity': 'Humidity'})
为你的 excel 文件写标题

writer.writerow(
{'日期': rightnow.strftime("%d/%m/%Y"), '时间': rightnow.strftime("%H:%M:%S"),
'Status': status, 'Temperature':result.temperature, 'Humidity': result.humidity})
根据 field_names

完整代码:

import RPi.GPIO as GPIO
import dht11
import time
import datetime
import csv
import os


# initialize GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()

instance = dht11.DHT11(pin=dht11_pin)
with open('file_name.csv', 'w', newline='') as csvfile:
field_names = ['Date', 'Time', 'Status', 'Temperature', 'Humidity']
writer = csv.DictWriter(csvfile, fieldnames=field_names)
writer.writerow(
{'Date': 'Date', 'Time': 'Time',
'Status': 'Status', 'Temperature': 'Temperature', 'Humidity': 'Humidity'})

while True:

cnt += 1
if cnt%limit_sec == 0 or cnt == 1:

result = instance.read()
if result.is_valid():

if previous_temperature != result.temperature or previous_humidity != result.humidity:

previous_temperature = result.temperature
previous_humidity = result.humidity

counter += 1
rightnow = datetime.datetime.now()

if result.humidity>=40:
status = 'Your plant is on the good condition.'
print(str(counter)+". Last valid input: " )
print("Date: " + rightnow.strftime("%d/%m/%Y"))
print("Time: " + rightnow.strftime("%H:%M:%S"))
print("Status: Your plant is on the good condition.")
print("Temperature: %d C" % result.temperature)
print("Humidity: %d %%" % result.humidity)
print("*******************************************")


else:
status = 'Your plant is on the bad condition. Please open the water supply.'
print(str(counter)+". Last valid input: " )
print("Date: " + rightnow.strftime("%d/%m/%Y"))
print("Time: " + rightnow.strftime("%H:%M:%S"))
print("Status: Your plant is on the bad condition. Please open the water supply.")
print("Temperature: %d C" % result.temperature)
print("Humidity: %d %%" % result.humidity)
print("*******************************************")
writer.writerow(
{'Date': rightnow.strftime("%d/%m/%Y"), 'Time': rightnow.strftime("%H:%M:%S"),
'Status': status, 'Temperature':result.temperature, 'Humidity': result.humidity})
else:
print "Invalid result!"
pass

time.sleep(sleep_time)

第一个 writer.writerow 将是您的标题,而 field_names 仅用作将数据填充到特定列的键

存储你的 status = '' 并将其放入 writer.writerow()

关于python - 如何使用python将传感器数据输出保存到excel中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51568203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com