From 13d1ab1fa52a475065c9cf55ffa1930020329b7c Mon Sep 17 00:00:00 2001 From: Pim van Pelt Date: Tue, 13 Feb 2018 01:15:14 +0100 Subject: [PATCH] Add app.dht_gpio flag to find DHT sensors Parse this comma separated string to find GPIO pins on which we must enable DHT sensors. Seperators are space and comma. Can be empty, single GPIO pins, or a list: app.dht_gpio="" app.dht_gpio="5" app.dht_gpio="5,4,14" app.dht_gpio="5 4 14" app.dht_gpio="5, 4 14" --- mos.yml | 1 + src/dht.c | 16 +++++++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/mos.yml b/mos.yml index f714584..ba97061 100644 --- a/mos.yml +++ b/mos.yml @@ -42,6 +42,7 @@ config_schema: - ["app.hostname", "sonoff-sv"] - ["app.config", "s", {title: "Application specific config file"}] - ["app.config", "sonoff-basic.json"] + - ["app.dht_gpio", "s", "5,4,14", {title: "Comma Separated list of GPIO pins to enable DHT22/AM2302 sensors on"}] #build_vars: diff --git a/src/dht.c b/src/dht.c index 46dc6d7..ef158da 100644 --- a/src/dht.c +++ b/src/dht.c @@ -3,6 +3,7 @@ #ifdef MGOS_HAVE_DHT #include "main.h" #include "mgos_dht.h" +#include "mgos_config.h" #include "mqtt.h" #define MAX_DHT 8 @@ -44,12 +45,17 @@ static bool dht_create(int pin, enum dht_type type) { } void dht_init() { + char *tok; + memset(s_dht, 0, sizeof (struct mgos_dht *) * MAX_DHT); - dht_create(5, AM2302); - mgos_msleep(250); - dht_create(4, AM2302); - mgos_msleep(250); - dht_create(14, AM2302); + tok = strtok((char *)mgos_sys_config_get_app_dht_gpio(), ", "); + while (tok) { + int gpio; + gpio = atoi(tok); + tok=strtok(NULL, ", "); + dht_create(gpio, AM2302); + mgos_msleep(250); + } } #else