From 0ae0e76f68731a974a7190bb22b8d8c631841da5 Mon Sep 17 00:00:00 2001 From: Julian Langhoff Date: Sun, 9 May 2021 21:19:55 +0200 Subject: [PATCH] DHT-usage switchable, MQTT authentication optional, soil-sensor-parameter moved to config-file --- esp-receiver/src/config.h.example | 7 ++++++ esp-receiver/src/main.cpp | 18 ++++++++++--- sensor433/src/config.h.example | 3 +++ sensor433/src/main.cpp | 42 ++++++++++++++++++++----------- sensor433/src/sensor433.h | 1 + 5 files changed, 53 insertions(+), 18 deletions(-) diff --git a/esp-receiver/src/config.h.example b/esp-receiver/src/config.h.example index 7cd796c..e0d203b 100644 --- a/esp-receiver/src/config.h.example +++ b/esp-receiver/src/config.h.example @@ -7,5 +7,12 @@ const char *MQTT_BROKER = "192.168.178.74"; const char *MQTT_SENSOR_TOPIC = "living/sensor2"; const char *MQTT_CLIENT_ID = "living_mobile_sensor"; +const char *MQTT_LAST_WILL_TOPIC = "living/sensor2/status"; +const char *MQTT_LAST_WILL_MSG = "offline"; +const char *MQTT_CLIENT_USER = "NULL"; // if NULL, no username or password is used +const char *MQTT_CLIENT_PW = "NULL"; // if NULL, no password is used + +const int AirValue = 800; //replace the value with value when placed in air +const int WaterValue = 345; //replace the value with value when placed in water #endif \ No newline at end of file diff --git a/esp-receiver/src/main.cpp b/esp-receiver/src/main.cpp index 5741e43..593e519 100644 --- a/esp-receiver/src/main.cpp +++ b/esp-receiver/src/main.cpp @@ -36,9 +36,8 @@ uint8_t rh_buf[RH_BUF_LEN]; * */ #include "config.h" - -const int AirValue = 800; //replace the value with value when placed in air -const int WaterValue = 345; //replace the value with value when placed in water +// const int AirValue = 800; //replace the value with value when placed in air +// const int WaterValue = 345; //replace the value with value when placed in water volatile boolean new_value = false; @@ -55,6 +54,7 @@ RH_ASK driver(RH_SPEED, RH_RX_PIN); #define MSG_BAT 0x20 #define MSG_TEMPHUM 0x30 #define MSG_ERR 0x40 +#define MSG_HUM 0x50 char buff[20]; @@ -170,6 +170,14 @@ void loop() Serial.println(SoilHumidity); new_value = true; break; + case MSG_HUM: + Serial.println("Soil Humidity"); + memcpy(&soil, &rh_buf[1], 2); + Serial.println(soil); + SoilHumidity = (float)(map(soil, AirValue, WaterValue, 0, 100)); + Serial.println(SoilHumidity); + new_value = true; + break; case MSG_BAT: // battery data digitalWrite(LED_BUILTIN, LOW); @@ -215,7 +223,9 @@ void reconnect() { Serial.println("INFO: Attempting MQTT connection..."); // Attempt to connect - if (mqttClient.connect(MQTT_CLIENT_ID)) + + // Should work without authentication, if credentials are NULL + if (mqttClient.connect(MQTT_CLIENT_ID, MQTT_CLIENT_USER, MQTT_CLIENT_PW)) { Serial.println("INFO: connected"); } diff --git a/sensor433/src/config.h.example b/sensor433/src/config.h.example index 0ac775a..b41fedb 100644 --- a/sensor433/src/config.h.example +++ b/sensor433/src/config.h.example @@ -14,4 +14,7 @@ // Sleep this many again before waging up. Sleep time in s = WATCHDOG_WAKEUP s * WATCHDOG_SLEEP_FURTHER, e.g. 8*8s = 64s #define WATCHDOG_SLEEP_FURTHER 8 +// define wether to use a DHT-Sensor or not +bool USE_DHT_SENSOR = true; + #endif \ No newline at end of file diff --git a/sensor433/src/main.cpp b/sensor433/src/main.cpp index 5785ca6..5f2c269 100644 --- a/sensor433/src/main.cpp +++ b/sensor433/src/main.cpp @@ -68,7 +68,10 @@ void setup() pinMode(SOIL_PIN, INPUT); // init the DHT22 - dht_init(&dht, DHT_PIN); + if (USE_DHT_SENSOR == 1) + { + dht_init(&dht, DHT_PIN); + } uint8_t num_blink = 3; @@ -112,24 +115,35 @@ void loop() memcpy(&rh_buf[1], &battery, 4); rh_send(rh_buf,RH_BUF_LEN); } - else if (dht_read_data(&dht, &t, &h) == 1) + else if (USE_DHT_SENSOR == 1) { - rh_buf[0] = MSG_TEMPHUM; - memcpy(&rh_buf[1], &t, 4); - memcpy(&rh_buf[5], &h, 4); - soil = analogRead(SOIL_PIN); - memcpy(&rh_buf[9], &soil, 2); + if (dht_read_data(&dht, &t, &h) == 1) + { + rh_buf[0] = MSG_TEMPHUM; + memcpy(&rh_buf[1], &t, 4); + memcpy(&rh_buf[5], &h, 4); + soil = analogRead(SOIL_PIN); + memcpy(&rh_buf[9], &soil, 2); - rh_send(rh_buf,RH_BUF_LEN); + rh_send(rh_buf,RH_BUF_LEN); + } + else + { + // error message + blink(4); + digitalWrite(TRANSISTOR_BASE_PIN, HIGH); + delay(5); + rh_buf[0] = MSG_ERR; + rh_send(rh_buf,1); + } } else { - // error message - blink(4); - digitalWrite(TRANSISTOR_BASE_PIN, HIGH); - delay(5); - rh_buf[0] = MSG_ERR; - rh_send(rh_buf,1); + rh_buf[0] = MSG_HUM; + soil = analogRead(SOIL_PIN); + memcpy(&rh_buf[1], &soil, 2); + + rh_send(rh_buf,RH_BUF_LEN); } counter++; diff --git a/sensor433/src/sensor433.h b/sensor433/src/sensor433.h index 558a6c6..ad9e341 100644 --- a/sensor433/src/sensor433.h +++ b/sensor433/src/sensor433.h @@ -47,6 +47,7 @@ #define MSG_BAT 0x20 #define MSG_TEMPHUM 0x30 #define MSG_ERR 0x40 +#define MSG_HUM 0x50 // case, sensor just reads soil-humidity // for watchdog wakeup // https://gist.github.com/dwhacks/8055287