summaryrefslogtreecommitdiff
path: root/flowerpot-device.ino
diff options
context:
space:
mode:
authorJesse Morgan <jesse@jesterpm.net>2022-04-06 07:12:10 -0700
committerJesse Morgan <jesse@jesterpm.net>2022-04-06 07:12:10 -0700
commit55b29741cf1e301c1108dc6a3151cea7a1437cf9 (patch)
treea04d365af86af7f4e7bf499a858ffd9fc58262d4 /flowerpot-device.ino
parent379b40f47ff858c56c06048aacaafe163156471e (diff)
WIP: Add temp sensor supportworking-temp-sensor
Diffstat (limited to 'flowerpot-device.ino')
-rw-r--r--flowerpot-device.ino61
1 files 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 <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>
+#include <DHT.h>
#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
}
}