Skip to content

Commit

Permalink
Add support for HM330X
Browse files Browse the repository at this point in the history
Add support for HM330X SeedStudio Grove Particule sensor (#13250)
  • Loading branch information
arendst committed Oct 8, 2021
1 parent eaeacbf commit a466c5a
Show file tree
Hide file tree
Showing 35 changed files with 415 additions and 9 deletions.
2 changes: 2 additions & 0 deletions BUILDS.md
Expand Up @@ -160,6 +160,8 @@ m = minimal, l = lite, t = tasmota, k = knx, s = sensors, i = ir, d = display
| USE_SEESAW_SOIL | - | - | - / - | - | - | - | - |
| USE_TOF10120 | - | - | - / - | - | - | - | - |
| USE_AM2320 | - | - | - / - | - | - | - | - |
| USE_T67XX | - | - | - / - | - | - | - | - |
| USE_HM330X | - | - | - / - | - | - | - | - |
| | | | | | | | |
| Feature or Sensor | m | l | t | k | s | i | d | Remarks
| USE_SPI | - | - | - / - | - | - | - | x |
Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md
Expand Up @@ -11,6 +11,7 @@ All notable changes to this project will be documented in this file.
- Commands ``EnergyUsage`` and ``EnergyExport`` to (re)set energy usage and export values
- Berry add module ``import persist``
- Support for BL0942 energy monitor (#13259)
- Support for HM330X SeedStudio Grove Particule sensor (#13250)

### Breaking Changed
- ESP32 LVGL updated to v8.0.2
Expand Down
1 change: 1 addition & 0 deletions I2CDEVICES.md
Expand Up @@ -96,3 +96,4 @@ Index | Define | Driver | Device | Address(es) | Description
60 | USE_AM2320 | xsns_88 | AM2320 | 0x5C | Temperature and Humidity sensor
61 | USE_T67XX | xsns_89 | T67XX | 0x15 | CO2 sensor
62 | USE_SCD40 | xsns_92 | SCD40 | 0x62 | CO2 sensor Sensirion SCD40/SCD41
63 | USE_HM330X | xsns_93 | HM330X | 0x40 | Particule sensor
1 change: 1 addition & 0 deletions RELEASENOTES.md
Expand Up @@ -126,6 +126,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo
- Support for Sensirion SCD40/SCD41 CO2 sensor [#13139](https://github.com/arendst/Tasmota/issues/13139)
- Support for BL0939 energy monitor as used in ESP32 based Sonoff Dual R3 V2 Pow [#13195](https://github.com/arendst/Tasmota/issues/13195)
- Support for BL0942 energy monitor [#13259](https://github.com/arendst/Tasmota/issues/13259)
- Support for HM330X SeedStudio Grove Particule sensor [#13250](https://github.com/arendst/Tasmota/issues/13250)
- Initial support for Tasmota Mesh (TasMesh) providing node/broker communication using ESP-NOW [#11939](https://github.com/arendst/Tasmota/issues/11939)
- Initial support for Wi-Fi extender [#12784](https://github.com/arendst/Tasmota/issues/12784)
- Rule event support as JSON payload [#12496](https://github.com/arendst/Tasmota/issues/12496)
Expand Down
1 change: 1 addition & 0 deletions tasmota/language/af_AF.h
Expand Up @@ -712,6 +712,7 @@
#define D_SENSOR_CSE7766_RX "CSE7766 Rx"
#define D_SENSOR_BL0939_RX "BL0939 Rx"
#define D_SENSOR_BL0942_RX "BL0942 Rx"
#define D_SENSOR_HM330X_SET "HM330X SET"
#define D_SENSOR_PN532_TX "PN532 Tx"
#define D_SENSOR_PN532_RX "PN532 Rx"
#define D_SENSOR_SM16716_CLK "SM16716 CLK"
Expand Down
1 change: 1 addition & 0 deletions tasmota/language/bg_BG.h
Expand Up @@ -711,6 +711,7 @@
#define D_SENSOR_CSE7766_RX "CSE7766 Rx"
#define D_SENSOR_BL0939_RX "BL0939 Rx"
#define D_SENSOR_BL0942_RX "BL0942 Rx"
#define D_SENSOR_HM330X_SET "HM330X SET"
#define D_SENSOR_PN532_TX "PN532 Tx"
#define D_SENSOR_PN532_RX "PN532 Rx"
#define D_SENSOR_SM16716_CLK "SM16716 CLK"
Expand Down
1 change: 1 addition & 0 deletions tasmota/language/cs_CZ.h
Expand Up @@ -712,6 +712,7 @@
#define D_SENSOR_CSE7766_RX "CSE7766 Rx"
#define D_SENSOR_BL0939_RX "BL0939 Rx"
#define D_SENSOR_BL0942_RX "BL0942 Rx"
#define D_SENSOR_HM330X_SET "HM330X SET"
#define D_SENSOR_PN532_TX "PN532 Tx"
#define D_SENSOR_PN532_RX "PN532 Rx"
#define D_SENSOR_SM16716_CLK "SM16716 CLK"
Expand Down
1 change: 1 addition & 0 deletions tasmota/language/de_DE.h
Expand Up @@ -712,6 +712,7 @@
#define D_SENSOR_CSE7766_RX "CSE7766 Rx"
#define D_SENSOR_BL0939_RX "BL0939 Rx"
#define D_SENSOR_BL0942_RX "BL0942 Rx"
#define D_SENSOR_HM330X_SET "HM330X SET"
#define D_SENSOR_PN532_TX "PN532 Tx"
#define D_SENSOR_PN532_RX "PN532 Rx"
#define D_SENSOR_SM16716_CLK "SM16716 CLK"
Expand Down
1 change: 1 addition & 0 deletions tasmota/language/el_GR.h
Expand Up @@ -712,6 +712,7 @@
#define D_SENSOR_CSE7766_RX "CSE7766 Rx"
#define D_SENSOR_BL0939_RX "BL0939 Rx"
#define D_SENSOR_BL0942_RX "BL0942 Rx"
#define D_SENSOR_HM330X_SET "HM330X SET"
#define D_SENSOR_PN532_TX "PN532 Tx"
#define D_SENSOR_PN532_RX "PN532 Rx"
#define D_SENSOR_SM16716_CLK "SM16716 CLK"
Expand Down
1 change: 1 addition & 0 deletions tasmota/language/en_GB.h
Expand Up @@ -712,6 +712,7 @@
#define D_SENSOR_CSE7766_RX "CSE7766 Rx"
#define D_SENSOR_BL0939_RX "BL0939 Rx"
#define D_SENSOR_BL0942_RX "BL0942 Rx"
#define D_SENSOR_HM330X_SET "HM330X SET"
#define D_SENSOR_PN532_TX "PN532 Tx"
#define D_SENSOR_PN532_RX "PN532 Rx"
#define D_SENSOR_SM16716_CLK "SM16716 CLK"
Expand Down
1 change: 1 addition & 0 deletions tasmota/language/es_ES.h
Expand Up @@ -712,6 +712,7 @@
#define D_SENSOR_CSE7766_RX "CSE7766 Rx"
#define D_SENSOR_BL0939_RX "BL0939 Rx"
#define D_SENSOR_BL0942_RX "BL0942 Rx"
#define D_SENSOR_HM330X_SET "HM330X SET"
#define D_SENSOR_PN532_TX "PN532 Tx"
#define D_SENSOR_PN532_RX "PN532 Rx"
#define D_SENSOR_SM16716_CLK "SM16716 CLK"
Expand Down
1 change: 1 addition & 0 deletions tasmota/language/fr_FR.h
Expand Up @@ -712,6 +712,7 @@
#define D_SENSOR_CSE7766_RX "CSE7766 Rx"
#define D_SENSOR_BL0939_RX "BL0939 Rx"
#define D_SENSOR_BL0942_RX "BL0942 Rx"
#define D_SENSOR_HM330X_SET "HM330X SET"
#define D_SENSOR_PN532_TX "PN532 TX"
#define D_SENSOR_PN532_RX "PN532 RX"
#define D_SENSOR_SM16716_CLK "SM16716 CLK"
Expand Down
1 change: 1 addition & 0 deletions tasmota/language/fy_NL.h
Expand Up @@ -712,6 +712,7 @@
#define D_SENSOR_CSE7766_RX "CSE7766 Rx"
#define D_SENSOR_BL0939_RX "BL0939 Rx"
#define D_SENSOR_BL0942_RX "BL0942 Rx"
#define D_SENSOR_HM330X_SET "HM330X SET"
#define D_SENSOR_PN532_TX "PN532 Tx"
#define D_SENSOR_PN532_RX "PN532 Rx"
#define D_SENSOR_SM16716_CLK "SM16716 CLK"
Expand Down
1 change: 1 addition & 0 deletions tasmota/language/he_HE.h
Expand Up @@ -712,6 +712,7 @@
#define D_SENSOR_CSE7766_RX "CSE7766 Rx"
#define D_SENSOR_BL0939_RX "BL0939 Rx"
#define D_SENSOR_BL0942_RX "BL0942 Rx"
#define D_SENSOR_HM330X_SET "HM330X SET"
#define D_SENSOR_PN532_TX "PN532 Tx"
#define D_SENSOR_PN532_RX "PN532 Rx"
#define D_SENSOR_SM16716_CLK "SM16716 CLK"
Expand Down
1 change: 1 addition & 0 deletions tasmota/language/hu_HU.h
Expand Up @@ -712,6 +712,7 @@
#define D_SENSOR_CSE7766_RX "CSE7766 Rx"
#define D_SENSOR_BL0939_RX "BL0939 Rx"
#define D_SENSOR_BL0942_RX "BL0942 Rx"
#define D_SENSOR_HM330X_SET "HM330X SET"
#define D_SENSOR_PN532_TX "PN532 Tx"
#define D_SENSOR_PN532_RX "PN532 Rx"
#define D_SENSOR_SM16716_CLK "SM16716 CLK"
Expand Down
1 change: 1 addition & 0 deletions tasmota/language/it_IT.h
Expand Up @@ -710,6 +710,7 @@
#define D_SENSOR_CSE7761_RX "CSE7761 - RX"
#define D_SENSOR_CSE7766_TX "CSE7766 - TX"
#define D_SENSOR_CSE7766_RX "CSE7766 - RX"
#define D_SENSOR_HM330X_SET "HM330X - SET"
#define D_SENSOR_PN532_TX "PN532 - TX"
#define D_SENSOR_PN532_RX "PN532 - RX"
#define D_SENSOR_SM16716_CLK "SM16716 - CLK"
Expand Down
1 change: 1 addition & 0 deletions tasmota/language/ko_KO.h
Expand Up @@ -712,6 +712,7 @@
#define D_SENSOR_CSE7766_RX "CSE7766 Rx"
#define D_SENSOR_BL0939_RX "BL0939 Rx"
#define D_SENSOR_BL0942_RX "BL0942 Rx"
#define D_SENSOR_HM330X_SET "HM330X SET"
#define D_SENSOR_PN532_TX "PN532 Tx"
#define D_SENSOR_PN532_RX "PN532 Rx"
#define D_SENSOR_SM16716_CLK "SM16716 CLK"
Expand Down
1 change: 1 addition & 0 deletions tasmota/language/nl_NL.h
Expand Up @@ -712,6 +712,7 @@
#define D_SENSOR_CSE7766_RX "CSE7766 Rx"
#define D_SENSOR_BL0939_RX "BL0939 Rx"
#define D_SENSOR_BL0942_RX "BL0942 Rx"
#define D_SENSOR_HM330X_SET "HM330X SET"
#define D_SENSOR_PN532_TX "PN532 Tx"
#define D_SENSOR_PN532_RX "PN532 Rx"
#define D_SENSOR_SM16716_CLK "SM16716 CLK"
Expand Down
1 change: 1 addition & 0 deletions tasmota/language/pl_PL.h
Expand Up @@ -712,6 +712,7 @@
#define D_SENSOR_CSE7766_RX "CSE7766 Rx"
#define D_SENSOR_BL0939_RX "BL0939 Rx"
#define D_SENSOR_BL0942_RX "BL0942 Rx"
#define D_SENSOR_HM330X_SET "HM330X SET"
#define D_SENSOR_PN532_TX "PN532 Tx"
#define D_SENSOR_PN532_RX "PN532 Rx"
#define D_SENSOR_SM16716_CLK "SM16716 CLK"
Expand Down
1 change: 1 addition & 0 deletions tasmota/language/pt_BR.h
Expand Up @@ -712,6 +712,7 @@
#define D_SENSOR_CSE7766_RX "CSE7766 Rx"
#define D_SENSOR_BL0939_RX "BL0939 Rx"
#define D_SENSOR_BL0942_RX "BL0942 Rx"
#define D_SENSOR_HM330X_SET "HM330X SET"
#define D_SENSOR_PN532_TX "PN532 Tx"
#define D_SENSOR_PN532_RX "PN532 Rx"
#define D_SENSOR_SM16716_CLK "SM16716 CLK"
Expand Down
1 change: 1 addition & 0 deletions tasmota/language/pt_PT.h
Expand Up @@ -712,6 +712,7 @@
#define D_SENSOR_CSE7766_RX "CSE7766 Rx"
#define D_SENSOR_BL0939_RX "BL0939 Rx"
#define D_SENSOR_BL0942_RX "BL0942 Rx"
#define D_SENSOR_HM330X_SET "HM330X SET"
#define D_SENSOR_PN532_TX "PN532 Tx"
#define D_SENSOR_PN532_RX "PN532 Rx"
#define D_SENSOR_SM16716_CLK "SM16716 CLK"
Expand Down
1 change: 1 addition & 0 deletions tasmota/language/ro_RO.h
Expand Up @@ -712,6 +712,7 @@
#define D_SENSOR_CSE7766_RX "CSE7766 Rx"
#define D_SENSOR_BL0939_RX "BL0939 Rx"
#define D_SENSOR_BL0942_RX "BL0942 Rx"
#define D_SENSOR_HM330X_SET "HM330X SET"
#define D_SENSOR_PN532_TX "PN532 Tx"
#define D_SENSOR_PN532_RX "PN532 Rx"
#define D_SENSOR_SM16716_CLK "SM16716 CLK"
Expand Down
1 change: 1 addition & 0 deletions tasmota/language/ru_RU.h
Expand Up @@ -712,6 +712,7 @@
#define D_SENSOR_CSE7766_RX "CSE7766 Rx"
#define D_SENSOR_BL0939_RX "BL0939 Rx"
#define D_SENSOR_BL0942_RX "BL0942 Rx"
#define D_SENSOR_HM330X_SET "HM330X SET"
#define D_SENSOR_PN532_TX "PN532 Tx"
#define D_SENSOR_PN532_RX "PN532 Rx"
#define D_SENSOR_SM16716_CLK "SM16716 CLK"
Expand Down
1 change: 1 addition & 0 deletions tasmota/language/sk_SK.h
Expand Up @@ -712,6 +712,7 @@
#define D_SENSOR_CSE7766_RX "CSE7766 Rx"
#define D_SENSOR_BL0939_RX "BL0939 Rx"
#define D_SENSOR_BL0942_RX "BL0942 Rx"
#define D_SENSOR_HM330X_SET "HM330X SET"
#define D_SENSOR_PN532_TX "PN532 Tx"
#define D_SENSOR_PN532_RX "PN532 Rx"
#define D_SENSOR_SM16716_CLK "SM16716 CLK"
Expand Down
1 change: 1 addition & 0 deletions tasmota/language/sv_SE.h
Expand Up @@ -712,6 +712,7 @@
#define D_SENSOR_CSE7766_RX "CSE7766 Rx"
#define D_SENSOR_BL0939_RX "BL0939 Rx"
#define D_SENSOR_BL0942_RX "BL0942 Rx"
#define D_SENSOR_HM330X_SET "HM330X SET"
#define D_SENSOR_PN532_TX "PN532 Tx"
#define D_SENSOR_PN532_RX "PN532 Rx"
#define D_SENSOR_SM16716_CLK "SM16716 CLK"
Expand Down
1 change: 1 addition & 0 deletions tasmota/language/tr_TR.h
Expand Up @@ -712,6 +712,7 @@
#define D_SENSOR_CSE7766_RX "CSE7766 Rx"
#define D_SENSOR_BL0939_RX "BL0939 Rx"
#define D_SENSOR_BL0942_RX "BL0942 Rx"
#define D_SENSOR_HM330X_SET "HM330X SET"
#define D_SENSOR_PN532_TX "PN532 Tx"
#define D_SENSOR_PN532_RX "PN532 Rx"
#define D_SENSOR_SM16716_CLK "SM16716 CLK"
Expand Down
1 change: 1 addition & 0 deletions tasmota/language/uk_UA.h
Expand Up @@ -712,6 +712,7 @@
#define D_SENSOR_CSE7766_RX "CSE7766 Rx"
#define D_SENSOR_BL0939_RX "BL0939 Rx"
#define D_SENSOR_BL0942_RX "BL0942 Rx"
#define D_SENSOR_HM330X_SET "HM330X SET"
#define D_SENSOR_PN532_TX "PN532 Tx"
#define D_SENSOR_PN532_RX "PN532 Rx"
#define D_SENSOR_SM16716_CLK "SM16716 CLK"
Expand Down
1 change: 1 addition & 0 deletions tasmota/language/vi_VN.h
Expand Up @@ -712,6 +712,7 @@
#define D_SENSOR_CSE7766_RX "CSE7766 Rx"
#define D_SENSOR_BL0939_RX "BL0939 Rx"
#define D_SENSOR_BL0942_RX "BL0942 Rx"
#define D_SENSOR_HM330X_SET "HM330X SET"
#define D_SENSOR_PN532_TX "PN532 Tx"
#define D_SENSOR_PN532_RX "PN532 Rx"
#define D_SENSOR_SM16716_CLK "SM16716 CLK"
Expand Down
1 change: 1 addition & 0 deletions tasmota/language/zh_CN.h
Expand Up @@ -712,6 +712,7 @@
#define D_SENSOR_CSE7766_RX "CSE7766 Rx"
#define D_SENSOR_BL0939_RX "BL0939 Rx"
#define D_SENSOR_BL0942_RX "BL0942 Rx"
#define D_SENSOR_HM330X_SET "HM330X SET"
#define D_SENSOR_PN532_TX "PN532 Tx"
#define D_SENSOR_PN532_RX "PN532 Rx"
#define D_SENSOR_SM16716_CLK "SM16716 CLK"
Expand Down
1 change: 1 addition & 0 deletions tasmota/language/zh_TW.h
Expand Up @@ -712,6 +712,7 @@
#define D_SENSOR_CSE7766_RX "CSE7766 Rx"
#define D_SENSOR_BL0939_RX "BL0939 Rx"
#define D_SENSOR_BL0942_RX "BL0942 Rx"
#define D_SENSOR_HM330X_SET "HM330X SET"
#define D_SENSOR_PN532_TX "PN532 Tx"
#define D_SENSOR_PN532_RX "PN532 Rx"
#define D_SENSOR_SM16716_CLK "SM16716 CLK"
Expand Down
5 changes: 5 additions & 0 deletions tasmota/my_user_config.h
Expand Up @@ -653,6 +653,11 @@
// #define USE_BM8563 // [I2cDriver59] Enable BM8563 RTC - found in M5Stack - support both I2C buses on ESP32 (I2C address 0x51) (+2k5 code)
// #define USE_AM2320 // [I2cDriver60] Enable AM2320 temperature and humidity Sensor (I2C address 0x5C) (+1k code)
// #define USE_T67XX // [I2cDriver61] Enable Telaire T67XX CO2 sensor (I2C address 0x15) (+1k3 code)
// #define USE_HM330X // [I2cDriver63] Enable support for SeedStudio Grove Particule sensor (I2C address 0x40) (+1k5 code)
// #define HM330X_DEFAULT_ADDRESS 0x40 // Option: change default I2C address for HM330X used in SeedSTudio Particucle Sensor
// #define HM330X_WARMUP_DELAY 30 // Option: change warmup delay during which data are not read from sensor after a power up
// #define HM330X_HIDE_OUT_OF_DATE false // Option: change to true to hide data from web GUI and SENSOR while sensor is asleep

// #define USE_DISPLAY // Add I2C Display Support (+2k code)
#define USE_DISPLAY_MODES1TO5 // Enable display mode 1 to 5 in addition to mode 0
#define USE_DISPLAY_LCD // [DisplayModel 1] [I2cDriver3] Enable Lcd display (I2C addresses 0x27 and 0x3F) (+6k code)
Expand Down
4 changes: 3 additions & 1 deletion tasmota/support_features.ino
Expand Up @@ -771,7 +771,9 @@ void ResponseAppendFeatures(void)
#if defined(USE_I2C) && defined(USE_SCD40)
feature8 |= 0x00004000; // xsns_92_scd40.ino
#endif
// feature8 |= 0x00008000;
#if defined(USE_I2C) && defined(USE_HM330X)
feature8 |= 0x00008000;
#endif

// feature8 |= 0x00010000;
// feature8 |= 0x00020000;
Expand Down
13 changes: 9 additions & 4 deletions tasmota/tasmota_template.h
Expand Up @@ -174,6 +174,7 @@ enum UserSelectablePins {
GPIO_VINDRIKTNING_RX, // IKEA VINDRIKTNING Serial interface
GPIO_BL0939_RX, // BL0939 Serial interface (Dual R3 v2)
GPIO_BL0942_RX, // BL0942 Serial interface
GPIO_HM330X_SET, // HM330X SET pin (sleep when low)
GPIO_SENSOR_END };

enum ProgramSelectablePins {
Expand Down Expand Up @@ -367,7 +368,8 @@ const char kSensorNames[] PROGMEM =
D_SENSOR_HRG15_TX "|" D_SENSOR_HRG15_RX "|"
D_SENSOR_VINDRIKTNING_RX "|"
D_SENSOR_BL0939_RX "|"
D_SENSOR_BL0942_RX
D_SENSOR_BL0942_RX "|"
D_SENSOR_HM330X_SET
;

const char kSensorNamesFixed[] PROGMEM =
Expand Down Expand Up @@ -755,6 +757,12 @@ const uint16_t kGpioNiceList[] PROGMEM = {
AGPIO(GPIO_PMS5003_TX), // Plantower PMS5003 Serial interface
AGPIO(GPIO_PMS5003_RX), // Plantower PMS5003 Serial interface
#endif
#ifdef USE_VINDRIKTNING
AGPIO(GPIO_VINDRIKTNING_RX),
#endif
#ifdef USE_HM330X
AGPIO(GPIO_HM330X_SET), // HM330X Sleep pin (active low)
#endif
#if defined(USE_TX20_WIND_SENSOR) || defined(USE_TX23_WIND_SENSOR) || defined(USE_WS2300_WIND_SENSOR)
AGPIO(GPIO_TX2X_TXD_BLACK), // TX20/TX23 Transmission Pin
#endif
Expand Down Expand Up @@ -805,9 +813,6 @@ const uint16_t kGpioNiceList[] PROGMEM = {
AGPIO(GPIO_HRG15_TX),
AGPIO(GPIO_HRG15_RX),
#endif
#ifdef USE_VINDRIKTNING
AGPIO(GPIO_VINDRIKTNING_RX),
#endif

/*-------------------------------------------------------------------------------------------*\
* Other sensors
Expand Down

0 comments on commit a466c5a

Please sign in to comment.