Wemos D1 Mini + DHT22 (Shield) + Telegram

Hallo zusammen,

ich bin noch total neu in Sachen Mikrocontroller und deren Programmierung - deswegen sage ich auch gleich, dass ich mir den Code zusammengeklaut habe und versucht habe, auf meine Bedürfnisse anzupassen. Das ist auch mein erster Post in diesem Forum - damit auch gleich ein herzliches HALLO.

Der Bot auf Telegram funktioniert, aber als Werte kommen lediglich "nan" an.
Verbunden sind am D1 Mini mit dem DHT22-Shield jeweils die Pins 3V3, GND und D4.
Wo ist der Fehler?
Könnt ihr mir da weiterhelfen?

VIELEN DANK.

/*
   Die Temperatur und Luftfeuchtigkeit abfragen mit Telegram - polluxlabs.net
*/

//Bibliotheken
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>

#include <Wire.h>
#include <DHT.h>

#define DHTTYPE DHT22  // DHT 22

// DHT Sensor
// PIN mit dem "Data" des DHT22 verbunden ist
// uint8_t DHTPin = D4;
uint8_t DHTPin = 2;

// Initialize DHT sensor.
DHT dht(DHTPin, DHTTYPE);

// Deine WLAN-Zugangsdaten
const char* ssid = "mein-Internetzugang";
const char* password = "und das Passwort dazu";

// Den Telegram-Bot initialisieren
#define botToken "meine-Bot-ID"  // den Bot-Token bekommst du vom Botfather)

//Deine UserID
#define userID "meine-ID"

WiFiClientSecure client;
UniversalTelegramBot bot(botToken, client);


//Variable für die Temperatur
float Temperature;

//Variable für die Luftfeuchtigkeit
float Humidity;

//Variable für die Anzahl der Anfragen
int numNewRequests;

//Variable für den Text der Anfrage, die du sendest
String text = "";

//UserID des Absenders
String chat_id = "";

//Name des Absenders
String from_name = "";

//Variable für die Willkommensnachricht
String welcome = "";

//Funktion fürs Verarbeiten neuer Anfragen
void handleNewRequests(int numNewRequests) {

  for (int i = 0; i < numNewRequests; i++) {  //loopt durch die neuen Anfragen

    //Checkt, ob du die Anfrage gesendet hast oder jemand anderes
    chat_id = String(bot.messages[i].chat_id);
    if (chat_id != userID) {
      bot.sendMessage(chat_id, "Du bist nicht autorisiert!", "");
      continue;
    }

    // Anfragetext speichern
    text = bot.messages[i].text;
    Serial.println(text);

    from_name = bot.messages[i].from_name;

    if (text == "/start") {
      welcome = "Willkommen, " + from_name + ".\n";
      welcome += "Mit folgendem Befehl fragst du die aktuelle Temperatur ab: \n\n";
      welcome += "/messen \n";
      bot.sendMessage(chat_id, welcome, "");
      bot.sendMessage(chat_id, "http://gph.is/2aLXZ8H", "");
    }

    if (text == "/messen") {
      Temperature = dht.readTemperature();
      Humidity = dht.readHumidity();
      bot.sendMessage(chat_id, "Temperatur: " + String(Temperature) + " ºC", "");
      bot.sendMessage(chat_id, "Luftfeuchtigkeit: " + String(Humidity) + " %", "");
    }
  }
}

void setup() {

  Serial.begin(115200);
  client.setInsecure();

  //Verbindung zum WLAN
  Serial.print("Verbinde mich mit: ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(300);
  }
  Serial.println("");
  Serial.println("Verbunden!");
}

void loop() {

  //checkt, ob eine neue Anfrage reinkam
  int numNewRequests = bot.getUpdates(bot.last_message_received + 1);

  while (numNewRequests) {  //wird ausgeführt, wenn numNewRequests == 1
    Serial.println("Anfrage erhalten");
    handleNewRequests(numNewRequests);
    numNewRequests = bot.getUpdates(bot.last_message_received + 1);
  }
  delay(1000);
}

Lass Dir doch einfach mal die Werte auf dem seriellen Monitor ausgeben.
Außerdem vermisse ich ein dht.begin().
Gib uns mal noch einen Link zu Deiner DHT-Lib.

Gruß Tommy

1 Like

Das war's!!!

Es kann so einfach sein...aber manchmal ist man einfach blind.

Vielen Dank.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.