From 55b29741cf1e301c1108dc6a3151cea7a1437cf9 Mon Sep 17 00:00:00 2001 From: Jesse Morgan Date: Wed, 6 Apr 2022 07:12:10 -0700 Subject: WIP: Add temp sensor support --- flowerpot-device.ino | 61 ++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 54 insertions(+), 7 deletions(-) diff --git a/flowerpot-device.ino b/flowerpot-device.ino index e7f6186..3071d73 100644 --- a/flowerpot-device.ino +++ b/flowerpot-device.ino @@ -28,6 +28,7 @@ #include #include #include +#include #include "Seeed_mbedtls.h" @@ -37,7 +38,13 @@ // IO Pin Configuration #define BATTERY_SWITCH D6 #define MEASURE_SWITCH D8 +#define DHT_PIN D9 +#define DHT_TYPE DHT11 +// DHT Sensor +#ifdef HAS_DHT + DHT_Unified dht(DHT_PIN, DHT_TYPE); +#endif // Wifi ESP8266WiFiMulti WiFiMulti; @@ -111,6 +118,11 @@ void setup() { #endif digitalWrite(MEASURE_SWITCH, LOW); + #ifdef HAS_DHT + // Initialize DHT sensor + dht.begin(); + #endif + for (uint8_t t = 4; t > 0; t--) { Serial.printf("[SETUP] WAIT %d...\n", t); Serial.flush(); @@ -122,7 +134,7 @@ void setup() { Serial.printf("Key len %d\n", SECRET_KEY_LEN); WiFi.mode(WIFI_STA); - WiFiMulti.addAP("your_network", "your_password?"); + WiFiMulti.addAP(WIFI_NETWORK, WIFI_PASSWORD); // Prepare the HMAC context mbedtls_md_init(&ctx); @@ -158,23 +170,58 @@ void loop() { float battery_value = 1.0; #endif + float value, r; + + #ifdef TEST_SENSOR + while (1) { + #endif + // Get the current resistance Serial.println("Reading R..."); - float value = read_value(MEASURE_SWITCH); + value = read_value(MEASURE_SWITCH); Serial.printf("Raw measure value = %f\n", value); value = value * 1024.0 / 938.0; Serial.printf("Calibrated measure value = %f\n", value); - float r = 320000.0 / value - 320000.0; + r = 320000.0 / value - 320000.0; Serial.printf("R = %f\n", r); + #ifdef TEST_SENSOR + delay(1000); + } + #endif + + #ifdef HAS_DHT + sensors_event_t event; + + dht.temperature().getEvent(&event); + float temp = event.temperature; + + dht.humidity().getEvent(&event); + float relative_humidity = event.relative_humidity; + #endif + // Payload const size_t payload_length = 1024; char payload[payload_length]; - int len = snprintf(payload, payload_length, - "battery_value=%0.2f&device_id=%08x&value=%0.2f&signature=", + int len = snprintf( + payload, + payload_length, + "battery_value=%0.2f&" + "device_id=%08x&" + "value=%0.2f&" + #ifdef HAS_DHT + "temperature_value=%0.2f&" + "relative_humidity_value=%0.2f&" + #endif + "signature=", battery_value, system_get_chip_id(), - r); + r + #ifdef HAS_DHT + , temp + , relative_humidity + #endif + ); if (len + 65 <= payload_length) { const char* signature = generate_signature(payload, len - 11); @@ -211,7 +258,7 @@ void loop() { #ifdef HAS_BATTERY ESP.deepSleep(3600 * 1000000); #else - ESP.deepSleep(900 * 1000000); + delay(900000); #endif } } -- cgit v1.2.3