From 115821d26996d05044dd3ebdd1ffa3b286d8c85f Mon Sep 17 00:00:00 2001 From: Joe Robinson Date: Sat, 16 Feb 2019 23:36:21 +0000 Subject: Initial commit --- README.md | 6 +++++ cricket.ino | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 README.md create mode 100644 cricket.ino diff --git a/README.md b/README.md new file mode 100644 index 0000000..cba7177 --- /dev/null +++ b/README.md @@ -0,0 +1,6 @@ +Publishes DHT sensor readings over MQTT from an Arduino/ESP8266/D1 mini + +ESP8266 Board Packagee: http://arduino.esp8266.com/versions/2.3.0/package_esp8266com_index.json +Adafruit DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library +MQTT PubSubClient: https://github.com/knolleary/pubsubclient + diff --git a/cricket.ino b/cricket.ino new file mode 100644 index 0000000..7979c61 --- /dev/null +++ b/cricket.ino @@ -0,0 +1,85 @@ +//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 "cricket0" +#define MQTT_BROKER "BROKER" +PubSubClient mqttClient(wifiClient); + +#define DHTPIN 5 //Pin D1 +#define DHTTYPE DHT22 //Temp and Humidity Sensor +DHT dht(DHTPIN, DHTTYPE); + +void setup() { + Serial.begin(115200); + Serial.println("Initialised..."); + connectWifi(); + delay(1000); + 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 h = dht.readHumidity(); + float t = dht.readTemperature(); + + char t_msg[20]; + char h_msg[20]; + // Check if any reads failed and exit early (to try again). + if (isnan(h) || isnan(t)) { + Serial.println("Failed to read from DHT sensor!"); + return; + } + Serial.print("Humidity: "); + Serial.print(h); + Serial.print(" Temperature: "); + Serial.println(t); + + if(!mqttClient.connected()) { + connectMqtt(); + } + dtostrf(t, 1, 2, t_msg); + mqttClient.publish("temperature", t_msg); + dtostrf(h, 1, 2, h_msg); + mqttClient.publish("humidity", h_msg); +} -- cgit v1.2.3