diff --git a/esp_sensor_firmware/esp_sensor_firmware.ino b/esp_sensor_firmware/esp_sensor_firmware.ino index 0c065e2..7efa4c7 100644 --- a/esp_sensor_firmware/esp_sensor_firmware.ino +++ b/esp_sensor_firmware/esp_sensor_firmware.ino @@ -14,12 +14,18 @@ #include "DHT.h" #include "mqtt_credentials.h" -#define ID_BASE "sensor/window/" -#define ID_TEMP ID_BASE "/temperature" -#define ID_HUMID ID_BASE "/temperature" -#define ID_HEAT ID_BASE "/temperature" +#define TOPIC_BASE "sensor/window/" +#define TOPIC_TEMP TOPIC_BASE "/temperature" +#define TOPIC_HMID TOPIC_BASE "/temperature" +#define TOPIC_HEAT TOPIC_BASE "/temperature" + +#define DIFF_TEMP 0.3 // sensor has only 0.5°C accuracy, triggering on less is ludicrous +#define DIFF_HMID 2.5 // humidity doesn't change that much anyways +#define DIFF_HEAT 0.2 // this one's actually quite active #define OPERATION_BLINK_EN true // blink continuously if in correct operation +#define OPERATION_PERIOD 5000 // sensor reading period in milliseconds +#define FORCE_PERIOD 12 // sensor reading publication force period in number of readings without publication #define DHTPIN 4 // Digital pin connected to the DHT sensor #define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 @@ -116,10 +122,10 @@ void loop() { digitalWrite(LED_BUILTIN, HIGH); long now = millis(); - if (now - lastMsg > 2500) { + if (now - lastMsg > OPERATION_PERIOD / 2) { if (OPERATION_BLINK_EN) {digitalWrite(LED_BUILTIN, LOW);} } - if (now - lastMsg > 5000) { + if (now - lastMsg > OPERATION_PERIOD) { lastMsg = now; if (OPERATION_BLINK_EN) {digitalWrite(LED_BUILTIN, HIGH);} @@ -142,15 +148,15 @@ void loop() { Serial.println(F("°C ")); published = false; - if (lastSent > 12) { + if (lastSent > FORCE_PERIOD) { Serial.println(F("Forcing a publish of all values")); forcePublish = true; lastSent = 0; } - published += publish("temperature", ID_TEMP, t, t_r, 0.3, forcePublish); - published += publish("humidity", ID_HUMID, h, h_r, 2.5, forcePublish); - published += publish("heat index", ID_HEAT, hi, hi_r, 0.2, forcePublish); + published += publish("temperature", TOPIC_TEMP, t, t_r, DIFF_TEMP, forcePublish); + published += publish("humidity", TOPIC_HMID, h, h_r, DIFF_HMID, forcePublish); + published += publish("heat index", TOPIC_HEAT, hi, hi_r, DIFF_HEAT, forcePublish); if (published == false) { lastSent = lastSent + 1;