INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
DHT11 Daten via MQTT an Raspi senden
08.11.2020, 19:19 (Dieser Beitrag wurde zuletzt bearbeitet: 08.11.2020 19:51 von Hanibal_Smith.)
Beitrag #1
DHT11 Daten via MQTT an Raspi senden
Hallo zusammen,

ich bin zwar nicht neu in Sachen Arduino, jedoch neu im Thema MQTT.

Ich möchte div. ESPs z.B. Aussentemperatur und Luftfeuchte, Wohnzimmer, Kinderzimmer usw... alles auf ein Raspi mit Node-Red visualisieren.

Die ersten Versuche dazu liefen ganz gut.

Per Arduino lese ich einen DHT 11 aus und schicke das Ganze per MQTT zum Raspi.
Den Code dazu habe ich mir aus zwei Tutorials zusammengebastelt.

Was mir nun Probleme bereitet ist, dass zum einen die richtigen Messwerte ausgelesen werden und kurze Zeit später, folgen "irrsinnige"..
z.B. 1.Messung = 26,3°C und 30 Luftfeuchte, dann folgt komischer Weise 13,10°C und 143 Huh
Einen Screenshot habe ich angehängt.

Hier wäre meine loop
Code:
void loop() {
  if (!client.connected()) {
    reconnect();
  }
  client.loop();
  ArduinoOTA.handle();
  long now = millis();
  if (now - lastMsg > 2000) {
    lastMsg = now;
    getDHTValues();
  }
}

bool checkBound(float newValue, float prevValue, float maxDiff) {
  return !isnan(newValue) &&
         (newValue < prevValue - maxDiff || newValue > prevValue + maxDiff);
}

void getDHTValues() {
  //float newPres = bme.readPressure() / 100.0F;
  float newTemp = dht.readTemperature();
  float newHum = dht.readHumidity();


  if (checkBound(newTemp, temp, diff)) {
    temp = newTemp;
    Serial.print("New temperature:");
    Serial.println(String(temp).c_str());
    client.publish(temperature_topic, String(temp).c_str(), true);
  }

  if (checkBound(newHum, hum, diff)) {
    hum = newHum;
    Serial.print("New Humidity:");
    Serial.println(String(hum).c_str());
    client.publish(humidity_topic, String(hum).c_str(), true);
  }

}

Warum kommen diese Messwerte zustande??

Danke schon mal im Voraus für Eure Hilfe.
Gruß
Hanibal


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.11.2020, 19:26 (Dieser Beitrag wurde zuletzt bearbeitet: 08.11.2020 19:27 von Tommy56.)
Beitrag #2
RE: Code Verständnisprobleme
Zu MQTT kann ich Dir nichts sagen, aber mache now unsigned long.
Temperaturen / Feuchtigkeiten ändern sich nicht schlagartig. Da genügen durchaus Messabstände von 10-15 Minuten. Der DHT11 ist mit das Ungenaueste, was Du Dir antun konntest. Nimm lieber einen BME280.

Gruß Tommy

Edit: Irgendwie passt Deine Überschrift für mich nicht zur Fragestellung.

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.11.2020, 20:00 (Dieser Beitrag wurde zuletzt bearbeitet: 08.11.2020 20:00 von Hanibal_Smith.)
Beitrag #3
RE: DHT11 Daten via MQTT an Raspi senden
Hallo Tommy,

vielen Dank für Deine schnelle Antwort.

Habe nun in der Loop die Zeit von 2 Sekunden auf 15 erhöht und nun sieht es nicht mal schlecht aus - Vielen Dank!!

Das mit dem DHT11 wusste ich, dass er ungenau ist, aber soooo :-) auch dafür Dankeschön...

Werde mir nun einen BME280 bestellen...

