From 51073a8f4813300196d39ac4ab6cffe9a4eb54bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Xose=20P=C3=A9rez?= Date: Wed, 30 Nov 2016 23:35:55 +0100 Subject: [PATCH] Added support for DS18B20 temperature sensor. Thanks to Francesco Boscarino --- code/data/index.html.gz | Bin 45342 -> 45355 bytes code/html/index.html | 5 +++ code/platformio.ini | 2 ++ code/src/config/sensors.h | 9 +++++ code/src/dht.ino | 26 +++++++------- code/src/ds18b20.ino | 70 ++++++++++++++++++++++++++++++++++++++ code/src/main.ino | 6 ++++ code/src/web.ino | 9 +++-- 8 files changed, 112 insertions(+), 15 deletions(-) create mode 100644 code/src/ds18b20.ino diff --git a/code/data/index.html.gz b/code/data/index.html.gz index 94413f85a1c9d103dac11ac2d79ed4ac85ae171d..59a3d111d388511ca5d4103cc1ca5f55a215e6fe 100644 GIT binary patch delta 38881 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 s!h&0rcbsfsa@*ne +
+ + +
+
diff --git a/code/platformio.ini b/code/platformio.ini index 9b5d699b..30dbc155 100644 --- a/code/platformio.ini +++ b/code/platformio.ini @@ -13,6 +13,8 @@ lib_deps = ESPAsyncUDP Embedis NtpClientLib + OneWire + DallasTemperature https://bitbucket.org/xoseperez/justwifi.git https://bitbucket.org/xoseperez/nofuss.git https://bitbucket.org/xoseperez/hlw8012.git diff --git a/code/src/config/sensors.h b/code/src/config/sensors.h index 4f11c0aa..338a9913 100644 --- a/code/src/config/sensors.h +++ b/code/src/config/sensors.h @@ -20,6 +20,15 @@ #define DHT_TEMPERATURE_TOPIC "/temperature" #define DHT_HUMIDITY_TOPIC "/humidity" +//-------------------------------------------------------------------------------- +// DS18B20 temperature sensor +// Enable support by passing ENABLE_DS18B20=1 build flag +//-------------------------------------------------------------------------------- + +#define DS_PIN 14 +#define DS_UPDATE_INTERVAL 60000 +#define DS_TEMPERATURE_TOPIC "/temperature" + //-------------------------------------------------------------------------------- // Custom current sensor // Check http://tinkerman.cat/your-laundry-is-done/ diff --git a/code/src/dht.ino b/code/src/dht.ino index b7fd2cf8..5dd07492 100644 --- a/code/src/dht.ino +++ b/code/src/dht.ino @@ -14,19 +14,19 @@ Copyright (C) 2016 by Xose Pérez DHT dht(DHT_PIN, DHT_TYPE, DHT_TIMING); -char temperature[6]; -char humidity[6]; +char dhtTemperature[6]; +char dhtHumidity[6]; // ----------------------------------------------------------------------------- // DHT // ----------------------------------------------------------------------------- -char * getTemperature() { - return temperature; +char * getDHTTemperature() { + return dhtTemperature; } -char * getHumidity() { - return humidity; +char * getDHTHumidity() { + return dhtHumidity; } void dhtSetup() { @@ -53,19 +53,19 @@ void dhtLoop() { } else { - dtostrf(t, 4, 1, temperature); - itoa((int) h, humidity, 10); + dtostrf(t, 4, 1, dhtTemperature); + itoa((int) h, dhtHumidity, 10); - DEBUG_MSG("[DHT] Temperature: %s\n", temperature); - DEBUG_MSG("[DHT] Humidity: %s\n", humidity); + DEBUG_MSG("[DHT] Temperature: %s\n", dhtTemperature); + DEBUG_MSG("[DHT] Humidity: %s\n", dhtHumidity); // Send MQTT messages - mqttSend((char *) getSetting("dhtTmpTopic", DHT_TEMPERATURE_TOPIC).c_str(), temperature); - mqttSend((char *) getSetting("dhtHumTopic", DHT_HUMIDITY_TOPIC).c_str(), humidity); + mqttSend((char *) getSetting("dhtTmpTopic", DHT_TEMPERATURE_TOPIC).c_str(), dhtTemperature); + mqttSend((char *) getSetting("dhtHumTopic", DHT_HUMIDITY_TOPIC).c_str(), dhtHumidity); // Update websocket clients char buffer[100]; - sprintf_P(buffer, PSTR("{\"dhtVisible\": 1, \"dhtTmp\": %s, \"dhtHum\": %s}"), temperature, humidity); + sprintf_P(buffer, PSTR("{\"dhtVisible\": 1, \"dhtTmp\": %s, \"dhtHum\": %s}"), dhtTemperature, dhtHumidity); wsSend(buffer); } diff --git a/code/src/ds18b20.ino b/code/src/ds18b20.ino new file mode 100644 index 00000000..02ecdd0f --- /dev/null +++ b/code/src/ds18b20.ino @@ -0,0 +1,70 @@ +/* + +ESPurna +SD18B20 MODULE + +Copyright (C) 2016 by Xose Pérez + +*/ + +#if ENABLE_DS18B20 + +#include +#include + +OneWire oneWire(DS_PIN); +DallasTemperature ds18b20(&oneWire); + +char dsTemperature[6]; + +// ----------------------------------------------------------------------------- +// DS18B20 +// ----------------------------------------------------------------------------- + +char * getDSTemperature() { + return dsTemperature; +} + +void dsSetup() { + ds18b20.begin(); +} + +void dsLoop() { + + if (!mqttConnected()) return; + + // Check if we should read new data + static unsigned long last_update = 0; + if ((millis() - last_update > DS_UPDATE_INTERVAL) || (last_update == 0)) { + last_update = millis(); + + // Read sensor data + ds18b20.requestTemperatures(); + double t = ds18b20.getTempCByIndex(0); + + // Check if readings are valid + if (isnan(t)) { + + DEBUG_MSG("[DS18B20] Error reading sensor\n"); + + } else { + + dtostrf(t, 4, 1, dsTemperature); + + DEBUG_MSG("[DS18B20] Temperature: %s\n", dsTemperature); + + // Send MQTT messages + mqttSend((char *) getSetting("dsTmpTopic", DS_TEMPERATURE_TOPIC).c_str(), dsTemperature); + + // Update websocket clients + char buffer[100]; + sprintf_P(buffer, PSTR("{\"dsVisible\": 1, \"dsTmp\": %s}"), dsTemperature); + wsSend(buffer); + + } + + } + +} + +#endif diff --git a/code/src/main.ino b/code/src/main.ino index b8282859..8b0ca4b4 100644 --- a/code/src/main.ino +++ b/code/src/main.ino @@ -155,6 +155,9 @@ void setup() { #if ENABLE_POW powSetup(); #endif + #if ENABLE_DS18B20 + dsSetup(); + #endif #if ENABLE_DHT dhtSetup(); #endif @@ -183,6 +186,9 @@ void loop() { #if ENABLE_POW powLoop(); #endif + #if ENABLE_DS18B20 + dsLoop(); + #endif #if ENABLE_DHT dhtLoop(); #endif diff --git a/code/src/web.ino b/code/src/web.ino index 21d6347d..7cd8ac1e 100644 --- a/code/src/web.ino +++ b/code/src/web.ino @@ -207,10 +207,15 @@ void _wsStart(uint32_t client_id) { root["fauxmoEnabled"] = getSetting("fauxmoEnabled", String(FAUXMO_ENABLED)).toInt() == 1; #endif + #if ENABLE_DS18B20 + root["dsVisible"] = 1; + root["dsTmp"] = getDSTemperature(); + #endif + #if ENABLE_DHT root["dhtVisible"] = 1; - root["dhtTmp"] = getTemperature(); - root["dhtHum"] = getHumidity(); + root["dhtTmp"] = getDHTTemperature(); + root["dhtHum"] = getDHTHumidity(); #endif #if ENABLE_RF