Я хочу вставить данные с метеостанции Alecto WS-1200, которые я прочитал на моем Raspberry Pi 3 с помощью программного обеспечения RF Link, работающего на мегапикселе Arduino, подключенном к RPI через USB.
Я вижу вphpmyadmin, что ни одна строка не вставлена и БД пуста.
Вот мой код:
import mysql.connector as mariadb
import serial
#Initialization
ser = serial.Serial(port='/dev/ttyUSB0', baudrate=57600)
#Read sensor
while True:
readBytes = ser.readline()
line = readBytes.decode("utf-8")
print(line)
list = line.split(";")
if list[2] == "Alecto V5":
rain = list[5].split("RAIN=", 1)[1]
rainFloat = float.fromhex(rain)
rainFloat = rainFloat / 10
mariadb_connection = mariadb.connect(host='localhost', user='test', password='test', database='test')
cursor = mariadb_connection.cursor()
try:
cursor.execute("SELECT interpolated FROM rain_data ORDER BY created_at DESC LIMIT 1")
result = cursor.fetchone()
if result is not None:
previousVal = result[0]
if rainFloat - previousVal >= 0:
interpolated = rainFloat - previousVal
cursor.execute("INSERT INTO rain_data (interpolated, raw_value) VALUES (%s, %s)", interpolated, rainFloat)
else:
cursor.execute("INSERT INTO rain_data (interpolated, raw_value) VALUES (%s, %s)", rainFloat, rainFloat)
else:
cursor.execute("INSERT INTO rain_data (interpolated, raw_value) VALUES (%s, %s)", rainFloat, rainFloat)
print(cursor.rowcount)
except mariadb.Error as error:
print("Error: {}".format(error))
finally:
mariadb_connection.commit()
mariadb_connection.close()
К сожалению, этот код не работает, хотя оператор вставки выполняется.Количество строк возвращает -1.Код ошибки не выдается.Подобный оператор вставки, однако, работает в другом сценарии.Поскольку я вижу код строки, я предполагаю, что оператор вставки исключен.
Последовательное соединение просто возвращает строку, например, 20; 00Alecto V5; Temp = 07d; BAT = OK; RAIN = 03f Как вы видите, я форматируюэто просто для извлечения шестнадцатеричного значения дождя, чтобы вставить его в базу данных.
Чего мне не хватает?