für die Außentemperatur werde ich den DHT11 mal mit einem ESP01 testen, da diese Variante von ESP keinen Bus hat.. :-(
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.11.2020, 20:31
Beitrag #4
RE: DHT11 Daten via MQTT an Raspi senden
(08.11.2020 20:00)Hanibal_Smith schrieb:  für die Außentemperatur werde ich den DHT11 mal mit einem ESP01 testen, da diese Variante von ESP keinen Bus hat.. :-(
Er kann auch I2C, aber warum willst Du Dir das antun? Ein WEMOS/Lolin D1 Mini kostet ja fast nichts und Du hast USB und Serial.print.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.11.2020, 06:08
Beitrag #5
RE: DHT11 Daten via MQTT an Raspi senden
Ich hatte ein ähnliches Problem mit den DHT22, nach einiger Zeit kamen komische Werte an. Geholfen hat die Stromversorgung des DHT auf einen GPIO Pin zu legen. Beim messen wird zuerst der Pin auf high geschaltet, dann kommt ein delay(1000) und erst dann die eigentliche Messung. Zum Schluß den Pin wieder auf Low.

Seitdem macht der DHT22 das was er soll ohne irgendwelche Ausreißer.

bis denne
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.11.2020, 16:24
Beitrag #6
RE: DHT11 Daten via MQTT an Raspi senden
Den DHT22 hatte ich auch lange im Einsatz und war grundsätzlich mit den Messungen auch zufrieden. Aber irgendwie waren die Teile nicht so arg haltbar. Also ich hatte so einen im Gartenhaus und am Gartenhaus (regengeschützt), aber so nach spätestens zwei Jahren waren die kaputt. Also letztlich bin ich dann auch auf den BME280 gegangen.

Je nachdem, was du vor hast, noch eine alternative Empfehlung. Und zwar wollte ich hier im Haus pro Raum ein Monitoring von Luftfeuchtigkeit und Temperatur. Für einen Selbstbau braucht man also nen Arduino, ne Stromversorgung und ein Funkmodul. Aber da ist man schnell in einem Bereich, in dem sich ein Selbstbau ggf. nicht mehr lohnt. Letztlich bin ich dann auf den Technoline TX29 DTH-IT gestoßen, der kostet so ab 13eur rum. Wird gepuffert mit zwei AA und hat ein kleines Display. Habe ich jedenfalls mit Eneloop-Akkus seit genau zwei Jahren in Betrieb und musste die Akkus noch nicht wechseln. Na jedenfalls kann man deren Funksignale mit einem sog. Jeelink empfangen (es muss aber der passende Jeelink sein, da es unterschiedliche Frequenzen und Antennen gibt). Das ist im Prinzip einfach ein Arduino Nano mit bereits ausgespieltem Sketch und Funkmodul. Den habe ich hier an einen Raspi angeschlossen, auf dem ich u.a. openHAB2 laufen habe. Für OH2 gibt es ein Jeelink-Plugin und so kann man die Werte bequem einlesen. Ich lasse die dann immer in eine mySQL-DB schreiben und generiere daraus mit Grafana hübsche Graphen.

Ich habe seit zwei Monaten beim BME280 außen am Gartenhaus auch noch einen solchen Technoline platziert. Aktuelle Werte (bei leichtem Nebel) sind:

BME: 6.9°C / 100%
TL: 6.6°C / 92%

Sind immer so 0.2 bis 0.4 Grad mehr auf dem BME. Denen sagt man ja auch nach, dass sie zu etwas Overread tendieren.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  serieller Monitor verschluckt Daten wonk 18 289 22.11.2020 23:27
Letzter Beitrag: hotsystems
  Messen und senden setzt unerklärlich aus. frankmehlhop 2 207 13.11.2020 22:39
Letzter Beitrag: frankmehlhop
  Hilfe bei async-mqtt-client für ESP32 amshh 7 293 12.11.2020 09:19
Letzter Beitrag: amithlon
  wert an client schicken während Deepsleep mqtt & ibroker stevensen 13 784 06.11.2020 21:07
Letzter Beitrag: nbk83
  MQTT Connect schleife looped crazysky 1 317 29.10.2020 15:21
Letzter Beitrag: crazysky
  ESP8266 - MQTT Probleme mit SSL decrypt tenor 8 983 22.09.2020 19:33
Letzter Beitrag: tenor
  ESP32+SIM808 GPS Daten auslesen und auf LCD reinhard-adam 2 535 21.09.2020 18:25
Letzter Beitrag: georg01
  ESP8266+PubSubClient und MQTT/ioBroker Arduino4Fun 10 6.828 08.09.2020 10:22
Letzter Beitrag: biologist
  i2c LCD Display am Wemos D1 Mini mit mqtt klappt nach modifikation nicht raspido 5 1.124 15.06.2020 22:19
Letzter Beitrag: stw
  Daten von SD-Card per Web anfragen und übermitteln DO3GE 16 2.532 06.05.2020 18:25
Letzter Beitrag: DO3GE

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste