Hallo zusammen,
ich habe ein kleine Problem mit den MLX90614.
ich benutze einen Nodemcu für eine Wetterstation wo mehrere Sensoren angeschlossen sind.
An den Pins D1 und D2 hängt der MLX90614 und der BMP280, nur habe ich Probleme mit der Messung von den MLX.
Ich muss an mehrere Stellen den MLX aufrufen, damit ich einen Wert bekomme, anonsten bekomme ich nur 1037.54993°C ausgegeben.
In den Serial.print bekomme ich 1037.54993°C zulesen, muss ich aber so machen, damit Firebase einen korrekten Wert bekommt (27.52999°C)
Dafür funktionert die Ausgabe von der Messung für die Umgebungstemperatur überhaupt nicht, da bekomme ich auch über 1037°C zulesen.
Hier ist mein Sketch:
void setup() {
sensorState();
}
void sensorState() {
sensors.begin();
dht.begin();
float tempC = sensors.getTempCByIndex(0);
bool allSensorsWorking = true;
if (tempC == DEVICE_DISCONNECTED_C) {
Firebase.setString(fb, "/sensorStates/DS18b20", "Der DS18b20 funktioniert nicht!");
allSensorsWorking = false;
}
if (!mlx.begin()) {
Firebase.setString(fb, "/sensorStates/MLX90614", "Der MLX90614 funktioniert nicht!");
allSensorsWorking = false;
}
if (!bmp.begin()) {
Firebase.setString(fb, "/sensorStates/BMP", "Der BMP280 funktioniert nicht!");
allSensorsWorking = false;
}
if (isnan(dht.readTemperature()) || isnan(dht.readHumidity())) {
Firebase.setString(fb, "/sensorStates/DHT22", "Der DHT22 funktioniert nicht!");
allSensorsWorking = false;
}
if (allSensorsWorking) {
Firebase.setString(fb, "/sensorStates/DS18b20", "OK");
Firebase.setString(fb, "/sensorStates/MLX90614", "OK");
Firebase.setString(fb, "/sensorStates/BMP", "OK");
Firebase.setString(fb, "/sensorStates/DHT22", "OK");
}
}
void loop() {
updateFirebase();
}
void updateFirebase() {
Firebase.pushFloat(fb, "/DHT22/Temperature",dht.readTemperature());
Firebase.pushFloat(fb, "/DHT22/Humidity", dht.readHumidity());
Firebase.pushFloat(fb, "/BMP280/Pressure", bmp.readPressure()/100000);
Firebase.pushFloat(fb, "/BMP280/Temperature", bmp.readTemperature()-1.0);
Firebase.pushFloat(fb, "/BMP280/Altitude", bmp.readAltitude(1021.04));
Firebase.pushFloat(fb, "/Others/dew Point", dewPoint);
Firebase.pushFloat(fb, "/DS18b20/Temperature", sensors.getTempCByIndex(0));
Firebase.pushFloat(fb, "/Others/Heat index", dht.computeHeatIndex(sensors.getTempCByIndex(0), dht.readHumidity(), false));
Serial.println(); // Muss ich setzen, damit ich überhaupt einen realistischen Wert bekomme
Serial.println(mlx.readObjectTempC()); // Bekomme 1037°C angezeigt
Firebase.pushFloat(fb, "/MLX90614/Cloudtemperature",mlx.readObjectTempC()); // 25.27°C
Firebase.pushFloat(fb, "/MLX90614/Temperature in C",mlx.readAmbientTempC()); //1037°C
Firebase.pushFloat(fb, "/MLX90614/Temperature in F",mlx.readAmbientTempF()); //1037°C
}