Moin
ich bastel gerade einen ollen Pi2B+ zum Monitoring um. Ich hab am Bus I2C(1) einen mpu6050 sensor und am 2. Bus (I2C(4)) einen BMP280 angeschlossen.
Beide liefern Daten, der mpu6050 korrekt und der bmp280 leider viel zu hoch. Jetzt sollte die Kalibrierung berücksichtigt werden, daran scheiterts. Ich schreib die Werte in eine Influx DB....soweit läuft alles performant.
def read_bmp280():
data = bus.read_i2c_block_data(BMP280_I2C_ADDR, REG_DATA, 6)
temp_raw = (data[3] << 16 | data[4] << 8 | data[5]) >> 4
pressure_raw = (data[0] << 16 | data[1] << 8 | data[2]) >> 4
temperature = temp_raw / 100.0
pressure = pressure_raw / 100.0
return temperature, pressure
def write_to_influxdb(client, temperature, pressure):
json_body = [
{
"measurement": "environment",
"tags": {
"location": "IhrStandort"
},
"fields": {
"temperature": temperature,
"pressure": pressure
}
}
]
client.write_points(json_body)
Display More
Die Temperaturwerte in der Datenbank fangen bei 5227°C an, Luftdruck wird mit 3400 hPA ausgegeben.
Kann mir mal jemand auf die Sprünge helfen bitte? Die Rohdaten aus dem bmp Sensor sind schon viel zu hoch. Wie kalibriere ich das richtig im Skript? Hat mal jemand ein Bsp`?
Tante Google hilft nicht mehr wirklich, die Suchergebnisse sind zu chaotisch.
btw, am Pi hängt noch die PiCam, ein 1wire Temperatursensor BS18B20 und ein GPS Empfänger...diese laufen sauber und die Werte sind schlüssig.
temp_raw = (data[3] << 16 | data[4] << 8 | data[5]) >> 4
pressure_raw = (data[0] << 16 | data[1] << 8 | data[2]) >> 4
temperature = temp_raw / 100.0
pressure = pressure_raw / 100.0
return temperature, pressure
ist sicher nicht richtig ![]()
