DHT-usage switchable, MQTT authentication optional, soil-sensor-parameter moved to config-file

This commit is contained in:
Julian Langhoff 2021-05-09 21:19:55 +02:00
parent 8bc1861024
commit 0ae0e76f68
5 changed files with 53 additions and 18 deletions

View File

@ -7,5 +7,12 @@
const char *MQTT_BROKER = "192.168.178.74"; const char *MQTT_BROKER = "192.168.178.74";
const char *MQTT_SENSOR_TOPIC = "living/sensor2"; const char *MQTT_SENSOR_TOPIC = "living/sensor2";
const char *MQTT_CLIENT_ID = "living_mobile_sensor"; 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 #endif

View File

@ -36,9 +36,8 @@ uint8_t rh_buf[RH_BUF_LEN];
* */ * */
#include "config.h" #include "config.h"
// const int AirValue = 800; //replace the value with value when placed in air
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 WaterValue = 345; //replace the value with value when placed in water
volatile boolean new_value = false; volatile boolean new_value = false;
@ -55,6 +54,7 @@ RH_ASK driver(RH_SPEED, RH_RX_PIN);
#define MSG_BAT 0x20 #define MSG_BAT 0x20
#define MSG_TEMPHUM 0x30 #define MSG_TEMPHUM 0x30
#define MSG_ERR 0x40 #define MSG_ERR 0x40
#define MSG_HUM 0x50
char buff[20]; char buff[20];
@ -170,6 +170,14 @@ void loop()
Serial.println(SoilHumidity); Serial.println(SoilHumidity);
new_value = true; new_value = true;
break; 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: case MSG_BAT:
// battery data // battery data
digitalWrite(LED_BUILTIN, LOW); digitalWrite(LED_BUILTIN, LOW);
@ -215,7 +223,9 @@ void reconnect()
{ {
Serial.println("INFO: Attempting MQTT connection..."); Serial.println("INFO: Attempting MQTT connection...");
// Attempt to connect // 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"); Serial.println("INFO: connected");
} }

View File

@ -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 // 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 WATCHDOG_SLEEP_FURTHER 8
// define wether to use a DHT-Sensor or not
bool USE_DHT_SENSOR = true;
#endif #endif

View File

@ -68,7 +68,10 @@ void setup()
pinMode(SOIL_PIN, INPUT); pinMode(SOIL_PIN, INPUT);
// init the DHT22 // init the DHT22
if (USE_DHT_SENSOR == 1)
{
dht_init(&dht, DHT_PIN); dht_init(&dht, DHT_PIN);
}
uint8_t num_blink = 3; uint8_t num_blink = 3;
@ -112,7 +115,9 @@ void loop()
memcpy(&rh_buf[1], &battery, 4); memcpy(&rh_buf[1], &battery, 4);
rh_send(rh_buf,RH_BUF_LEN); rh_send(rh_buf,RH_BUF_LEN);
} }
else if (dht_read_data(&dht, &t, &h) == 1) else if (USE_DHT_SENSOR == 1)
{
if (dht_read_data(&dht, &t, &h) == 1)
{ {
rh_buf[0] = MSG_TEMPHUM; rh_buf[0] = MSG_TEMPHUM;
memcpy(&rh_buf[1], &t, 4); memcpy(&rh_buf[1], &t, 4);
@ -131,6 +136,15 @@ void loop()
rh_buf[0] = MSG_ERR; rh_buf[0] = MSG_ERR;
rh_send(rh_buf,1); rh_send(rh_buf,1);
} }
}
else
{
rh_buf[0] = MSG_HUM;
soil = analogRead(SOIL_PIN);
memcpy(&rh_buf[1], &soil, 2);
rh_send(rh_buf,RH_BUF_LEN);
}
counter++; counter++;
// turn off the LED and transistor: // turn off the LED and transistor:

View File

@ -47,6 +47,7 @@
#define MSG_BAT 0x20 #define MSG_BAT 0x20
#define MSG_TEMPHUM 0x30 #define MSG_TEMPHUM 0x30
#define MSG_ERR 0x40 #define MSG_ERR 0x40
#define MSG_HUM 0x50 // case, sensor just reads soil-humidity
// for watchdog wakeup // for watchdog wakeup
// https://gist.github.com/dwhacks/8055287 // https://gist.github.com/dwhacks/8055287