diff --git a/CHANGELOG.md b/CHANGELOG.md
index 534ec5657..686e3cc70 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,6 +14,7 @@ All notable changes to this project will be documented in this file.
- Support for Frequency monitoring and zero-cross detection on CSE7761 (Sonoff Dual R3)
- ESP32 support for internal Hall Effect sensor connected to both GPIO36 and GPIO39 only
- Support for multiple CCS811 sensors with baseline control (USE_CCS811_V2) by clanganke (#10858)
+- Berry add ``gpio`` module
### Changed
- PubSubClient library from EspEasy v2.7.12 to Tasmota v2.8.12
diff --git a/lib/libesp32/Berry-0.1.10/generate/be_const_strtab.h b/lib/libesp32/Berry-0.1.10/generate/be_const_strtab.h
index 2d1b7e9e0..fe6db3850 100644
--- a/lib/libesp32/Berry-0.1.10/generate/be_const_strtab.h
+++ b/lib/libesp32/Berry-0.1.10/generate/be_const_strtab.h
@@ -1,116 +1,373 @@
-extern const bcstring be_const_str_remove;
-extern const bcstring be_const_str_false;
-extern const bcstring be_const_str_raise;
-extern const bcstring be_const_str_opt_connect;
-extern const bcstring be_const_str_dot_p;
-extern const bcstring be_const_str_calldepth;
-extern const bcstring be_const_str_toupper;
-extern const bcstring be_const_str_break;
-extern const bcstring be_const_str_map;
-extern const bcstring be_const_str_bytes;
-extern const bcstring be_const_str_tanh;
-extern const bcstring be_const_str_real;
-extern const bcstring be_const_str_count;
-extern const bcstring be_const_str_setitem;
-extern const bcstring be_const_str_split;
-extern const bcstring be_const_str_if;
-extern const bcstring be_const_str_format;
-extern const bcstring be_const_str_pow;
-extern const bcstring be_const_str_tostring;
-extern const bcstring be_const_str_load;
-extern const bcstring be_const_str_setrange;
-extern const bcstring be_const_str_char;
-extern const bcstring be_const_str_acos;
-extern const bcstring be_const_str_deinit;
-extern const bcstring be_const_str_dump;
-extern const bcstring be_const_str_sqrt;
-extern const bcstring be_const_str_fromstring;
-extern const bcstring be_const_str_opt_eq;
-extern const bcstring be_const_str_asin;
-extern const bcstring be_const_str_byte;
-extern const bcstring be_const_str_copy;
-extern const bcstring be_const_str_floor;
-extern const bcstring be_const_str_find;
-extern const bcstring be_const_str_var;
-extern const bcstring be_const_str_opt_add;
-extern const bcstring be_const_str___lower__;
-extern const bcstring be_const_str_rand;
-extern const bcstring be_const_str_sin;
-extern const bcstring be_const_str_deg;
-extern const bcstring be_const_str_imin;
-extern const bcstring be_const_str_class;
-extern const bcstring be_const_str_try;
-extern const bcstring be_const_str_allocated;
-extern const bcstring be_const_str_asstring;
-extern const bcstring be_const_str_classname;
-extern const bcstring be_const_str_reverse;
-extern const bcstring be_const_str_assert;
-extern const bcstring be_const_str_str;
-extern const bcstring be_const_str_imax;
-extern const bcstring be_const_str_init;
-extern const bcstring be_const_str_except;
-extern const bcstring be_const_str_return;
-extern const bcstring be_const_str_opt_neq;
-extern const bcstring be_const_str_hex;
-extern const bcstring be_const_str_resize;
-extern const bcstring be_const_str_as;
+extern const bcstring be_const_str_ADC_TEMP;
+extern const bcstring be_const_str_CSE7761_RX;
+extern const bcstring be_const_str_HPMA_TX;
+extern const bcstring be_const_str_SWT1;
+extern const bcstring be_const_str_AS3935;
+extern const bcstring be_const_str_PMS5003_RX;
+extern const bcstring be_const_str_WS2812;
+extern const bcstring be_const_str_RC522_RST;
extern const bcstring be_const_str___upper__;
-extern const bcstring be_const_str_codedump;
-extern const bcstring be_const_str_cosh;
-extern const bcstring be_const_str_abs;
-extern const bcstring be_const_str_collect;
-extern const bcstring be_const_str_atan;
-extern const bcstring be_const_str_attrdump;
-extern const bcstring be_const_str_input;
-extern const bcstring be_const_str_;
-extern const bcstring be_const_str_compile;
-extern const bcstring be_const_str_iter;
-extern const bcstring be_const_str_lower;
-extern const bcstring be_const_str_number;
-extern const bcstring be_const_str_print;
-extern const bcstring be_const_str_exp;
-extern const bcstring be_const_str_pi;
-extern const bcstring be_const_str___iterator__;
-extern const bcstring be_const_str_log;
-extern const bcstring be_const_str_log10;
-extern const bcstring be_const_str_ceil;
-extern const bcstring be_const_str_get;
-extern const bcstring be_const_str_tolower;
-extern const bcstring be_const_str_while;
-extern const bcstring be_const_str_import;
-extern const bcstring be_const_str_size;
-extern const bcstring be_const_str_list;
-extern const bcstring be_const_str_rad;
-extern const bcstring be_const_str_tan;
-extern const bcstring be_const_str_type;
-extern const bcstring be_const_str_insert;
-extern const bcstring be_const_str_module;
-extern const bcstring be_const_str_range;
-extern const bcstring be_const_str_super;
-extern const bcstring be_const_str_issubclass;
-extern const bcstring be_const_str_def;
-extern const bcstring be_const_str_classof;
-extern const bcstring be_const_str_sinh;
-extern const bcstring be_const_str_srand;
-extern const bcstring be_const_str_end;
-extern const bcstring be_const_str_clear;
-extern const bcstring be_const_str_top;
-extern const bcstring be_const_str_nil;
-extern const bcstring be_const_str_open;
-extern const bcstring be_const_str_do;
-extern const bcstring be_const_str_add;
-extern const bcstring be_const_str_isinstance;
-extern const bcstring be_const_str_pop;
+extern const bcstring be_const_str_raise;
+extern const bcstring be_const_str_MCP39F5_RST;
+extern const bcstring be_const_str_PMS5003_TX;
+extern const bcstring be_const_str_TELEINFO_ENABLE;
+extern const bcstring be_const_str_INPUT_PULLUP;
+extern const bcstring be_const_str_PULLDOWN;
+extern const bcstring be_const_str_ADC_RANGE;
+extern const bcstring be_const_str_ZIGBEE_TX;
+extern const bcstring be_const_str_imin;
+extern const bcstring be_const_str_SDM120_RX;
+extern const bcstring be_const_str_TFMINIPLUS_TX;
+extern const bcstring be_const_str_ARIRFSEL;
+extern const bcstring be_const_str_REL1_INV;
+extern const bcstring be_const_str_SSD1331_DC;
+extern const bcstring be_const_str_RDM6300_RX;
+extern const bcstring be_const_str_real;
extern const bcstring be_const_str_int;
-extern const bcstring be_const_str_keys;
-extern const bcstring be_const_str_elif;
-extern const bcstring be_const_str_item;
-extern const bcstring be_const_str_push;
-extern const bcstring be_const_str_concat;
-extern const bcstring be_const_str_traceback;
-extern const bcstring be_const_str_upper;
-extern const bcstring be_const_str_true;
+extern const bcstring be_const_str_var;
+extern const bcstring be_const_str_HALLEFFECT;
+extern const bcstring be_const_str_atan;
+extern const bcstring be_const_str_AS608_RX;
+extern const bcstring be_const_str_number;
+extern const bcstring be_const_str_DHT11;
+extern const bcstring be_const_str_RFRECV;
+extern const bcstring be_const_str_WEBCAM_XCLK;
+extern const bcstring be_const_str_list;
+extern const bcstring be_const_str_resize;
+extern const bcstring be_const_str_isinstance;
+extern const bcstring be_const_str_opt_neq;
+extern const bcstring be_const_str_dot_p;
+extern const bcstring be_const_str_SDM630_TX;
+extern const bcstring be_const_str_bytes;
+extern const bcstring be_const_str_CNTR1;
+extern const bcstring be_const_str_KEY1_TC;
+extern const bcstring be_const_str_TASMOTACLIENT_RST;
+extern const bcstring be_const_str_AS608_TX;
+extern const bcstring be_const_str_KEY1_NP;
+extern const bcstring be_const_str_ADC_CT_POWER;
+extern const bcstring be_const_str_BOILER_OT_TX;
+extern const bcstring be_const_str_SI7021;
+extern const bcstring be_const_str_deinit;
+extern const bcstring be_const_str_ILI9488_CS;
+extern const bcstring be_const_str_SSPI_MOSI;
+extern const bcstring be_const_str_NRF24_CS;
+extern const bcstring be_const_str_SSD1351_CS;
+extern const bcstring be_const_str_EPAPER42_CS;
+extern const bcstring be_const_str_RFSEND;
+extern const bcstring be_const_str_RISING;
+extern const bcstring be_const_str_WIEGAND_D1;
+extern const bcstring be_const_str_DYP_RX;
+extern const bcstring be_const_str_ADC_LIGHT;
+extern const bcstring be_const_str_DDS2382_RX;
+extern const bcstring be_const_str_DI;
+extern const bcstring be_const_str_WEBCAM_PWDN;
+extern const bcstring be_const_str_BUZZER_INV;
+extern const bcstring be_const_str_sinh;
+extern const bcstring be_const_str_ETH_PHY_MDIO;
+extern const bcstring be_const_str_tanh;
+extern const bcstring be_const_str_WE517_TX;
+extern const bcstring be_const_str_ZEROCROSS;
+extern const bcstring be_const_str_classof;
+extern const bcstring be_const_str_codedump;
+extern const bcstring be_const_str_AZ_RXD;
+extern const bcstring be_const_str_copy;
extern const bcstring be_const_str_continue;
+extern const bcstring be_const_str_AZ_TXD;
+extern const bcstring be_const_str_reverse;
+extern const bcstring be_const_str_CSE7761_TX;
+extern const bcstring be_const_str_HPMA_RX;
+extern const bcstring be_const_str_WEBCAM_VSYNC;
+extern const bcstring be_const_str_BS814_CLK;
+extern const bcstring be_const_str_DDS2382_TX;
+extern const bcstring be_const_str_WEBCAM_HREF;
+extern const bcstring be_const_str_false;
+extern const bcstring be_const_str_EXS_ENABLE;
+extern const bcstring be_const_str_LED1_INV;
+extern const bcstring be_const_str_MHZ_TXD;
+extern const bcstring be_const_str_P9813_CLK;
+extern const bcstring be_const_str_load;
+extern const bcstring be_const_str_srand;
+extern const bcstring be_const_str_HX711_DAT;
+extern const bcstring be_const_str_KEY1_INV_NP;
+extern const bcstring be_const_str_NEOPOOL_RX;
+extern const bcstring be_const_str_PZEM004_RX;
+extern const bcstring be_const_str_BUZZER;
+extern const bcstring be_const_str_SWT1_NP;
+extern const bcstring be_const_str_abs;
+extern const bcstring be_const_str_assert;
+extern const bcstring be_const_str_ARIRFRCV;
+extern const bcstring be_const_str_P9813_DAT;
+extern const bcstring be_const_str_calldepth;
+extern const bcstring be_const_str_try;
+extern const bcstring be_const_str_MAX31855CLK;
+extern const bcstring be_const_str_SDS0X1_TX;
+extern const bcstring be_const_str_log10;
+extern const bcstring be_const_str_pop;
+extern const bcstring be_const_str_LED1;
+extern const bcstring be_const_str_TM1638STB;
+extern const bcstring be_const_str_A4988_DIR;
+extern const bcstring be_const_str_SDM72_RX;
+extern const bcstring be_const_str_PN532_TXD;
+extern const bcstring be_const_str_pin;
+extern const bcstring be_const_str_TM1637DIO;
+extern const bcstring be_const_str_PWM1_INV;
+extern const bcstring be_const_str_item;
+extern const bcstring be_const_str_ROT1A_NP;
+extern const bcstring be_const_str_SSD1331_CS;
+extern const bcstring be_const_str_exp;
+extern const bcstring be_const_str_rad;
+extern const bcstring be_const_str_setrange;
+extern const bcstring be_const_str_LE01MR_RX;
+extern const bcstring be_const_str_SDS0X1_RX;
+extern const bcstring be_const_str_TCP_TX;
+extern const bcstring be_const_str_A4988_ENA;
+extern const bcstring be_const_str_hex;
+extern const bcstring be_const_str_BL0940_RX;
+extern const bcstring be_const_str_SM2135_CLK;
+extern const bcstring be_const_str_input;
+extern const bcstring be_const_str_top;
+extern const bcstring be_const_str_def;
+extern const bcstring be_const_str_BS814_DAT;
+extern const bcstring be_const_str_CHANGE;
+extern const bcstring be_const_str_floor;
+extern const bcstring be_const_str_keys;
+extern const bcstring be_const_str_sin;
+extern const bcstring be_const_str_traceback;
+extern const bcstring be_const_str_as;
+extern const bcstring be_const_str_SM2135_DAT;
+extern const bcstring be_const_str_ZIGBEE_RX;
+extern const bcstring be_const_str_acos;
+extern const bcstring be_const_str_OPTION_A;
extern const bcstring be_const_str_else;
-extern const bcstring be_const_str_cos;
extern const bcstring be_const_str_for;
+extern const bcstring be_const_str_tolower;
+extern const bcstring be_const_str_pi;
+extern const bcstring be_const_str_range;
+extern const bcstring be_const_str_SDCARD_CS;
+extern const bcstring be_const_str_SM16716_SEL;
+extern const bcstring be_const_str_count;
+extern const bcstring be_const_str_do;
+extern const bcstring be_const_str_;
+extern const bcstring be_const_str_TASMOTACLIENT_RST_INV;
+extern const bcstring be_const_str_tostring;
+extern const bcstring be_const_str_DSB;
+extern const bcstring be_const_str___iterator__;
+extern const bcstring be_const_str_get;
+extern const bcstring be_const_str_upper;
+extern const bcstring be_const_str_GPS_TX;
+extern const bcstring be_const_str_IEM3000_RX;
+extern const bcstring be_const_str_toupper;
+extern const bcstring be_const_str_WEBCAM_PCLK;
+extern const bcstring be_const_str_PROJECTOR_CTRL_TX;
+extern const bcstring be_const_str_PWM1;
+extern const bcstring be_const_str_ST7789_CS;
+extern const bcstring be_const_str_find;
+extern const bcstring be_const_str_end;
+extern const bcstring be_const_str_MGC3130_XFER;
+extern const bcstring be_const_str_SSPI_CS;
+extern const bcstring be_const_str_RA8876_CS;
+extern const bcstring be_const_str_char;
+extern const bcstring be_const_str_ADC_BUTTON_INV;
+extern const bcstring be_const_str_INPUT_PULLDOWN;
+extern const bcstring be_const_str_REL1;
+extern const bcstring be_const_str_SPI_DC;
+extern const bcstring be_const_str_MAX31855DO;
+extern const bcstring be_const_str_SSD1351_DC;
+extern const bcstring be_const_str_log;
+extern const bcstring be_const_str_elif;
+extern const bcstring be_const_str_ROT1A;
+extern const bcstring be_const_str_pin_used;
+extern const bcstring be_const_str_setitem;
+extern const bcstring be_const_str_import;
+extern const bcstring be_const_str_WEBCAM_DATA;
+extern const bcstring be_const_str_IRRECV;
+extern const bcstring be_const_str_OUTPUT_HI;
+extern const bcstring be_const_str_OUTPUT_LO;
+extern const bcstring be_const_str_ROT1B_NP;
+extern const bcstring be_const_str_attrdump;
+extern const bcstring be_const_str_print;
+extern const bcstring be_const_str_tan;
+extern const bcstring be_const_str_SPI_MISO;
+extern const bcstring be_const_str_ADC_JOY;
+extern const bcstring be_const_str_size;
+extern const bcstring be_const_str_nil;
+extern const bcstring be_const_str_ETH_PHY_MDC;
+extern const bcstring be_const_str_type;
+extern const bcstring be_const_str_TASMOTACLIENT_RXD;
+extern const bcstring be_const_str_compile;
+extern const bcstring be_const_str_while;
+extern const bcstring be_const_str_MHZ_RXD;
+extern const bcstring be_const_str_SDM120_TX;
+extern const bcstring be_const_str_TXD;
+extern const bcstring be_const_str_WIEGAND_D0;
+extern const bcstring be_const_str_class;
+extern const bcstring be_const_str_DDSU666_RX;
+extern const bcstring be_const_str_MIEL_HVAC_RX;
+extern const bcstring be_const_str_collect;
+extern const bcstring be_const_str_ADC_BUTTON;
+extern const bcstring be_const_str_ADC_PH;
+extern const bcstring be_const_str_DEEPSLEEP;
+extern const bcstring be_const_str_HM10_RX;
+extern const bcstring be_const_str_XPT2046_CS;
+extern const bcstring be_const_str_A4988_MS1;
+extern const bcstring be_const_str_RF_SENSOR;
+extern const bcstring be_const_str_CSE7766_TX;
+extern const bcstring be_const_str_LMT01;
+extern const bcstring be_const_str_SDM630_RX;
+extern const bcstring be_const_str_ZIGBEE_RST;
+extern const bcstring be_const_str_SPI_CLK;
+extern const bcstring be_const_str_asin;
+extern const bcstring be_const_str_if;
+extern const bcstring be_const_str_HJL_CF;
+extern const bcstring be_const_str_IBEACON_RX;
+extern const bcstring be_const_str_iter;
+extern const bcstring be_const_str_SOLAXX1_TX;
+extern const bcstring be_const_str_SR04_ECHO;
+extern const bcstring be_const_str_ceil;
+extern const bcstring be_const_str_CC1101_GDO2;
+extern const bcstring be_const_str_MAX7219DIN;
+extern const bcstring be_const_str_SBR_RX;
+extern const bcstring be_const_str_open;
+extern const bcstring be_const_str_SM16716_CLK;
+extern const bcstring be_const_str_HX711_SCK;
+extern const bcstring be_const_str_NEOPOOL_TX;
+extern const bcstring be_const_str_TELEINFO_RX;
+extern const bcstring be_const_str_WINDMETER_SPEED;
+extern const bcstring be_const_str_cosh;
+extern const bcstring be_const_str_ROT1B;
+extern const bcstring be_const_str_DHT11_OUT;
+extern const bcstring be_const_str_SM16716_DAT;
+extern const bcstring be_const_str_LE01MR_TX;
+extern const bcstring be_const_str_MCP39F5_TX;
+extern const bcstring be_const_str_SAIR_TX;
+extern const bcstring be_const_str_SR04_TRIG;
+extern const bcstring be_const_str_IRSEND;
+extern const bcstring be_const_str_WEBCAM_PSCLK;
+extern const bcstring be_const_str_digital_read;
+extern const bcstring be_const_str_except;
+extern const bcstring be_const_str_A4988_STP;
+extern const bcstring be_const_str_IBEACON_TX;
+extern const bcstring be_const_str_NRF24_DC;
+extern const bcstring be_const_str_SPI_MOSI;
+extern const bcstring be_const_str_OLED_RESET;
+extern const bcstring be_const_str_WE517_RX;
+extern const bcstring be_const_str_SSPI_DC;
+extern const bcstring be_const_str_WEBCAM_HSD;
+extern const bcstring be_const_str_insert;
+extern const bcstring be_const_str_SAIR_RX;
+extern const bcstring be_const_str_TUYA_TX;
+extern const bcstring be_const_str_EPAPER29_CS;
+extern const bcstring be_const_str_I2C_SCL;
+extern const bcstring be_const_str_NONE;
+extern const bcstring be_const_str_classname;
+extern const bcstring be_const_str_cos;
+extern const bcstring be_const_str_LEDLNK_INV;
+extern const bcstring be_const_str_NRG_SEL_INV;
+extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV;
+extern const bcstring be_const_str_module;
+extern const bcstring be_const_str_ETH_PHY_POWER;
+extern const bcstring be_const_str_IEM3000_TX;
+extern const bcstring be_const_str_MAX31855CS;
+extern const bcstring be_const_str_deg;
+extern const bcstring be_const_str_return;
+extern const bcstring be_const_str_str;
+extern const bcstring be_const_str_SENSOR_END;
+extern const bcstring be_const_str_ST7789_DC;
+extern const bcstring be_const_str_clear;
+extern const bcstring be_const_str_imax;
+extern const bcstring be_const_str_OUTPUT;
+extern const bcstring be_const_str_SPI_CS;
+extern const bcstring be_const_str_SDM72_TX;
+extern const bcstring be_const_str_SSPI_MISO;
+extern const bcstring be_const_str_true;
+extern const bcstring be_const_str_MIEL_HVAC_TX;
+extern const bcstring be_const_str_VL53L0X_XSHUT1;
+extern const bcstring be_const_str_PZEM0XX_TX;
+extern const bcstring be_const_str_SSPI_SCLK;
+extern const bcstring be_const_str_WEBCAM_SIOD;
+extern const bcstring be_const_str_HRE_DATA;
+extern const bcstring be_const_str_PROJECTOR_CTRL_RX;
+extern const bcstring be_const_str_DSB_OUT;
+extern const bcstring be_const_str_NRG_SEL;
+extern const bcstring be_const_str_push;
+extern const bcstring be_const_str_ADC_INPUT;
+extern const bcstring be_const_str_FTC532;
+extern const bcstring be_const_str_GPS_RX;
+extern const bcstring be_const_str_HLW_CF;
+extern const bcstring be_const_str_TCP_RX;
+extern const bcstring be_const_str_issubclass;
+extern const bcstring be_const_str_CNTR1_NP;
+extern const bcstring be_const_str_ILI9341_DC;
+extern const bcstring be_const_str_TX2X_TXD_BLACK;
+extern const bcstring be_const_str_WEBCAM_PSRCS;
+extern const bcstring be_const_str_BOILER_OT_RX;
+extern const bcstring be_const_str_LOW;
+extern const bcstring be_const_str_MP3_DFR562;
+extern const bcstring be_const_str_map;
+extern const bcstring be_const_str_allocated;
+extern const bcstring be_const_str_format;
+extern const bcstring be_const_str_CC1101_GDO0;
+extern const bcstring be_const_str_CSE7766_RX;
+extern const bcstring be_const_str_ILI9341_CS;
+extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0;
+extern const bcstring be_const_str_SSPI_MAX31865_CS1;
+extern const bcstring be_const_str_NRG_CF1;
+extern const bcstring be_const_str_DDSU666_TX;
+extern const bcstring be_const_str_I2C_SDA;
+extern const bcstring be_const_str_PZEM017_RX;
+extern const bcstring be_const_str_rand;
+extern const bcstring be_const_str_RXD;
+extern const bcstring be_const_str_TM1637CLK;
+extern const bcstring be_const_str_opt_add;
+extern const bcstring be_const_str_lower;
+extern const bcstring be_const_str_WEBCAM_SIOC;
+extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN;
+extern const bcstring be_const_str_RC522_CS;
+extern const bcstring be_const_str_opt_connect;
+extern const bcstring be_const_str_HIGH;
+extern const bcstring be_const_str_LEDLNK;
+extern const bcstring be_const_str_concat;
+extern const bcstring be_const_str_PN532_RXD;
+extern const bcstring be_const_str_SOLAXX1_RX;
+extern const bcstring be_const_str_TM1638DIO;
+extern const bcstring be_const_str_pin_mode;
+extern const bcstring be_const_str_DHT22;
+extern const bcstring be_const_str_ELECTRIQ_MOODL_TX;
+extern const bcstring be_const_str_SBR_TX;
+extern const bcstring be_const_str_byte;
+extern const bcstring be_const_str_sqrt;
+extern const bcstring be_const_str_OPEN_DRAIN;
+extern const bcstring be_const_str_WEBCAM_RESET;
+extern const bcstring be_const_str_asstring;
+extern const bcstring be_const_str_MGC3130_RESET;
+extern const bcstring be_const_str_ADE7953_IRQ;
+extern const bcstring be_const_str_KEY1_INV;
+extern const bcstring be_const_str_PULLUP;
+extern const bcstring be_const_str_init;
+extern const bcstring be_const_str_split;
+extern const bcstring be_const_str_HM10_TX;
+extern const bcstring be_const_str_MAX7219CS;
+extern const bcstring be_const_str_TASMOTACLIENT_TXD;
+extern const bcstring be_const_str_add;
+extern const bcstring be_const_str_super;
+extern const bcstring be_const_str_pow;
+extern const bcstring be_const_str_BACKLIGHT;
+extern const bcstring be_const_str_HRXL_RX;
+extern const bcstring be_const_str_MAX7219CLK;
+extern const bcstring be_const_str___lower__;
+extern const bcstring be_const_str_HRE_CLOCK;
+extern const bcstring be_const_str_KEY1;
+extern const bcstring be_const_str_PZEM016_RX;
+extern const bcstring be_const_str_dump;
+extern const bcstring be_const_str_DCKI;
+extern const bcstring be_const_str_FALLING;
+extern const bcstring be_const_str_fromstring;
+extern const bcstring be_const_str_break;
+extern const bcstring be_const_str_MCP39F5_RX;
+extern const bcstring be_const_str_INPUT;
+extern const bcstring be_const_str_digital_write;
+extern const bcstring be_const_str_remove;
+extern const bcstring be_const_str_TM1638CLK;
+extern const bcstring be_const_str_opt_eq;
+extern const bcstring be_const_str_TFMINIPLUS_RX;
+extern const bcstring be_const_str_TUYA_RX;
diff --git a/lib/libesp32/Berry-0.1.10/generate/be_const_strtab_def.h b/lib/libesp32/Berry-0.1.10/generate/be_const_strtab_def.h
index bce08392c..8ba10259d 100644
--- a/lib/libesp32/Berry-0.1.10/generate/be_const_strtab_def.h
+++ b/lib/libesp32/Berry-0.1.10/generate/be_const_strtab_def.h
@@ -1,172 +1,558 @@
-be_define_const_str(remove, "remove", 3683784189u, 0, 6, &be_const_str_false);
-be_define_const_str(false, "false", 184981848u, 62, 5, &be_const_str_raise);
+be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, &be_const_str_CSE7761_RX);
+be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_HPMA_TX);
+be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_SWT1);
+be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, NULL);
+be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, NULL);
+be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_WS2812);
+be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, NULL);
+be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str___upper__);
+be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, &be_const_str_raise);
be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL);
-be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_dot_p);
-be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_calldepth);
-be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, NULL);
-be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, &be_const_str_break);
-be_define_const_str(break, "break", 3378807160u, 58, 5, NULL);
-be_define_const_str(map, "map", 3751997361u, 0, 3, NULL);
-be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, &be_const_str_tanh);
-be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL);
+be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, &be_const_str_PMS5003_TX);
+be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, NULL);
+be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, NULL);
+be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_PULLDOWN);
+be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, NULL);
+be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, NULL);
+be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_imin);
+be_define_const_str(imin, "imin", 2714127864u, 0, 4, NULL);
+be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, &be_const_str_TFMINIPLUS_TX);
+be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, NULL);
+be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, &be_const_str_REL1_INV);
+be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, &be_const_str_SSD1331_DC);
+be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, NULL);
+be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, NULL);
be_define_const_str(real, "real", 3604983901u, 0, 4, NULL);
-be_define_const_str(count, "count", 967958004u, 0, 5, &be_const_str_setitem);
-be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, &be_const_str_split);
-be_define_const_str(split, "split", 2276994531u, 0, 5, &be_const_str_if);
-be_define_const_str(if, "if", 959999494u, 50, 2, NULL);
-be_define_const_str(format, "format", 3114108242u, 0, 6, &be_const_str_pow);
-be_define_const_str(pow, "pow", 1479764693u, 0, 3, &be_const_str_tostring);
-be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL);
-be_define_const_str(load, "load", 3859241449u, 0, 4, &be_const_str_setrange);
-be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL);
-be_define_const_str(char, "char", 2823553821u, 0, 4, NULL);
-be_define_const_str(acos, "acos", 1006755615u, 0, 4, &be_const_str_deinit);
-be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, &be_const_str_dump);
-be_define_const_str(dump, "dump", 3663001223u, 0, 4, &be_const_str_sqrt);
-be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL);
-be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, NULL);
-be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_asin);
-be_define_const_str(asin, "asin", 4272848550u, 0, 4, &be_const_str_byte);
-be_define_const_str(byte, "byte", 1683620383u, 0, 4, &be_const_str_copy);
-be_define_const_str(copy, "copy", 3848464964u, 0, 4, &be_const_str_floor);
-be_define_const_str(floor, "floor", 3102149661u, 0, 5, NULL);
-be_define_const_str(find, "find", 3186656602u, 0, 4, &be_const_str_var);
+be_define_const_str(int, "int", 2515107422u, 0, 3, &be_const_str_var);
be_define_const_str(var, "var", 2317739966u, 64, 3, NULL);
-be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str___lower__);
-be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str_rand);
-be_define_const_str(rand, "rand", 2711325910u, 0, 4, &be_const_str_sin);
-be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL);
-be_define_const_str(deg, "deg", 3327754271u, 0, 3, &be_const_str_imin);
-be_define_const_str(imin, "imin", 2714127864u, 0, 4, &be_const_str_class);
-be_define_const_str(class, "class", 2872970239u, 57, 5, &be_const_str_try);
-be_define_const_str(try, "try", 2887626766u, 68, 3, NULL);
-be_define_const_str(allocated, "allocated", 429986098u, 0, 9, &be_const_str_asstring);
-be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_classname);
-be_define_const_str(classname, "classname", 1998589948u, 0, 9, NULL);
-be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL);
-be_define_const_str(assert, "assert", 2774883451u, 0, 6, &be_const_str_str);
-be_define_const_str(str, "str", 3259748752u, 0, 3, NULL);
-be_define_const_str(imax, "imax", 3084515410u, 0, 4, &be_const_str_init);
-be_define_const_str(init, "init", 380752755u, 0, 4, &be_const_str_except);
-be_define_const_str(except, "except", 950914032u, 69, 6, &be_const_str_return);
-be_define_const_str(return, "return", 2246981567u, 60, 6, NULL);
-be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_hex);
-be_define_const_str(hex, "hex", 4273249610u, 0, 3, &be_const_str_resize);
-be_define_const_str(resize, "resize", 3514612129u, 0, 6, &be_const_str_as);
-be_define_const_str(as, "as", 1579491469u, 67, 2, NULL);
-be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, &be_const_str_codedump);
-be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, &be_const_str_cosh);
-be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, NULL);
-be_define_const_str(abs, "abs", 709362235u, 0, 3, &be_const_str_collect);
-be_define_const_str(collect, "collect", 2399039025u, 0, 7, NULL);
-be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_attrdump);
-be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_input);
-be_define_const_str(input, "input", 4191711099u, 0, 5, NULL);
-be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_compile);
-be_define_const_str(compile, "compile", 1000265118u, 0, 7, &be_const_str_iter);
-be_define_const_str(iter, "iter", 3124256359u, 0, 4, &be_const_str_lower);
-be_define_const_str(lower, "lower", 3038577850u, 0, 5, &be_const_str_number);
-be_define_const_str(number, "number", 467038368u, 0, 6, &be_const_str_print);
-be_define_const_str(print, "print", 372738696u, 0, 5, NULL);
-be_define_const_str(exp, "exp", 1923516200u, 0, 3, &be_const_str_pi);
-be_define_const_str(pi, "pi", 1213090802u, 0, 2, NULL);
-be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, &be_const_str_log);
-be_define_const_str(log, "log", 1062293841u, 0, 3, &be_const_str_log10);
-be_define_const_str(log10, "log10", 2346846000u, 0, 5, NULL);
-be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, &be_const_str_get);
-be_define_const_str(get, "get", 1410115415u, 0, 3, &be_const_str_tolower);
-be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, &be_const_str_while);
-be_define_const_str(while, "while", 231090382u, 53, 5, NULL);
-be_define_const_str(import, "import", 288002260u, 66, 6, NULL);
-be_define_const_str(size, "size", 597743964u, 0, 4, NULL);
-be_define_const_str(list, "list", 217798785u, 0, 4, &be_const_str_rad);
-be_define_const_str(rad, "rad", 1358899048u, 0, 3, &be_const_str_tan);
-be_define_const_str(tan, "tan", 2633446552u, 0, 3, &be_const_str_type);
-be_define_const_str(type, "type", 1361572173u, 0, 4, NULL);
-be_define_const_str(insert, "insert", 3332609576u, 0, 6, &be_const_str_module);
-be_define_const_str(module, "module", 3617558685u, 0, 6, &be_const_str_range);
-be_define_const_str(range, "range", 4208725202u, 0, 5, &be_const_str_super);
-be_define_const_str(super, "super", 4152230356u, 0, 5, NULL);
-be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, &be_const_str_def);
-be_define_const_str(def, "def", 3310976652u, 55, 3, NULL);
-be_define_const_str(classof, "classof", 1796577762u, 0, 7, &be_const_str_sinh);
-be_define_const_str(sinh, "sinh", 282220607u, 0, 4, &be_const_str_srand);
-be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL);
-be_define_const_str(end, "end", 1787721130u, 56, 3, NULL);
-be_define_const_str(clear, "clear", 1550717474u, 0, 5, &be_const_str_top);
-be_define_const_str(top, "top", 2802900028u, 0, 3, &be_const_str_nil);
-be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL);
-be_define_const_str(open, "open", 3546203337u, 0, 4, &be_const_str_do);
-be_define_const_str(do, "do", 1646057492u, 65, 2, NULL);
-be_define_const_str(add, "add", 993596020u, 0, 3, &be_const_str_isinstance);
-be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, &be_const_str_pop);
-be_define_const_str(pop, "pop", 1362321360u, 0, 3, NULL);
-be_define_const_str(int, "int", 2515107422u, 0, 3, &be_const_str_keys);
-be_define_const_str(keys, "keys", 4182378701u, 0, 4, &be_const_str_elif);
-be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL);
-be_define_const_str(item, "item", 2671260646u, 0, 4, &be_const_str_push);
-be_define_const_str(push, "push", 2272264157u, 0, 4, NULL);
-be_define_const_str(concat, "concat", 4124019837u, 0, 6, &be_const_str_traceback);
-be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, &be_const_str_upper);
-be_define_const_str(upper, "upper", 176974407u, 0, 5, &be_const_str_true);
-be_define_const_str(true, "true", 1303515621u, 61, 4, NULL);
+be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_atan);
+be_define_const_str(atan, "atan", 108579519u, 0, 4, NULL);
+be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_number);
+be_define_const_str(number, "number", 467038368u, 0, 6, NULL);
+be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_RFRECV);
+be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_WEBCAM_XCLK);
+be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str_list);
+be_define_const_str(list, "list", 217798785u, 0, 4, &be_const_str_resize);
+be_define_const_str(resize, "resize", 3514612129u, 0, 6, NULL);
+be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, NULL);
+be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_dot_p);
+be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_SDM630_TX);
+be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, NULL);
+be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, NULL);
+be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, &be_const_str_KEY1_TC);
+be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_TASMOTACLIENT_RST);
+be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, NULL);
+be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, &be_const_str_KEY1_NP);
+be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, NULL);
+be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_BOILER_OT_TX);
+be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_SI7021);
+be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, NULL);
+be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, NULL);
+be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_SSPI_MOSI);
+be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, NULL);
+be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_SSD1351_CS);
+be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, NULL);
+be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_RFSEND);
+be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, &be_const_str_RISING);
+be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, NULL);
+be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, NULL);
+be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, NULL);
+be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_DDS2382_RX);
+be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str_DI);
+be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_WEBCAM_PWDN);
+be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, NULL);
+be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, &be_const_str_sinh);
+be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL);
+be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_tanh);
+be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL);
+be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, &be_const_str_ZEROCROSS);
+be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, NULL);
+be_define_const_str(classof, "classof", 1796577762u, 0, 7, &be_const_str_codedump);
+be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, NULL);
+be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, NULL);
+be_define_const_str(copy, "copy", 3848464964u, 0, 4, &be_const_str_continue);
be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL);
-be_define_const_str(else, "else", 3183434736u, 52, 4, NULL);
-be_define_const_str(cos, "cos", 4220379804u, 0, 3, &be_const_str_for);
+be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_reverse);
+be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL);
+be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_HPMA_RX);
+be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, &be_const_str_WEBCAM_VSYNC);
+be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, NULL);
+be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_DDS2382_TX);
+be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_WEBCAM_HREF);
+be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, &be_const_str_false);
+be_define_const_str(false, "false", 184981848u, 62, 5, NULL);
+be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_LED1_INV);
+be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_MHZ_TXD);
+be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_P9813_CLK);
+be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_load);
+be_define_const_str(load, "load", 3859241449u, 0, 4, &be_const_str_srand);
+be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL);
+be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_KEY1_INV_NP);
+be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_NEOPOOL_RX);
+be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_PZEM004_RX);
+be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, NULL);
+be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_SWT1_NP);
+be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, &be_const_str_abs);
+be_define_const_str(abs, "abs", 709362235u, 0, 3, &be_const_str_assert);
+be_define_const_str(assert, "assert", 2774883451u, 0, 6, NULL);
+be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_P9813_DAT);
+be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, NULL);
+be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, &be_const_str_try);
+be_define_const_str(try, "try", 2887626766u, 68, 3, NULL);
+be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, &be_const_str_SDS0X1_TX);
+be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, NULL);
+be_define_const_str(log10, "log10", 2346846000u, 0, 5, &be_const_str_pop);
+be_define_const_str(pop, "pop", 1362321360u, 0, 3, NULL);
+be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_TM1638STB);
+be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, NULL);
+be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_SDM72_RX);
+be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, NULL);
+be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_pin);
+be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL);
+be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, NULL);
+be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str_item);
+be_define_const_str(item, "item", 2671260646u, 0, 4, NULL);
+be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, NULL);
+be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str_exp);
+be_define_const_str(exp, "exp", 1923516200u, 0, 3, &be_const_str_rad);
+be_define_const_str(rad, "rad", 1358899048u, 0, 3, &be_const_str_setrange);
+be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL);
+be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_SDS0X1_RX);
+be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_TCP_TX);
+be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, NULL);
+be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_hex);
+be_define_const_str(hex, "hex", 4273249610u, 0, 3, NULL);
+be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_SM2135_CLK);
+be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str_input);
+be_define_const_str(input, "input", 4191711099u, 0, 5, NULL);
+be_define_const_str(top, "top", 2802900028u, 0, 3, &be_const_str_def);
+be_define_const_str(def, "def", 3310976652u, 55, 3, NULL);
+be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_CHANGE);
+be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_floor);
+be_define_const_str(floor, "floor", 3102149661u, 0, 5, &be_const_str_keys);
+be_define_const_str(keys, "keys", 4182378701u, 0, 4, &be_const_str_sin);
+be_define_const_str(sin, "sin", 3761252941u, 0, 3, &be_const_str_traceback);
+be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, &be_const_str_as);
+be_define_const_str(as, "as", 1579491469u, 67, 2, NULL);
+be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_ZIGBEE_RX);
+be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, NULL);
+be_define_const_str(acos, "acos", 1006755615u, 0, 4, NULL);
+be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_else);
+be_define_const_str(else, "else", 3183434736u, 52, 4, &be_const_str_for);
be_define_const_str(for, "for", 2901640080u, 54, 3, NULL);
+be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL);
+be_define_const_str(pi, "pi", 1213090802u, 0, 2, &be_const_str_range);
+be_define_const_str(range, "range", 4208725202u, 0, 5, NULL);
+be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, &be_const_str_SM16716_SEL);
+be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, NULL);
+be_define_const_str(count, "count", 967958004u, 0, 5, &be_const_str_do);
+be_define_const_str(do, "do", 1646057492u, 65, 2, NULL);
+be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_TASMOTACLIENT_RST_INV);
+be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, &be_const_str_tostring);
+be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL);
+be_define_const_str(DSB, "DSB", 98073254u, 0, 3, NULL);
+be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, &be_const_str_get);
+be_define_const_str(get, "get", 1410115415u, 0, 3, &be_const_str_upper);
+be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL);
+be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str_IEM3000_RX);
+be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, &be_const_str_toupper);
+be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL);
+be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, NULL);
+be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_PWM1);
+be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, &be_const_str_ST7789_CS);
+be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, &be_const_str_find);
+be_define_const_str(find, "find", 3186656602u, 0, 4, &be_const_str_end);
+be_define_const_str(end, "end", 1787721130u, 56, 3, NULL);
+be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_SSPI_CS);
+be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, NULL);
+be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, NULL);
+be_define_const_str(char, "char", 2823553821u, 0, 4, NULL);
+be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, NULL);
+be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_REL1);
+be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_SPI_DC);
+be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, NULL);
+be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, NULL);
+be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_log);
+be_define_const_str(log, "log", 1062293841u, 0, 3, NULL);
+be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL);
+be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_pin_used);
+be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, &be_const_str_setitem);
+be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, &be_const_str_import);
+be_define_const_str(import, "import", 288002260u, 66, 6, NULL);
+be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, NULL);
+be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, &be_const_str_OUTPUT_HI);
+be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, NULL);
+be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_ROT1B_NP);
+be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_attrdump);
+be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_print);
+be_define_const_str(print, "print", 372738696u, 0, 5, &be_const_str_tan);
+be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL);
+be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, NULL);
+be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_size);
+be_define_const_str(size, "size", 597743964u, 0, 4, &be_const_str_nil);
+be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL);
+be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_type);
+be_define_const_str(type, "type", 1361572173u, 0, 4, NULL);
+be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_compile);
+be_define_const_str(compile, "compile", 1000265118u, 0, 7, &be_const_str_while);
+be_define_const_str(while, "while", 231090382u, 53, 5, NULL);
+be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str_SDM120_TX);
+be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, &be_const_str_TXD);
+be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, &be_const_str_WIEGAND_D0);
+be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, &be_const_str_class);
+be_define_const_str(class, "class", 2872970239u, 57, 5, NULL);
+be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_MIEL_HVAC_RX);
+be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, NULL);
+be_define_const_str(collect, "collect", 2399039025u, 0, 7, NULL);
+be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_ADC_PH);
+be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_DEEPSLEEP);
+be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_HM10_RX);
+be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, &be_const_str_XPT2046_CS);
+be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, NULL);
+be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, NULL);
+be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, NULL);
+be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_LMT01);
+be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_SDM630_RX);
+be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, &be_const_str_ZIGBEE_RST);
+be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, NULL);
+be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, &be_const_str_asin);
+be_define_const_str(asin, "asin", 4272848550u, 0, 4, &be_const_str_if);
+be_define_const_str(if, "if", 959999494u, 50, 2, NULL);
+be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_IBEACON_RX);
+be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, &be_const_str_iter);
+be_define_const_str(iter, "iter", 3124256359u, 0, 4, NULL);
+be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_SR04_ECHO);
+be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_ceil);
+be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, NULL);
+be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_MAX7219DIN);
+be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, &be_const_str_SBR_RX);
+be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, &be_const_str_open);
+be_define_const_str(open, "open", 3546203337u, 0, 4, NULL);
+be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, NULL);
+be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, &be_const_str_NEOPOOL_TX);
+be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, &be_const_str_TELEINFO_RX);
+be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, &be_const_str_WINDMETER_SPEED);
+be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, &be_const_str_cosh);
+be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, NULL);
+be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, NULL);
+be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_SM16716_DAT);
+be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, NULL);
+be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_MCP39F5_TX);
+be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_SAIR_TX);
+be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_SR04_TRIG);
+be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, NULL);
+be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, &be_const_str_WEBCAM_PSCLK);
+be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, &be_const_str_digital_read);
+be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, &be_const_str_except);
+be_define_const_str(except, "except", 950914032u, 69, 6, NULL);
+be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_IBEACON_TX);
+be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_NRF24_DC);
+be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, NULL);
+be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, NULL);
+be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_WE517_RX);
+be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, NULL);
+be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, &be_const_str_WEBCAM_HSD);
+be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, &be_const_str_insert);
+be_define_const_str(insert, "insert", 3332609576u, 0, 6, NULL);
+be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_TUYA_TX);
+be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, NULL);
+be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_I2C_SCL);
+be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, NULL);
+be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, NULL);
+be_define_const_str(classname, "classname", 1998589948u, 0, 9, &be_const_str_cos);
+be_define_const_str(cos, "cos", 4220379804u, 0, 3, NULL);
+be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, &be_const_str_NRG_SEL_INV);
+be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_SHELLY_DIMMER_RST_INV);
+be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, &be_const_str_module);
+be_define_const_str(module, "module", 3617558685u, 0, 6, NULL);
+be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_IEM3000_TX);
+be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, NULL);
+be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_deg);
+be_define_const_str(deg, "deg", 3327754271u, 0, 3, &be_const_str_return);
+be_define_const_str(return, "return", 2246981567u, 60, 6, NULL);
+be_define_const_str(str, "str", 3259748752u, 0, 3, NULL);
+be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_ST7789_DC);
+be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, NULL);
+be_define_const_str(clear, "clear", 1550717474u, 0, 5, &be_const_str_imax);
+be_define_const_str(imax, "imax", 3084515410u, 0, 4, NULL);
+be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_SPI_CS);
+be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, NULL);
+be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, &be_const_str_SSPI_MISO);
+be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_true);
+be_define_const_str(true, "true", 1303515621u, 61, 4, NULL);
+be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, NULL);
+be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, NULL);
+be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, NULL);
+be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, &be_const_str_WEBCAM_SIOD);
+be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, NULL);
+be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, NULL);
+be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, NULL);
+be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_NRG_SEL);
+be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str_push);
+be_define_const_str(push, "push", 2272264157u, 0, 4, NULL);
+be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_FTC532);
+be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_GPS_RX);
+be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_HLW_CF);
+be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, NULL);
+be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, &be_const_str_issubclass);
+be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, NULL);
+be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_ILI9341_DC);
+be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, &be_const_str_TX2X_TXD_BLACK);
+be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_WEBCAM_PSRCS);
+be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, NULL);
+be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_LOW);
+be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_MP3_DFR562);
+be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_map);
+be_define_const_str(map, "map", 3751997361u, 0, 3, NULL);
+be_define_const_str(allocated, "allocated", 429986098u, 0, 9, &be_const_str_format);
+be_define_const_str(format, "format", 3114108242u, 0, 6, NULL);
+be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_CSE7766_RX);
+be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_ILI9341_CS);
+be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, NULL);
+be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, &be_const_str_SSPI_MAX31865_CS1);
+be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, NULL);
+be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, NULL);
+be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_I2C_SDA);
+be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_PZEM017_RX);
+be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_rand);
+be_define_const_str(rand, "rand", 2711325910u, 0, 4, NULL);
+be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_TM1637CLK);
+be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, NULL);
+be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_lower);
+be_define_const_str(lower, "lower", 3038577850u, 0, 5, NULL);
+be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, NULL);
+be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_RC522_CS);
+be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, NULL);
+be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_HIGH);
+be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_LEDLNK);
+be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_concat);
+be_define_const_str(concat, "concat", 4124019837u, 0, 6, NULL);
+be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_SOLAXX1_RX);
+be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_TM1638DIO);
+be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, &be_const_str_pin_mode);
+be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, NULL);
+be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_ELECTRIQ_MOODL_TX);
+be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, &be_const_str_SBR_TX);
+be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_byte);
+be_define_const_str(byte, "byte", 1683620383u, 0, 4, &be_const_str_sqrt);
+be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL);
+be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_WEBCAM_RESET);
+be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, &be_const_str_asstring);
+be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, NULL);
+be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, NULL);
+be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, NULL);
+be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_PULLUP);
+be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_init);
+be_define_const_str(init, "init", 380752755u, 0, 4, &be_const_str_split);
+be_define_const_str(split, "split", 2276994531u, 0, 5, NULL);
+be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_MAX7219CS);
+be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_TASMOTACLIENT_TXD);
+be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, &be_const_str_add);
+be_define_const_str(add, "add", 993596020u, 0, 3, &be_const_str_super);
+be_define_const_str(super, "super", 4152230356u, 0, 5, NULL);
+be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL);
+be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, &be_const_str_HRXL_RX);
+be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, &be_const_str_MAX7219CLK);
+be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str___lower__);
+be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, NULL);
+be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_KEY1);
+be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, &be_const_str_PZEM016_RX);
+be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str_dump);
+be_define_const_str(dump, "dump", 3663001223u, 0, 4, NULL);
+be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_FALLING);
+be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_fromstring);
+be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, &be_const_str_break);
+be_define_const_str(break, "break", 3378807160u, 58, 5, NULL);
+be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, NULL);
+be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_digital_write);
+be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, NULL);
+be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL);
+be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, NULL);
+be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_TFMINIPLUS_RX);
+be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, &be_const_str_TUYA_RX);
+be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, NULL);
static const bstring* const m_string_table[] = {
- (const bstring *)&be_const_str_remove,
- (const bstring *)&be_const_str_opt_connect,
- (const bstring *)&be_const_str_toupper,
+ (const bstring *)&be_const_str_ADC_TEMP,
+ (const bstring *)&be_const_str_AS3935,
+ (const bstring *)&be_const_str_PMS5003_RX,
+ (const bstring *)&be_const_str_RC522_RST,
+ (const bstring *)&be_const_str_MCP39F5_RST,
+ (const bstring *)&be_const_str_TELEINFO_ENABLE,
+ (const bstring *)&be_const_str_INPUT_PULLUP,
+ (const bstring *)&be_const_str_ADC_RANGE,
+ (const bstring *)&be_const_str_ZIGBEE_TX,
+ (const bstring *)&be_const_str_SDM120_RX,
NULL,
- (const bstring *)&be_const_str_map,
- (const bstring *)&be_const_str_bytes,
+ (const bstring *)&be_const_str_ARIRFSEL,
+ (const bstring *)&be_const_str_RDM6300_RX,
(const bstring *)&be_const_str_real,
- (const bstring *)&be_const_str_count,
- (const bstring *)&be_const_str_format,
- (const bstring *)&be_const_str_load,
- (const bstring *)&be_const_str_char,
- (const bstring *)&be_const_str_acos,
- (const bstring *)&be_const_str_fromstring,
- (const bstring *)&be_const_str_opt_eq,
- (const bstring *)&be_const_str_find,
- (const bstring *)&be_const_str_opt_add,
- NULL,
- (const bstring *)&be_const_str_deg,
- (const bstring *)&be_const_str_allocated,
- (const bstring *)&be_const_str_reverse,
- (const bstring *)&be_const_str_assert,
- (const bstring *)&be_const_str_imax,
- (const bstring *)&be_const_str_opt_neq,
- (const bstring *)&be_const_str___upper__,
- (const bstring *)&be_const_str_abs,
- (const bstring *)&be_const_str_atan,
- (const bstring *)&be_const_str_,
- NULL,
- (const bstring *)&be_const_str_exp,
- (const bstring *)&be_const_str___iterator__,
- (const bstring *)&be_const_str_ceil,
- (const bstring *)&be_const_str_import,
- (const bstring *)&be_const_str_size,
- (const bstring *)&be_const_str_list,
- (const bstring *)&be_const_str_insert,
- (const bstring *)&be_const_str_issubclass,
- (const bstring *)&be_const_str_classof,
- (const bstring *)&be_const_str_end,
- (const bstring *)&be_const_str_clear,
- (const bstring *)&be_const_str_open,
- (const bstring *)&be_const_str_add,
(const bstring *)&be_const_str_int,
- (const bstring *)&be_const_str_item,
- (const bstring *)&be_const_str_concat,
- (const bstring *)&be_const_str_continue,
- (const bstring *)&be_const_str_else,
- (const bstring *)&be_const_str_cos
+ (const bstring *)&be_const_str_HALLEFFECT,
+ (const bstring *)&be_const_str_AS608_RX,
+ (const bstring *)&be_const_str_DHT11,
+ (const bstring *)&be_const_str_isinstance,
+ (const bstring *)&be_const_str_opt_neq,
+ (const bstring *)&be_const_str_bytes,
+ (const bstring *)&be_const_str_CNTR1,
+ (const bstring *)&be_const_str_AS608_TX,
+ (const bstring *)&be_const_str_ADC_CT_POWER,
+ (const bstring *)&be_const_str_deinit,
+ (const bstring *)&be_const_str_ILI9488_CS,
+ (const bstring *)&be_const_str_NRF24_CS,
+ (const bstring *)&be_const_str_EPAPER42_CS,
+ (const bstring *)&be_const_str_WIEGAND_D1,
+ (const bstring *)&be_const_str_DYP_RX,
+ (const bstring *)&be_const_str_ADC_LIGHT,
+ (const bstring *)&be_const_str_BUZZER_INV,
+ (const bstring *)&be_const_str_ETH_PHY_MDIO,
+ (const bstring *)&be_const_str_WE517_TX,
+ (const bstring *)&be_const_str_classof,
+ (const bstring *)&be_const_str_AZ_RXD,
+ (const bstring *)&be_const_str_copy,
+ (const bstring *)&be_const_str_AZ_TXD,
+ (const bstring *)&be_const_str_CSE7761_TX,
+ NULL,
+ (const bstring *)&be_const_str_BS814_CLK,
+ (const bstring *)&be_const_str_EXS_ENABLE,
+ (const bstring *)&be_const_str_HX711_DAT,
+ (const bstring *)&be_const_str_BUZZER,
+ (const bstring *)&be_const_str_ARIRFRCV,
+ NULL,
+ (const bstring *)&be_const_str_calldepth,
+ (const bstring *)&be_const_str_MAX31855CLK,
+ (const bstring *)&be_const_str_log10,
+ (const bstring *)&be_const_str_LED1,
+ NULL,
+ (const bstring *)&be_const_str_A4988_DIR,
+ (const bstring *)&be_const_str_PN532_TXD,
+ (const bstring *)&be_const_str_TM1637DIO,
+ (const bstring *)&be_const_str_PWM1_INV,
+ (const bstring *)&be_const_str_ROT1A_NP,
+ (const bstring *)&be_const_str_SSD1331_CS,
+ (const bstring *)&be_const_str_LE01MR_RX,
+ (const bstring *)&be_const_str_A4988_ENA,
+ (const bstring *)&be_const_str_BL0940_RX,
+ (const bstring *)&be_const_str_top,
+ (const bstring *)&be_const_str_BS814_DAT,
+ (const bstring *)&be_const_str_SM2135_DAT,
+ (const bstring *)&be_const_str_acos,
+ (const bstring *)&be_const_str_OPTION_A,
+ (const bstring *)&be_const_str_tolower,
+ (const bstring *)&be_const_str_pi,
+ (const bstring *)&be_const_str_SDCARD_CS,
+ (const bstring *)&be_const_str_count,
+ (const bstring *)&be_const_str_,
+ (const bstring *)&be_const_str_DSB,
+ (const bstring *)&be_const_str___iterator__,
+ (const bstring *)&be_const_str_GPS_TX,
+ (const bstring *)&be_const_str_WEBCAM_PCLK,
+ (const bstring *)&be_const_str_PROJECTOR_CTRL_TX,
+ (const bstring *)&be_const_str_MGC3130_XFER,
+ (const bstring *)&be_const_str_RA8876_CS,
+ (const bstring *)&be_const_str_char,
+ (const bstring *)&be_const_str_ADC_BUTTON_INV,
+ (const bstring *)&be_const_str_INPUT_PULLDOWN,
+ (const bstring *)&be_const_str_MAX31855DO,
+ (const bstring *)&be_const_str_SSD1351_DC,
+ NULL,
+ (const bstring *)&be_const_str_elif,
+ (const bstring *)&be_const_str_ROT1A,
+ (const bstring *)&be_const_str_WEBCAM_DATA,
+ (const bstring *)&be_const_str_IRRECV,
+ NULL,
+ (const bstring *)&be_const_str_OUTPUT_LO,
+ NULL,
+ (const bstring *)&be_const_str_SPI_MISO,
+ NULL,
+ (const bstring *)&be_const_str_ADC_JOY,
+ (const bstring *)&be_const_str_ETH_PHY_MDC,
+ (const bstring *)&be_const_str_TASMOTACLIENT_RXD,
+ (const bstring *)&be_const_str_MHZ_RXD,
+ (const bstring *)&be_const_str_DDSU666_RX,
+ (const bstring *)&be_const_str_collect,
+ (const bstring *)&be_const_str_ADC_BUTTON,
+ (const bstring *)&be_const_str_A4988_MS1,
+ (const bstring *)&be_const_str_RF_SENSOR,
+ (const bstring *)&be_const_str_CSE7766_TX,
+ (const bstring *)&be_const_str_SPI_CLK,
+ (const bstring *)&be_const_str_HJL_CF,
+ (const bstring *)&be_const_str_SOLAXX1_TX,
+ (const bstring *)&be_const_str_CC1101_GDO2,
+ NULL,
+ (const bstring *)&be_const_str_SM16716_CLK,
+ (const bstring *)&be_const_str_HX711_SCK,
+ (const bstring *)&be_const_str_ROT1B,
+ (const bstring *)&be_const_str_DHT11_OUT,
+ (const bstring *)&be_const_str_LE01MR_TX,
+ (const bstring *)&be_const_str_IRSEND,
+ (const bstring *)&be_const_str_A4988_STP,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ (const bstring *)&be_const_str_SPI_MOSI,
+ (const bstring *)&be_const_str_OLED_RESET,
+ (const bstring *)&be_const_str_SSPI_DC,
+ (const bstring *)&be_const_str_SAIR_RX,
+ (const bstring *)&be_const_str_EPAPER29_CS,
+ (const bstring *)&be_const_str_NONE,
+ (const bstring *)&be_const_str_classname,
+ (const bstring *)&be_const_str_LEDLNK_INV,
+ (const bstring *)&be_const_str_ETH_PHY_POWER,
+ (const bstring *)&be_const_str_MAX31855CS,
+ (const bstring *)&be_const_str_str,
+ (const bstring *)&be_const_str_SENSOR_END,
+ (const bstring *)&be_const_str_clear,
+ NULL,
+ (const bstring *)&be_const_str_OUTPUT,
+ (const bstring *)&be_const_str_SDM72_TX,
+ (const bstring *)&be_const_str_MIEL_HVAC_TX,
+ (const bstring *)&be_const_str_VL53L0X_XSHUT1,
+ (const bstring *)&be_const_str_PZEM0XX_TX,
+ NULL,
+ (const bstring *)&be_const_str_SSPI_SCLK,
+ (const bstring *)&be_const_str_HRE_DATA,
+ (const bstring *)&be_const_str_PROJECTOR_CTRL_RX,
+ (const bstring *)&be_const_str_DSB_OUT,
+ (const bstring *)&be_const_str_ADC_INPUT,
+ (const bstring *)&be_const_str_TCP_RX,
+ (const bstring *)&be_const_str_CNTR1_NP,
+ (const bstring *)&be_const_str_BOILER_OT_RX,
+ (const bstring *)&be_const_str_allocated,
+ (const bstring *)&be_const_str_CC1101_GDO0,
+ (const bstring *)&be_const_str_SHELLY_DIMMER_BOOT0,
+ (const bstring *)&be_const_str_NRG_CF1,
+ (const bstring *)&be_const_str_DDSU666_TX,
+ NULL,
+ NULL,
+ (const bstring *)&be_const_str_RXD,
+ (const bstring *)&be_const_str_opt_add,
+ (const bstring *)&be_const_str_WEBCAM_SIOC,
+ (const bstring *)&be_const_str_OUTPUT_OPEN_DRAIN,
+ (const bstring *)&be_const_str_opt_connect,
+ (const bstring *)&be_const_str_PN532_RXD,
+ (const bstring *)&be_const_str_DHT22,
+ (const bstring *)&be_const_str_OPEN_DRAIN,
+ (const bstring *)&be_const_str_MGC3130_RESET,
+ (const bstring *)&be_const_str_ADE7953_IRQ,
+ (const bstring *)&be_const_str_KEY1_INV,
+ (const bstring *)&be_const_str_HM10_TX,
+ (const bstring *)&be_const_str_pow,
+ (const bstring *)&be_const_str_BACKLIGHT,
+ (const bstring *)&be_const_str_HRE_CLOCK,
+ (const bstring *)&be_const_str_DCKI,
+ (const bstring *)&be_const_str_MCP39F5_RX,
+ NULL,
+ (const bstring *)&be_const_str_INPUT,
+ NULL,
+ (const bstring *)&be_const_str_remove,
+ (const bstring *)&be_const_str_TM1638CLK,
+ (const bstring *)&be_const_str_opt_eq
};
static const struct bconststrtab m_const_string_table = {
- .size = 47,
- .count = 95,
+ .size = 176,
+ .count = 352,
.table = m_string_table
};
diff --git a/lib/libesp32/Berry-0.1.10/generate/be_fixed_gpio.h b/lib/libesp32/Berry-0.1.10/generate/be_fixed_gpio.h
new file mode 100644
index 000000000..174f68c5a
--- /dev/null
+++ b/lib/libesp32/Berry-0.1.10/generate/be_fixed_gpio.h
@@ -0,0 +1,273 @@
+#include "be_constobj.h"
+
+static be_define_const_map_slots(m_libgpio_map) {
+ { be_const_key(HALLEFFECT, -1), be_const_int(237) },
+ { be_const_key(PULLDOWN, -1), be_const_int(8) },
+ { be_const_key(RXD, -1), be_const_int(101) },
+ { be_const_key(ETH_PHY_POWER, -1), be_const_int(173) },
+ { be_const_key(digital_write, -1), be_const_func(gp_digital_write) },
+ { be_const_key(A4988_ENA, -1), be_const_int(118) },
+ { be_const_key(ST7789_CS, 12), be_const_int(206) },
+ { be_const_key(FALLING, -1), be_const_int(2) },
+ { be_const_key(WIEGAND_D1, -1), be_const_int(217) },
+ { be_const_key(I2C_SCL, -1), be_const_int(19) },
+ { be_const_key(PZEM0XX_TX, -1), be_const_int(46) },
+ { be_const_key(KEY1_INV_NP, -1), be_const_int(4) },
+ { be_const_key(WEBCAM_HREF, -1), be_const_int(161) },
+ { be_const_key(ROT1A_NP, -1), be_const_int(211) },
+ { be_const_key(SOLAXX1_TX, 10), be_const_int(109) },
+ { be_const_key(KEY1_TC, 169), be_const_int(169) },
+ { be_const_key(DDSU666_RX, -1), be_const_int(125) },
+ { be_const_key(NRG_SEL, -1), be_const_int(81) },
+ { be_const_key(DCKI, 71), be_const_int(95) },
+ { be_const_key(NRF24_CS, -1), be_const_int(197) },
+ { be_const_key(PWM1_INV, -1), be_const_int(14) },
+ { be_const_key(TM1637DIO, 199), be_const_int(223) },
+ { be_const_key(CC1101_GDO0, -1), be_const_int(142) },
+ { be_const_key(MAX7219CLK, 87), be_const_int(231) },
+ { be_const_key(ADC_JOY, -1), be_const_int(104) },
+ { be_const_key(SSPI_CS, -1), be_const_int(29) },
+ { be_const_key(OUTPUT_LO, -1), be_const_int(121) },
+ { be_const_key(WEBCAM_VSYNC, 233), be_const_int(160) },
+ { be_const_key(ZIGBEE_RX, -1), be_const_int(112) },
+ { be_const_key(TASMOTACLIENT_RST, -1), be_const_int(132) },
+ { be_const_key(SDM72_RX, -1), be_const_int(221) },
+ { be_const_key(SSD1351_DC, -1), be_const_int(226) },
+ { be_const_key(MHZ_TXD, -1), be_const_int(44) },
+ { be_const_key(TFMINIPLUS_RX, -1), be_const_int(235) },
+ { be_const_key(TM1637CLK, 18), be_const_int(222) },
+ { be_const_key(PMS5003_RX, 250), be_const_int(53) },
+ { be_const_key(ZEROCROSS, 111), be_const_int(236) },
+ { be_const_key(TCP_RX, -1), be_const_int(172) },
+ { be_const_key(SWT1_NP, -1), be_const_int(6) },
+ { be_const_key(ADC_LIGHT, -1), be_const_int(149) },
+ { be_const_key(SENSOR_END, -1), be_const_int(238) },
+ { be_const_key(TM1638CLK, -1), be_const_int(64) },
+ { be_const_key(SDM630_RX, -1), be_const_int(63) },
+ { be_const_key(CSE7761_RX, -1), be_const_int(229) },
+ { be_const_key(OUTPUT_OPEN_DRAIN, 30), be_const_int(18) },
+ { be_const_key(SI7021, -1), be_const_int(39) },
+ { be_const_key(LMT01, -1), be_const_int(178) },
+ { be_const_key(RFRECV, -1), be_const_int(36) },
+ { be_const_key(SSD1351_CS, -1), be_const_int(204) },
+ { be_const_key(NRG_SEL_INV, -1), be_const_int(82) },
+ { be_const_key(HRXL_RX, 38), be_const_int(144) },
+ { be_const_key(KEY1, -1), be_const_int(1) },
+ { be_const_key(SR04_TRIG, -1), be_const_int(58) },
+ { be_const_key(SBR_TX, 183), be_const_int(56) },
+ { be_const_key(PROJECTOR_CTRL_TX, 35), be_const_int(224) },
+ { be_const_key(WEBCAM_XCLK, 167), be_const_int(156) },
+ { be_const_key(SM2135_CLK, 205), be_const_int(126) },
+ { be_const_key(HPMA_RX, 112), be_const_int(134) },
+ { be_const_key(IRSEND, -1), be_const_int(33) },
+ { be_const_key(NRG_CF1, -1), be_const_int(83) },
+ { be_const_key(SPI_CLK, -1), be_const_int(23) },
+ { be_const_key(CNTR1_NP, -1), be_const_int(12) },
+ { be_const_key(ADE7953_IRQ, -1), be_const_int(108) },
+ { be_const_key(MAX7219CS, -1), be_const_int(233) },
+ { be_const_key(LEDLNK, 229), be_const_int(17) },
+ { be_const_key(SHELLY_DIMMER_BOOT0, -1), be_const_int(189) },
+ { be_const_key(WE517_TX, 82), be_const_int(185) },
+ { be_const_key(SDM120_RX, -1), be_const_int(61) },
+ { be_const_key(WEBCAM_PSRCS, -1), be_const_int(165) },
+ { be_const_key(SDS0X1_TX, 81), be_const_int(54) },
+ { be_const_key(A4988_MS1, 102), be_const_int(119) },
+ { be_const_key(REL1, 89), be_const_int(7) },
+ { be_const_key(OLED_RESET, -1), be_const_int(32) },
+ { be_const_key(PROJECTOR_CTRL_RX, -1), be_const_int(225) },
+ { be_const_key(ARIRFSEL, 59), be_const_int(99) },
+ { be_const_key(SDM630_TX, 160), be_const_int(62) },
+ { be_const_key(ZIGBEE_TX, -1), be_const_int(111) },
+ { be_const_key(ARIRFRCV, 222), be_const_int(98) },
+ { be_const_key(CSE7766_TX, 21), be_const_int(96) },
+ { be_const_key(LED1_INV, 132), be_const_int(10) },
+ { be_const_key(TASMOTACLIENT_RXD, -1), be_const_int(131) },
+ { be_const_key(ETH_PHY_MDIO, -1), be_const_int(175) },
+ { be_const_key(NEOPOOL_TX, -1), be_const_int(218) },
+ { be_const_key(MAX7219DIN, -1), be_const_int(232) },
+ { be_const_key(INPUT, -1), be_const_int(1) },
+ { be_const_key(IEM3000_TX, 11), be_const_int(179) },
+ { be_const_key(pin_used, 127), be_const_func(gp_pin_used) },
+ { be_const_key(IBEACON_RX, 7), be_const_int(115) },
+ { be_const_key(TCP_TX, 86), be_const_int(171) },
+ { be_const_key(WS2812, -1), be_const_int(43) },
+ { be_const_key(SM2135_DAT, 246), be_const_int(127) },
+ { be_const_key(DDS2382_TX, -1), be_const_int(122) },
+ { be_const_key(SDM120_TX, 52), be_const_int(60) },
+ { be_const_key(WEBCAM_DATA, -1), be_const_int(159) },
+ { be_const_key(PN532_RXD, -1), be_const_int(90) },
+ { be_const_key(HX711_SCK, -1), be_const_int(68) },
+ { be_const_key(pin, 68), be_const_func(gp_pin) },
+ { be_const_key(HM10_RX, 245), be_const_int(138) },
+ { be_const_key(DHT11_OUT, -1), be_const_int(40) },
+ { be_const_key(IBEACON_TX, 103), be_const_int(114) },
+ { be_const_key(GPS_TX, 239), be_const_int(137) },
+ { be_const_key(WINDMETER_SPEED, 215), be_const_int(168) },
+ { be_const_key(WIEGAND_D0, 231), be_const_int(216) },
+ { be_const_key(REL1_INV, -1), be_const_int(8) },
+ { be_const_key(RISING, -1), be_const_int(1) },
+ { be_const_key(GPS_RX, -1), be_const_int(136) },
+ { be_const_key(INPUT_PULLUP, -1), be_const_int(5) },
+ { be_const_key(BOILER_OT_TX, -1), be_const_int(167) },
+ { be_const_key(PN532_TXD, -1), be_const_int(89) },
+ { be_const_key(AS608_TX, -1), be_const_int(187) },
+ { be_const_key(VL53L0X_XSHUT1, -1), be_const_int(230) },
+ { be_const_key(PULLUP, -1), be_const_int(4) },
+ { be_const_key(BS814_CLK, 77), be_const_int(214) },
+ { be_const_key(HJL_CF, -1), be_const_int(85) },
+ { be_const_key(KEY1_INV, -1), be_const_int(3) },
+ { be_const_key(OPTION_A, -1), be_const_int(194) },
+ { be_const_key(OPEN_DRAIN, 210), be_const_int(16) },
+ { be_const_key(SPI_DC, -1), be_const_int(25) },
+ { be_const_key(TM1638DIO, 185), be_const_int(65) },
+ { be_const_key(TASMOTACLIENT_RST_INV, 134), be_const_int(133) },
+ { be_const_key(BUZZER_INV, -1), be_const_int(16) },
+ { be_const_key(RC522_RST, -1), be_const_int(191) },
+ { be_const_key(DYP_RX, -1), be_const_int(182) },
+ { be_const_key(MCP39F5_TX, 57), be_const_int(86) },
+ { be_const_key(IEM3000_RX, -1), be_const_int(180) },
+ { be_const_key(SSD1331_CS, -1), be_const_int(208) },
+ { be_const_key(HRE_DATA, 36), be_const_int(107) },
+ { be_const_key(MIEL_HVAC_RX, -1), be_const_int(184) },
+ { be_const_key(RA8876_CS, 176), be_const_int(205) },
+ { be_const_key(OUTPUT_HI, 70), be_const_int(120) },
+ { be_const_key(SPI_MISO, 27), be_const_int(21) },
+ { be_const_key(WEBCAM_PCLK, 33), be_const_int(162) },
+ { be_const_key(INPUT_PULLDOWN, 105), be_const_int(9) },
+ { be_const_key(SPI_CS, 124), be_const_int(24) },
+ { be_const_key(BS814_DAT, 218), be_const_int(215) },
+ { be_const_key(ADC_BUTTON, -1), be_const_int(150) },
+ { be_const_key(MAX31855CS, 110), be_const_int(78) },
+ { be_const_key(BUZZER, -1), be_const_int(15) },
+ { be_const_key(ZIGBEE_RST, -1), be_const_int(181) },
+ { be_const_key(MGC3130_RESET, 63), be_const_int(74) },
+ { be_const_key(ILI9341_DC, 53), be_const_int(200) },
+ { be_const_key(ELECTRIQ_MOODL_TX, -1), be_const_int(145) },
+ { be_const_key(MAX31855CLK, -1), be_const_int(79) },
+ { be_const_key(AZ_TXD, 203), be_const_int(76) },
+ { be_const_key(DEEPSLEEP, -1), be_const_int(128) },
+ { be_const_key(SDS0X1_RX, 83), be_const_int(55) },
+ { be_const_key(SSPI_MISO, -1), be_const_int(26) },
+ { be_const_key(ST7789_DC, 48), be_const_int(207) },
+ { be_const_key(ILI9488_CS, -1), be_const_int(201) },
+ { be_const_key(HX711_DAT, -1), be_const_int(69) },
+ { be_const_key(SM16716_SEL, -1), be_const_int(93) },
+ { be_const_key(CNTR1, 224), be_const_int(11) },
+ { be_const_key(ADC_BUTTON_INV, -1), be_const_int(151) },
+ { be_const_key(NONE, 206), be_const_int(0) },
+ { be_const_key(SDM72_TX, -1), be_const_int(220) },
+ { be_const_key(BOILER_OT_RX, -1), be_const_int(166) },
+ { be_const_key(BL0940_RX, 116), be_const_int(170) },
+ { be_const_key(ROT1B, 148), be_const_int(103) },
+ { be_const_key(AS608_RX, 104), be_const_int(188) },
+ { be_const_key(LE01MR_TX, -1), be_const_int(141) },
+ { be_const_key(FTC532, -1), be_const_int(195) },
+ { be_const_key(WEBCAM_SIOD, 220), be_const_int(157) },
+ { be_const_key(CSE7761_TX, 164), be_const_int(228) },
+ { be_const_key(SSPI_SCLK, -1), be_const_int(28) },
+ { be_const_key(DDSU666_TX, -1), be_const_int(124) },
+ { be_const_key(ADC_RANGE, -1), be_const_int(152) },
+ { be_const_key(SDCARD_CS, -1), be_const_int(210) },
+ { be_const_key(CC1101_GDO2, 234), be_const_int(143) },
+ { be_const_key(A4988_DIR, -1), be_const_int(116) },
+ { be_const_key(DDS2382_RX, -1), be_const_int(123) },
+ { be_const_key(PMS5003_TX, -1), be_const_int(52) },
+ { be_const_key(SM16716_CLK, -1), be_const_int(91) },
+ { be_const_key(ILI9341_CS, -1), be_const_int(199) },
+ { be_const_key(KEY1_NP, 122), be_const_int(2) },
+ { be_const_key(NRF24_DC, -1), be_const_int(198) },
+ { be_const_key(SR04_ECHO, -1), be_const_int(59) },
+ { be_const_key(A4988_STP, -1), be_const_int(117) },
+ { be_const_key(ADC_TEMP, -1), be_const_int(148) },
+ { be_const_key(PZEM016_RX, 247), be_const_int(48) },
+ { be_const_key(NEOPOOL_RX, 5), be_const_int(219) },
+ { be_const_key(MP3_DFR562, -1), be_const_int(67) },
+ { be_const_key(HRE_CLOCK, -1), be_const_int(106) },
+ { be_const_key(pin_mode, 152), be_const_func(gp_pin_mode) },
+ { be_const_key(EXS_ENABLE, -1), be_const_int(129) },
+ { be_const_key(TELEINFO_RX, 29), be_const_int(176) },
+ { be_const_key(I2C_SDA, 253), be_const_int(20) },
+ { be_const_key(DI, -1), be_const_int(94) },
+ { be_const_key(LED1, -1), be_const_int(9) },
+ { be_const_key(SBR_RX, -1), be_const_int(57) },
+ { be_const_key(DHT11, 118), be_const_int(37) },
+ { be_const_key(TASMOTACLIENT_TXD, -1), be_const_int(130) },
+ { be_const_key(AS3935, 49), be_const_int(146) },
+ { be_const_key(PWM1, 212), be_const_int(13) },
+ { be_const_key(SWT1, -1), be_const_int(5) },
+ { be_const_key(RF_SENSOR, -1), be_const_int(75) },
+ { be_const_key(EPAPER29_CS, 154), be_const_int(202) },
+ { be_const_key(WEBCAM_RESET, 153), be_const_int(155) },
+ { be_const_key(TELEINFO_ENABLE, 3), be_const_int(177) },
+ { be_const_key(HPMA_TX, 73), be_const_int(135) },
+ { be_const_key(DHT22, -1), be_const_int(38) },
+ { be_const_key(TUYA_RX, 72), be_const_int(72) },
+ { be_const_key(PZEM017_RX, -1), be_const_int(49) },
+ { be_const_key(LEDLNK_INV, -1), be_const_int(18) },
+ { be_const_key(MCP39F5_RX, -1), be_const_int(87) },
+ { be_const_key(SPI_MOSI, -1), be_const_int(22) },
+ { be_const_key(digital_read, 61), be_const_func(gp_digital_read) },
+ { be_const_key(HIGH, -1), be_const_int(1) },
+ { be_const_key(LE01MR_RX, 230), be_const_int(140) },
+ { be_const_key(XPT2046_CS, -1), be_const_int(227) },
+ { be_const_key(SSPI_MOSI, -1), be_const_int(27) },
+ { be_const_key(SSD1331_DC, -1), be_const_int(209) },
+ { be_const_key(MAX31855DO, -1), be_const_int(80) },
+ { be_const_key(WE517_RX, -1), be_const_int(186) },
+ { be_const_key(MIEL_HVAC_TX, -1), be_const_int(183) },
+ { be_const_key(LOW, 37), be_const_int(0) },
+ { be_const_key(RFSEND, -1), be_const_int(35) },
+ { be_const_key(SM16716_DAT, -1), be_const_int(92) },
+ { be_const_key(RDM6300_RX, -1), be_const_int(113) },
+ { be_const_key(ADC_CT_POWER, 209), be_const_int(153) },
+ { be_const_key(AZ_RXD, 135), be_const_int(77) },
+ { be_const_key(PZEM004_RX, -1), be_const_int(47) },
+ { be_const_key(DSB_OUT, -1), be_const_int(42) },
+ { be_const_key(ADC_INPUT, -1), be_const_int(147) },
+ { be_const_key(SOLAXX1_RX, 67), be_const_int(110) },
+ { be_const_key(P9813_CLK, -1), be_const_int(192) },
+ { be_const_key(HLW_CF, 162), be_const_int(84) },
+ { be_const_key(BACKLIGHT, 42), be_const_int(31) },
+ { be_const_key(CHANGE, -1), be_const_int(4) },
+ { be_const_key(TXD, -1), be_const_int(100) },
+ { be_const_key(EPAPER42_CS, -1), be_const_int(203) },
+ { be_const_key(TFMINIPLUS_TX, 244), be_const_int(234) },
+ { be_const_key(OUTPUT, -1), be_const_int(2) },
+ { be_const_key(MCP39F5_RST, 168), be_const_int(88) },
+ { be_const_key(TM1638STB, -1), be_const_int(66) },
+ { be_const_key(WEBCAM_HSD, -1), be_const_int(164) },
+ { be_const_key(SAIR_TX, 56), be_const_int(50) },
+ { be_const_key(ROT1A, -1), be_const_int(102) },
+ { be_const_key(ROT1B_NP, -1), be_const_int(212) },
+ { be_const_key(RC522_CS, -1), be_const_int(196) },
+ { be_const_key(IRRECV, -1), be_const_int(34) },
+ { be_const_key(CSE7766_RX, 41), be_const_int(97) },
+ { be_const_key(HM10_TX, 8), be_const_int(139) },
+ { be_const_key(ETH_PHY_MDC, -1), be_const_int(174) },
+ { be_const_key(ADC_PH, -1), be_const_int(213) },
+ { be_const_key(WEBCAM_SIOC, 242), be_const_int(158) },
+ { be_const_key(SSPI_MAX31865_CS1, -1), be_const_int(105) },
+ { be_const_key(WEBCAM_PSCLK, -1), be_const_int(163) },
+ { be_const_key(P9813_DAT, -1), be_const_int(193) },
+ { be_const_key(TUYA_TX, -1), be_const_int(71) },
+ { be_const_key(WEBCAM_PWDN, -1), be_const_int(154) },
+ { be_const_key(SAIR_RX, -1), be_const_int(51) },
+ { be_const_key(SSPI_DC, -1), be_const_int(30) },
+ { be_const_key(MHZ_RXD, 138), be_const_int(45) },
+ { be_const_key(TX2X_TXD_BLACK, -1), be_const_int(70) },
+ { be_const_key(MGC3130_XFER, 144), be_const_int(73) },
+ { be_const_key(DSB, 94), be_const_int(41) },
+ { be_const_key(SHELLY_DIMMER_RST_INV, -1), be_const_int(190) },
+};
+
+static be_define_const_map(
+ m_libgpio_map,
+ 257
+);
+
+static be_define_const_module(
+ m_libgpio,
+ "gpio"
+);
+
+BE_EXPORT_VARIABLE be_define_const_native_module(gpio, NULL);
diff --git a/lib/libesp32/Berry-0.1.10/src/port/be_gpio_lib.c b/lib/libesp32/Berry-0.1.10/src/port/be_gpio_lib.c
new file mode 100644
index 000000000..4f957778e
--- /dev/null
+++ b/lib/libesp32/Berry-0.1.10/src/port/be_gpio_lib.c
@@ -0,0 +1,557 @@
+/********************************************************************
+ * Tasmota lib
+ *
+ * To use: `import power`
+ *
+ * read power values
+ *******************************************************************/
+#include "be_object.h"
+
+// Tasmota specific
+
+extern int gp_pin_mode(bvm *vm);
+extern int gp_digital_write(bvm *vm);
+extern int gp_digital_read(bvm *vm);
+
+extern int gp_pin_used(bvm *vm);
+extern int gp_pin(bvm *vm);
+
+#if !BE_USE_PRECOMPILED_OBJECT
+// #if 1 // TODO we will do pre-compiled later
+be_native_module_attr_table(gpio) {
+ // HIGH/LOW
+ be_native_module_int("LOW", 0),
+ be_native_module_int("HIGH", 1),
+ // GPIO states
+ be_native_module_int("INPUT", 1),
+ be_native_module_int("OUTPUT", 2),
+ be_native_module_int("PULLUP", 4),
+ be_native_module_int("INPUT_PULLUP", 5),
+ be_native_module_int("PULLDOWN", 8),
+ be_native_module_int("INPUT_PULLDOWN", 9),
+ be_native_module_int("OPEN_DRAIN", 16),
+ be_native_module_int("OUTPUT_OPEN_DRAIN", 18),
+ // Interrupt trigger
+ be_native_module_int("RISING", 1),
+ be_native_module_int("FALLING", 2),
+ be_native_module_int("CHANGE", 4),
+ // Tasmota GPIOs
+ be_native_module_int("NONE", 0),
+ be_native_module_int("KEY1", 1),
+ be_native_module_int("KEY1_NP", 2),
+ be_native_module_int("KEY1_INV", 3),
+ be_native_module_int("KEY1_INV_NP", 4),
+ be_native_module_int("SWT1", 5),
+ be_native_module_int("SWT1_NP", 6),
+ be_native_module_int("REL1", 7),
+ be_native_module_int("REL1_INV", 8),
+ be_native_module_int("LED1", 9),
+ be_native_module_int("LED1_INV", 10),
+ be_native_module_int("CNTR1", 11),
+ be_native_module_int("CNTR1_NP", 12),
+ be_native_module_int("PWM1", 13),
+ be_native_module_int("PWM1_INV", 14),
+ be_native_module_int("BUZZER", 15),
+ be_native_module_int("BUZZER_INV", 16),
+ be_native_module_int("LEDLNK", 17),
+ be_native_module_int("LEDLNK_INV", 18),
+ be_native_module_int("I2C_SCL", 19),
+ be_native_module_int("I2C_SDA", 20),
+ be_native_module_int("SPI_MISO", 21),
+ be_native_module_int("SPI_MOSI", 22),
+ be_native_module_int("SPI_CLK", 23),
+ be_native_module_int("SPI_CS", 24),
+ be_native_module_int("SPI_DC", 25),
+ be_native_module_int("SSPI_MISO", 26),
+ be_native_module_int("SSPI_MOSI", 27),
+ be_native_module_int("SSPI_SCLK", 28),
+ be_native_module_int("SSPI_CS", 29),
+ be_native_module_int("SSPI_DC", 30),
+ be_native_module_int("BACKLIGHT", 31),
+ be_native_module_int("OLED_RESET", 32),
+ be_native_module_int("IRSEND", 33),
+ be_native_module_int("IRRECV", 34),
+ be_native_module_int("RFSEND", 35),
+ be_native_module_int("RFRECV", 36),
+ be_native_module_int("DHT11", 37),
+ be_native_module_int("DHT22", 38),
+ be_native_module_int("SI7021", 39),
+ be_native_module_int("DHT11_OUT", 40),
+ be_native_module_int("DSB", 41),
+ be_native_module_int("DSB_OUT", 42),
+ be_native_module_int("WS2812", 43),
+ be_native_module_int("MHZ_TXD", 44),
+ be_native_module_int("MHZ_RXD", 45),
+ be_native_module_int("PZEM0XX_TX", 46),
+ be_native_module_int("PZEM004_RX", 47),
+ be_native_module_int("PZEM016_RX", 48),
+ be_native_module_int("PZEM017_RX", 49),
+ be_native_module_int("SAIR_TX", 50),
+ be_native_module_int("SAIR_RX", 51),
+ be_native_module_int("PMS5003_TX", 52),
+ be_native_module_int("PMS5003_RX", 53),
+ be_native_module_int("SDS0X1_TX", 54),
+ be_native_module_int("SDS0X1_RX", 55),
+ be_native_module_int("SBR_TX", 56),
+ be_native_module_int("SBR_RX", 57),
+ be_native_module_int("SR04_TRIG", 58),
+ be_native_module_int("SR04_ECHO", 59),
+ be_native_module_int("SDM120_TX", 60),
+ be_native_module_int("SDM120_RX", 61),
+ be_native_module_int("SDM630_TX", 62),
+ be_native_module_int("SDM630_RX", 63),
+ be_native_module_int("TM1638CLK", 64),
+ be_native_module_int("TM1638DIO", 65),
+ be_native_module_int("TM1638STB", 66),
+ be_native_module_int("MP3_DFR562", 67),
+ be_native_module_int("HX711_SCK", 68),
+ be_native_module_int("HX711_DAT", 69),
+ be_native_module_int("TX2X_TXD_BLACK", 70),
+ be_native_module_int("TUYA_TX", 71),
+ be_native_module_int("TUYA_RX", 72),
+ be_native_module_int("MGC3130_XFER", 73),
+ be_native_module_int("MGC3130_RESET", 74),
+ be_native_module_int("RF_SENSOR", 75),
+ be_native_module_int("AZ_TXD", 76),
+ be_native_module_int("AZ_RXD", 77),
+ be_native_module_int("MAX31855CS", 78),
+ be_native_module_int("MAX31855CLK", 79),
+ be_native_module_int("MAX31855DO", 80),
+ be_native_module_int("NRG_SEL", 81),
+ be_native_module_int("NRG_SEL_INV", 82),
+ be_native_module_int("NRG_CF1", 83),
+ be_native_module_int("HLW_CF", 84),
+ be_native_module_int("HJL_CF", 85),
+ be_native_module_int("MCP39F5_TX", 86),
+ be_native_module_int("MCP39F5_RX", 87),
+ be_native_module_int("MCP39F5_RST", 88),
+ be_native_module_int("PN532_TXD", 89),
+ be_native_module_int("PN532_RXD", 90),
+ be_native_module_int("SM16716_CLK", 91),
+ be_native_module_int("SM16716_DAT", 92),
+ be_native_module_int("SM16716_SEL", 93),
+ be_native_module_int("DI", 94),
+ be_native_module_int("DCKI", 95),
+ be_native_module_int("CSE7766_TX", 96),
+ be_native_module_int("CSE7766_RX", 97),
+ be_native_module_int("ARIRFRCV", 98),
+ be_native_module_int("ARIRFSEL", 99),
+ be_native_module_int("TXD", 100),
+ be_native_module_int("RXD", 101),
+ be_native_module_int("ROT1A", 102),
+ be_native_module_int("ROT1B", 103),
+ be_native_module_int("ADC_JOY", 104),
+ be_native_module_int("SSPI_MAX31865_CS1", 105),
+ be_native_module_int("HRE_CLOCK", 106),
+ be_native_module_int("HRE_DATA", 107),
+ be_native_module_int("ADE7953_IRQ", 108),
+ be_native_module_int("SOLAXX1_TX", 109),
+ be_native_module_int("SOLAXX1_RX", 110),
+ be_native_module_int("ZIGBEE_TX", 111),
+ be_native_module_int("ZIGBEE_RX", 112),
+ be_native_module_int("RDM6300_RX", 113),
+ be_native_module_int("IBEACON_TX", 114),
+ be_native_module_int("IBEACON_RX", 115),
+ be_native_module_int("A4988_DIR", 116),
+ be_native_module_int("A4988_STP", 117),
+ be_native_module_int("A4988_ENA", 118),
+ be_native_module_int("A4988_MS1", 119),
+ be_native_module_int("OUTPUT_HI", 120),
+ be_native_module_int("OUTPUT_LO", 121),
+ be_native_module_int("DDS2382_TX", 122),
+ be_native_module_int("DDS2382_RX", 123),
+ be_native_module_int("DDSU666_TX", 124),
+ be_native_module_int("DDSU666_RX", 125),
+ be_native_module_int("SM2135_CLK", 126),
+ be_native_module_int("SM2135_DAT", 127),
+ be_native_module_int("DEEPSLEEP", 128),
+ be_native_module_int("EXS_ENABLE", 129),
+ be_native_module_int("TASMOTACLIENT_TXD", 130),
+ be_native_module_int("TASMOTACLIENT_RXD", 131),
+ be_native_module_int("TASMOTACLIENT_RST", 132),
+ be_native_module_int("TASMOTACLIENT_RST_INV", 133),
+ be_native_module_int("HPMA_RX", 134),
+ be_native_module_int("HPMA_TX", 135),
+ be_native_module_int("GPS_RX", 136),
+ be_native_module_int("GPS_TX", 137),
+ be_native_module_int("HM10_RX", 138),
+ be_native_module_int("HM10_TX", 139),
+ be_native_module_int("LE01MR_RX", 140),
+ be_native_module_int("LE01MR_TX", 141),
+ be_native_module_int("CC1101_GDO0", 142),
+ be_native_module_int("CC1101_GDO2", 143),
+ be_native_module_int("HRXL_RX", 144),
+ be_native_module_int("ELECTRIQ_MOODL_TX", 145),
+ be_native_module_int("AS3935", 146),
+ be_native_module_int("ADC_INPUT", 147),
+ be_native_module_int("ADC_TEMP", 148),
+ be_native_module_int("ADC_LIGHT", 149),
+ be_native_module_int("ADC_BUTTON", 150),
+ be_native_module_int("ADC_BUTTON_INV", 151),
+ be_native_module_int("ADC_RANGE", 152),
+ be_native_module_int("ADC_CT_POWER", 153),
+ be_native_module_int("WEBCAM_PWDN", 154),
+ be_native_module_int("WEBCAM_RESET", 155),
+ be_native_module_int("WEBCAM_XCLK", 156),
+ be_native_module_int("WEBCAM_SIOD", 157),
+ be_native_module_int("WEBCAM_SIOC", 158),
+ be_native_module_int("WEBCAM_DATA", 159),
+ be_native_module_int("WEBCAM_VSYNC", 160),
+ be_native_module_int("WEBCAM_HREF", 161),
+ be_native_module_int("WEBCAM_PCLK", 162),
+ be_native_module_int("WEBCAM_PSCLK", 163),
+ be_native_module_int("WEBCAM_HSD", 164),
+ be_native_module_int("WEBCAM_PSRCS", 165),
+ be_native_module_int("BOILER_OT_RX", 166),
+ be_native_module_int("BOILER_OT_TX", 167),
+ be_native_module_int("WINDMETER_SPEED", 168),
+ be_native_module_int("KEY1_TC", 169),
+ be_native_module_int("BL0940_RX", 170),
+ be_native_module_int("TCP_TX", 171),
+ be_native_module_int("TCP_RX", 172),
+ be_native_module_int("ETH_PHY_POWER", 173),
+ be_native_module_int("ETH_PHY_MDC", 174),
+ be_native_module_int("ETH_PHY_MDIO", 175),
+ be_native_module_int("TELEINFO_RX", 176),
+ be_native_module_int("TELEINFO_ENABLE", 177),
+ be_native_module_int("LMT01", 178),
+ be_native_module_int("IEM3000_TX", 179),
+ be_native_module_int("IEM3000_RX", 180),
+ be_native_module_int("ZIGBEE_RST", 181),
+ be_native_module_int("DYP_RX", 182),
+ be_native_module_int("MIEL_HVAC_TX", 183),
+ be_native_module_int("MIEL_HVAC_RX", 184),
+ be_native_module_int("WE517_TX", 185),
+ be_native_module_int("WE517_RX", 186),
+ be_native_module_int("AS608_TX", 187),
+ be_native_module_int("AS608_RX", 188),
+ be_native_module_int("SHELLY_DIMMER_BOOT0", 189),
+ be_native_module_int("SHELLY_DIMMER_RST_INV", 190),
+ be_native_module_int("RC522_RST", 191),
+ be_native_module_int("P9813_CLK", 192),
+ be_native_module_int("P9813_DAT", 193),
+ be_native_module_int("OPTION_A", 194),
+ be_native_module_int("FTC532", 195),
+ be_native_module_int("RC522_CS", 196),
+ be_native_module_int("NRF24_CS", 197),
+ be_native_module_int("NRF24_DC", 198),
+ be_native_module_int("ILI9341_CS", 199),
+ be_native_module_int("ILI9341_DC", 200),
+ be_native_module_int("ILI9488_CS", 201),
+ be_native_module_int("EPAPER29_CS", 202),
+ be_native_module_int("EPAPER42_CS", 203),
+ be_native_module_int("SSD1351_CS", 204),
+ be_native_module_int("RA8876_CS", 205),
+ be_native_module_int("ST7789_CS", 206),
+ be_native_module_int("ST7789_DC", 207),
+ be_native_module_int("SSD1331_CS", 208),
+ be_native_module_int("SSD1331_DC", 209),
+ be_native_module_int("SDCARD_CS", 210),
+ be_native_module_int("ROT1A_NP", 211),
+ be_native_module_int("ROT1B_NP", 212),
+ be_native_module_int("ADC_PH", 213),
+ be_native_module_int("BS814_CLK", 214),
+ be_native_module_int("BS814_DAT", 215),
+ be_native_module_int("WIEGAND_D0", 216),
+ be_native_module_int("WIEGAND_D1", 217),
+ be_native_module_int("NEOPOOL_TX", 218),
+ be_native_module_int("NEOPOOL_RX", 219),
+ be_native_module_int("SDM72_TX", 220),
+ be_native_module_int("SDM72_RX", 221),
+ be_native_module_int("TM1637CLK", 222),
+ be_native_module_int("TM1637DIO", 223),
+ be_native_module_int("PROJECTOR_CTRL_TX", 224),
+ be_native_module_int("PROJECTOR_CTRL_RX", 225),
+ be_native_module_int("SSD1351_DC", 226),
+ be_native_module_int("XPT2046_CS", 227),
+ be_native_module_int("CSE7761_TX", 228),
+ be_native_module_int("CSE7761_RX", 229),
+ be_native_module_int("VL53L0X_XSHUT1", 230),
+ be_native_module_int("MAX7219CLK", 231),
+ be_native_module_int("MAX7219DIN", 232),
+ be_native_module_int("MAX7219CS", 233),
+ be_native_module_int("TFMINIPLUS_TX", 234),
+ be_native_module_int("TFMINIPLUS_RX", 235),
+ be_native_module_int("ZEROCROSS", 236),
+ be_native_module_int("HALLEFFECT", 237),
+ be_native_module_int("SENSOR_END", 238),
+
+ be_native_module_function("pin_mode", gp_pin_mode),
+ be_native_module_function("digital_write", gp_digital_write),
+ be_native_module_function("digital_read", gp_digital_read),
+
+ be_native_module_function("pin_used", gp_pin_used),
+ be_native_module_function("pin", gp_pin),
+
+};
+
+be_define_native_module(gpio, NULL);
+#else
+/* @const_object_info_begin
+module gpio (scope: global, depend: BE_USE_GPIO) {
+ LOW, int(0)
+ HIGH, int(1)
+
+ INPUT, int(1)
+ OUTPUT, int(2)
+ PULLUP, int(4)
+ INPUT_PULLUP, int(5)
+ PULLDOWN, int(8)
+ INPUT_PULLDOWN, int(9)
+ OPEN_DRAIN, int(16)
+ OUTPUT_OPEN_DRAIN, int(18)
+
+ RISING, int(1)
+ FALLING, int(2)
+ CHANGE, int(4)
+
+ NONE, int(0)
+ KEY1, int(1)
+ KEY1_NP, int(2)
+ KEY1_INV, int(3)
+ KEY1_INV_NP, int(4)
+ SWT1, int(5)
+ SWT1_NP, int(6)
+ REL1, int(7)
+ REL1_INV, int(8)
+ LED1, int(9)
+ LED1_INV, int(10)
+ CNTR1, int(11)
+ CNTR1_NP, int(12)
+ PWM1, int(13)
+ PWM1_INV, int(14)
+ BUZZER, int(15)
+ BUZZER_INV, int(16)
+ LEDLNK, int(17)
+ LEDLNK_INV, int(18)
+ I2C_SCL, int(19)
+ I2C_SDA, int(20)
+ SPI_MISO, int(21)
+ SPI_MOSI, int(22)
+ SPI_CLK, int(23)
+ SPI_CS, int(24)
+ SPI_DC, int(25)
+ SSPI_MISO, int(26)
+ SSPI_MOSI, int(27)
+ SSPI_SCLK, int(28)
+ SSPI_CS, int(29)
+ SSPI_DC, int(30)
+ BACKLIGHT, int(31)
+ OLED_RESET, int(32)
+ IRSEND, int(33)
+ IRRECV, int(34)
+ RFSEND, int(35)
+ RFRECV, int(36)
+ DHT11, int(37)
+ DHT22, int(38)
+ SI7021, int(39)
+ DHT11_OUT, int(40)
+ DSB, int(41)
+ DSB_OUT, int(42)
+ WS2812, int(43)
+ MHZ_TXD, int(44)
+ MHZ_RXD, int(45)
+ PZEM0XX_TX, int(46)
+ PZEM004_RX, int(47)
+ PZEM016_RX, int(48)
+ PZEM017_RX, int(49)
+ SAIR_TX, int(50)
+ SAIR_RX, int(51)
+ PMS5003_TX, int(52)
+ PMS5003_RX, int(53)
+ SDS0X1_TX, int(54)
+ SDS0X1_RX, int(55)
+ SBR_TX, int(56)
+ SBR_RX, int(57)
+ SR04_TRIG, int(58)
+ SR04_ECHO, int(59)
+ SDM120_TX, int(60)
+ SDM120_RX, int(61)
+ SDM630_TX, int(62)
+ SDM630_RX, int(63)
+ TM1638CLK, int(64)
+ TM1638DIO, int(65)
+ TM1638STB, int(66)
+ MP3_DFR562, int(67)
+ HX711_SCK, int(68)
+ HX711_DAT, int(69)
+ TX2X_TXD_BLACK, int(70)
+ TUYA_TX, int(71)
+ TUYA_RX, int(72)
+ MGC3130_XFER, int(73)
+ MGC3130_RESET, int(74)
+ RF_SENSOR, int(75)
+ AZ_TXD, int(76)
+ AZ_RXD, int(77)
+ MAX31855CS, int(78)
+ MAX31855CLK, int(79)
+ MAX31855DO, int(80)
+ NRG_SEL, int(81)
+ NRG_SEL_INV, int(82)
+ NRG_CF1, int(83)
+ HLW_CF, int(84)
+ HJL_CF, int(85)
+ MCP39F5_TX, int(86)
+ MCP39F5_RX, int(87)
+ MCP39F5_RST, int(88)
+ PN532_TXD, int(89)
+ PN532_RXD, int(90)
+ SM16716_CLK, int(91)
+ SM16716_DAT, int(92)
+ SM16716_SEL, int(93)
+ DI, int(94)
+ DCKI, int(95)
+ CSE7766_TX, int(96)
+ CSE7766_RX, int(97)
+ ARIRFRCV, int(98)
+ ARIRFSEL, int(99)
+ TXD, int(100)
+ RXD, int(101)
+ ROT1A, int(102)
+ ROT1B, int(103)
+ ADC_JOY, int(104)
+ SSPI_MAX31865_CS1, int(105)
+ HRE_CLOCK, int(106)
+ HRE_DATA, int(107)
+ ADE7953_IRQ, int(108)
+ SOLAXX1_TX, int(109)
+ SOLAXX1_RX, int(110)
+ ZIGBEE_TX, int(111)
+ ZIGBEE_RX, int(112)
+ RDM6300_RX, int(113)
+ IBEACON_TX, int(114)
+ IBEACON_RX, int(115)
+ A4988_DIR, int(116)
+ A4988_STP, int(117)
+ A4988_ENA, int(118)
+ A4988_MS1, int(119)
+ OUTPUT_HI, int(120)
+ OUTPUT_LO, int(121)
+ DDS2382_TX, int(122)
+ DDS2382_RX, int(123)
+ DDSU666_TX, int(124)
+ DDSU666_RX, int(125)
+ SM2135_CLK, int(126)
+ SM2135_DAT, int(127)
+ DEEPSLEEP, int(128)
+ EXS_ENABLE, int(129)
+ TASMOTACLIENT_TXD, int(130)
+ TASMOTACLIENT_RXD, int(131)
+ TASMOTACLIENT_RST, int(132)
+ TASMOTACLIENT_RST_INV, int(133)
+ HPMA_RX, int(134)
+ HPMA_TX, int(135)
+ GPS_RX, int(136)
+ GPS_TX, int(137)
+ HM10_RX, int(138)
+ HM10_TX, int(139)
+ LE01MR_RX, int(140)
+ LE01MR_TX, int(141)
+ CC1101_GDO0, int(142)
+ CC1101_GDO2, int(143)
+ HRXL_RX, int(144)
+ ELECTRIQ_MOODL_TX, int(145)
+ AS3935, int(146)
+ ADC_INPUT, int(147)
+ ADC_TEMP, int(148)
+ ADC_LIGHT, int(149)
+ ADC_BUTTON, int(150)
+ ADC_BUTTON_INV, int(151)
+ ADC_RANGE, int(152)
+ ADC_CT_POWER, int(153)
+ WEBCAM_PWDN, int(154)
+ WEBCAM_RESET, int(155)
+ WEBCAM_XCLK, int(156)
+ WEBCAM_SIOD, int(157)
+ WEBCAM_SIOC, int(158)
+ WEBCAM_DATA, int(159)
+ WEBCAM_VSYNC, int(160)
+ WEBCAM_HREF, int(161)
+ WEBCAM_PCLK, int(162)
+ WEBCAM_PSCLK, int(163)
+ WEBCAM_HSD, int(164)
+ WEBCAM_PSRCS, int(165)
+ BOILER_OT_RX, int(166)
+ BOILER_OT_TX, int(167)
+ WINDMETER_SPEED, int(168)
+ KEY1_TC, int(169)
+ BL0940_RX, int(170)
+ TCP_TX, int(171)
+ TCP_RX, int(172)
+ ETH_PHY_POWER, int(173)
+ ETH_PHY_MDC, int(174)
+ ETH_PHY_MDIO, int(175)
+ TELEINFO_RX, int(176)
+ TELEINFO_ENABLE, int(177)
+ LMT01, int(178)
+ IEM3000_TX, int(179)
+ IEM3000_RX, int(180)
+ ZIGBEE_RST, int(181)
+ DYP_RX, int(182)
+ MIEL_HVAC_TX, int(183)
+ MIEL_HVAC_RX, int(184)
+ WE517_TX, int(185)
+ WE517_RX, int(186)
+ AS608_TX, int(187)
+ AS608_RX, int(188)
+ SHELLY_DIMMER_BOOT0, int(189)
+ SHELLY_DIMMER_RST_INV, int(190)
+ RC522_RST, int(191)
+ P9813_CLK, int(192)
+ P9813_DAT, int(193)
+ OPTION_A, int(194)
+ FTC532, int(195)
+ RC522_CS, int(196)
+ NRF24_CS, int(197)
+ NRF24_DC, int(198)
+ ILI9341_CS, int(199)
+ ILI9341_DC, int(200)
+ ILI9488_CS, int(201)
+ EPAPER29_CS, int(202)
+ EPAPER42_CS, int(203)
+ SSD1351_CS, int(204)
+ RA8876_CS, int(205)
+ ST7789_CS, int(206)
+ ST7789_DC, int(207)
+ SSD1331_CS, int(208)
+ SSD1331_DC, int(209)
+ SDCARD_CS, int(210)
+ ROT1A_NP, int(211)
+ ROT1B_NP, int(212)
+ ADC_PH, int(213)
+ BS814_CLK, int(214)
+ BS814_DAT, int(215)
+ WIEGAND_D0, int(216)
+ WIEGAND_D1, int(217)
+ NEOPOOL_TX, int(218)
+ NEOPOOL_RX, int(219)
+ SDM72_TX, int(220)
+ SDM72_RX, int(221)
+ TM1637CLK, int(222)
+ TM1637DIO, int(223)
+ PROJECTOR_CTRL_TX, int(224)
+ PROJECTOR_CTRL_RX, int(225)
+ SSD1351_DC, int(226)
+ XPT2046_CS, int(227)
+ CSE7761_TX, int(228)
+ CSE7761_RX, int(229)
+ VL53L0X_XSHUT1, int(230)
+ MAX7219CLK, int(231)
+ MAX7219DIN, int(232)
+ MAX7219CS, int(233)
+ TFMINIPLUS_TX, int(234)
+ TFMINIPLUS_RX, int(235)
+ ZEROCROSS, int(236)
+ HALLEFFECT, int(237)
+ SENSOR_END, int(238)
+
+ pin_mode, func(gp_pin_mode)
+ digital_write, func(gp_digital_write)
+ digital_read, func(gp_digital_read)
+
+ pin_used, func(gp_pin_used)
+ pin, func(gp_pin)
+}
+@const_object_info_end */
+#include "../generate/be_fixed_gpio.h"
+#endif
diff --git a/lib/libesp32/Berry-0.1.10/src/port/be_modtab.c b/lib/libesp32/Berry-0.1.10/src/port/be_modtab.c
index e0a82d149..efdbafd6c 100644
--- a/lib/libesp32/Berry-0.1.10/src/port/be_modtab.c
+++ b/lib/libesp32/Berry-0.1.10/src/port/be_modtab.c
@@ -21,8 +21,7 @@ be_extern_native_module(gc);
be_extern_native_module(solidify);
/* Tasmota specific */
-// be_extern_native_module(tasmota_ntv);
-be_extern_native_module(wire);
+be_extern_native_module(gpio);
be_extern_native_module(energy);
/* user-defined modules declare start */
@@ -61,6 +60,7 @@ BERRY_LOCAL const bntvmodule* const be_module_table[] = {
#endif
/* user-defined modules register start */
+ &be_native_module(gpio),
&be_native_module(energy),
/* user-defined modules register end */
diff --git a/lib/libesp32/Berry-0.1.10/src/port/berry_conf.h b/lib/libesp32/Berry-0.1.10/src/port/berry_conf.h
index a9b78e817..fba29a196 100644
--- a/lib/libesp32/Berry-0.1.10/src/port/berry_conf.h
+++ b/lib/libesp32/Berry-0.1.10/src/port/berry_conf.h
@@ -157,6 +157,8 @@
#define BE_USE_GC_MODULE 1
#define BE_USE_SOLIDIFY_MODULE 1
+#define BE_USE_GPIO 1
+
/* Macro: BE_EXPLICIT_XXX
* If these macros are defined, the corresponding function will
* use the version defined by these macros. These macro definitions
diff --git a/lib/libesp32/Berry-0.1.10/src/port/gpio.txt b/lib/libesp32/Berry-0.1.10/src/port/gpio.txt
new file mode 100644
index 000000000..ccece9c15
--- /dev/null
+++ b/lib/libesp32/Berry-0.1.10/src/port/gpio.txt
@@ -0,0 +1,239 @@
+GPIO_NONE 0
+GPIO_KEY1 1
+GPIO_KEY1_NP 2
+GPIO_KEY1_INV 3
+GPIO_KEY1_INV_NP 4
+GPIO_SWT1 5
+GPIO_SWT1_NP 6
+GPIO_REL1 7
+GPIO_REL1_INV 8
+GPIO_LED1 9
+GPIO_LED1_INV 10
+GPIO_CNTR1 11
+GPIO_CNTR1_NP 12
+GPIO_PWM1 13
+GPIO_PWM1_INV 14
+GPIO_BUZZER 15
+GPIO_BUZZER_INV 16
+GPIO_LEDLNK 17
+GPIO_LEDLNK_INV 18
+GPIO_I2C_SCL 19
+GPIO_I2C_SDA 20
+GPIO_SPI_MISO 21
+GPIO_SPI_MOSI 22
+GPIO_SPI_CLK 23
+GPIO_SPI_CS 24
+GPIO_SPI_DC 25
+GPIO_SSPI_MISO 26
+GPIO_SSPI_MOSI 27
+GPIO_SSPI_SCLK 28
+GPIO_SSPI_CS 29
+GPIO_SSPI_DC 30
+GPIO_BACKLIGHT 31
+GPIO_OLED_RESET 32
+GPIO_IRSEND 33
+GPIO_IRRECV 34
+GPIO_RFSEND 35
+GPIO_RFRECV 36
+GPIO_DHT11 37
+GPIO_DHT22 38
+GPIO_SI7021 39
+GPIO_DHT11_OUT 40
+GPIO_DSB 41
+GPIO_DSB_OUT 42
+GPIO_WS2812 43
+GPIO_MHZ_TXD 44
+GPIO_MHZ_RXD 45
+GPIO_PZEM0XX_TX 46
+GPIO_PZEM004_RX 47
+GPIO_PZEM016_RX 48
+GPIO_PZEM017_RX 49
+GPIO_SAIR_TX 50
+GPIO_SAIR_RX 51
+GPIO_PMS5003_TX 52
+GPIO_PMS5003_RX 53
+GPIO_SDS0X1_TX 54
+GPIO_SDS0X1_RX 55
+GPIO_SBR_TX 56
+GPIO_SBR_RX 57
+GPIO_SR04_TRIG 58
+GPIO_SR04_ECHO 59
+GPIO_SDM120_TX 60
+GPIO_SDM120_RX 61
+GPIO_SDM630_TX 62
+GPIO_SDM630_RX 63
+GPIO_TM1638CLK 64
+GPIO_TM1638DIO 65
+GPIO_TM1638STB 66
+GPIO_MP3_DFR562 67
+GPIO_HX711_SCK 68
+GPIO_HX711_DAT 69
+GPIO_TX2X_TXD_BLACK 70
+GPIO_TUYA_TX 71
+GPIO_TUYA_RX 72
+GPIO_MGC3130_XFER 73
+GPIO_MGC3130_RESET 74
+GPIO_RF_SENSOR 75
+GPIO_AZ_TXD 76
+GPIO_AZ_RXD 77
+GPIO_MAX31855CS 78
+GPIO_MAX31855CLK 79
+GPIO_MAX31855DO 80
+GPIO_NRG_SEL 81
+GPIO_NRG_SEL_INV 82
+GPIO_NRG_CF1 83
+GPIO_HLW_CF 84
+GPIO_HJL_CF 85
+GPIO_MCP39F5_TX 86
+GPIO_MCP39F5_RX 87
+GPIO_MCP39F5_RST 88
+GPIO_PN532_TXD 89
+GPIO_PN532_RXD 90
+GPIO_SM16716_CLK 91
+GPIO_SM16716_DAT 92
+GPIO_SM16716_SEL 93
+GPIO_DI 94
+GPIO_DCKI 95
+GPIO_CSE7766_TX 96
+GPIO_CSE7766_RX 97
+GPIO_ARIRFRCV 98
+GPIO_ARIRFSEL 99
+GPIO_TXD 100
+GPIO_RXD 101
+GPIO_ROT1A 102
+GPIO_ROT1B 103
+GPIO_ADC_JOY 104
+GPIO_SSPI_MAX31865_CS1 105
+GPIO_HRE_CLOCK 106
+GPIO_HRE_DATA 107
+GPIO_ADE7953_IRQ 108
+GPIO_SOLAXX1_TX 109
+GPIO_SOLAXX1_RX 110
+GPIO_ZIGBEE_TX 111
+GPIO_ZIGBEE_RX 112
+GPIO_RDM6300_RX 113
+GPIO_IBEACON_TX 114
+GPIO_IBEACON_RX 115
+GPIO_A4988_DIR 116
+GPIO_A4988_STP 117
+GPIO_A4988_ENA 118
+GPIO_A4988_MS1 119
+GPIO_OUTPUT_HI 120
+GPIO_OUTPUT_LO 121
+GPIO_DDS2382_TX 122
+GPIO_DDS2382_RX 123
+GPIO_DDSU666_TX 124
+GPIO_DDSU666_RX 125
+GPIO_SM2135_CLK 126
+GPIO_SM2135_DAT 127
+GPIO_DEEPSLEEP 128
+GPIO_EXS_ENABLE 129
+GPIO_TASMOTACLIENT_TXD 130
+GPIO_TASMOTACLIENT_RXD 131
+GPIO_TASMOTACLIENT_RST 132
+GPIO_TASMOTACLIENT_RST_INV 133
+GPIO_HPMA_RX 134
+GPIO_HPMA_TX 135
+GPIO_GPS_RX 136
+GPIO_GPS_TX 137
+GPIO_HM10_RX 138
+GPIO_HM10_TX 139
+GPIO_LE01MR_RX 140
+GPIO_LE01MR_TX 141
+GPIO_CC1101_GDO0 142
+GPIO_CC1101_GDO2 143
+GPIO_HRXL_RX 144
+GPIO_ELECTRIQ_MOODL_TX 145
+GPIO_AS3935 146
+GPIO_ADC_INPUT 147
+GPIO_ADC_TEMP 148
+GPIO_ADC_LIGHT 149
+GPIO_ADC_BUTTON 150
+GPIO_ADC_BUTTON_INV 151
+GPIO_ADC_RANGE 152
+GPIO_ADC_CT_POWER 153
+GPIO_WEBCAM_PWDN 154
+GPIO_WEBCAM_RESET 155
+GPIO_WEBCAM_XCLK 156
+GPIO_WEBCAM_SIOD 157
+GPIO_WEBCAM_SIOC 158
+GPIO_WEBCAM_DATA 159
+GPIO_WEBCAM_VSYNC 160
+GPIO_WEBCAM_HREF 161
+GPIO_WEBCAM_PCLK 162
+GPIO_WEBCAM_PSCLK 163
+GPIO_WEBCAM_HSD 164
+GPIO_WEBCAM_PSRCS 165
+GPIO_BOILER_OT_RX 166
+GPIO_BOILER_OT_TX 167
+GPIO_WINDMETER_SPEED 168
+GPIO_KEY1_TC 169
+GPIO_BL0940_RX 170
+GPIO_TCP_TX 171
+GPIO_TCP_RX 172
+GPIO_ETH_PHY_POWER 173
+GPIO_ETH_PHY_MDC 174
+GPIO_ETH_PHY_MDIO 175
+GPIO_TELEINFO_RX 176
+GPIO_TELEINFO_ENABLE 177
+GPIO_LMT01 178
+GPIO_IEM3000_TX 179
+GPIO_IEM3000_RX 180
+GPIO_ZIGBEE_RST 181
+GPIO_DYP_RX 182
+GPIO_MIEL_HVAC_TX 183
+GPIO_MIEL_HVAC_RX 184
+GPIO_WE517_TX 185
+GPIO_WE517_RX 186
+GPIO_AS608_TX 187
+GPIO_AS608_RX 188
+GPIO_SHELLY_DIMMER_BOOT0 189
+GPIO_SHELLY_DIMMER_RST_INV 190
+GPIO_RC522_RST 191
+GPIO_P9813_CLK 192
+GPIO_P9813_DAT 193
+GPIO_OPTION_A 194
+GPIO_FTC532 195
+GPIO_RC522_CS 196
+GPIO_NRF24_CS 197
+GPIO_NRF24_DC 198
+GPIO_ILI9341_CS 199
+GPIO_ILI9341_DC 200
+GPIO_ILI9488_CS 201
+GPIO_EPAPER29_CS 202
+GPIO_EPAPER42_CS 203
+GPIO_SSD1351_CS 204
+GPIO_RA8876_CS 205
+GPIO_ST7789_CS 206
+GPIO_ST7789_DC 207
+GPIO_SSD1331_CS 208
+GPIO_SSD1331_DC 209
+GPIO_SDCARD_CS 210
+GPIO_ROT1A_NP 211
+GPIO_ROT1B_NP 212
+GPIO_ADC_PH 213
+GPIO_BS814_CLK 214
+GPIO_BS814_DAT 215
+GPIO_WIEGAND_D0 216
+GPIO_WIEGAND_D1 217
+GPIO_NEOPOOL_TX 218
+GPIO_NEOPOOL_RX 219
+GPIO_SDM72_TX 220
+GPIO_SDM72_RX 221
+GPIO_TM1637CLK 222
+GPIO_TM1637DIO 223
+GPIO_PROJECTOR_CTRL_TX 224
+GPIO_PROJECTOR_CTRL_RX 225
+GPIO_SSD1351_DC 226
+GPIO_XPT2046_CS 227
+GPIO_CSE7761_TX 228
+GPIO_CSE7761_RX 229
+GPIO_VL53L0X_XSHUT1 230
+GPIO_MAX7219CLK 231
+GPIO_MAX7219DIN 232
+GPIO_MAX7219CS 233
+GPIO_TFMINIPLUS_TX 234
+GPIO_TFMINIPLUS_RX 235
+GPIO_ZEROCROSS 236
+GPIO_HALLEFFECT 237
+GPIO_SENSOR_END 238
\ No newline at end of file
diff --git a/tasmota/berry/gpio.be b/tasmota/berry/gpio.be
new file mode 100644
index 000000000..b286337e1
--- /dev/null
+++ b/tasmota/berry/gpio.be
@@ -0,0 +1,256 @@
+gpio = module('gpio')
+#- HIGH/LOW -#
+gpio.LOW = 0
+gpio.HIGH = 1
+#- GPIO states -#
+gpio.INPUT = 1
+gpio.OUTPUT = 2
+gpio.PULLUP = 4
+gpio.INPUT_PULLUP = 5
+gpio.PULLDOWN = 8
+gpio.OPEN_DRAIN = 16
+gpio.OUTPUT_OPEN_DRAIN = 18
+#- Interrupt trigger -#
+gpio.RISING = 1
+gpio.FALLING = 2
+gpio.CHANGE = 4
+#- Tasmota GPIOs -#
+gpio.NONE = 0
+gpio.KEY1 = 1
+gpio.KEY1_NP = 2
+gpio.KEY1_INV = 3
+gpio.KEY1_INV_NP = 4
+gpio.SWT1 = 5
+gpio.SWT1_NP = 6
+gpio.REL1 = 7
+gpio.REL1_INV = 8
+gpio.LED1 = 9
+gpio.LED1_INV = 10
+gpio.CNTR1 = 11
+gpio.CNTR1_NP = 12
+gpio.PWM1 = 13
+gpio.PWM1_INV = 14
+gpio.BUZZER = 15
+gpio.BUZZER_INV = 16
+gpio.LEDLNK = 17
+gpio.LEDLNK_INV = 18
+gpio.I2C_SCL = 19
+gpio.I2C_SDA = 20
+gpio.SPI_MISO = 21
+gpio.SPI_MOSI = 22
+gpio.SPI_CLK = 23
+gpio.SPI_CS = 24
+gpio.SPI_DC = 25
+gpio.SSPI_MISO = 26
+gpio.SSPI_MOSI = 27
+gpio.SSPI_SCLK = 28
+gpio.SSPI_CS = 29
+gpio.SSPI_DC = 30
+gpio.BACKLIGHT = 31
+gpio.OLED_RESET = 32
+gpio.IRSEND = 33
+gpio.IRRECV = 34
+gpio.RFSEND = 35
+gpio.RFRECV = 36
+gpio.DHT11 = 37
+gpio.DHT22 = 38
+gpio.SI7021 = 39
+gpio.DHT11_OUT = 40
+gpio.DSB = 41
+gpio.DSB_OUT = 42
+gpio.WS2812 = 43
+gpio.MHZ_TXD = 44
+gpio.MHZ_RXD = 45
+gpio.PZEM0XX_TX = 46
+gpio.PZEM004_RX = 47
+gpio.PZEM016_RX = 48
+gpio.PZEM017_RX = 49
+gpio.SAIR_TX = 50
+gpio.SAIR_RX = 51
+gpio.PMS5003_TX = 52
+gpio.PMS5003_RX = 53
+gpio.SDS0X1_TX = 54
+gpio.SDS0X1_RX = 55
+gpio.SBR_TX = 56
+gpio.SBR_RX = 57
+gpio.SR04_TRIG = 58
+gpio.SR04_ECHO = 59
+gpio.SDM120_TX = 60
+gpio.SDM120_RX = 61
+gpio.SDM630_TX = 62
+gpio.SDM630_RX = 63
+gpio.TM1638CLK = 64
+gpio.TM1638DIO = 65
+gpio.TM1638STB = 66
+gpio.MP3_DFR562 = 67
+gpio.HX711_SCK = 68
+gpio.HX711_DAT = 69
+gpio.TX2X_TXD_BLACK = 70
+gpio.TUYA_TX = 71
+gpio.TUYA_RX = 72
+gpio.MGC3130_XFER = 73
+gpio.MGC3130_RESET = 74
+gpio.RF_SENSOR = 75
+gpio.AZ_TXD = 76
+gpio.AZ_RXD = 77
+gpio.MAX31855CS = 78
+gpio.MAX31855CLK = 79
+gpio.MAX31855DO = 80
+gpio.NRG_SEL = 81
+gpio.NRG_SEL_INV = 82
+gpio.NRG_CF1 = 83
+gpio.HLW_CF = 84
+gpio.HJL_CF = 85
+gpio.MCP39F5_TX = 86
+gpio.MCP39F5_RX = 87
+gpio.MCP39F5_RST = 88
+gpio.PN532_TXD = 89
+gpio.PN532_RXD = 90
+gpio.SM16716_CLK = 91
+gpio.SM16716_DAT = 92
+gpio.SM16716_SEL = 93
+gpio.DI = 94
+gpio.DCKI = 95
+gpio.CSE7766_TX = 96
+gpio.CSE7766_RX = 97
+gpio.ARIRFRCV = 98
+gpio.ARIRFSEL = 99
+gpio.TXD = 100
+gpio.RXD = 101
+gpio.ROT1A = 102
+gpio.ROT1B = 103
+gpio.ADC_JOY = 104
+gpio.SSPI_MAX31865_CS1 = 105
+gpio.HRE_CLOCK = 106
+gpio.HRE_DATA = 107
+gpio.ADE7953_IRQ = 108
+gpio.SOLAXX1_TX = 109
+gpio.SOLAXX1_RX = 110
+gpio.ZIGBEE_TX = 111
+gpio.ZIGBEE_RX = 112
+gpio.RDM6300_RX = 113
+gpio.IBEACON_TX = 114
+gpio.IBEACON_RX = 115
+gpio.A4988_DIR = 116
+gpio.A4988_STP = 117
+gpio.A4988_ENA = 118
+gpio.A4988_MS1 = 119
+gpio.OUTPUT_HI = 120
+gpio.OUTPUT_LO = 121
+gpio.DDS2382_TX = 122
+gpio.DDS2382_RX = 123
+gpio.DDSU666_TX = 124
+gpio.DDSU666_RX = 125
+gpio.SM2135_CLK = 126
+gpio.SM2135_DAT = 127
+gpio.DEEPSLEEP = 128
+gpio.EXS_ENABLE = 129
+gpio.TASMOTACLIENT_TXD = 130
+gpio.TASMOTACLIENT_RXD = 131
+gpio.TASMOTACLIENT_RST = 132
+gpio.TASMOTACLIENT_RST_INV = 133
+gpio.HPMA_RX = 134
+gpio.HPMA_TX = 135
+gpio.GPS_RX = 136
+gpio.GPS_TX = 137
+gpio.HM10_RX = 138
+gpio.HM10_TX = 139
+gpio.LE01MR_RX = 140
+gpio.LE01MR_TX = 141
+gpio.CC1101_GDO0 = 142
+gpio.CC1101_GDO2 = 143
+gpio.HRXL_RX = 144
+gpio.ELECTRIQ_MOODL_TX = 145
+gpio.AS3935 = 146
+gpio.ADC_INPUT = 147
+gpio.ADC_TEMP = 148
+gpio.ADC_LIGHT = 149
+gpio.ADC_BUTTON = 150
+gpio.ADC_BUTTON_INV = 151
+gpio.ADC_RANGE = 152
+gpio.ADC_CT_POWER = 153
+gpio.WEBCAM_PWDN = 154
+gpio.WEBCAM_RESET = 155
+gpio.WEBCAM_XCLK = 156
+gpio.WEBCAM_SIOD = 157
+gpio.WEBCAM_SIOC = 158
+gpio.WEBCAM_DATA = 159
+gpio.WEBCAM_VSYNC = 160
+gpio.WEBCAM_HREF = 161
+gpio.WEBCAM_PCLK = 162
+gpio.WEBCAM_PSCLK = 163
+gpio.WEBCAM_HSD = 164
+gpio.WEBCAM_PSRCS = 165
+gpio.BOILER_OT_RX = 166
+gpio.BOILER_OT_TX = 167
+gpio.WINDMETER_SPEED = 168
+gpio.KEY1_TC = 169
+gpio.BL0940_RX = 170
+gpio.TCP_TX = 171
+gpio.TCP_RX = 172
+gpio.ETH_PHY_POWER = 173
+gpio.ETH_PHY_MDC = 174
+gpio.ETH_PHY_MDIO = 175
+gpio.TELEINFO_RX = 176
+gpio.TELEINFO_ENABLE = 177
+gpio.LMT01 = 178
+gpio.IEM3000_TX = 179
+gpio.IEM3000_RX = 180
+gpio.ZIGBEE_RST = 181
+gpio.DYP_RX = 182
+gpio.MIEL_HVAC_TX = 183
+gpio.MIEL_HVAC_RX = 184
+gpio.WE517_TX = 185
+gpio.WE517_RX = 186
+gpio.AS608_TX = 187
+gpio.AS608_RX = 188
+gpio.SHELLY_DIMMER_BOOT0 = 189
+gpio.SHELLY_DIMMER_RST_INV = 190
+gpio.RC522_RST = 191
+gpio.P9813_CLK = 192
+gpio.P9813_DAT = 193
+gpio.OPTION_A = 194
+gpio.FTC532 = 195
+gpio.RC522_CS = 196
+gpio.NRF24_CS = 197
+gpio.NRF24_DC = 198
+gpio.ILI9341_CS = 199
+gpio.ILI9341_DC = 200
+gpio.ILI9488_CS = 201
+gpio.EPAPER29_CS = 202
+gpio.EPAPER42_CS = 203
+gpio.SSD1351_CS = 204
+gpio.RA8876_CS = 205
+gpio.ST7789_CS = 206
+gpio.ST7789_DC = 207
+gpio.SSD1331_CS = 208
+gpio.SSD1331_DC = 209
+gpio.SDCARD_CS = 210
+gpio.ROT1A_NP = 211
+gpio.ROT1B_NP = 212
+gpio.ADC_PH = 213
+gpio.BS814_CLK = 214
+gpio.BS814_DAT = 215
+gpio.WIEGAND_D0 = 216
+gpio.WIEGAND_D1 = 217
+gpio.NEOPOOL_TX = 218
+gpio.NEOPOOL_RX = 219
+gpio.SDM72_TX = 220
+gpio.SDM72_RX = 221
+gpio.TM1637CLK = 222
+gpio.TM1637DIO = 223
+gpio.PROJECTOR_CTRL_TX = 224
+gpio.PROJECTOR_CTRL_RX = 225
+gpio.SSD1351_DC = 226
+gpio.XPT2046_CS = 227
+gpio.CSE7761_TX = 228
+gpio.CSE7761_RX = 229
+gpio.VL53L0X_XSHUT1 = 230
+gpio.MAX7219CLK = 231
+gpio.MAX7219DIN = 232
+gpio.MAX7219CS = 233
+gpio.TFMINIPLUS_TX = 234
+gpio.TFMINIPLUS_RX = 235
+gpio.ZEROCROSS = 236
+gpio.HALLEFFECT = 237
+gpio.SENSOR_END = 238
\ No newline at end of file
diff --git a/tasmota/xdrv_52_3_berry_gpio.ino b/tasmota/xdrv_52_3_berry_gpio.ino
new file mode 100644
index 000000000..22ca59adc
--- /dev/null
+++ b/tasmota/xdrv_52_3_berry_gpio.ino
@@ -0,0 +1,109 @@
+/*
+ xdrv_52_3_berry_native.ino - Berry scripting language, native fucnctions
+
+ Copyright (C) 2021 Stephan Hadinger, Berry language by Guan Wenliang https://github.com/Skiars/berry
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+*/
+
+
+#ifdef USE_BERRY
+
+#include
+
+
+/*********************************************************************************************\
+ * Native functions mapped to Berry functions
+ *
+ * import gpio
+ *
+ *
+\*********************************************************************************************/
+extern "C" {
+
+ int gp_pin_mode(bvm *vm);
+ int gp_pin_mode(bvm *vm) {
+ int32_t argc = be_top(vm); // Get the number of arguments
+ if (argc == 2 && be_isint(vm, 1) && be_isint(vm, 2)) {
+ int32_t pin = be_toint(vm, 1);
+ int32_t mode = be_toint(vm, 2);
+ pinMode(pin, mode);
+ be_return_nil(vm);
+ }
+ be_raise(vm, kTypeError, nullptr);
+ }
+
+ int gp_digital_write(bvm *vm);
+ int gp_digital_write(bvm *vm) {
+ int32_t argc = be_top(vm); // Get the number of arguments
+ if (argc == 2 && be_isint(vm, 1) && be_isint(vm, 2)) {
+ int32_t pin = be_toint(vm, 1);
+ int32_t val = be_toint(vm, 2);
+ digitalWrite(pin, val);
+ be_return_nil(vm);
+ }
+ be_raise(vm, kTypeError, nullptr);
+ }
+
+ int gp_digital_read(bvm *vm);
+ int gp_digital_read(bvm *vm) {
+ int32_t argc = be_top(vm); // Get the number of arguments
+ if (argc == 1 && be_isint(vm, 1)) {
+ int32_t pin = be_toint(vm, 1);
+ int32_t ret = digitalRead(pin);
+ be_pushint(vm, ret);
+ be_return(vm);
+ }
+ be_raise(vm, kTypeError, nullptr);
+ }
+
+// Tasmota specific
+
+ int gp_pin_used(bvm *vm);
+ int gp_pin_used(bvm *vm) {
+ int32_t argc = be_top(vm); // Get the number of arguments
+ if (argc >= 1 && argc <= 2 && be_isint(vm, 1)) {
+ int32_t pin = be_toint(vm, 1);
+ int32_t index = 0;
+ if (argc == 2 && be_isint(vm, 2)) {
+ index = be_toint(vm, 2);
+ }
+ bool ret = PinUsed(pin, index);
+ be_pushbool(vm, ret);
+ be_return(vm);
+ }
+ be_raise(vm, kTypeError, nullptr);
+ }
+
+ int gp_pin(bvm *vm);
+ int gp_pin(bvm *vm) {
+ int32_t argc = be_top(vm); // Get the number of arguments
+ if (argc >= 1 && argc <= 2 && be_isint(vm, 1)) {
+ int32_t pin = be_toint(vm, 1);
+ int32_t index = 0;
+ if (argc == 2 && be_isint(vm, 2)) {
+ index = be_toint(vm, 2);
+ }
+ int32_t ret = Pin(pin, index);
+ be_pushint(vm, ret);
+ be_return(vm);
+ }
+ be_raise(vm, kTypeError, nullptr);
+ }
+
+}
+
+
+
+#endif // USE_BERRY
diff --git a/tasmota/xdrv_52_7_berry_embedded.ino b/tasmota/xdrv_52_7_berry_embedded.ino
index ba8e687d8..f3045f674 100644
--- a/tasmota/xdrv_52_7_berry_embedded.ino
+++ b/tasmota/xdrv_52_7_berry_embedded.ino
@@ -329,6 +329,8 @@ const char berry_prog[] =
"tasmota.wire2 = Wire(2) "
"wire1 = tasmota.wire1 "
"wire2 = tasmota.wire2 "
+ // auto-import gpio
+ "import gpio "
;
const char berry_autoexec[] =