diff --git a/CHANGELOG.md b/CHANGELOG.md index 4686ccfb5..27ecf079f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ All notable changes to this project will be documented in this file. ## [9.2.0.1] ### Added - Milliseconds to console output (#10152) +- Support for P9813 RGB Led MOSFET controller (#10104) ## [Released] diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 058706986..45e8b854a 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -59,6 +59,7 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota ## Changelog v9.2.0.1 ### Added - Milliseconds to console output (#10152) +- Support for P9813 RGB Led MOSFET controller (#10104) ### Breaking Changed diff --git a/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h index 6eca32a48..eb9f244b2 100644 --- a/tasmota/language/bg_BG.h +++ b/tasmota/language/bg_BG.h @@ -646,6 +646,8 @@ #define D_SENSOR_SM16716_CLK "SM16716 CLK" #define D_SENSOR_SM16716_DAT "SM16716 DAT" #define D_SENSOR_SM16716_POWER "SM16716 PWR" +#define D_SENSOR_P9813_CLK "P9813 Clk" +#define D_SENSOR_P9813_DAT "P9813 Dat" #define D_SENSOR_MY92X1_DI "MY92x1 DI" #define D_SENSOR_MY92X1_DCKI "MY92x1 DCKI" #define D_SENSOR_ARIRFRCV "ALux IrRcv" diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h index 2c11cec55..f10a5f992 100644 --- a/tasmota/language/cs_CZ.h +++ b/tasmota/language/cs_CZ.h @@ -646,6 +646,8 @@ #define D_SENSOR_SM16716_CLK "SM16716 CLK" #define D_SENSOR_SM16716_DAT "SM16716 DAT" #define D_SENSOR_SM16716_POWER "SM16716 PWR" +#define D_SENSOR_P9813_CLK "P9813 Clk" +#define D_SENSOR_P9813_DAT "P9813 Dat" #define D_SENSOR_MY92X1_DI "MY92x1 DI" #define D_SENSOR_MY92X1_DCKI "MY92x1 DCKI" #define D_SENSOR_ARIRFRCV "ALux IrRcv" diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h index 101e8af07..6d03bd326 100644 --- a/tasmota/language/de_DE.h +++ b/tasmota/language/de_DE.h @@ -646,6 +646,8 @@ #define D_SENSOR_SM16716_CLK "SM16716 CLK" #define D_SENSOR_SM16716_DAT "SM16716 DAT" #define D_SENSOR_SM16716_POWER "SM16716 PWR" +#define D_SENSOR_P9813_CLK "P9813 Clk" +#define D_SENSOR_P9813_DAT "P9813 Dat" #define D_SENSOR_MY92X1_DI "MY92x1 DI" #define D_SENSOR_MY92X1_DCKI "MY92x1 DCKI" #define D_SENSOR_ARIRFRCV "ALux IrRcv" diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h index 015fe851e..4fadbb25b 100644 --- a/tasmota/language/el_GR.h +++ b/tasmota/language/el_GR.h @@ -646,6 +646,8 @@ #define D_SENSOR_SM16716_CLK "SM16716 CLK" #define D_SENSOR_SM16716_DAT "SM16716 DAT" #define D_SENSOR_SM16716_POWER "SM16716 PWR" +#define D_SENSOR_P9813_CLK "P9813 Clk" +#define D_SENSOR_P9813_DAT "P9813 Dat" #define D_SENSOR_MY92X1_DI "MY92x1 DI" #define D_SENSOR_MY92X1_DCKI "MY92x1 DCKI" #define D_SENSOR_ARIRFRCV "ALux IrRcv" diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h index 90cf9090d..b1ecc40fa 100644 --- a/tasmota/language/en_GB.h +++ b/tasmota/language/en_GB.h @@ -646,6 +646,8 @@ #define D_SENSOR_SM16716_CLK "SM16716 CLK" #define D_SENSOR_SM16716_DAT "SM16716 DAT" #define D_SENSOR_SM16716_POWER "SM16716 PWR" +#define D_SENSOR_P9813_CLK "P9813 Clk" +#define D_SENSOR_P9813_DAT "P9813 Dat" #define D_SENSOR_MY92X1_DI "MY92x1 DI" #define D_SENSOR_MY92X1_DCKI "MY92x1 DCKI" #define D_SENSOR_ARIRFRCV "ALux IrRcv" diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h index 4aa7a32d3..659cff6a6 100644 --- a/tasmota/language/es_ES.h +++ b/tasmota/language/es_ES.h @@ -646,6 +646,8 @@ #define D_SENSOR_SM16716_CLK "SM16716 CLK" #define D_SENSOR_SM16716_DAT "SM16716 DAT" #define D_SENSOR_SM16716_POWER "SM16716 PWR" +#define D_SENSOR_P9813_CLK "P9813 Clk" +#define D_SENSOR_P9813_DAT "P9813 Dat" #define D_SENSOR_MY92X1_DI "MY92x1 DI" #define D_SENSOR_MY92X1_DCKI "MY92x1 DCKI" #define D_SENSOR_ARIRFRCV "ALux IrRcv" diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h index c9efd3213..46bc1a483 100644 --- a/tasmota/language/fr_FR.h +++ b/tasmota/language/fr_FR.h @@ -642,6 +642,8 @@ #define D_SENSOR_SM16716_CLK "SM16716 CLK" #define D_SENSOR_SM16716_DAT "SM16716 DAT" #define D_SENSOR_SM16716_POWER "SM16716 PWR" +#define D_SENSOR_P9813_CLK "P9813 Clk" +#define D_SENSOR_P9813_DAT "P9813 Dat" #define D_SENSOR_MY92X1_DI "MY92x1 DI" #define D_SENSOR_MY92X1_DCKI "MY92x1 DCKI" #define D_SENSOR_ARIRFRCV "ALux IrRcv" diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h index cfc339952..3b6ee9a76 100644 --- a/tasmota/language/he_HE.h +++ b/tasmota/language/he_HE.h @@ -646,6 +646,8 @@ #define D_SENSOR_SM16716_CLK "SM16716 CLK" #define D_SENSOR_SM16716_DAT "SM16716 DAT" #define D_SENSOR_SM16716_POWER "SM16716 PWR" +#define D_SENSOR_P9813_CLK "P9813 Clk" +#define D_SENSOR_P9813_DAT "P9813 Dat" #define D_SENSOR_MY92X1_DI "MY92x1 DI" #define D_SENSOR_MY92X1_DCKI "MY92x1 DCKI" #define D_SENSOR_ARIRFRCV "ALux IrRcv" diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h index 6fd936ee7..1ec91f25b 100644 --- a/tasmota/language/hu_HU.h +++ b/tasmota/language/hu_HU.h @@ -646,6 +646,8 @@ #define D_SENSOR_SM16716_CLK "SM16716 CLK" #define D_SENSOR_SM16716_DAT "SM16716 DAT" #define D_SENSOR_SM16716_POWER "SM16716 PWR" +#define D_SENSOR_P9813_CLK "P9813 Clk" +#define D_SENSOR_P9813_DAT "P9813 Dat" #define D_SENSOR_MY92X1_DI "MY92x1 DI" #define D_SENSOR_MY92X1_DCKI "MY92x1 DCKI" #define D_SENSOR_ARIRFRCV "ALux IrRcv" diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index 74e5504d2..7b3f42e83 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -646,6 +646,8 @@ #define D_SENSOR_SM16716_CLK "SM16716 - CLK" #define D_SENSOR_SM16716_DAT "SM16716 - DAT" #define D_SENSOR_SM16716_POWER "SM16716 - PWR" +#define D_SENSOR_P9813_CLK "P9813 - CLK" +#define D_SENSOR_P9813_DAT "P9813 - DAT" #define D_SENSOR_MY92X1_DI "MY92x1 - DI" #define D_SENSOR_MY92X1_DCKI "MY92x1 - DCKI" #define D_SENSOR_ARIRFRCV "IR ALux - RCV" diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h index 47d1f16e3..db4d10ed0 100644 --- a/tasmota/language/ko_KO.h +++ b/tasmota/language/ko_KO.h @@ -646,6 +646,8 @@ #define D_SENSOR_SM16716_CLK "SM16716 CLK" #define D_SENSOR_SM16716_DAT "SM16716 DAT" #define D_SENSOR_SM16716_POWER "SM16716 PWR" +#define D_SENSOR_P9813_CLK "P9813 Clk" +#define D_SENSOR_P9813_DAT "P9813 Dat" #define D_SENSOR_MY92X1_DI "MY92x1 DI" #define D_SENSOR_MY92X1_DCKI "MY92x1 DCKI" #define D_SENSOR_ARIRFRCV "ALux IrRcv" diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h index 9e8ffc3da..8b5634e8a 100644 --- a/tasmota/language/nl_NL.h +++ b/tasmota/language/nl_NL.h @@ -646,6 +646,8 @@ #define D_SENSOR_SM16716_CLK "SM16716 CLK" #define D_SENSOR_SM16716_DAT "SM16716 DAT" #define D_SENSOR_SM16716_POWER "SM16716 PWR" +#define D_SENSOR_P9813_CLK "P9813 Clk" +#define D_SENSOR_P9813_DAT "P9813 Dat" #define D_SENSOR_MY92X1_DI "MY92x1 DI" #define D_SENSOR_MY92X1_DCKI "MY92x1 DCKI" #define D_SENSOR_ARIRFRCV "ALux IrRcv" diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h index 87a26ae5b..5c26e5ecb 100644 --- a/tasmota/language/pl_PL.h +++ b/tasmota/language/pl_PL.h @@ -646,6 +646,8 @@ #define D_SENSOR_SM16716_CLK "SM16716 CLK" #define D_SENSOR_SM16716_DAT "SM16716 DAT" #define D_SENSOR_SM16716_POWER "SM16716 PWR" +#define D_SENSOR_P9813_CLK "P9813 Clk" +#define D_SENSOR_P9813_DAT "P9813 Dat" #define D_SENSOR_MY92X1_DI "MY92x1 DI" #define D_SENSOR_MY92X1_DCKI "MY92x1 DCKI" #define D_SENSOR_ARIRFRCV "ALux IrRcv" diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h index 39124ede2..cd521e2e4 100644 --- a/tasmota/language/pt_BR.h +++ b/tasmota/language/pt_BR.h @@ -646,6 +646,8 @@ #define D_SENSOR_SM16716_CLK "SM16716 CLK" #define D_SENSOR_SM16716_DAT "SM16716 DAT" #define D_SENSOR_SM16716_POWER "SM16716 PWR" +#define D_SENSOR_P9813_CLK "P9813 Clk" +#define D_SENSOR_P9813_DAT "P9813 Dat" #define D_SENSOR_MY92X1_DI "MY92x1 DI" #define D_SENSOR_MY92X1_DCKI "MY92x1 DCKI" #define D_SENSOR_ARIRFRCV "ALux IrRcv" diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h index 8c2f36179..1f15bb866 100644 --- a/tasmota/language/pt_PT.h +++ b/tasmota/language/pt_PT.h @@ -646,6 +646,8 @@ #define D_SENSOR_SM16716_CLK "SM16716 CLK" #define D_SENSOR_SM16716_DAT "SM16716 DAT" #define D_SENSOR_SM16716_POWER "SM16716 PWR" +#define D_SENSOR_P9813_CLK "P9813 Clk" +#define D_SENSOR_P9813_DAT "P9813 Dat" #define D_SENSOR_MY92X1_DI "MY92x1 DI" #define D_SENSOR_MY92X1_DCKI "MY92x1 DCKI" #define D_SENSOR_ARIRFRCV "ALux IrRcv" diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h index b475e2923..12035b0ae 100644 --- a/tasmota/language/ro_RO.h +++ b/tasmota/language/ro_RO.h @@ -646,6 +646,8 @@ #define D_SENSOR_SM16716_CLK "SM16716 CLK" #define D_SENSOR_SM16716_DAT "SM16716 DAT" #define D_SENSOR_SM16716_POWER "SM16716 PWR" +#define D_SENSOR_P9813_CLK "P9813 Clk" +#define D_SENSOR_P9813_DAT "P9813 Dat" #define D_SENSOR_MY92X1_DI "MY92x1 DI" #define D_SENSOR_MY92X1_DCKI "MY92x1 DCKI" #define D_SENSOR_ARIRFRCV "ALux IrRcv" diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h index 0f3edca89..2581bf066 100644 --- a/tasmota/language/ru_RU.h +++ b/tasmota/language/ru_RU.h @@ -646,6 +646,8 @@ #define D_SENSOR_SM16716_CLK "SM16716 CLK" #define D_SENSOR_SM16716_DAT "SM16716 DAT" #define D_SENSOR_SM16716_POWER "SM16716 PWR" +#define D_SENSOR_P9813_CLK "P9813 Clk" +#define D_SENSOR_P9813_DAT "P9813 Dat" #define D_SENSOR_MY92X1_DI "MY92x1 DI" #define D_SENSOR_MY92X1_DCKI "MY92x1 DCKI" #define D_SENSOR_ARIRFRCV "ALux IrRcv" diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h index 64381a7ca..55793792c 100644 --- a/tasmota/language/sk_SK.h +++ b/tasmota/language/sk_SK.h @@ -646,6 +646,8 @@ #define D_SENSOR_SM16716_CLK "SM16716 CLK" #define D_SENSOR_SM16716_DAT "SM16716 DAT" #define D_SENSOR_SM16716_POWER "SM16716 PWR" +#define D_SENSOR_P9813_CLK "P9813 Clk" +#define D_SENSOR_P9813_DAT "P9813 Dat" #define D_SENSOR_MY92X1_DI "MY92x1 DI" #define D_SENSOR_MY92X1_DCKI "MY92x1 DCKI" #define D_SENSOR_ARIRFRCV "ALux IrRcv" diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h index 68ec5977f..74cb68450 100644 --- a/tasmota/language/sv_SE.h +++ b/tasmota/language/sv_SE.h @@ -646,6 +646,8 @@ #define D_SENSOR_SM16716_CLK "SM16716 CLK" #define D_SENSOR_SM16716_DAT "SM16716 DAT" #define D_SENSOR_SM16716_POWER "SM16716 PWR" +#define D_SENSOR_P9813_CLK "P9813 Clk" +#define D_SENSOR_P9813_DAT "P9813 Dat" #define D_SENSOR_MY92X1_DI "MY92x1 DI" #define D_SENSOR_MY92X1_DCKI "MY92x1 DCKI" #define D_SENSOR_ARIRFRCV "ALux IrRcv" diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h index 4e07c212e..37bfeffb4 100644 --- a/tasmota/language/tr_TR.h +++ b/tasmota/language/tr_TR.h @@ -646,6 +646,8 @@ #define D_SENSOR_SM16716_CLK "SM16716 CLK" #define D_SENSOR_SM16716_DAT "SM16716 DAT" #define D_SENSOR_SM16716_POWER "SM16716 PWR" +#define D_SENSOR_P9813_CLK "P9813 Clk" +#define D_SENSOR_P9813_DAT "P9813 Dat" #define D_SENSOR_MY92X1_DI "MY92x1 DI" #define D_SENSOR_MY92X1_DCKI "MY92x1 DCKI" #define D_SENSOR_ARIRFRCV "ALux IrRcv" diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h index 485e48901..29b563563 100644 --- a/tasmota/language/uk_UA.h +++ b/tasmota/language/uk_UA.h @@ -646,6 +646,8 @@ #define D_SENSOR_SM16716_CLK "SM16716 CLK" #define D_SENSOR_SM16716_DAT "SM16716 DAT" #define D_SENSOR_SM16716_POWER "SM16716 PWR" +#define D_SENSOR_P9813_CLK "P9813 Clk" +#define D_SENSOR_P9813_DAT "P9813 Dat" #define D_SENSOR_MY92X1_DI "MY92x1 DI" #define D_SENSOR_MY92X1_DCKI "MY92x1 DCKI" #define D_SENSOR_ARIRFRCV "ALux IrRcv" diff --git a/tasmota/language/vi_VN.h b/tasmota/language/vi_VN.h index 3b1cc4073..bccb901b3 100644 --- a/tasmota/language/vi_VN.h +++ b/tasmota/language/vi_VN.h @@ -646,6 +646,8 @@ #define D_SENSOR_SM16716_CLK "SM16716 CLK" #define D_SENSOR_SM16716_DAT "SM16716 DAT" #define D_SENSOR_SM16716_POWER "SM16716 PWR" +#define D_SENSOR_P9813_CLK "P9813 Clk" +#define D_SENSOR_P9813_DAT "P9813 Dat" #define D_SENSOR_MY92X1_DI "MY92x1 DI" #define D_SENSOR_MY92X1_DCKI "MY92x1 DCKI" #define D_SENSOR_ARIRFRCV "ALux IrRcv" diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h index 4d69cb97f..3f2143bb7 100644 --- a/tasmota/language/zh_CN.h +++ b/tasmota/language/zh_CN.h @@ -646,6 +646,8 @@ #define D_SENSOR_SM16716_CLK "SM16716 CLK" #define D_SENSOR_SM16716_DAT "SM16716 DAT" #define D_SENSOR_SM16716_POWER "SM16716 PWR" +#define D_SENSOR_P9813_CLK "P9813 Clk" +#define D_SENSOR_P9813_DAT "P9813 Dat" #define D_SENSOR_MY92X1_DI "MY92x1 DI" #define D_SENSOR_MY92X1_DCKI "MY92x1 DCKI" #define D_SENSOR_ARIRFRCV "ALux IrRcv" diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h index 474b354c3..9807689ac 100644 --- a/tasmota/language/zh_TW.h +++ b/tasmota/language/zh_TW.h @@ -646,6 +646,8 @@ #define D_SENSOR_SM16716_CLK "SM16716 CLK" #define D_SENSOR_SM16716_DAT "SM16716 DAT" #define D_SENSOR_SM16716_POWER "SM16716 PWR" +#define D_SENSOR_P9813_CLK "P9813 Clk" +#define D_SENSOR_P9813_DAT "P9813 Dat" #define D_SENSOR_MY92X1_DI "MY92x1 DI" #define D_SENSOR_MY92X1_DCKI "MY92x1 DCKI" #define D_SENSOR_ARIRFRCV "ALux IrRcv" diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index c698a114d..421210f2e 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -484,7 +484,7 @@ #define USE_WS2812 // WS2812 Led string using library NeoPixelBus (+5k code, +1k mem, 232 iram) - Disable by // // #define USE_WS2812_DMA // DMA supports only GPIO03 (= Serial RXD) (+1k mem). When USE_WS2812_DMA is enabled expect Exceptions on Pow // #define USE_WS2812_INVERTED // Use inverted data signal - #define USE_WS2812_HARDWARE NEO_HW_WS2812 // Hardware type (NEO_HW_WS2812, NEO_HW_WS2812X, NEO_HW_WS2813, NEO_HW_SK6812, NEO_HW_LC8812, NEO_HW_APA106) + #define USE_WS2812_HARDWARE NEO_HW_WS2812 // Hardware type (NEO_HW_WS2812, NEO_HW_WS2812X, NEO_HW_WS2813, NEO_HW_SK6812, NEO_HW_LC8812, NEO_HW_APA106, NEO_HW_P9813) #define USE_WS2812_CTYPE NEO_GRB // Color type (NEO_RGB, NEO_GRB, NEO_BRG, NEO_RBG, NEO_RGBW, NEO_GRBW) #define USE_MY92X1 // Add support for MY92X1 RGBCW led controller as used in Sonoff B1, Ailight and Lohas #define USE_SM16716 // Add support for SM16716 RGB LED controller (+0k7 code) diff --git a/tasmota/tasmota.h b/tasmota/tasmota.h index 5c377dcd5..759655956 100644 --- a/tasmota/tasmota.h +++ b/tasmota/tasmota.h @@ -183,6 +183,7 @@ const uint32_t LOOP_SLEEP_DELAY = 50; // Lowest number of milliseconds to #define NEO_HW_SK6812 2 // NeoPixelBus hardware SK6812 #define NEO_HW_LC8812 2 // NeoPixelBus hardware LC8812 #define NEO_HW_APA106 3 // NeoPixelBus hardware APA106 +#define NEO_HW_P9813 4 // NeoPixelBus hardware P9813 #define MQTT_PUBSUBCLIENT 1 // Mqtt PubSubClient library #define MQTT_TASMOTAMQTT 2 // Mqtt TasmotaMqtt library based on esp-mqtt-arduino - soon obsolete diff --git a/tasmota/tasmota_configurations.h b/tasmota/tasmota_configurations.h index 4d7b3cf79..7b5e63372 100644 --- a/tasmota/tasmota_configurations.h +++ b/tasmota/tasmota_configurations.h @@ -61,7 +61,7 @@ #define USE_WS2812 // WS2812 Led string using library NeoPixelBus (+5k code, +1k mem, 232 iram) - Disable by // // #define USE_WS2812_DMA // DMA supports only GPIO03 (= Serial RXD) (+1k mem). When USE_WS2812_DMA is enabled expect Exceptions on Pow #ifndef USE_WS2812_HARDWARE - #define USE_WS2812_HARDWARE NEO_HW_WS2812 // Hardware type (NEO_HW_WS2812, NEO_HW_WS2812X, NEO_HW_WS2813, NEO_HW_SK6812, NEO_HW_LC8812, NEO_HW_APA106) + #define USE_WS2812_HARDWARE NEO_HW_WS2812 // Hardware type (NEO_HW_WS2812, NEO_HW_WS2812X, NEO_HW_WS2813, NEO_HW_SK6812, NEO_HW_LC8812, NEO_HW_APA106, NEO_HW_P9813) #endif #ifndef USE_WS2812_CTYPE #define USE_WS2812_CTYPE NEO_GRB // Color type (NEO_RGB, NEO_GRB, NEO_BRG, NEO_RBG, NEO_RGBW, NEO_GRBW) diff --git a/tasmota/tasmota_template.h b/tasmota/tasmota_template.h index 51063fb28..3023fbf0c 100644 --- a/tasmota/tasmota_template.h +++ b/tasmota/tasmota_template.h @@ -129,6 +129,7 @@ enum UserSelectablePins { GPIO_AS608_TX, GPIO_AS608_RX, // Serial interface AS608 / R503 GPIO_SHELLY_DIMMER_BOOT0, GPIO_SHELLY_DIMMER_RST_INV, GPIO_RC522_RST, // RC522 reset + GPIO_P9813_CLK, GPIO_P9813_DAT, // P9813 Clock and Data GPIO_SENSOR_END }; enum ProgramSelectablePins { @@ -237,7 +238,8 @@ const char kSensorNames[] PROGMEM = D_SENSOR_WE517_TX "|" D_SENSOR_WE517_RX "|" D_SENSOR_AS608_TX "|" D_SENSOR_AS608_RX "|" D_SENSOR_SHELLY_DIMMER_BOOT0 "|" D_SENSOR_SHELLY_DIMMER_RST_INV "|" - D_SENSOR_RC522_RST + D_SENSOR_RC522_RST "|" + D_SENSOR_P9813_CLK "|" D_SENSOR_P9813_DAT ; const char kSensorNamesFixed[] PROGMEM = @@ -337,7 +339,12 @@ const uint16_t kGpioNiceList[] PROGMEM = { #ifdef USE_LIGHT #ifdef USE_WS2812 +#if (USE_WS2812_HARDWARE == NEO_HW_P9813) + AGPIO(GPIO_P9813_CLK), // P9813 CLOCK + AGPIO(GPIO_P9813_DAT), // P9813 DATA +#else AGPIO(GPIO_WS2812), // WS2812 Led string +#endif // NEO_HW_P9813 #endif #ifdef USE_ARILUX_RF AGPIO(GPIO_ARIRFRCV), // AriLux RF Receive input diff --git a/tasmota/xlgt_01_ws2812.ino b/tasmota/xlgt_01_ws2812.ino index 42340b5ad..f597348b4 100644 --- a/tasmota/xlgt_01_ws2812.ino +++ b/tasmota/xlgt_01_ws2812.ino @@ -47,7 +47,11 @@ void (* const Ws2812Command[])(void) PROGMEM = { #include -#if (USE_WS2812_CTYPE == NEO_GRB) +#if (USE_WS2812_HARDWARE == NEO_HW_P9813) + typedef P9813BgrFeature selectedNeoFeatureType; + #undef USE_WS2812_DMA + #undef USE_WS2812_INVERTED +#elif (USE_WS2812_CTYPE == NEO_GRB) typedef NeoGrbFeature selectedNeoFeatureType; #elif (USE_WS2812_CTYPE == NEO_BRG) typedef NeoBrgFeature selectedNeoFeatureType; @@ -105,7 +109,9 @@ void (* const Ws2812Command[])(void) PROGMEM = { #else // No USE_WS2812_INVERTED -#if (USE_WS2812_HARDWARE == NEO_HW_WS2812X) +#if (USE_WS2812_HARDWARE == NEO_HW_P9813) + typedef P9813Method selectedNeoSpeedType; +#elif (USE_WS2812_HARDWARE == NEO_HW_WS2812X) typedef NeoEsp8266BitBangWs2812xMethod selectedNeoSpeedType; #elif (USE_WS2812_HARDWARE == NEO_HW_SK6812) typedef NeoEsp8266BitBangSk6812Method selectedNeoSpeedType; @@ -472,10 +478,14 @@ void Ws2812ShowScheme(void) void Ws2812ModuleSelected(void) { +#if (USE_WS2812_HARDWARE == NEO_HW_P9813) + if (PinUsed(GPIO_P9813_CLK) && PinUsed(GPIO_P9813_DAT)) { // RGB led + strip = new NeoPixelBus(WS2812_MAX_LEDS, Pin(GPIO_P9813_CLK), Pin(GPIO_P9813_DAT)); +#else if (PinUsed(GPIO_WS2812)) { // RGB led - // For DMA, the Pin is ignored as it uses GPIO3 due to DMA hardware use. strip = new NeoPixelBus(WS2812_MAX_LEDS, Pin(GPIO_WS2812)); +#endif // NEO_HW_P9813 strip->Begin(); Ws2812Clear();