Add readme
This commit is contained in:
parent
956509459c
commit
d19c9f468f
|
@ -0,0 +1,4 @@
|
||||||
|
## SimpleWeather
|
||||||
|
Connects a DHT11 or DHT22 to an ESP-8266, then sends temperature and humidity over MQTT.
|
||||||
|
|
||||||
|
I use an ESP-01 to keep things cheap. The goal is one per room and one outside, so low cost is a high priority!
|
|
@ -1,82 +0,0 @@
|
||||||
#include <ESP8266WiFi.h>
|
|
||||||
#include <PubSubClient.h>
|
|
||||||
#include "DHT.h"
|
|
||||||
#include "math.h"
|
|
||||||
#include "secrets.h" // modify 'include/secrets.h SAMPLE' with your details and save as 'include/secrets.h'
|
|
||||||
|
|
||||||
#define DHTPIN 2
|
|
||||||
#define DHTTYPE DHT11
|
|
||||||
|
|
||||||
const char* hostName = "Humidobot-2";
|
|
||||||
const char* humidityTopic = "sensors/dht2/humidity";
|
|
||||||
const char* temperatureTopic = "sensors/dht2/temperature";
|
|
||||||
|
|
||||||
unsigned long lastMeasureAttempt = 0;
|
|
||||||
|
|
||||||
// DHT dht;
|
|
||||||
DHT dht(DHTPIN, DHTTYPE);
|
|
||||||
WiFiClient espClient;
|
|
||||||
PubSubClient client(espClient);
|
|
||||||
|
|
||||||
const long measurementInterval = 5000; //dht.getMinimumSamplingPeriod();
|
|
||||||
|
|
||||||
void setup() {
|
|
||||||
Serial.begin(115200);
|
|
||||||
Serial.println();
|
|
||||||
setup_wifi();
|
|
||||||
client.setServer(mqttServer, mqttPort);
|
|
||||||
dht.begin();
|
|
||||||
}
|
|
||||||
|
|
||||||
void setup_wifi() {
|
|
||||||
Serial.print("Connecting to " + String(wifi_ssid));
|
|
||||||
WiFi.begin(wifi_ssid, wifi_password);
|
|
||||||
while (WiFi.status() != WL_CONNECTED) {
|
|
||||||
yield(500);
|
|
||||||
Serial.print(".");
|
|
||||||
}
|
|
||||||
Serial.print("WiFi connected. IP: ");
|
|
||||||
Serial.println(WiFi.localIP());
|
|
||||||
}
|
|
||||||
|
|
||||||
void reconnect() {
|
|
||||||
while (!client.connected()) {
|
|
||||||
Serial.print("Attempting MQTT connection...");
|
|
||||||
if (client.connect(hostName)) {
|
|
||||||
Serial.println("connected");
|
|
||||||
} else {
|
|
||||||
Serial.print(" failed. MQTT connection error: ");
|
|
||||||
Serial.println(client.state());
|
|
||||||
Serial.println(" try again in 5 seconds");
|
|
||||||
yield(5000);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void loop() {
|
|
||||||
if (WiFi.status() != WL_CONNECTED) setup_wifi();
|
|
||||||
if (!client.connected()) reconnect();
|
|
||||||
client.loop();
|
|
||||||
if ((millis() - lastMeasureAttempt) > measurementInterval) {
|
|
||||||
reportResults(dht.readTemperature(), dht.readHumidity());
|
|
||||||
lastMeasureAttempt = millis();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void reportResults(float temp, float humid) {
|
|
||||||
if (!isnan(temp) || !isnan(humid)) {
|
|
||||||
Serial.println("-----------------------");
|
|
||||||
Serial.println("Humidity (%): " + String(humid));
|
|
||||||
Serial.println("Temperature (°C): " + String(temp));
|
|
||||||
Serial.println("-----------------------");
|
|
||||||
client.publish(humidityTopic, String(humid).c_str(), true);
|
|
||||||
client.publish(temperatureTopic, String(temp).c_str(), true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void yield(unsigned long yieldDuration) { //overload yield function to allow for any ms delay
|
|
||||||
unsigned long yieldBegan = millis();
|
|
||||||
while ( (millis() - yieldBegan) < yieldDuration ) {
|
|
||||||
yield();
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue