Sensordaten
Benötigte Bauteile
/* How to use the DHT-21 sensor with Arduino uno Temperature and humidity sensor //Libraries #include <dht.h> dht DHT; //Constants #define DHT21_PIN 2 //what pin we're connected to //Variables float hum; //Stores humidity value float temp; //Stores temperature value void setup() { Serial.begin(9600); } void loop() { int chk = DHT.read21(DHT21_PIN); //Read data and store it to variables hum and temp hum = DHT.humidity; temp= DHT.temperature; //Print temp and humidity values to serial monitor Serial.print("Humidity: "); Serial.print(hum); Serial.print(" %, Temp: "); Serial.print(temp); Serial.println(" Celsius"); delay(2000); //Delay 2 sec. }
#include <DHT.h> #include <PubSubClient.h> #include <WiFi.h> // WiFi-Details const char* ssid = "Ihr_WiFi_Name"; const char* password = "Ihr_WiFi_Passwort"; // MQTT-Server const char* mqtt_server = "MQTT_Broker_Adresse"; WiFiClient espClient; PubSubClient client(espClient); // DHT Sensor #define DHTPIN 2 // Der Pin, an dem der Sensor angeschlossen ist #define DHTTYPE DHT21 // DHT 21 (AM2301) DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); setup_wifi(); client.setServer(mqtt_server, 1883); dht.begin(); } void setup_wifi() { delay(10); Serial.println("Verbindung zu WiFi..."); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("WiFi verbunden"); } void loop() { if (!client.connected()) { reconnect(); } client.loop(); // Lesen der Temperatur und Feuchtigkeit float h = dht.readHumidity(); float t = dht.readTemperature(); // Überprüfung, ob die Messung gültig ist if (isnan(h) || isnan(t)) { Serial.println("Fehler beim Lesen des Sensors!"); return; } // Daten auf Serial ausgeben Serial.print("Luftfeuchtigkeit: "); Serial.print(h); Serial.print("% Temperatur: "); Serial.print(t); Serial.println("°C "); // Daten an MQTT senden char tempString[8]; dtostrf(t, 1, 2, tempString); client.publish("home/temperature", tempString); char humString[8]; dtostrf(h, 1, 2, humString); client.publish("home/humidity", humString); delay(2000); // Warte 2 Sekunden zwischen Messungen } void reconnect() { // Verbindungsversuche, bis die Verbindung steht while (!client.connected()) { Serial.print("Versuche, eine MQTT-Verbindung herzustellen..."); if (client.connect("ArduinoClient")) { Serial.println("verbunden"); } else { Serial.print("fehlgeschlagen, rc="); Serial.print(client.state()); Serial.println(" erneuter Versuch in 5 Sekunden"); delay(5000); } } }