У меня Nodemcu ESP8266, подключенный к Raspberry Pi через последовательное соединение. Nodemcu часто (каждые 5 минут) отправляет данные на мой Pi, но если я не запускаю сценарий на моем Pi, эти данные никак не используются. Данные являются просто числом, обычно между 0-15. На Пи я пытаюсь записать CSV-файл с входящими данными (с метками времени) из Nodemcu, но первое входящее значение проглатывается, пока не поступит второе значение. Затем первое значение записывается в CSV-файл но с отметкой времени второго значения.
Например, Nodemcu отправляет это: (временные метки не отправляются Nodemcu, я добавил их для сравнения) 08:04:15 1 08:09:16 2 08:14:16 3 08:19: 16 4 08:24:17 5 08:29:17 6 08:34:17 7
И сценарий записывает это в CSV-файл: (эти временные метки записываются в CSV-файл) 08: 09:16 1 08:14:16 2 08:19:16 3 08:24:17 4 08:29:17 5 08:34:17 6
Я проверил последовательное соединение (контакты на Pi) и скрипт, который я запускаю на Nodemcu, и они выглядят отлично, поэтому я предполагаю, что это скрипт на моем Pi. Вот сценарий, который я запускаю на своем Пи:
import serial
import time
import csv
from datetime import datetime
value_mcu = ''
s = serial.Serial('/dev/ttyAMA0', 74880)
time.sleep(5)
today = datetime.today().strftime('%Y-%m-%d')
with open('/home/pi/Desktop/CSV/' + today + '.csv','w') as db:
db.write('Timestamp,Value\n')
while True:
try:
while value_mcu.strip() == '':
value_mcu = s.readline().decode('utf-8').strip()
today = datetime.today().strftime('%Y-%m-%d')
now = datetime.today().strftime('%H:%M:%S')
with open('/home/pi/Desktop/CSV/' + today + '.csv','a') as db:
db.write(now + ',' + value_mcu + '\n')
value_mcu = ''
except KeyboardInterrupt:
s.close()
Надеюсь, кто-нибудь понял, что здесь происходит. Заранее спасибо за помощь.