//D1 mini / ESP8266 Board: http://arduino.esp8266.com/versions/2.3.0/package_esp8266com_index.json #include "DHT.h" //https://github.com/adafruit/DHT-sensor-library #include #include //https://github.com/knolleary/pubsubclient #define WIFI_SSID "SSID" #define WIFI_PASS "PASS" WiFiClient wifiClient; #define MQTT_ID "cricket1" #define MQTT_BROKER "192.168.0.59" PubSubClient mqttClient(wifiClient); #define DHTPIN 5 //Pin D1 #define DHTTYPE DHT22 //Temp and Humidity Sensor #define ANALOG_PIN 17 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(115200); Serial.println("Initialised..."); connectWifi(); delay(1000); pinMode(ANALOG_PIN,INPUT); dht.begin(); } void connectWifi() { delay(200); Serial.print("Connecting to WiFi: "); Serial.println(WIFI_SSID); WiFi.mode(WIFI_STA); WiFi.begin(WIFI_SSID, WIFI_PASS); while(WiFi.status() != WL_CONNECTED) { delay(150); Serial.print("."); } Serial.println(); Serial.println("WiFi: Connected"); Serial.print("IP address: "); Serial.println(WiFi.localIP()); Serial.print("MAC address: "); Serial.println(WiFi.macAddress()); } void connectMqtt() { Serial.print("Connecting to MQTT: "); Serial.println(MQTT_BROKER); while (!mqttClient.connected()) { mqttClient.setServer(MQTT_BROKER, 1883); if (mqttClient.connect(MQTT_ID)) { Serial.println("Connected"); } else { Serial.print("."); } delay(150); } } void loop() { delay(1500); float m = analogRead(ANALOG_PIN); float h = dht.readHumidity(); float t = dht.readTemperature(); char t_msg[20]; char h_msg[20]; char m_msg[20]; // Check if any reads failed and exit early (to try again). if (isnan(h) || isnan(t) || isnan(m)) { Serial.println("Failed to read from DHT sensor!"); return; } Serial.print("Moisture: "); Serial.print(m); Serial.print(" Humidity: "); Serial.print(h); Serial.print(" Temperature: "); Serial.println(t); if(!mqttClient.connected()) { connectMqtt(); } dtostrf(t, 1, 2, t_msg); dtostrf(h, 1, 2, h_msg); dtostrf(m, 1, 2, m_msg); char temp_topic[20]; char humidity_topic[20]; char moisture_topic[20]; sprintf(temp_topic, "%s/temperature", MQTT_ID); sprintf(humidity_topic, "%s/humidity", MQTT_ID); sprintf(moisture_topic, "%s/moisture", MQTT_ID); mqttClient.publish(temp_topic, t_msg); mqttClient.publish(humidity_topic, h_msg); mqttClient.publish(moisture_topic, m_msg); }