Надеюсь, у тебя все хорошо.
У меня есть проблема, которую я уже давно пытаюсь решить безуспешно.
У меня написан скрипт Arduino, который считывает значения, зарегистрированные датчиком DHT11, и распечатывает их в последовательный порт. Вот код:
#include <dht11.h>
#define DHT11PIN 2
dht11 DHT11;
void setup()
{
Serial.begin(115200);
}
void loop()
{
Serial.println();
int chk = DHT11.read(DHT11PIN);
float h = DHT11.humidity; //read humidity
float t = DHT11.temperature; //read temperature (C)
Serial.print(h);
Serial.print("%");
Serial.print(t);
delay(2000);
}
Мое намерение состояло в том, чтобы взять вышеуказанные данные, напечатанные на серийном устройстве, и отправить их в код python, который затем вставил бы полученные данные в базу данных MySQL I создал. Кажется, что все работает нормально до части приема, но когда я пытаюсь вставить полученные данные в свою базу данных, я получаю всевозможные ошибки, независимо от того, как я пытаюсь обработать данные.
Во-первых, когда я пытаюсь использовать код ниже:
#!/usr/bin/env python3
import serial
import mysql.connector as connector
import re
#the following have been changed so that I don't expose the real details
__dsn = {
"host": "localhost",
"user": "user",
"passwd": "passwd",
"db": "sensor"
}
dbConn = connector.connect(**__dsn)
#open a cursor to the database
cursor = dbConn.cursor()
ser = serial.Serial('/dev/ttyACM0', 115200)
humidity = 0
temperature = 0
while 1:
#data = ser.read()
data = ser.read(1)
n = ser.inWaiting()
if n:
data = data + ser.read(n)
data = data.decode("UTF-8")
try:
pieces = data.split('%') #split the data by the tab
humidity = pieces[0]
temperature = pieces[1]
except IndexError:
pass
a = humidity
b = temperature
cursor.execute("INSERT INTO environment(humidity,temperature) VALUES (%s,%s)", (a,b))
dbConn.commit()
cursor.close()
Я получаю эту ошибку:
Я также пытался изменить значения влажности и температуры на тип поплавка, но если я это сделаю, я получаю эту ошибку:
Я не уверен, что здесь происходит. Я пытался обрабатывать данные разными способами. Вот примеры методов обработки данных, которые я пытался использовать до сих пор:
humidity.replace(" ", "")
temperature.replace(" ", "")
a = float(humidity).notnull()
b = float(temperature).notnull()
float(re.sub(r'[^0-9\.]', '', a))
float(re.sub(r'[^0-9\.]', '', b))
Опять безуспешно ...
Я был бы очень признателен, если бы кто-то мог указать я в правильном направлении.
Спасибо
Роб