CSV лог Raspberry Pi с python (трудности, показывающие время) - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь записать показания Enviro +, подключенного к Raspberry P ie 3 Model B + (следующий вопрос от: Передача данных из сценария python в файл .csv или .txt Я пытался опираться на ответ , но он не отображал время измерения данных. В скобках я не мог добавить что-то, что добавило бы время сначала (кажется, писатель принимает только один аргумент?)

writer.writerow(data.data[:-2])

Я на самом деле пытаюсь достичь чего-то похожего на это 2020-04-16 22:31:33.427, за которым следует уважаемое значение датчика.

Так как это не было Работая не так, как я хотел, я провел некоторый поиск и попытался найти другое решение Сбор данных, ведение журнала, построение графиков и обслуживание - простое руководство . Однако я застреваю с Следующий код. Это решение использует библиотеку «datetime», в то время как другие используют «time». Что мне нравится в этом решении, так это то, что там есть заголовок. Так что в моем случае это будет включать нечто подобное ( время не сработает)

[ВРЕМЯ, 'PM1,0 мкг / м3 (ультрадисперсные частицы)', 'PM2,5 мкг / м3 (частицы горения, органические c соединения, металлы) ',' PM10 мкг / м3 (пыль, пыльца, споры плесени) ',' PM1,0 мкг / м3 (атмосфера env) ',' PM2,5 мкг / м3 (атмосфера env) ',' PM10 мкг / м3 (атмосфера env) ','> 0,3um в 0,1 л воздуха ','> 0,5um в 0,1 л воздуха ','> 1,0um в 0,1 л воздуха ','> 2,5um в 0,1 л воздуха ','> 5,0um в 0,1 L air ','> 10um в 0.1L air ']

Это решение не принесло мне дальнейшего развития, поэтому я вернулся к первому пути с его попыткой, и пока я пытался слиться с пример Уточнить цену , сделанный Пиморини. Мое окончательное решение перед тем, как отказаться от сегодняшнего вечера, заключается в следующем:

> #!/usr/bin/env python3

import time
from pms5003 import PMS5003, ReadTimeoutError
import logging
import csv

logging.basicConfig(
    format='%(asctime)s.%(msecs)03d %(levelname)-8s %(message)s',
    level=logging.INFO,
    datefmt='%Y-%m-%d %H:%M:%S')


pms5003 = PMS5003()
time.sleep(1.0)
# pms5003.read([:-2])

#  I tried to see if I can get the data separately, as this may be clearer, but no return pm_ug_per_m3

# Creating the csv file

# with open('pms5003.csv', 'w', newline='') as csvfile:
#     writer=csv.writer(csvfile)
#    writer.writerow(['TIME',
#                      'PM1.0 ug/m3 (ultrafine particles)',
 #                     'PM2.5 ug/m3 (combustion particles,organic compounds, metals)',
 #                     'PM10 ug/m3  (dust, pollen, mould spores)',
  #                    'PM1.0 ug/m3 (atmos env)',
   #                   'PM2.5 ug/m3 (atmos env)',
    #                  'PM10 ug/m3 (atmos env)',
     #                 '>0.3um in 0.1L air',
      #                '>0.5um in 0.1L air',
       #               '>1.0um in 0.1L air',
        #              '>2.5um in 0.1L air',
         #             '>5.0um in 0.1L air',
 #                 '>10um in 0.1L air'])

try:
    while True:
        try:
            with open('pms5003.csv', 'a', newline='') as csvfile:
                writer = csv.writer(csvfile, delimiter=';', quotechar=',', quoting=csv.QUOTE_MINIMAL)
                readings = pms5003.read()
                logging.info(readings)
#               csvcontent=('time' + 'readings.data[:-2]')
                x=logging.basicConfig(), readings.data[:-2]
                writer.writerow(readings.data[:-2])
        except ReadTimeoutError:
            pms5003 = PMS5003()
except KeyboardInterrupt:
    pass

Что явно не работает.

В идеале должен быть заголовок, затем в начале каждой строки дата и время. Звучит просто, но я потратил на это последние 4 часа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...