diff --git a/.gitmodules b/.gitmodules index 5f13529..38dc7c2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -21,4 +21,7 @@ url = https://github.com/aZholtikov/zh_vector [submodule "components/zh_bh1750"] path = components/zh_bh1750 - url = https://github.com/aZholtikov/zh_bh1750 \ No newline at end of file + url = https://github.com/aZholtikov/zh_bh1750 +[submodule "components/zh_aht"] + path = components/zh_aht + url = https://github.com/aZholtikov/zh_aht \ No newline at end of file diff --git a/README.md b/README.md index 2773aa1..1a92db6 100644 --- a/README.md +++ b/README.md @@ -10,11 +10,12 @@ ESP-NOW based sensor for ESP32 ESP-IDF and ESP8266 RTOS SDK. ## Features 1. Supported 1-wire sensors: - 1. DS18B20 - 2. DHT11/DHT22/AM2302/AM2320 + 1. [DS18B20](https://github.com/aZholtikov/zh_ds18b20) + 2. [DHT11/DHT22/AM2302/AM2320](https://github.com/aZholtikov/zh_dht) 2. Supported I2C sensors: - 1. AM2320 - 2. BH1750 + 1. [AM2320](https://github.com/aZholtikov/zh_dht) + 2. [BH1750](https://github.com/aZholtikov/zh_bh1750) + 3. [AHT20/AHT21](https://github.com/aZholtikov/zh_aht) 3. Optional support sensor power management (for 1-wire sensors only). 4. Automatically adds sensor configuration to Home Assistan via MQTT discovery as a sensor. 5. Update firmware from HTTPS server via ESP-NOW. @@ -33,7 +34,7 @@ ESP-NOW based sensor for ESP32 ESP-IDF and ESP8266 RTOS SDK. MQTT configuration message should filled according to the template "X1,X2,X3,X4,X5,X6". Where: -1. X1 - Sensor type. 1 for DS18B20, 8 for DHT, 9 for BH1750. +1. X1 - Sensor type. 1 for DS18B20, 2 for AHT, 8 for DHT, 9 for BH1750. 2. X2 - Sensor GPIO number 1 (main pin for 1-wire sensors, SDA pin for I2C sensors). 0 - 48 (according to the module used), 255 if not used. 3. X3 - Sensor GPIO number 2 (SCL pin for I2C sensors). 0 - 48 (according to the module used), 255 if not used. 4. X4 - Power GPIO number (if using sensor power control). 0 - 48 (according to the module used), 255 if not used. diff --git a/components/zh_aht b/components/zh_aht new file mode 160000 index 0000000..735dda9 --- /dev/null +++ b/components/zh_aht @@ -0,0 +1 @@ +Subproject commit 735dda94d3cd552b5b22792362dc8bc95c413aba diff --git a/main/Kconfig.projbuild b/main/Kconfig.projbuild index a8b4231..c2538cf 100644 --- a/main/Kconfig.projbuild +++ b/main/Kconfig.projbuild @@ -30,19 +30,21 @@ menu "ZH ESP-NOW Sensor Configuration" bool "DS18B20" config SENSOR_TYPE_DHT bool "DHT" + config SENSOR_TYPE_AHT + bool "AHT" config SENSOR_TYPE_BH1750 bool "BH1750" endchoice choice CONNECTION_TYPE - depends on SENSOR_TYPE_DS18B20 || SENSOR_TYPE_DHT || SENSOR_TYPE_BH1750 + depends on SENSOR_TYPE_DS18B20 || SENSOR_TYPE_DHT || SENSOR_TYPE_BH1750 || SENSOR_TYPE_AHT prompt "Connection type" default CONNECTION_TYPE_ONEWIRE config CONNECTION_TYPE_ONEWIRE depends on SENSOR_TYPE_DS18B20 || SENSOR_TYPE_DHT bool "ONE WIRE" config CONNECTION_TYPE_I2C - depends on SENSOR_TYPE_DHT || SENSOR_TYPE_BH1750 + depends on SENSOR_TYPE_DHT || SENSOR_TYPE_BH1750 || SENSOR_TYPE_AHT bool "I2C" endchoice @@ -63,7 +65,7 @@ menu "ZH ESP-NOW Sensor Configuration" Sensor GPIO (SCL pin for I2C sensors). config MEASUREMENT_FREQUENCY - depends on SENSOR_TYPE_DS18B20 || SENSOR_TYPE_DHT || SENSOR_TYPE_BH1750 + depends on CONNECTION_TYPE_ONEWIRE || CONNECTION_TYPE_I2C int "Measurement frequency" range 1 65536 default 300 diff --git a/main/zh_espnow_sensor.c b/main/zh_espnow_sensor.c index de7ba79..006129a 100644 --- a/main/zh_espnow_sensor.c +++ b/main/zh_espnow_sensor.c @@ -76,6 +76,8 @@ void zh_load_config(sensor_config_t *sensor_config) sensor_config->hardware_config.sensor_type = HAST_DS18B20; #elif CONFIG_SENSOR_TYPE_DHT sensor_config->hardware_config.sensor_type = HAST_DHT; +#elif CONFIG_SENSOR_TYPE_AHT + sensor_config->hardware_config.sensor_type = HAST_AHT; #elif CONFIG_SENSOR_TYPE_BH1750 sensor_config->hardware_config.sensor_type = HAST_BH1750; #else @@ -254,7 +256,17 @@ void zh_sensor_init(sensor_config_t *sensor_config) break; case HAST_BME680: // For future development. break; - case HAST_AHT: // For future development. + case HAST_AHT:; + zh_aht_init_config_t aht_init_config = ZH_AHT_INIT_CONFIG_DEFAULT(); +#ifdef CONFIG_IDF_TARGET_ESP8266 + aht_init_config.i2c_port = I2C_PORT; +#else + aht_init_config.i2c_handle = sensor_config->i2c_bus_handle; +#endif + if (zh_aht_init(&aht_init_config) != ESP_OK) + { + goto ZH_SENSOR_ERROR; + } break; case HAST_SHT: // For future development. break; @@ -371,7 +383,7 @@ uint8_t zh_send_sensor_config_message(const sensor_config_t *sensor_config) ++messages_quantity; break; case HAST_DHT: - case HAST_AHT: // For future development. + case HAST_AHT: case HAST_SHT: // For future development. case HAST_HTU21D: // For future development. case HAST_HDC1080: // For future development. @@ -470,7 +482,14 @@ void zh_send_sensor_status_message_task(void *pvParameter) break; case HAST_BME680: // For future development. break; - case HAST_AHT: // For future development. + case HAST_AHT: + err = zh_aht_read(&humidity, &temperature); + if (err == ESP_OK) + { + data.payload_data.status_message.sensor_status_message.humidity = humidity; + data.payload_data.status_message.sensor_status_message.temperature = temperature; + data.payload_data.status_message.sensor_status_message.voltage = 3.3; // For future development. + } break; case HAST_SHT: // For future development. break; diff --git a/main/zh_espnow_sensor.h b/main/zh_espnow_sensor.h index 1d479f3..dc7f706 100644 --- a/main/zh_espnow_sensor.h +++ b/main/zh_espnow_sensor.h @@ -12,6 +12,7 @@ #include "zh_ds18b20.h" #include "zh_dht.h" #include "zh_bh1750.h" +#include "zh_aht.h" #include "zh_config.h" #ifdef CONFIG_NETWORK_TYPE_DIRECT