Merge branch 'development' into prerelease-14.0.0

This commit is contained in:
Theo Arends 2024-05-06 10:52:57 +02:00
commit 133cc25bdb
1490 changed files with 143796 additions and 263317 deletions

View File

@ -7,7 +7,7 @@
- [ ] Only relevant files were touched
- [ ] Only one feature/fix was added per PR and the code change compiles without warnings
- [ ] The code change is tested and works with Tasmota core ESP8266 V.2.7.6
- [ ] The code change is tested and works with Tasmota core ESP32 V.2.0.14
- [ ] The code change is tested and works with Tasmota core ESP32 V.3.0.0
- [ ] I accept the [CLA](https://github.com/arendst/Tasmota/blob/development/CONTRIBUTING.md#contributor-license-agreement-cla).
_NOTE: The code change must pass CI tests. **Your PR cannot be merged unless tests pass**_

View File

@ -46,10 +46,14 @@ jobs:
run: |
cd lib/libesp32_lvgl/lv_binding_berry
../../libesp32/berry/berry -s -g solidify_all.be
- name: HASPmota Berry Code
run: |
cd lib/libesp32_lvgl/lv_haspmota
../../libesp32/berry/berry -s -g solidify_all.be
- uses: jason2866/upload-artifact@v2.0.3
with:
name: '["berry_tasmota", "berry_matter", "berry_animate", "berry_lvgl", "berry_header"]'
path: '["./lib/libesp32/berry_tasmota/src/solidify", "./lib/libesp32/berry_matter/src/solidify", "./lib/libesp32/berry_animate/src/solidify", "./lib/libesp32_lvgl/lv_binding_berry/src/solidify", "./lib/libesp32/berry/generate"]'
name: '["berry_tasmota", "berry_matter", "berry_animate", "berry_lvgl", "berry_haspmota", "berry_header"]'
path: '["./lib/libesp32/berry_tasmota/src/solidify", "./lib/libesp32/berry_matter/src/solidify", "./lib/libesp32/berry_animate/src/solidify", "./lib/libesp32_lvgl/lv_binding_berry/src/solidify", "./lib/libesp32_lvgl/lv_haspmota/src/solidify", "./lib/libesp32/berry/generate"]'
push_solidified:
needs: be_solidify
@ -69,12 +73,14 @@ jobs:
berry_matter
berry_animate
berry_lvgl
berry_haspmota
berry_header
path: |
./lib/libesp32/berry_tasmota/src/solidify
./lib/libesp32/berry_matter/src/solidify
./lib/libesp32/berry_animate/src/solidify
./lib/libesp32_lvgl/lv_binding_berry/src/solidify
./lib/libesp32_lvgl/lv_haspmota/src/solidify
./lib/libesp32/berry/generate
- uses: stefanzweifel/git-auto-commit-action@v5
with:
@ -88,17 +94,17 @@ jobs:
strategy:
matrix:
variant:
- tasmota32solo1-safeboot
- tasmota32-safeboot
- tasmota32solo1-safeboot
- tasmota32c2-safeboot
- tasmota32c3-safeboot
- tasmota32c3cdc-safeboot
- tasmota32c3ser-safeboot
- tasmota32s2-safeboot
- tasmota32s2cdc-safeboot
- tasmota32s3-safeboot
- tasmota32s3cdc-safeboot
- tasmota32c2-safeboot
- tasmota32s3ser-safeboot
- tasmota32c6-safeboot
- tasmota32c6cdc-safeboot
- tasmota32c6ser-safeboot
steps:
- uses: actions/checkout@v4
with:
@ -111,10 +117,17 @@ jobs:
run: |
pip install wheel
pip install -U platformio
cp ./platformio_tasmota_core3_env_sample.ini ./platformio_tasmota_core3_env.ini
cp ./platformio_override_sample.ini ./platformio_override.ini
- name: Add SHA to footer
run: |
COMMIT_SHA_LONG=$(git rev-parse --short HEAD || echo "")
SHA=${COMMIT_SHA_LONG::7}
sed -i -e "s/TASMOTA_SHA_SHORT/TASMOTA_SHA_SHORT $SHA-/g" ./tasmota/include/tasmota_version.h
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}
#- name: Use esp32-solo1 safeboot for esp32 too
#run: |
#cp ./build_output/firmware/tasmota32solo1-safeboot.bin ./build_output/firmware/tasmota32-safeboot.bin
- name: Upload safeboot firmware artifacts
uses: jason2866/upload-artifact@v2.0.3
with:
@ -151,6 +164,11 @@ jobs:
run: |
pip install wheel
pip install -U platformio
- name: Add SHA to footer
run: |
COMMIT_SHA_LONG=$(git rev-parse --short HEAD || echo "")
SHA=${COMMIT_SHA_LONG::7}
sed -i -e "s/TASMOTA_SHA_SHORT/TASMOTA_SHA_SHORT $SHA-/g" ./tasmota/include/tasmota_version.h
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}
- name: Upload firmware artifacts
@ -175,15 +193,13 @@ jobs:
- tasmota32-display
- tasmota32-ir
- tasmota32-lvgl
- tasmota32c2
- tasmota32c3
- tasmota32c3cdc
- tasmota32c6
- tasmota32s2
- tasmota32s2cdc
- tasmota32s3
- tasmota32s3cdc
- tasmota32solo1
- tasmota32c2-arduino30
- tasmota32c6cdc-arduino30
steps:
- uses: actions/checkout@v4
with:
@ -196,16 +212,17 @@ jobs:
run: |
pip install wheel
pip install -U platformio
cp ./platformio_tasmota_core3_env_sample.ini ./platformio_tasmota_core3_env.ini
cp ./platformio_override_sample.ini ./platformio_override.ini
- name: Download safeboot firmwares
uses: jason2866/download-artifact@v3.0.4
with:
name: firmware_safeboot
path: ./firmware
- name: Display downloaded files
- name: Add SHA to footer
run: |
ls -R ./firmware/
COMMIT_SHA_LONG=$(git rev-parse --short HEAD || echo "")
SHA=${COMMIT_SHA_LONG::7}
sed -i -e "s/TASMOTA_SHA_SHORT/TASMOTA_SHA_SHORT $SHA-/g" ./tasmota/include/tasmota_version.h
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}
- name: Upload firmware artifacts
@ -235,16 +252,17 @@ jobs:
run: |
pip install wheel
pip install -U platformio
cp ./platformio_tasmota_core3_env_sample.ini ./platformio_tasmota_core3_env.ini
cp ./platformio_override_sample.ini ./platformio_override.ini
- name: Download safeboot firmwares
uses: jason2866/download-artifact@v3.0.4
with:
name: firmware_safeboot
path: ./firmware
- name: Display downloaded files
- name: Add SHA to footer
run: |
ls -R ./firmware/
COMMIT_SHA_LONG=$(git rev-parse --short HEAD || echo "")
SHA=${COMMIT_SHA_LONG::7}
sed -i -e "s/TASMOTA_SHA_SHORT/TASMOTA_SHA_SHORT $SHA-/g" ./tasmota/include/tasmota_version.h
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}-${{ matrix.language }}
- name: Upload language firmware artifacts

View File

@ -21,17 +21,17 @@ jobs:
strategy:
matrix:
variant:
- tasmota32solo1-safeboot
- tasmota32-safeboot
- tasmota32solo1-safeboot
- tasmota32c2-safeboot
- tasmota32c3-safeboot
- tasmota32c3cdc-safeboot
- tasmota32c3ser-safeboot
- tasmota32s2-safeboot
- tasmota32s2cdc-safeboot
- tasmota32s3-safeboot
- tasmota32s3cdc-safeboot
- tasmota32c2-safeboot
- tasmota32s3ser-safeboot
- tasmota32c6-safeboot
- tasmota32c6cdc-safeboot
- tasmota32c6ser-safeboot
steps:
- uses: actions/checkout@v4
with:
@ -44,8 +44,10 @@ jobs:
run: |
pip install wheel
pip install -U platformio
cp ./platformio_tasmota_core3_env_sample.ini ./platformio_tasmota_core3_env.ini
cp ./platformio_override_sample.ini ./platformio_override.ini
- name: Add "release" to footer
run: |
sed -i -e "s/TASMOTA_SHA_SHORT/TASMOTA_SHA_SHORT release-/g" ./tasmota/include/tasmota_version.h
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}
- name: Upload safeboot firmware artifacts
@ -83,6 +85,10 @@ jobs:
run: |
pip install wheel
pip install -U platformio
cp ./platformio_override_sample.ini ./platformio_override.ini
- name: Add "release" to footer
run: |
sed -i -e "s/TASMOTA_SHA_SHORT/TASMOTA_SHA_SHORT release-/g" ./tasmota/include/tasmota_version.h
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}
- name: Upload firmware artifacts
@ -107,12 +113,12 @@ jobs:
- tasmota32-display
- tasmota32-ir
- tasmota32-lvgl
- tasmota32c2
- tasmota32c3
- tasmota32c3cdc
- tasmota32c6
- tasmota32s2
- tasmota32s2cdc
- tasmota32s3
- tasmota32s3cdc
- tasmota32solo1
steps:
- uses: actions/checkout@v4
@ -126,6 +132,7 @@ jobs:
run: |
pip install wheel
pip install -U platformio
cp ./platformio_override_sample.ini ./platformio_override.ini
- name: Download safeboot firmwares
uses: jason2866/download-artifact@v3.0.4
with:
@ -134,6 +141,9 @@ jobs:
- name: Display downloaded files
run: |
ls -R ./firmware/
- name: Add "release" to footer
run: |
sed -i -e "s/TASMOTA_SHA_SHORT/TASMOTA_SHA_SHORT release-/g" ./tasmota/include/tasmota_version.h
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}
- name: Upload firmware artifacts
@ -163,6 +173,7 @@ jobs:
run: |
pip install wheel
pip install -U platformio
cp ./platformio_override_sample.ini ./platformio_override.ini
- name: Download safeboot firmwares
uses: jason2866/download-artifact@v3.0.4
with:
@ -171,6 +182,9 @@ jobs:
- name: Display downloaded files
run: |
ls -R ./firmware/
- name: Add "release" to footer
run: |
sed -i -e "s/TASMOTA_SHA_SHORT/TASMOTA_SHA_SHORT release-/g" ./tasmota/include/tasmota_version.h
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}-${{ matrix.language }}
- name: Upload language firmware artifacts

View File

@ -25,7 +25,7 @@ jobs:
fail-fast: true
matrix:
variant:
- tasmota32-safeboot
- tasmota32solo1-safeboot
steps:
- uses: actions/checkout@v4
- name: Set up Python
@ -91,32 +91,27 @@ jobs:
- tasmota-sensors
- tasmota-zbbridge
- tasmota32
- tasmota32solo1
- tasmota32c2
- tasmota32c3
- tasmota32c6cdc-arduino30
- tasmota32c6
- tasmota32s2
- tasmota32s2cdc
- tasmota32s3
- tasmota32-zbbrdgpro
- tasmota-zigbee
- tasmota32-bluetooth
- tasmota32-core2
- tasmota32-nspanel
- tasmota32-display
- tasmota32-ir
- tasmota32-lvgl
- tasmota32c3cdc
- tasmota32s2cdc
- tasmota32s3cdc
- tasmota32solo1
- tasmota32solo1-safeboot
- tasmota32c3-safeboot
- tasmota32c3cdc-safeboot
- tasmota32-safeboot
- tasmota32s2-safeboot
- tasmota32s2cdc-safeboot
- tasmota32s3-safeboot
- tasmota32s3cdc-safeboot
- tasmota32c2-safeboot
- tasmota32c3-safeboot
- tasmota32c6-safeboot
- tasmota32c6cdc-safeboot
steps:
- uses: actions/checkout@v4
- name: Set up Python
@ -130,7 +125,6 @@ jobs:
pip install -U platformio
#platformio upgrade --dev
#platformio update
cp ./platformio_tasmota_core3_env_sample.ini ./platformio_tasmota_core3_env.ini
cp ./platformio_override_sample.ini ./platformio_override.ini
- name: Run PlatformIO
run: platformio run -e ${{ matrix.variant }}

61
.github/workflows/pr_comment.yml.off vendored Normal file
View File

@ -0,0 +1,61 @@
name: Comment on pull request
on:
workflow_run:
workflows: [Tasmota CI]
types: [completed]
jobs:
pr_comment:
if: github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success'
runs-on: ubuntu-latest
steps:
- uses: actions/github-script@v7
with:
# This snippet is public-domain, taken from
# https://github.com/oprypin/nightly.link/blob/master/.github/workflows/pr-comment.yml
script: |
async function upsertComment(owner, repo, issue_number, purpose, body) {
const {data: comments} = await github.rest.issues.listComments(
{owner, repo, issue_number});
const marker = `<!-- bot: ${purpose} -->`;
body = marker + "\n" + body;
const existing = comments.filter((c) => c.body.includes(marker));
if (existing.length > 0) {
const last = existing[existing.length - 1];
core.info(`Updating comment ${last.id}`);
await github.rest.issues.updateComment({
owner, repo,
body,
comment_id: last.id,
});
} else {
core.info(`Creating a comment in issue / PR #${issue_number}`);
await github.rest.issues.createComment({issue_number, body, owner, repo});
}
}
const {owner, repo} = context.repo;
const run_id = ${{github.event.workflow_run.id}};
const pull_requests = ${{ toJSON(github.event.workflow_run.pull_requests) }};
if (!pull_requests.length) {
return core.error("This workflow doesn't match any pull requests!");
}
const artifacts = await github.paginate(
github.rest.actions.listWorkflowRunArtifacts, {owner, repo, run_id});
if (!artifacts.length) {
return core.error(`No artifacts found`);
}
let body = `Download the artifacts for this pull request:\n`;
for (const art of artifacts) {
body += `\n* [${art.name}.zip](https://nightly.link/${owner}/${repo}/actions/artifacts/${art.id}.zip)`;
}
core.info("Review thread message body:", body);
for (const pr of pull_requests) {
await upsertComment(owner, repo, pr.number,
"nightly-link", body);
}

551
BUILDS.md
View File

@ -2,282 +2,279 @@
l = lite, t = tasmota (ESP8266 / ESP32), k = knx, s = sensors, i = ir, d = display
Note: `minimal` variant is not listed as it shouldn't be used outside of the [upgrading](https://tasmota.github.io/docs/Upgrading/) process.
Note: the `minimal` variant is not listed as it shouldn't be used outside of the [upgrading](https://tasmota.github.io/docs/Upgrading/) process.
| Feature or Sensor | l | t | k | s | i | d | Remarks
|---------------------------|---|-------|---|---|---|---|--------
| MY_LANGUAGE en_GB | x | x / x | x | x | x | x |
| USE_IMPROV | x | x / x | x | x | x | x |
| USE_UFILESYS | - | - / x | - | - | - | - |
| USE_ARDUINO_OTA | - | - / - | - | - | - | - |
| USE_DOMOTICZ | - | x / x | x | x | x | - |
| USE_HOME_ASSISTANT | - | - / - | - | - | - | - |
| USE_TASMOTA_DISCOVERY | x | x / x | x | x | x | x |
| USE_MQTT_TLS* | - | - / x | - | - | - | - |
| USE_MQTT_AWS_IOT | - | - / - | - | - | - | - |
| USE_4K_RSA | - | - / - | - | - | - | - |
| USE_TELEGRAM | - | - / - | - | - | - | - |
| USE_KNX | - | - / x | x | - | - | - |
| USE_WEBSERVER | x | x / x | x | x | x | x |
| USE_WEBSEND_RESPONSE | - | - / - | - | - | - | - |
| USE_EMULATION_HUE | x | x / x | - | x | - | - |
| USE_EMULATION_WEMO | x | x / x | - | x | - | - |
| USE_DISCOVERY | - | - / - | - | - | - | - |
| WEBSERVER_ADVERTISE | - | x / - | x | - | - | x |
| MQTT_HOST_DISCOVERY | - | - / - | - | - | - | - |
| USE_TIMERS | x | x / x | x | x | x | x |
| USE_TIMERS_WEB | x | x / x | x | x | x | x |
| USE_SUNRISE | x | x / x | x | x | x | x |
| USE_RULES | x | x / x | x | x | x | x |
| USE_SCRIPT | - | - / - | - | - | - | - |
| USE_EXPRESSION | - | - / x | - | - | - | - | Every ESP32 + ESP8266 > 1MB
| SUPPORT_IF_STATEMENT | - | - / x | - | - | - | - | Every ESP32 + ESP8266 > 1MB
| USE_HOTPLUG | - | - / - | - | - | - | - |
| USE_PROMETHEUS | - | - / - | - | - | - | - |
| USE_PING | - | - / - | - | - | - | - |
| | | | | | | |
| Feature or Sensor | l | t | k | s | i | d | Remarks
| ROTARY_V1 | - | x / x | - | x | - | - |
| USE_SONOFF_RF | - | x / - | x | x | - | - |
| USE_RF_FLASH | - | x / - | x | x | - | - |
| USE_SONOFF_SC | - | x / - | x | x | - | - |
| USE_TUYA_MCU | x | x / - | x | x | - | x |
| USE_ARMTRONIX_DIMMERS | - | x / - | x | - | - | - |
| USE_PS_16_DZ | - | x / - | x | - | - | - |
| USE_SONOFF_IFAN | - | x / - | x | - | - | - |
| USE_BUZZER | - | x / x | x | x | - | - |
| USE_ARILUX_RF | - | x / - | x | - | - | - |
| USE_SHUTTER | - | x / x | x | - | - | - |
| USE_DEEPSLEEP | - | x / x | - | x | - | - |
| USE_EXS_DIMMER | - | x / - | x | - | - | - |
| USE_DEVICE_GROUPS | - | x / x | - | - | - | - |
| USE_PWM_DIMMER | - | x / - | x | - | - | - |
| USE_KEELOQ | - | - / - | - | - | - | - |
| USE_SONOFF_D1 | - | x / - | x | - | - | - |
| USE_SHELLY_DIMMER | - | x / - | - | - | - | - |
| USE_AC_ZERO_CROSS_DIMMER | - | x / x | x | x | x | x |
| | | | | | | |
| Feature or Sensor | l | t | k | s | i | d | Remarks
| USE_LIGHT | x | x / x | x | x | x | x |
| USE_WS2812 | - | x / x | x | x | - | x |
| USE_WS2812_DMA | - | - / - | - | - | - | - |
| USE_MY92X1 | - | x / - | x | x | - | x |
| USE_SM16716 | - | x / - | x | x | - | x |
| USE_SM2135 | - | x / - | x | x | - | x |
| USE_SM2335 | - | x / - | x | x | - | x |
| USE_BP5758D | - | x / - | x | x | - | x |
| USE_BP1658CJ | - | x / - | x | x | - | x |
| USE_SONOFF_L1 | - | x / - | x | x | - | x |
| USE_ELECTRIQ_MOODL | - | x / - | x | x | - | x |
| | | | | | | |
| USE_ENERGY_SENSOR | - | x / x | x | x | - | - |
| USE_ENERGY_DUMMY | - | x / x | x | x | - | - |
| USE_PZEM004T | - | x / x | x | x | - | - |
| USE_PZEM_AC | - | x / x | x | x | - | - |
| USE_PZEM_DC | - | x / x | x | x | - | - |
| USE_MCP39F501 | - | x / - | x | x | - | - |
| USE_SDM72 | - | - / x | - | x | - | - |
| USE_SDM120 | - | - / x | - | x | - | - |
| USE_SDM230 | - | - / x | - | - | - | - |
| USE_SDM630 | - | - / x | - | x | - | - |
| USE_DDS2382 | - | - / x | - | x | - | - |
| USE_DDSU666 | - | - / x | - | x | - | - |
| USE_SOLAX_X1 | - | - / - | - | - | - | - |
| USE_LE01MR | - | - / - | - | - | - | - |
| USE_BL09XX | - | x / x | x | x | - | - |
| USE_TELEINFO | - | - / - | - | - | - | - |
| USE_IEM3000 | - | - / - | - | - | - | - |
| USE_WE517 | - | - / x | - | - | - | - |
| USE_MODBUS_ENERGY | - | - / x | - | - | - | - |
| | | | | | | |
| USE_ADC_VCC | x | - / - | - | - | x | - |
| USE_COUNTER | - | x / x | x | x | - | x |
| USE_DS18x20 | - | x / x | x | x | - | x |
| USE_DHT | - | x / x | x | x | - | x |
| USE_MAX31855 | - | - / x | - | x | - | - |
| USE_MAX31865 | - | - / - | - | - | - | - |
| USE_THERMOSTAT | - | - / - | - | - | - | - |
| USE_LMT01 | - | - / x | - | x | - | - |
| | | | | | | |
| Feature or Sensor | l | t | k | s | i | d | Remarks
| USE_I2C | - | x / x | x | x | - | x |
| USE_SHT | - | - / x | - | x | - | - |
| USE_HTU | - | - / x | - | x | - | - |
| USE_BMP | - | - / x | - | x | - | - |
| USE_BME68X | - | - / x | - | x | - | - |
| USE_BH1750 | - | - / x | - | x | - | - |
| USE_VEML6070 | - | - / x | - | x | - | - |
| USE_ADS1115 | - | - / x | - | x | - | - |
| USE_INA219 | - | - / x | - | x | - | - |
| USE_INA226 | - | - / - | - | - | - | - |
| USE_INA3221 | - | - / - | - | - | - | - |
| USE_SHT3X | - | - / x | - | x | - | - |
| USE_TSL2561 | - | - / - | - | - | - | - |
| USE_TSL2591 | - | - / - | - | - | - | - |
| USE_MGS | - | - / x | - | x | - | - |
| USE_SGP30 | - | - / x | - | x | - | - |
| USE_SGP40 | - | - / x | - | x | - | - |
| USE_SGP4X | - | - / x | - | - | - | - |
| USE_SEN5X | - | - / x | - | x | - | - |
| USE_SI1145 | - | - / - | - | - | - | - |
| USE_LM75AD | - | - / x | - | x | - | - |
| USE_APDS9960 | - | - / - | - | - | - | - |
| USE_MCP230xx | - | - / - | - | - | - | - |
| USE_MCP23XXX_DRV | - | - / - | - | - | - | - |
| USE_PCA9632 | - | - / - | - | - | - | - |
| USE_PCA9685 | - | - / - | - | - | - | - |
| USE_PCA9685_V2 | - | - / - | - | - | - | - |
| USE_MPR121 | - | - / - | - | - | - | - |
| USE_CCS811 | - | - / - | - | x | - | - |
| USE_CCS811_V2 | - | - / x | - | - | - | - |
| USE_ENS16x | - | - / - | - | - | - | - |
| USE_ENS210 | - | - / - | - | - | - | - |
| USE_MPU6050 | - | - / - | - | - | - | - |
| USE_DS3231 | - | - / - | - | - | - | - |
| USE_MGC3130 | - | - / - | - | - | - | - |
| USE_MAX44009 | - | - / - | - | - | - | - |
| USE_SCD30 | - | - / x | - | x | - | - |
| USE_SCD40 | - | - / x | - | - | - | - |
| USE_SPS30 | - | - / - | - | - | - | - |
| USE_ADE7880 | - | - / - | - | - | - | - |
| USE_ADE7953 | - | x / x | x | x | - | x |
| USE_VL53L0X | - | - / x | - | x | - | - |
| USE_VL53L1X | - | - / - | - | - | - | - |
| USE_MLX90614 | - | - / - | - | - | - | - |
| USE_CHIRP | - | - / - | - | - | - | - |
| USE_PAJ7620 | - | - / - | - | - | - | - |
| USE_PCF8574 | - | - / - | - | - | - | - |
| USE_PMSA003I | - | - / - | - | - | - | - |
| USE_LOX_O2 | - | - / x | - | x | - | - |
| USE_GDK101 | - | - / - | - | - | - | - |
| USE_TC74 | - | - / - | - | - | - | - |
| USE_PCA9557 | - | - / - | - | - | - | - |
| | | | | | | |
| Feature or Sensor | l | t | k | s | i | d | Remarks
| USE_HIH6 | - | - / x | - | x | - | - |
| USE_DHT12 | - | - / x | - | x | - | - |
| USE_DS1624 | - | - / x | - | x | - | - |
| USE_AHT1x | - | - / - | - | - | - | - |
| USE_HDC1080 | - | - / - | - | - | - | - |
| USE_WEMOS_MOTOR_V1 | - | - / x | - | x | - | - |
| USE_IAQ | - | - / x | - | x | - | - |
| USE_AS3935 | - | - / x | - | x | - | - |
| USE_VEML6075 | - | - / - | - | - | - | - |
| USE_VEML7700 | - | - / - | - | - | - | - |
| USE_MCP9808 | - | - / - | - | - | - | - |
| USE_MLX90640 | - | - / - | - | - | - | - |
| USE_HP303B | - | - / - | - | - | - | - |
| USE_EZOCO2 | - | - / - | - | - | - | - |
| USE_EZODO | - | - / - | - | - | - | - |
| USE_EZOEC | - | - / - | - | - | - | - |
| USE_EZOFLO | - | - / - | - | - | - | - |
| USE_EZOHUM | - | - / - | - | - | - | - |
| USE_EZOO2 | - | - / - | - | - | - | - |
| USE_EZOORP | - | - / - | - | - | - | - |
| USE_EZOPH | - | - / - | - | - | - | - |
| USE_EZOPMP | - | - / - | - | - | - | - |
| USE_EZOPRS | - | - / - | - | - | - | - |
| USE_EZORGB | - | - / - | - | - | - | - |
| USE_EZORTD | - | - / - | - | - | - | - |
| USE_SEESAW_SOIL | - | - / - | - | - | - | - |
| USE_TOF10120 | - | - / - | - | - | - | - |
| USE_BM8563 | - | - / - | - | - | - | - |
| USE_AM2320 | - | - / - | - | - | - | - |
| USE_T67XX | - | - / - | - | - | - | - |
| USE_HM330X | - | - / - | - | - | - | - |
| USE_HDC2010 | - | - / - | - | - | - | - |
| USE_PCF85363 | - | - / - | - | - | - | - |
| USE_DS3502 | - | - / - | - | - | - | - |
| USE_HYT | - | - / - | - | - | - | - |
| USE_LUXV30B | - | - / - | - | - | - | - |
| USE_HMC5883L | - | - / - | - | - | - | - |
| USE_QMC5883L | - | - / - | - | - | - | - |
| | | | | | | |
| Feature or Sensor | l | t | k | s | i | d | Remarks
| USE_SPI | - | - / - | - | - | - | x |
| USE_RC522 | - | - / - | - | - | - | - |
| USE_CANSNIFFER | - | - / - | - | - | - | - |
| USE_MHZ19 | - | - / x | - | x | - | - |
| USE_SENSEAIR | - | - / x | - | x | - | - |
| USE_PMS5003 | - | - / x | - | x | - | - |
| USE_NOVA_SDS | - | - / x | - | x | - | - |
| USE_HPMA | - | - / x | - | x | - | - |
| USE_SERIAL_BRIDGE | - | x / x | x | x | - | x |
| USE_MODBUS_BRIDGE | - | - / x | - | - | - | - |
| USE_MP3_PLAYER | - | - / x | - | x | - | - |
| USE_AZ7798 | - | - / - | - | - | - | - |
| USE_PN532_HSU | - | - / x | - | x | - | - |
| USE_RDM6300 | - | - / x | - | x | - | - |
| USE_IBEACON | - | - / x | - | x | - | - |
| USE_GPS | - | - / - | - | - | - | - |
| USE_HM10 | - | - / - | - | x | - | - |
| USE_HRXL | - | - / x | - | x | - | - |
| USE_TASMOTA_CLIENT | - | - / - | - | - | - | - |
| USE_OPENTHERM | - | - / - | - | - | - | - |
| USE_MIEL_HVAC | - | - / - | - | - | - | - |
| USE_PROJECTOR_CTRL | - | - / - | - | - | - | - |
| USE_AS608 | - | - / - | - | - | - | - |
| USE_LD2410 | - | - / - | - | - | - | - |
| USE_GM861 | - | - / - | - | - | - | - |
| USE_TCP_BRIDGE | - | - / - | - | - | - | - | zbbridge / zbbrdgpro
| | | | | | | |
| USE_NRF24 | - | - / - | - | - | - | - |
| USE_MIBLE | - | - / - | - | - | - | - |
| USE_ZIGBEE | - | - / - | - | - | - | - |
| USE_ZIGBEE_ZNP | - | - / - | - | - | - | - |
| USE_ZIGBEE_EZSP | - | - / - | - | - | - | - | Sonoff ZbBridge
| | | | | | | |
| USE_IR_REMOTE | - | x / - | x | x | x | x |
| USE_IR_RECEIVE | - | x / - | x | x | x | x |
| USE_IR_REMOTE_FULL | - | - / - | - | - | x | - | Enable ALL protocols
| | | | | | | |
| USE_SR04 | - | - / - | - | x | - | - |
| USE_ME007 | - | - / - | - | - | - | - |
| USE_DYP | - | - / - | - | - | - | - |
| USE_TM1638 | - | - / x | - | x | - | - |
| USE_HX711 | - | - / x | - | x | - | - |
| USE_TX2x_WIND_SENSOR | - | - / - | - | - | - | - |
| USE_WINDMETER | - | - / - | - | - | - | - |
| USE_RC_SWITCH | - | - / x | - | x | - | - |
| USE_RF_SENSOR | - | - / x | - | x | - | - | AlectoV2 only
| USE_HRE | - | - / x | - | x | - | - |
| USE_A4988_STEPPER | - | - / - | - | - | - | - |
| USE_NEOPOOL | - | - / - | - | - | - | - |
| USE_FLOWRATEMETER | - | - / - | - | - | - | - |
| | | | | | | |
| Feature or Sensor | l | t | k | s | i | d | Remarks
| USE_DISPLAY | - | - / - | - | - | - | x |
| USE_DISPLAY_LCD | - | - / - | - | - | - | x |
| USE_DISPLAY_SSD1306 | - | - / - | - | - | - | x |
| USE_DISPLAY_MATRIX | - | - / - | - | - | - | x |
| USE_DISPLAY_SH1106 | - | - / - | - | - | - | x |
| USE_DISPLAY_ILI9341 | - | - / - | - | - | - | x |
| USE_DISPLAY_EPAPER_29 | - | - / - | - | - | - | x |
| USE_DISPLAY_EPAPER_42 | - | - / - | - | - | - | x |
| USE_DISPLAY_SSD1351 | - | - / - | - | - | - | x |
| USE_DISPLAY_RA8876 | - | - / - | - | - | - | x |
| USE_DISPLAY_ST7789 | - | - / - | - | - | - | x |
| USE_DISPLAY_TM1637 | - | - / - | - | - | - | x |
| USE_DISPLAY_TM1621_SONOFF | - | - / x | - | - | - | - |
| USE_DISPLAY_TM1650 | - | - / - | - | - | - | - |
| | | | | | | |
| USE_FT5206 | - | - / - | - | - | - | - |
| USE_FTC532 | - | - / - | - | - | - | - |
| USE_BS814A2 | - | - / - | - | - | - | - |
| | | | | | | |
| ESP32 Feature | l | t | k | s | i | d | Remarks
| USE_HALLEFFECT | | / x | | | | |
| USE_MI_ESP32 | | / x | | | | | See SetOption115
| USE_IBEACON_ESP32 | | / - | | | | |
| USE_WEBCAM | | / - | | | | |
| USE_ETHERNET | | / x | | | | |
| USE_I2S_AUDIO | | / - | | | | |
| USE_TTGO_WATCH | | / - | | | | |
| USE_SONOFF_SPM | | / x | | | | |
| USE_DISPLAY_TM1621_SONOFF | | / x | | | | |
| USE_SHELLY_PRO | | / x | | | | |
| USE_DALI | | / - | | | | |
| USE_DINGTIAN_RELAY | | / - | | | | |
| USE_MATTER_DEVICE | | / x | | | | | See SetOption151
| **Feature or Sensor** | **l** | **t** | **k** | **s** | **i** | **d** | **Remarks** |
| ------------------------- | ----- | ----- | ----- | ----- | ----- | ----- | --------------------------- |
| MY_LANGUAGE en_GB | x | x / x | x | x | x | x |
| USE_IMPROV | x | x / x | x | x | x | x |
| USE_UFILESYS | - | - / x | - | - | - | - |
| USE_ARDUINO_OTA | - | - / - | - | - | - | - |
| USE_DOMOTICZ | - | x / x | x | x | x | - |
| USE_HOME_ASSISTANT | - | - / - | - | - | - | - |
| USE_TASMOTA_DISCOVERY | x | x / x | x | x | x | x |
| USE_MQTT_TLS\* | - | - / x | - | - | - | - |
| USE_MQTT_AWS_IOT | - | - / - | - | - | - | - |
| USE_4K_RSA | - | - / - | - | - | - | - |
| USE_TELEGRAM | - | - / - | - | - | - | - |
| USE_KNX | - | - / x | x | - | - | - |
| USE_WEBSERVER | x | x / x | x | x | x | x |
| USE_WEBSEND_RESPONSE | - | - / - | - | - | - | - |
| USE_EMULATION_HUE | x | x / x | - | x | - | - |
| USE_EMULATION_WEMO | x | x / x | - | x | - | - |
| USE_DISCOVERY | - | - / - | - | - | - | - |
| WEBSERVER_ADVERTISE | - | x / - | x | - | - | x |
| MQTT_HOST_DISCOVERY | - | - / - | - | - | - | - |
| USE_TIMERS | x | x / x | x | x | x | x |
| USE_TIMERS_WEB | x | x / x | x | x | x | x |
| USE_SUNRISE | x | x / x | x | x | x | x |
| USE_RULES | x | x / x | x | x | x | x |
| USE_SCRIPT | - | - / - | - | - | - | - |
| USE_EXPRESSION | - | - / x | - | - | - | - | Every ESP32 + ESP8266 > 1MB |
| SUPPORT_IF_STATEMENT | - | - / x | - | - | - | - | Every ESP32 + ESP8266 > 1MB |
| USE_HOTPLUG | - | - / - | - | - | - | - |
| USE_PROMETHEUS | - | - / - | - | - | - | - |
| USE_PING | - | - / - | - | - | - | - |
| | | | | | | |
| **Feature or Sensor** | **l** | **t** | **k** | **s** | **i** | **d** | **Remarks** |
| ROTARY_V1 | - | x / x | - | x | - | - |
| USE_SONOFF_RF | - | x / - | x | x | - | - |
| USE_RF_FLASH | - | x / - | x | x | - | - |
| USE_SONOFF_SC | - | x / - | x | x | - | - |
| USE_TUYA_MCU | x | x / - | x | x | - | x |
| USE_ARMTRONIX_DIMMERS | - | x / - | x | - | - | - |
| USE_PS_16_DZ | - | x / - | x | - | - | - |
| USE_SONOFF_IFAN | - | x / - | x | - | - | - |
| USE_BUZZER | - | x / x | x | x | - | - |
| USE_ARILUX_RF | - | x / - | x | - | - | - |
| USE_SHUTTER | - | x / x | x | - | - | - |
| USE_DEEPSLEEP | - | x / x | - | x | - | - |
| USE_EXS_DIMMER | - | x / - | x | - | - | - |
| USE_DEVICE_GROUPS | - | x / x | - | - | - | - |
| USE_PWM_DIMMER | - | x / - | x | - | - | - |
| USE_KEELOQ | - | - / - | - | - | - | - |
| USE_SONOFF_D1 | - | x / - | x | - | - | - |
| USE_SHELLY_DIMMER | - | x / - | - | - | - | - |
| USE_AC_ZERO_CROSS_DIMMER | - | x / x | x | x | x | x |
| | | | | | | |
| **Feature or Sensor** | **l** | **t** | **k** | **s** | **i** | **d** | **Remarks** |
| USE_LIGHT | x | x / x | x | x | x | x |
| USE_WS2812 | - | x / x | x | x | - | x |
| USE_WS2812_DMA | - | - / - | - | - | - | - |
| USE_MY92X1 | - | x / - | x | x | - | x |
| USE_SM16716 | - | x / - | x | x | - | x |
| USE_SM2135 | - | x / - | x | x | - | x |
| USE_SM2335 | - | x / - | x | x | - | x |
| USE_BP5758D | - | x / - | x | x | - | x |
| USE_BP1658CJ | - | x / - | x | x | - | x |
| USE_SONOFF_L1 | - | x / - | x | x | - | x |
| USE_ELECTRIQ_MOODL | - | x / - | x | x | - | x |
| | | | | | | |
| USE_ENERGY_SENSOR | - | x / x | x | x | - | - |
| USE_ENERGY_DUMMY | - | x / x | x | x | - | - |
| USE_PZEM004T | - | x / x | x | x | - | - |
| USE_PZEM_AC | - | x / x | x | x | - | - |
| USE_PZEM_DC | - | x / x | x | x | - | - |
| USE_MCP39F501 | - | x / - | x | x | - | - |
| USE_SDM72 | - | - / x | - | x | - | - |
| USE_SDM120 | - | - / x | - | x | - | - |
| USE_SDM230 | - | - / x | - | - | - | - |
| USE_SDM630 | - | - / x | - | x | - | - |
| USE_DDS2382 | - | - / x | - | x | - | - |
| USE_DDSU666 | - | - / x | - | x | - | - |
| USE_SOLAX_X1 | - | - / - | - | - | - | - |
| USE_LE01MR | - | - / - | - | - | - | - |
| USE_BL09XX | - | x / x | x | x | - | - |
| USE_TELEINFO | - | - / - | - | - | - | - |
| USE_IEM3000 | - | - / - | - | - | - | - |
| USE_WE517 | - | - / x | - | - | - | - |
| USE_MODBUS_ENERGY | - | - / x | - | - | - | - |
| | | | | | | |
| USE_ADC_VCC | x | - / - | - | - | x | - |
| USE_COUNTER | - | x / x | x | x | - | x |
| USE_DS18x20 | - | x / x | x | x | - | x |
| USE_DHT | - | x / x | x | x | - | x |
| USE_MAX31855 | - | - / x | - | x | - | - |
| USE_MAX31865 | - | - / - | - | - | - | - |
| USE_THERMOSTAT | - | - / - | - | - | - | - |
| USE_LMT01 | - | - / x | - | x | - | - |
| | | | | | | |
| **Feature or Sensor** | **l** | **t** | **k** | **s** | **i** | **d** | **Remarks** |
| USE_I2C | - | x / x | x | x | - | x |
| USE_SHT | - | - / x | - | x | - | - |
| USE_HTU | - | - / x | - | x | - | - |
| USE_BMP | - | - / x | - | x | - | - |
| USE_BME68X | - | - / x | - | x | - | - |
| USE_BH1750 | - | - / x | - | x | - | - |
| USE_VEML6070 | - | - / x | - | x | - | - |
| USE_ADS1115 | - | - / x | - | x | - | - |
| USE_INA219 | - | - / x | - | x | - | - |
| USE_INA226 | - | - / - | - | - | - | - |
| USE_INA3221 | - | - / - | - | - | - | - |
| USE_SHT3X | - | - / x | - | x | - | - |
| USE_TSL2561 | - | - / - | - | - | - | - |
| USE_TSL2591 | - | - / - | - | - | - | - |
| USE_MGS | - | - / x | - | x | - | - |
| USE_SGP30 | - | - / x | - | x | - | - |
| USE_SGP40 | - | - / x | - | x | - | - |
| USE_SGP4X | - | - / x | - | - | - | - |
| USE_SEN5X | - | - / x | - | x | - | - |
| USE_SI1145 | - | - / - | - | - | - | - |
| USE_LM75AD | - | - / x | - | x | - | - |
| USE_APDS9960 | - | - / - | - | - | - | - |
| USE_MCP230xx | - | - / - | - | - | - | - |
| USE_MCP23XXX_DRV | - | - / - | - | - | - | - |
| USE_PCA9632 | - | - / - | - | - | - | - |
| USE_PCA9685 | - | - / - | - | - | - | - |
| USE_PCA9685_V2 | - | - / - | - | - | - | - |
| USE_MPR121 | - | - / - | - | - | - | - |
| USE_CCS811 | - | - / - | - | x | - | - |
| USE_CCS811_V2 | - | - / x | - | - | - | - |
| USE_ENS16x | - | - / - | - | - | - | - |
| USE_ENS210 | - | - / - | - | - | - | - |
| USE_MPU6050 | - | - / - | - | - | - | - |
| USE_DS3231 | - | - / - | - | - | - | - |
| USE_MGC3130 | - | - / - | - | - | - | - |
| USE_MAX44009 | - | - / - | - | - | - | - |
| USE_SCD30 | - | - / x | - | x | - | - |
| USE_SCD40 | - | - / x | - | - | - | - |
| USE_SPS30 | - | - / - | - | - | - | - |
| USE_ADE7880 | - | - / - | - | - | - | - |
| USE_ADE7953 | - | x / x | x | x | - | x |
| USE_VL53L0X | - | - / x | - | x | - | - |
| USE_VL53L1X | - | - / - | - | - | - | - |
| USE_MLX90614 | - | - / - | - | - | - | - |
| USE_CHIRP | - | - / - | - | - | - | - |
| USE_PAJ7620 | - | - / - | - | - | - | - |
| USE_PCF8574 | - | - / - | - | - | - | - |
| USE_PMSA003I | - | - / - | - | - | - | - |
| USE_LOX_O2 | - | - / x | - | x | - | - |
| USE_GDK101 | - | - / - | - | - | - | - |
| USE_TC74 | - | - / - | - | - | - | - |
| USE_PCA9557 | - | - / - | - | - | - | - |
| | | | | | | |
| **Feature or Sensor** | **l** | **t** | **k** | **s** | **i** | **d** | **Remarks** |
| USE_HIH6 | - | - / x | - | x | - | - |
| USE_DHT12 | - | - / x | - | x | - | - |
| USE_DS1624 | - | - / x | - | x | - | - |
| USE_AHT1x | - | - / - | - | - | - | - |
| USE_HDC1080 | - | - / - | - | - | - | - |
| USE_WEMOS_MOTOR_V1 | - | - / x | - | x | - | - |
| USE_IAQ | - | - / x | - | x | - | - |
| USE_AS3935 | - | - / x | - | x | - | - |
| USE_VEML6075 | - | - / - | - | - | - | - |
| USE_VEML7700 | - | - / - | - | - | - | - |
| USE_MCP9808 | - | - / - | - | - | - | - |
| USE_MLX90640 | - | - / - | - | - | - | - |
| USE_HP303B | - | - / - | - | - | - | - |
| USE_EZOCO2 | - | - / - | - | - | - | - |
| USE_EZODO | - | - / - | - | - | - | - |
| USE_EZOEC | - | - / - | - | - | - | - |
| USE_EZOFLO | - | - / - | - | - | - | - |
| USE_EZOHUM | - | - / - | - | - | - | - |
| USE_EZOO2 | - | - / - | - | - | - | - |
| USE_EZOORP | - | - / - | - | - | - | - |
| USE_EZOPH | - | - / - | - | - | - | - |
| USE_EZOPMP | - | - / - | - | - | - | - |
| USE_EZOPRS | - | - / - | - | - | - | - |
| USE_EZORGB | - | - / - | - | - | - | - |
| USE_EZORTD | - | - / - | - | - | - | - |
| USE_SEESAW_SOIL | - | - / - | - | - | - | - |
| USE_TOF10120 | - | - / - | - | - | - | - |
| USE_BM8563 | - | - / - | - | - | - | - |
| USE_AM2320 | - | - / - | - | - | - | - |
| USE_T67XX | - | - / - | - | - | - | - |
| USE_HM330X | - | - / - | - | - | - | - |
| USE_HDC2010 | - | - / - | - | - | - | - |
| USE_PCF85363 | - | - / - | - | - | - | - |
| USE_DS3502 | - | - / - | - | - | - | - |
| USE_HYT | - | - / - | - | - | - | - |
| USE_LUXV30B | - | - / - | - | - | - | - |
| USE_HMC5883L | - | - / - | - | - | - | - |
| USE_QMC5883L | - | - / - | - | - | - | - |
| | | | | | | |
| **Feature or Sensor** | **l** | **t** | **k** | **s** | **i** | **d** | **Remarks** |
| USE_SPI | - | - / - | - | - | - | x |
| USE_RC522 | - | - / - | - | - | - | - |
| USE_CANSNIFFER | - | - / - | - | - | - | - |
| USE_MHZ19 | - | - / x | - | x | - | - |
| USE_SENSEAIR | - | - / x | - | x | - | - |
| USE_PMS5003 | - | - / x | - | x | - | - |
| USE_NOVA_SDS | - | - / x | - | x | - | - |
| USE_HPMA | - | - / x | - | x | - | - |
| USE_SERIAL_BRIDGE | - | x / x | x | x | - | x |
| USE_MODBUS_BRIDGE | - | - / x | - | - | - | - |
| USE_MP3_PLAYER | - | - / x | - | x | - | - |
| USE_AZ7798 | - | - / - | - | - | - | - |
| USE_PN532_HSU | - | - / x | - | x | - | - |
| USE_RDM6300 | - | - / x | - | x | - | - |
| USE_IBEACON | - | - / x | - | x | - | - |
| USE_GPS | - | - / - | - | - | - | - |
| USE_HM10 | - | - / - | - | x | - | - |
| USE_HRXL | - | - / x | - | x | - | - |
| USE_TASMOTA_CLIENT | - | - / - | - | - | - | - |
| USE_OPENTHERM | - | - / - | - | - | - | - |
| USE_MIEL_HVAC | - | - / - | - | - | - | - |
| USE_PROJECTOR_CTRL | - | - / - | - | - | - | - |
| USE_AS608 | - | - / - | - | - | - | - |
| USE_LD2410 | - | - / - | - | - | - | - |
| USE_GM861 | - | - / - | - | - | - | - |
| USE_TCP_BRIDGE | - | - / - | - | - | - | - | zbbridge / zbbrdgpro |
| | | | | | | |
| USE_NRF24 | - | - / - | - | - | - | - |
| USE_MIBLE | - | - / - | - | - | - | - |
| USE_ZIGBEE | - | - / - | - | - | - | - |
| USE_ZIGBEE_ZNP | - | - / - | - | - | - | - |
| USE_ZIGBEE_EZSP | - | - / - | - | - | - | - | Sonoff ZbBridge |
| | | | | | | |
| USE_IR_REMOTE | - | x / - | x | x | x | x |
| USE_IR_RECEIVE | - | x / - | x | x | x | x |
| USE_IR_REMOTE_FULL | - | - / - | - | - | x | - | Enable ALL protocols |
| | | | | | | |
| USE_SR04 | - | - / - | - | x | - | - |
| USE_ME007 | - | - / - | - | - | - | - |
| USE_DYP | - | - / - | - | - | - | - |
| USE_TM1638 | - | - / x | - | x | - | - |
| USE_HX711 | - | - / x | - | x | - | - |
| USE_TX2x_WIND_SENSOR | - | - / - | - | - | - | - |
| USE_WINDMETER | - | - / - | - | - | - | - |
| USE_RC_SWITCH | - | - / x | - | x | - | - |
| USE_RF_SENSOR | - | - / x | - | x | - | - | AlectoV2 only |
| USE_HRE | - | - / x | - | x | - | - |
| USE_A4988_STEPPER | - | - / - | - | - | - | - |
| USE_NEOPOOL | - | - / - | - | - | - | - |
| USE_FLOWRATEMETER | - | - / - | - | - | - | - |
| | | | | | | |
| **Feature or Sensor** | **l** | **t** | **k** | **s** | **i** | **d** | **Remarks** |
| USE_DISPLAY | - | - / - | - | - | - | x |
| USE_DISPLAY_LCD | - | - / - | - | - | - | x |
| USE_DISPLAY_MATRIX | - | - / - | - | - | - | x |
| USE_DISPLAY_EPAPER_29 | - | - / - | - | - | - | x |
| USE_DISPLAY_EPAPER_42 | - | - / - | - | - | - | x |
| USE_DISPLAY_RA8876 | - | - / - | - | - | - | x |
| USE_DISPLAY_TM1637 | - | - / - | - | - | - | x |
| USE_DISPLAY_TM1621_SONOFF | - | - / x | - | - | - | - |
| USE_DISPLAY_TM1650 | - | - / - | - | - | - | - |
| | | | | | | |
| USE_FT5206 | - | - / - | - | - | - | - |
| USE_FTC532 | - | - / - | - | - | - | - |
| USE_BS814A2 | - | - / - | - | - | - | - |
| | | | | | | |
| **ESP32 Feature** | **l** | **t** | **k** | **s** | **i** | **d** | **Remarks** |
| USE_HALLEFFECT | | / x | | | | |
| USE_MI_ESP32 | | / x | | | | | See SetOption115 |
| USE_IBEACON_ESP32 | | / - | | | | |
| USE_WEBCAM | | / - | | | | |
| USE_ETHERNET | | / x | | | | |
| USE_I2S_AUDIO | | / - | | | | |
| USE_TTGO_WATCH | | / - | | | | |
| USE_SONOFF_SPM | | / x | | | | |
| USE_DISPLAY_TM1621_SONOFF | | / x | | | | |
| USE_SHELLY_PRO | | / x | | | | |
| USE_DALI | | / - | | | | |
| USE_DINGTIAN_RELAY | | / - | | | | |
| USE_MATTER_DEVICE | | / x | | | | | See SetOption151 |
* USE_MQTT_TLS is enabled by default in every ESP32 variants
The following specific display drivers are replaced with uDisplay, see [uDisplay/uTouch documentation](https://tasmota.github.io/docs/Universal-Display-Driver/#migrating-to-udisplay): `USE_DISPLAY_ILI9341`, `USE_DISPLAY_SSD1306`, `USE_DISPLAY_SH1106`, `USE_DISPLAY_SSD1351`, `USE_DISPLAY_ST7789`
- USE_MQTT_TLS is enabled by default in every ESP32 variants

View File

@ -6,6 +6,202 @@ All notable changes to this project will be documented in this file.
## [13.4.0] 20240214
- Release Quinta
## [13.4.1.2]
### Added
- ESP32 esp32_partition_app3904k_fs3392k partition scheme for 8MB ESP32S3 (#21241)
- TCP Serial bridge GPIO type `TCP Tx En` (#21269)
- Berry `webserver.content_close()` (#21276)
- ESP32 Compile option disabling PSRam check to avoid "blinking" of GPIO 16/17 at startup (#21282)
- HASPmota demo of Renaissance Watch for 480x480 displays (#21290)
- PlatformIO target reset (#21292)
- Support for AHT30 Temperature and Humidity Sensor (#19922)
- Berry wave file recorder (#21315)
- Command ``Publish3`` to send binary data encoded as Hex, disabled in safeboot (21329)
- Support for compile time hostname with `#define WIFI_DEFAULT_HOSTNAME` (#21236)
- Berry `after_teleperiod` event matching `FUNC_AFTER_TELEPERIOD` (#21351)
### Breaking Changed
- ESP32-C3 OTA binary name from `tasmota32c3cdc.bin` to `tasmota32c3.bin` with USB HWCDC and fallback to serial (#21212)
- ESP32-C6 OTA binary name from `tasmota32c6cdc.bin` to `tasmota32c6.bin` with USB HWCDC and fallback to serial (#21212)
- ESP32-S3 OTA binary name from `tasmota32s3cdc.bin` to `tasmota32s3.bin` with USB HWCDC and fallback to serial (#21212)
### Changed
- uDisplay fast drawing on RGB displays (#21257)
- HDMI CEC synchronously sends messages (#21270)
- Refactor I2S (#21291)
- Command ``EthType`` option selection (#21317)
- Zigbee startup event triggered after plugins are loaded (#21320)
- Reduced safeboot size by 2.9KB (#21322)
- Internal macro `APP_SLEEP` to `TASMOTA_SLEEP` to specify default sleep in ms (#21324)
- ESP32 Core3 platform update from 2024.04.12 to 2024.05.10 (#21347)
- Refactor Tensorflow (#21327)
- Seriallog set to `SERIAL_LOG_LEVEL` at boot (#21363)
- TLS Letsencrypt replace R3 CA with long-term ISRG_Root_X1 CA, which works with R3 and R10-R14 (#21352)
### Fixed
- HASPmota `align` attribute and expand PNG cache (#21228)
- LVGL restore `lv_palette` functions (#21232)
- IPv6 support in safeboot (#21233)
- LVGL fix memory allocation of flush buffers (#21256)
- Neopool prevent possible multiple bus requests (#21267)
- Berry `web_add_handler` called before `Webserver` is initialized (#21272)
- Put back wifi IPv6 workaround (#21274)
- Async HMDI CEC (#21287)
- Berry `math.inf`, `math.isinf()` and fixed json ouput for `inf` and `nan` (#21304)
- Compilation of Ethernet when SPI drivers are disabled (#21321)
- Conflicting log_level definitions in NimBLE (#21337)
- Avoid unwanted OTA upgrade when safeboot starts for the first time (#21360)
- Matter broken NOCStruct types preventing pairing with HA (#21365)
### Removed
- LVGL disabled vector graphics (#21242)
- ESP32 IDF 4.4 based I2S code (#21188)
- Crash recorder from safeboot (#21332)
## [13.4.1.1] 20240418
### Added
- HASPmota `dropdown_list` and fixes (#21208)
- Support for SPL06_007 pressure and temperature sensor (#21185)
### Breaking Changed
- ESP32 Ethernet Phy Type number for DM9051 from 4 to 10 (#21204)
### Changed
- ESP32 Framework (Arduino Core) from v2.0.15 to v3.0.0 (#21180)
- ESP32 Core3 platform update from 2024.04.11 to 2024.04.12 (#21199)
### Fixed
- HASPmota dropdown class "options" attribute (#21203)
- ESP8266 physical button/switch control when no rules activated (#21187)
### Removed
- Support for ESP32 Arduino Core 2 (#21180)
- SSD1351 driver replaced with uDisplay (#21184)
- ST7789 driver replaced with uDisplay (#21184)
## [13.4.0.4] 20240415
### Added
- Command ``PowerLock`` to disable power control of selected outputs (#21081)
- Command ``Wifi 6`` to enable 11ax on ESP32 Core3
- Berry `flash.current_ota` (#21097)
### Breaking Changed
- Removed dedicated touch drivers in favour of Universal Touch driver (#21146)
### Changed
- ESP32 refactored Wifi for ESP32 Core3 release (#21106)
- ESP32 Core3 platform update from 2024.02.10 to 2024.04.10 (#21114)
- ESP32 Core3 platform update from 2024.04.10 to 2024.04.11 (#21142)
- SGP4x Domoticz air quality value from raw to computed (#18880)
- ESP32 Framework (Arduino Core) from v2.0.14 to v2.0.15
### Fixed
- NeoPool hydrolysis unit for Hidrolife, Bionet and Generic device (#21098)
- M5Core2 LoRa868 module receive exception
- Fade out on CCT bulb with `SO92 1` (#21159)
### Removed
- Unused `#define MQTT_DATA_STRING` support
- ILI9341 driver replaced with uDisplay (#21169)
- SSD1306 driver replaced with uDisplay (#21176)
- SSD1331 driver replaced with uDisplay (#21177)
- SSH1106 driver replaced with uDisplay (#21183)
## [13.4.0.3] 20240402
### Added
- Zigbee support for attributes of type `uint48` used by energy monitoring (#20992)
- Support for single channel EU863-870 LoRaWanBridge (#17790)
- Support Azure iothub direct method (#21013)
- Added GPIO for SPI for Universal Touch Screen (#21025)
- Berry added `close()` to class `serial` (#21042)
- Support for Domoticz non-persistent ``DzIdx5`` to ``DzIdx32`` and disabling DOMOTICZ_OUT_TOPIC subscribe using command ``DzIdx0 0`` (#21019)
### Breaking Changed
- Berry loading .be file does not generated .bec anymore (#21075)
### Changed
- ESP32 LVGL library from v9.0.0 to v9.1.0 (#21008)
- berry.exe (pre-compiled for Windows) updated to latest Berry patches (#21024)
- Some `display.ini` to utouch (#21029)
- ESP32 WiFi phy modes 11n and 11ax represented as HT20, HT40 and HE20 (#19350)
- KNX format of energy to match specifications (#21074)
### Fixed
- BTHome, prep BLE5 (#20989)
- Scripter google char memory leak (#20995)
- HASPmota demo and robotocondensed fonts (#21014)
- Berry walrus bug when assigning to self (#21015)
- Too restrictive checksum checks in Lib_teleinfo (#21033)
- Color swap option for rgb displaytext (#21049)
### Removed
- Berry `print "a"` syntax no longer supported (#21048)
## [13.4.0.2] 20240318
### Added
- Berry `path.rename()` (#20840)
- HASPmota support for spangroup (styled text) (#20852)
- HASPmota support for led (#20857)
- HASPmota improve arc and img (#20894)
- Berry `string.startswith`, `string.endswith` and `%q` format (#20909)
- LVGL `lv.draw_label_dsc` and `lv_bar.get_indic_area` (#20936)
- HASPmota support for scale, percentages (#20974)
- Support for ESP32-S3 120Mhz (#20973)
- Support for MCP23S08 (#20971)
### Breaking Changed
- Drop support for old (insecure) fingerprint format (#20842)
- LVGL remove embedded typicons font (#20872)
- LVGL remove `textarea` and `spinbox` from binaries (#20916)
### Changed
- LVGL optimize fonts and add icons (#20880)
- LVGL improved readability of montserrat-10 (#20900)
- HASPmota moved to a distinct library `lv_haspmota` (#20929)
- HASPmota solidify server-side (#20938)
- Refactor Platformio script `post_esp32.py` (#20966)
### Fixed
- Berry bug when parsing ternary operator (#20839)
- HASPmota widgets line, btnmatrix, qrcode, bar, checkbox (#20881)
- Filesystem save of JSON settings data
- Berry fix walrus with member or index (#20939)
- TuyaV2 suppressed dimmer updates from MQTT (#20950)
## [13.4.0.1] 20240229
### Added
- Support for LoRa
- HASPmota `p<x>b<y>.delete` to delete an object (#20735)
- LVGL and HASPmota typicons font (#20742)
- HASPmota more attributes (#20744)
- QMC5883l check for overflow and scale reading (#20643)
- TasMesh support for LWT messages (#20392)
- Show calculated heat index if temperature and humidity is available with ``#define USE_HEAT_INDEX`` (#4771)
- Berry add explicit error log when memory allocation fails (#20807)
- Support for AMS5915/AMS6915 temperature and pressure sensors (#20814)
- IR support data larger than 64 bits (#20831)
### Changed
- ESP32 Core3 SPI ethernet support for all models
- Berry class `int64` made immutable (#20727)
- LVGL make lv_touch_3_buttons more responsive (#20728)
- ESP32 Core3 platform update from 2024.01.12 to 2024.02.10 (#20730)
- HASPmota fix and improve demo with pixel-perfect fonts (#20734)
- NeoPool webUI pH alarms (4 & 5) completed (#20743)
- Matter reduce memory usage when reading with wildcards (#20809)
- Prevent shutter MQTT broadcast with activated ShutterLock (#20827)
### Fixed
- ESP32 PWM activity on unconfigured PWM GPIOs (#20732)
- Shutter inverted using internal commands (#20752)
- HASPmota PSRAM memory leak (#20818)
- Berry Memory leak in `import re` (#20823)
## [Released]
## [13.4.0] 20240214
- Release Quinta
## [13.3.0.5] 20240214
### Added
- Internal support for persistent JSON settings using single file
@ -411,7 +607,7 @@ All notable changes to this project will be documented in this file.
- `BrRestart` now supports web handlers to work after Berry restart
### Removed
- Support for ESP32-C3 with chip rev below 3 (old development boards)
- Support for ESP32-C3 with chip revision below 0.3 (old development boards)
## [13.0.0] 20230626
- Release Qasim
@ -934,6 +1130,7 @@ All notable changes to this project will be documented in this file.
- DNS lookup for .local domains (#16273)
- Button response delay regression from v12.0.2.4 (#16319)
- Lost module name in GUI regression from v12.0.2.4 - 20220803 (#16324)
- LVGL fix descriptors Berry mapping
## [12.1.0.1] 20220825
### Added

View File

@ -84,7 +84,7 @@ In addition to @arendst the following code is mainly owned by:
| xdrv_70_1_hdmi_cec | @s-hadinger
| xdrv_71_magic_switch | @barbudor
| xdrv_72_pipsolar | @chefpro
| xdrv_73 |
| xdrv_73_lora | @arendst
| xdrv_74 |
| xdrv_75 |
| xdrv_76 |
@ -107,6 +107,7 @@ In addition to @arendst the following code is mainly owned by:
| |
| xdrv_121_gpioviewer | @arendst
| xdrv_122_file_settings_demo | @arendst
| xdrv_122_file_json_settings_demo | @arendst
| xdrv_127_debug | @arendst
| |
| Tasmota Sensors |
@ -135,7 +136,7 @@ In addition to @arendst the following code is mainly owned by:
| xsns_22_sr04 | Nuno Ferreira, @arendst
| xsns_23_me007 | Mathias Buder
| xsns_24_si1145 |
| xsns_25 |
| xsns_25_spl06-007_sensor | @rai68
| xsns_26_lm75ad | Andre Thomas
| xsns_27_apds9960 | Shawn Hymel
| xsns_28 |
@ -224,6 +225,12 @@ In addition to @arendst the following code is mainly owned by:
| xsns_108_tc74 | Michael Loftis
| xsns_109_sgp4x | Andrew Klaus
| xsns_110_max17043 | Vincent de Groot
| xsns_111_ens16x | Christoph Friese
| xsns_112_ens210 | Christoph Friese
| xsns_113_hc8 | Daniel Maier
| xsns_114_amsx915 | Bastian Urschel
| |
| xsns_127_esp32_sensors | @arendst
| |
| Libraries |
| |

View File

@ -13,9 +13,9 @@ Index | Define | Driver | Device | Address(es) | Bus2 | Descrip
2 | USE_PCF8574 | xdrv_28 | PCF8574 | 0x20 - 0x26 | | 8-bit I/O expander (address range overridable)
2 | USE_PCF8574 | xdrv_28 | PCF8574A | 0x39 - 0x3F | | 8-bit I/O expander (address range overridable)
3 | USE_DISPLAY_LCD | xdsp_01 | | 0x27, 0x3F | | LCD display
4 | USE_DISPLAY_SSD1306 | xdsp_02 | SSD1306 | 0x3C - 0x3D | | Oled display
4 | REMOVED | | | | | USE_DISPLAY_SSD1306 - REMOVED
5 | USE_DISPLAY_MATRIX | xdsp_03 | HT16K33 | 0x70 - 0x77 | | 8x8 led matrix
6 | USE_DISPLAY_SH1106 | xdsp_07 | SH1106 | 0x3C - 0x3D | | Oled display
6 | REMOVED | | SH1106 | 0x3C - 0x3D | | USE_DISPLAY_SH1106 - REMOVED
7 | USE_ADE7953 | xnrg_07 | ADE7953 | 0x38 | | Energy monitor
8 | USE_SHT | xsns_07 | SHT1X | Any | | Temperature and Humidity sensor
9 | USE_HTU | xsns_08 | HTU21 | 0x40 | Yes | Temperature and Humidity sensor
@ -123,5 +123,7 @@ Index | Define | Driver | Device | Address(es) | Bus2 | Descrip
83 | USE_MAX17043 | xsns_110 | MAX17043 | 0x36 | | Fuel-gauge for 3.7 Volt Lipo battery
84 | USE_ENS16x | xsns_111 | ENS16x | 0x52 - 0x53 | | Gas (TVOC, eCO2) and air quality sensor
85 | USE_ENS210 | xsns_112 | ENS210 | 0x43 - 0x44 | | Temperature and humidity sensor
86 | USE_AMSX915 | xsns_114 | AMS5915 | 0x28 | | Pressure (absolute/differential) and temperature sensor
86 | USE_AMSX915 | xsns_114 | AMS6915 | 0x28 | | Pressure (absolute/differential) and temperature sensor
87 | USE_SPL06_007 | xsns_25 | SPL06-007 | 0x76 | | Pressure and temperature sensor
NOTE: Bus2 supported on ESP32 only.

View File

@ -36,9 +36,9 @@ While fallback or downgrading is common practice it was never supported due to S
This release will be supported from ESP8266/Arduino library Core version **2.7.6** due to reported security and stability issues on previous Core version. This will also support gzipped binaries.
This release will be supported from ESP32/Arduino library Core version **2.0.14**.
This release will be supported from ESP32/Arduino library Core version **3.0.0**.
Support of ESP8266 Core versions before 2.7.6 and ESP32 Core versions before 2.0.14 have been removed.
Support of ESP8266 Core versions before 2.7.6 and ESP32 Core versions before 3.0.0 have been removed.
## Support of TLS
@ -71,21 +71,25 @@ The following binary downloads have been compiled with ESP8266/Arduino library c
Above binaries are also available as gzipped version allowing faster uploads.
Latest released binaries can be downloaded from
- https://github.com/arendst/Tasmota-firmware/tree/main/release-firmware
- https://github.com/arendst/Tasmota-firmware/tree/firmware/release-firmware
- http://ota.tasmota.com/tasmota/release
Historical binaries can be downloaded from
- http://ota.tasmota.com/tasmota/release-13.4.0
- http://ota.tasmota.com/tasmota/release-14.0.0
The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmota.com/tasmota/release/tasmota.bin.gz``
### ESP32, ESP32-C3, ESP32-S2 and ESP32-S3 based
The following binary downloads have been compiled with ESP32/Arduino library core version **2.0.14**.
### ESP32, ESP32-C2, ESP32-C3, ESP32-C6, ESP32-S2 and ESP32-S3 based
The following binary downloads have been compiled with ESP32/Arduino library core version **3.0.0**.
- **tasmota32.bin** = The Tasmota version with most drivers including additional sensors and KNX for 4M+ flash. **RECOMMENDED RELEASE BINARY**
- **tasmota32xy.bin** = The Tasmota version with most drivers including additional sensors and KNX for ESP32-C3/S2/S3 and 4M+ flash.
- **tasmota32xycdc.bin** = The Tasmota version with most drivers including additional sensors and KNX for ESP32-C3/S2/S3 with serial over embedded USB CDC only and 4M+ flash.
- **tasmota32solo1.bin** = The Tasmota version with most drivers including additional sensors and KNX for single core ESP32 and 4M+ flash.
- **tasmota32s2.bin** = The Tasmota version with most drivers including additional sensors and KNX for ESP32-S2 with serial and 4M+ flash.
- **tasmota32s2cdc.bin** = The Tasmota version with most drivers including additional sensors and KNX for ESP32-S2 with serial over embedded USB CDC only and 4M+ flash.
- **tasmota32s3.bin** = The Tasmota version with most drivers including additional sensors and KNX for ESP32-S3 with USB HWCDC and fallback to serial and 4M+ flash.
- **tasmota32c2.bin** = The Tasmota version with most drivers including additional sensors and KNX for ESP32-C2 with serial and 4M+ flash.
- **tasmota32c3.bin** = The Tasmota version with most drivers including additional sensors and KNX for ESP32-C2 with USB HWCDC and fallback to serial and 4M+ flash.
- **tasmota32c6.bin** = The Tasmota version with most drivers including additional sensors and KNX for ESP32-C6 with USB HWCDC and fallback to serial and 4M+ flash.
- **tasmota32-AD.bin** to **tasmota32-VN.bin** = The Tasmota version in different languages for 4M+ flash.
- **tasmota32-bluetooth.bin** = The Bluetooth version adds BLE support for 4M+ flash.
- **tasmota32-display.bin** = The Display version without Energy Monitoring but adds display support for 4M+ flash.
@ -95,18 +99,12 @@ The following binary downloads have been compiled with ESP32/Arduino library cor
- **tasmota32-webcam.bin** = The Webcam version adds webcam support for 4M+ flash.
- **tasmota32-zbbridgepro.bin** - The Sonoff Zigbee Bridge Pro version with CC2652P firmware load support.
### ESP32-C2 and ESP32-C6 based
The following binary downloads have been compiled with ESP32/Arduino library core version **3.0.0-alpha3**.
- **tasmota32c2-arduino30.bin** = The Tasmota version with most drivers including additional sensors and KNX for ESP32-C2 and 4M+ flash.
- **tasmota32c6cdc-arduino30.bin** = The Tasmota version with most drivers including additional sensors and KNX for ESP32-C6 with serial over embedded USB CDC or hardware USB and 4M+ flash.
Latest released binaries can be downloaded from
- https://github.com/arendst/Tasmota-firmware/tree/main/release-firmware
- https://github.com/arendst/Tasmota-firmware/tree/firmware/release-firmware
- https://ota.tasmota.com/tasmota32/release
Historical binaries can be downloaded from
- https://ota.tasmota.com/tasmota32/release-13.4.0
- https://ota.tasmota.com/tasmota32/release-14.0.0
The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasmota.com/tasmota32/release/tasmota32.bin``
@ -116,100 +114,131 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm
[Complete list](BUILDS.md) of available feature and sensors.
## Changelog v13.4.0 Quinta
## Changelog v14.0.0 Rodney
### Added
- Command ``TimedPower<index> <milliseconds>[,ON|OFF|TOGGLE|BLINK]`` executes ``Power<index> [ON|OFF|TOGGLE|BLINK] `` and after <millisecond> executes ``Power<index> [OFF|ON|TOGGLE|OFF]``
- Command ``SetOption158 1`` to disable publish of ModbusReceived MQTT messages [#20678](https://github.com/arendst/Tasmota/issues/20678)
- Command ``SetOption159 1`` to enable counting on both rising and falling edge [#20712](https://github.com/arendst/Tasmota/issues/20712)
- Display of active drivers using command ``status 4``
- GPIO Viewer to see realtime GPIO states using assets from `https://ota.tasmota.com/tasmota/gpioviewer/gpio_viewer_13_4_0/` v2.0.8
- Support for CST816S touch interface [#20213](https://github.com/arendst/Tasmota/issues/20213)
- Support for Sonoff Basic R4 Magic Switch [#20247](https://github.com/arendst/Tasmota/issues/20247)
- Support negative power on BL0942 using index 5..8 [#20322](https://github.com/arendst/Tasmota/issues/20322)
- Support for pipsolar inverter [#20408](https://github.com/arendst/Tasmota/issues/20408)
- Support for HardwareSerial invert [#15461](https://github.com/arendst/Tasmota/issues/15461)
- NeoPool hydrolysis FL1 and Redox flag [#20258](https://github.com/arendst/Tasmota/issues/20258)
- SML support for IM350 [#20474](https://github.com/arendst/Tasmota/issues/20474)
- GUI sensor separators [#20495](https://github.com/arendst/Tasmota/issues/20495)
- ESP32 used UART information
- ESP32 support GPIOViewer when ``define USE_ESP32_GPIO_VIEWER`` is enabled
- ESP32 MI BLE support for Xiaomi LYWSD02MMC [#20381](https://github.com/arendst/Tasmota/issues/20381)
- ESP32 support for Shelly Plus Add-On using DS18x20 or DHT11/AM2301/DHT21/DHT22/AM2302/AM2321/SI7021 on GPIO0/1 [#20580](https://github.com/arendst/Tasmota/issues/20580)
- ESP32 MI32 Legacy initial support for sensors using BTHOME packet format [#20625](https://github.com/arendst/Tasmota/issues/20625)
- ESP32 Core3 support for SPI ethernet on DM9051, W5500 and KSZ8851
- ESP32-C3 support for GPIO11 [#18350](https://github.com/arendst/Tasmota/issues/18350)
- Berry GPIO viewer initial version using async webserver [#20416](https://github.com/arendst/Tasmota/issues/20416)
- Berry `introspect.set()` for class attributes [#20339](https://github.com/arendst/Tasmota/issues/20339)
- Berry support for `tcpclientasync` in `tcpserver` [#20401](https://github.com/arendst/Tasmota/issues/20401)
- Berry `tasmota.urlbecload(url:string) -> bool` [#20412](https://github.com/arendst/Tasmota/issues/20412)
- Berry `gpio.read_pwm` and `gpio.read_pwm_resolution` [#20414](https://github.com/arendst/Tasmota/issues/20414)
- Berry `gpio.get_pin_type` and `gpio.ger_pin_type_index` [#20415](https://github.com/arendst/Tasmota/issues/20415)
- Berry `string` to `bytes()` [#20420](https://github.com/arendst/Tasmota/issues/20420)
- Berry button to dynamically load GPIO Viewer with Berry backend [#20424](https://github.com/arendst/Tasmota/issues/20424)
- Berry `debug_panel.tapp` to display real-time heap and wifi rssi [#20436](https://github.com/arendst/Tasmota/issues/20436)
- Berry `webserver.header` to read browser sent headers [#20447](https://github.com/arendst/Tasmota/issues/20447)
- Berry provide lightweight options for `tasmota.wifi/eth/memory/rtc` [#20448](https://github.com/arendst/Tasmota/issues/20448)
- Berry `tasmota.webcolor` [#20454](https://github.com/arendst/Tasmota/issues/20454)
- Berry `debug.caller` [#20470](https://github.com/arendst/Tasmota/issues/20470)
- Berry solidification of strings longer than 255 bytes [#20529](https://github.com/arendst/Tasmota/issues/20529)
- Berry syntax coloring for Notepad++ by FransO [#20541](https://github.com/arendst/Tasmota/issues/20541)
- Berry/Zigbee web hook per device for customized status display [#20542](https://github.com/arendst/Tasmota/issues/20542)
- Berry `introspect.contains` and `bytes.addfloat` [#20635](https://github.com/arendst/Tasmota/issues/20635)
- Zigbee ``ZbEmulation`` to selectively exclude some devices from Hue/Alexa emulation [#20552](https://github.com/arendst/Tasmota/issues/20552)
- LVGL `lv.str_arr` [#20480](https://github.com/arendst/Tasmota/issues/20480)
- LVGL option to add `lv.keyboard` extra widget [#20496](https://github.com/arendst/Tasmota/issues/20496)
- HASPmota `haspmota.page_show()` to change page [#20333](https://github.com/arendst/Tasmota/issues/20333)
- HASPmota type `chart` [#20372](https://github.com/arendst/Tasmota/issues/20372)
- HASPmota support for `min` and `max` attribute in `slider` [#20582](https://github.com/arendst/Tasmota/issues/20582)
- Matter support for password for remote Tasmota devices [#20296](https://github.com/arendst/Tasmota/issues/20296)
- Matter add human readable names for TimeSync cluster [#20666](https://github.com/arendst/Tasmota/issues/20666)
- PlatformIO target reset [#21292](https://github.com/arendst/Tasmota/issues/21292)
- Command ``Wifi 6`` to enable 11ax on ESP32
- Command ``PowerLock`` to disable power control of selected outputs [#21081](https://github.com/arendst/Tasmota/issues/21081)
- Command ``Publish3`` to send binary data encoded as Hex, disabled in safeboot [#21329](https://github.com/arendst/Tasmota/issues/21329)
- Support for calculated heat index if temperature and humidity is available with ``#define USE_HEAT_INDEX`` [#4771](https://github.com/arendst/Tasmota/issues/4771)
- Support for LoRa and single channel EU863-870 LoRaWanBridge [#17790](https://github.com/arendst/Tasmota/issues/17790)
- Support for AMS5915/AMS6915 temperature and pressure sensors [#20814](https://github.com/arendst/Tasmota/issues/20814)
- Support for LWT messages in TasMesh [#20392](https://github.com/arendst/Tasmota/issues/20392)
- Support IR data larger than 64 bits [#20831](https://github.com/arendst/Tasmota/issues/20831)
- Support for MCP23S08 [#20971](https://github.com/arendst/Tasmota/issues/20971)
- Support for ESP32-S3 120Mhz [#20973](https://github.com/arendst/Tasmota/issues/20973)
- Support Azure iothub direct method [#21013](https://github.com/arendst/Tasmota/issues/21013)
- Support for Domoticz non-persistent ``DzIdx5`` to ``DzIdx32`` and disabling DOMOTICZ_OUT_TOPIC subscribe using command ``DzIdx0 0`` [#21019](https://github.com/arendst/Tasmota/issues/21019)
- Support SPI GPIO configuration for Universal Touch Screen [#21025](https://github.com/arendst/Tasmota/issues/21025)
- Support for SPL06_007 pressure and temperature sensor [#21185](https://github.com/arendst/Tasmota/issues/21185)
- Support for AHT30 Temperature and Humidity Sensor [#19922](https://github.com/arendst/Tasmota/issues/19922)
- Support for compile time hostname with `#define WIFI_DEFAULT_HOSTNAME` (#21236)[#21236](https://github.com/arendst/Tasmota/issues/21236)
- Zigbee support for attributes of type `uint48` used by energy monitoring [#20992](https://github.com/arendst/Tasmota/issues/20992)
- QMC5883l check for overflow and scale reading [#20643](https://github.com/arendst/Tasmota/issues/20643)
- TCP Serial bridge GPIO type `TCP Tx En` [#21269](https://github.com/arendst/Tasmota/issues/21269)
- ESP32 esp32_partition_app3904k_fs3392k partition scheme for 8MB ESP32S3 [#21241](https://github.com/arendst/Tasmota/issues/21241)
- ESP32 Compile option disabling PSRam check to avoid "blinking" of GPIO 16/17 at startup [#21282](https://github.com/arendst/Tasmota/issues/21282)
- Berry explicit error log when memory allocation fails [#20807](https://github.com/arendst/Tasmota/issues/20807)
- Berry `path.rename()` [#20840](https://github.com/arendst/Tasmota/issues/20840)
- Berry `string.startswith`, `string.endswith` and `%q` format [#20909](https://github.com/arendst/Tasmota/issues/20909)
- Berry `close()` to class `serial` [#21042](https://github.com/arendst/Tasmota/issues/21042)
- Berry `flash.current_ota` [#21097](https://github.com/arendst/Tasmota/issues/21097)
- Berry `webserver.content_close()` [#21276](https://github.com/arendst/Tasmota/issues/21276)
- Berry wave file recorder [#21315](https://github.com/arendst/Tasmota/issues/21315)
- Berry `after_teleperiod` event matching `FUNC_AFTER_TELEPERIOD` [#21351](https://github.com/arendst/Tasmota/issues/21351)
- LVGL and HASPmota typicons font [#20742](https://github.com/arendst/Tasmota/issues/20742)
- LVGL `lv.draw_label_dsc` and `lv_bar.get_indic_area` [#20936](https://github.com/arendst/Tasmota/issues/20936)
- HASPmota `p<x>b<y>.delete` to delete an object [#20735](https://github.com/arendst/Tasmota/issues/20735)
- HASPmota improve arc and img [#20894](https://github.com/arendst/Tasmota/issues/20894)
- HASPmota support for scale, percentages [#20974](https://github.com/arendst/Tasmota/issues/20974)
- HASPmota `dropdown_list` and fixes [#21208](https://github.com/arendst/Tasmota/issues/21208)
- HASPmota demo of Renaissance Watch for 480x480 displays [#21290](https://github.com/arendst/Tasmota/issues/21290)
### Breaking Changed
- ESP32 LVGL library from v8.3.11 to v9.0.0, some small breaking changes in C, none in HASPmota [#20659](https://github.com/arendst/Tasmota/issues/20659)
- Refactoring of Berry `animate` module for WS2812 Leds [#20236](https://github.com/arendst/Tasmota/issues/20236)
- Matter aggregator relocated to endpoint 1 for Google compatibility, may break existing associations [#20654](https://github.com/arendst/Tasmota/issues/20654)
- Drop support for old (insecure) fingerprint format [#20842](https://github.com/arendst/Tasmota/issues/20842)
- Removed dedicated touch drivers in favour of Universal Touch driver [#21146](https://github.com/arendst/Tasmota/issues/21146)
- ESP32-C3 OTA binary name from `tasmota32c3cdc.bin` to `tasmota32c3.bin` with USB HWCDC and fallback to serial [#21212](https://github.com/arendst/Tasmota/issues/21212)
- ESP32-C6 OTA binary name from `tasmota32c6cdc.bin` to `tasmota32c6.bin` with USB HWCDC and fallback to serial [#21212](https://github.com/arendst/Tasmota/issues/21212)
- ESP32-S3 OTA binary name from `tasmota32s3cdc.bin` to `tasmota32s3.bin` with USB HWCDC and fallback to serial [#21212](https://github.com/arendst/Tasmota/issues/21212)
- Berry loading .be file does not generated .bec anymore [#21075](https://github.com/arendst/Tasmota/issues/21075)
- LVGL remove embedded typicons font [#20872](https://github.com/arendst/Tasmota/issues/20872)
- LVGL remove `textarea` and `spinbox` from binaries [#20916](https://github.com/arendst/Tasmota/issues/20916)
### Changed
- ESP8266 platform update from 2023.04.00 to 2024.01.01 [#20539](https://github.com/arendst/Tasmota/issues/20539)
- ESP8266 Framework (Arduino Core) from v2.7.4.9 to v2.7.6 [#20539](https://github.com/arendst/Tasmota/issues/20539)
- ESP32 Core2 platform update from 2023.11.01 to 2024.01.01 [#20473](https://github.com/arendst/Tasmota/issues/20473)
- ESP32 Core3 platform update from 2024.01.11 to 2024.01.12 [#20576](https://github.com/arendst/Tasmota/issues/20576)
- Library OneWire-Stickbreaker by TasmotaOneWire supporting Shelly Plus Add-On [#20580](https://github.com/arendst/Tasmota/issues/20580)
- Renamed button "Consoles" to "Tools"
- Refactored rule ``Subscribe`` using LList allowing full message size and enabled by default
- Refactored rules USE_EXPRESSION and SUPPORT_IF_STATEMENT replacing LinkedList with arrays and enabled by default
- Support syslog updates every sleep or every second if `#define SYSLOG_UPDATE_SECOND` [#20260](https://github.com/arendst/Tasmota/issues/20260)
- Web file upload response on upload error [#20340](https://github.com/arendst/Tasmota/issues/20340)
- Header `Host` is now collected by Webserver [#20446](https://github.com/arendst/Tasmota/issues/20446)
- Utouch optimizations, rgb i2c init [#20596](https://github.com/arendst/Tasmota/issues/20596)
- Miel HVAC lower the minimum temperature to 10C [#20628](https://github.com/arendst/Tasmota/issues/20628)
- Webcam tweaks [#20451](https://github.com/arendst/Tasmota/issues/20451)
- IP stack compatible with new Core3 IPv6 implementation [#20509](https://github.com/arendst/Tasmota/issues/20509)
- Refactored Pio filesystem download script [#20544](https://github.com/arendst/Tasmota/issues/20544)
- Matter improve `MtrInfo` [#20686](https://github.com/arendst/Tasmota/issues/20686)
- Matter redirects for Advanced Matter configuration UI [#20690](https://github.com/arendst/Tasmota/issues/20690)
- Matter implement auto-attributes [#20694](https://github.com/arendst/Tasmota/issues/20694)
- ESP32 Framework (Arduino Core) from v2.0.14 to v3.0.0
- ESP32 platform update from 2024.01.12 to 2024.05.01 [#21347](https://github.com/arendst/Tasmota/issues/21347)
- ESP32 LVGL library from v9.0.0 to v9.1.0 [#21008](https://github.com/arendst/Tasmota/issues/21008)
- Seriallog set to `SERIAL_LOG_LEVEL` at boot [#21363](https://github.com/arendst/Tasmota/issues/21363)
- TLS Letsencrypt replace R3 CA with long-term ISRG_Root_X1 CA, which works with R3 and R10-R14 [#21352](https://github.com/arendst/Tasmota/issues/21352)
- Command ``EthType`` option selection [#21317](https://github.com/arendst/Tasmota/issues/21317)
- Refactor Platformio script `post_esp32.py` [#20966](https://github.com/arendst/Tasmota/issues/20966)
- SGP4x Domoticz air quality value from raw to computed [#18880](https://github.com/arendst/Tasmota/issues/18880)
- NeoPool webUI pH alarms (4 & 5) completed [#20743](https://github.com/arendst/Tasmota/issues/20743)
- Prevent shutter MQTT broadcast with activated ShutterLock [#20827](https://github.com/arendst/Tasmota/issues/20827)
- Some `display.ini` to utouch [#21029](https://github.com/arendst/Tasmota/issues/21029)
- KNX format of energy to match specifications [#21074](https://github.com/arendst/Tasmota/issues/21074)
- Internal macro `APP_SLEEP` to `TASMOTA_SLEEP` to specify default sleep in ms [#21324](https://github.com/arendst/Tasmota/issues/21324)
- uDisplay fast drawing on RGB displays [#21257](https://github.com/arendst/Tasmota/issues/21257)
- HDMI CEC synchronously sends messages [#21270](https://github.com/arendst/Tasmota/issues/21270)
- Refactor I2S [#21291](https://github.com/arendst/Tasmota/issues/21291)
- Zigbee startup event triggered after plugins are loaded [#21320](https://github.com/arendst/Tasmota/issues/21320)
- Refactor Tensorflow [#21327](https://github.com/arendst/Tasmota/issues/21327)
- ESP32 refactored Wifi for ESP32 Core3 release [#21106](https://github.com/arendst/Tasmota/issues/21106)
- ESP32 WiFi phy modes 11n and 11ax represented as HT20, HT40 and HE20 [#19350](https://github.com/arendst/Tasmota/issues/19350)
- berry.exe (pre-compiled for Windows) updated to latest Berry patches [#21024](https://github.com/arendst/Tasmota/issues/21024)
- Berry class `int64` made immutable [#20727](https://github.com/arendst/Tasmota/issues/20727)
- Matter reduce memory usage when reading with wildcards [#20809](https://github.com/arendst/Tasmota/issues/20809)
- LVGL make lv_touch_3_buttons more responsive [#20728](https://github.com/arendst/Tasmota/issues/20728)
- LVGL optimize fonts and add icons [#20880](https://github.com/arendst/Tasmota/issues/20880)
- LVGL improved readability of montserrat-10 [#20900](https://github.com/arendst/Tasmota/issues/20900)
- HASPmota fix and improve demo with pixel-perfect fonts [#20734](https://github.com/arendst/Tasmota/issues/20734)
- HASPmota more attributes [#20744](https://github.com/arendst/Tasmota/issues/20744)
- HASPmota support for spangroup (styled text) [#20852](https://github.com/arendst/Tasmota/issues/20852)
- HASPmota support for led [#20857](https://github.com/arendst/Tasmota/issues/20857)
- HASPmota moved to a distinct library `lv_haspmota` [#20929](https://github.com/arendst/Tasmota/issues/20929)
- HASPmota solidify server-side [#20938](https://github.com/arendst/Tasmota/issues/20938)
### Fixed
- CVE-2021-36603 Cross Site Scripting (XSS) vulnerability [#12221](https://github.com/arendst/Tasmota/issues/12221)
- Syslog server warning caused by lack of <PRI> field and hostname starting with 'z' [#14689](https://github.com/arendst/Tasmota/issues/14689)
- Support for Domoticz floor/room topics. Regression from v12.0.1 [#20299](https://github.com/arendst/Tasmota/issues/20299)
- Scripter memory leak in `>w x` [#20473](https://github.com/arendst/Tasmota/issues/20473)
- Zigbee ramdom crash in main page [#20481](https://github.com/arendst/Tasmota/issues/20481)
- ESP8266 IPv6 support [#20539](https://github.com/arendst/Tasmota/issues/20539)
- ESP32 piezo ceramic buzzer doesn't buzz [#20118](https://github.com/arendst/Tasmota/issues/20118)
- ESP32 shutter exception 6 (divide by zero) on ``ShutterMode 4`` [#20524](https://github.com/arendst/Tasmota/issues/20524)
- ESP32 Zigbee Aqara attributes [#20452](https://github.com/arendst/Tasmota/issues/20452)
- ESP32 Audio for Core3, MP3Stream and Shine [#20540](https://github.com/arendst/Tasmota/issues/20540)
- ESP32 Core3 reset GPIOs 16/17 when PSRAM is not used [#20547](https://github.com/arendst/Tasmota/issues/20547)
- LVGL fix type for lv_imgbtn [#20354](https://github.com/arendst/Tasmota/issues/20354)
- Berry claiming UART0 if needed [#20324](https://github.com/arendst/Tasmota/issues/20324)
- Berry assigment to list with negative index [#20537](https://github.com/arendst/Tasmota/issues/20537)
- Berry C mapping, raise an error if too many arguments are sent [#20604](https://github.com/arendst/Tasmota/issues/20604)
- Matter Contact sensor was not triggering any update [#20232](https://github.com/arendst/Tasmota/issues/20232)
- Matter support for Alexa [#20545](https://github.com/arendst/Tasmota/issues/20545)
- Matter error when removing device from Google Home [#20665](https://github.com/arendst/Tasmota/issues/20665)
- Matter exception when fabrics is not initialized [#20667](https://github.com/arendst/Tasmota/issues/20667)
- Filesystem save of JSON settings data
- Fade out on CCT bulb with `SO92 1` [#21159](https://github.com/arendst/Tasmota/issues/21159)
- Shutter inverted using internal commands [#20752](https://github.com/arendst/Tasmota/issues/20752)
- TuyaV2 suppressed dimmer updates from MQTT [#20950](https://github.com/arendst/Tasmota/issues/20950)
- Scripter google char memory leak [#20995](https://github.com/arendst/Tasmota/issues/20995)
- Too restrictive checksum checks in Lib_teleinfo [#21033](https://github.com/arendst/Tasmota/issues/21033)
- Color swap option for rgb displaytext [#21049](https://github.com/arendst/Tasmota/issues/21049)
- NeoPool hydrolysis unit for Hidrolife, Bionet and Generic device [#21098](https://github.com/arendst/Tasmota/issues/21098)
- Neopool prevent possible multiple bus requests [#21267](https://github.com/arendst/Tasmota/issues/21267)
- Async HMDI CEC [#21287](https://github.com/arendst/Tasmota/issues/21287)
- ESP8266 physical button/switch control when no rules activated [#21187](https://github.com/arendst/Tasmota/issues/21187)
- ESP32 PWM activity on unconfigured PWM GPIOs [#20732](https://github.com/arendst/Tasmota/issues/20732)
- Avoid unwanted OTA upgrade when safeboot starts for the first time [#21360](https://github.com/arendst/Tasmota/issues/21360)
- BTHome, prep BLE5 [#20989](https://github.com/arendst/Tasmota/issues/20989)
- Conflicting log_level definitions in NimBLE [#21337](https://github.com/arendst/Tasmota/issues/21337)
- Berry Memory leak in `import re` [#20823](https://github.com/arendst/Tasmota/issues/20823)
- Berry bug when parsing ternary operator [#20839](https://github.com/arendst/Tasmota/issues/20839)
- Berry walrus with member or index [#20939](https://github.com/arendst/Tasmota/issues/20939)
- Berry walrus bug when assigning to self [#21015](https://github.com/arendst/Tasmota/issues/21015)
- Berry `web_add_handler` called before `Webserver` is initialized [#21272](https://github.com/arendst/Tasmota/issues/21272)
- Berry `math.inf`, `math.isinf()` and fixed json ouput for `inf` and `nan` [#21304](https://github.com/arendst/Tasmota/issues/21304)
- Matter broken NOCStruct types preventing pairing with HA [#21365](https://github.com/arendst/Tasmota/issues/21365)
- LVGL restore `lv_palette` functions [#21232](https://github.com/arendst/Tasmota/issues/21232)
- LVGL fix memory allocation of flush buffers [#21256](https://github.com/arendst/Tasmota/issues/21256)
- HASPmota PSRAM memory leak [#20818](https://github.com/arendst/Tasmota/issues/20818)
- HASPmota widgets line, btnmatrix, qrcode, bar, checkbox [#20881](https://github.com/arendst/Tasmota/issues/20881)
- HASPmota demo and robotocondensed fonts [#21014](https://github.com/arendst/Tasmota/issues/21014)
- HASPmota dropdown class "options" attribute [#21203](https://github.com/arendst/Tasmota/issues/21203)
- HASPmota `align` attribute and expand PNG cache [#21228](https://github.com/arendst/Tasmota/issues/21228)
### Removed
- Max number of 30 backlog entries
- Support for ESP32 Arduino Core 2 [#21180](https://github.com/arendst/Tasmota/issues/21180)
- Unused `#define MQTT_DATA_STRING` support
- ILI9341 driver replaced with uDisplay [#21169](https://github.com/arendst/Tasmota/issues/21169)
- SSD1306 driver replaced with uDisplay [#21176](https://github.com/arendst/Tasmota/issues/21176)
- SSD1331 driver replaced with uDisplay [#21177](https://github.com/arendst/Tasmota/issues/21177)
- SSH1106 driver replaced with uDisplay [#21183](https://github.com/arendst/Tasmota/issues/21183)
- SSD1351 driver replaced with uDisplay [#21184](https://github.com/arendst/Tasmota/issues/21184)
- ST7789 driver replaced with uDisplay [#21184](https://github.com/arendst/Tasmota/issues/21184)
- ESP32 IDF 4.4 based I2S code [#21188](https://github.com/arendst/Tasmota/issues/21188)
- Crash recorder from safeboot [#21332](https://github.com/arendst/Tasmota/issues/21332)
- Berry `print "a"` syntax no longer supported [#21048](https://github.com/arendst/Tasmota/issues/21048)
- LVGL disabled vector graphics [#21242](https://github.com/arendst/Tasmota/issues/21242)

View File

@ -5,7 +5,7 @@
# Templates
Find below the available templates as of February 2024. More template information can be found in the [Tasmota Device Templates Repository](http://blakadder.github.io/templates)
Find below the available templates as of May 2024. More template information can be found in the [Tasmota Device Templates Repository](http://blakadder.github.io/templates)
## Adapter Board
```
@ -281,7 +281,7 @@ TOMZN 1P 63A Circuit Breaker {"NAME":"TOB8-63WiFi","GPIO":[32,0,0,3104,0,0,0,0,
TOMZN 2P 63A/80A Circuit Breaker {"NAME":"TOWBC-2P-T","GPIO":[0,0,0,0,0,0,0,0,64,224,0,0,288,0],"FLAG":0,"BASE":18}
TOMZN 4P 80A Circuit Breaker {"NAME":"TOWBC-4P-T","GPIO":[288,0,0,0,0,0,0,0,32,224,0,0,0,0],"FLAG":0,"BASE":18}
TOMZN 4P 80A Circuit Breaker {"NAME":"TOMZN4","GPIO":[32,0,0,0,0,0,0,0,224,288,0,0,0,0],"FLAG":0,"BASE":18}
Tongou 2P 63A Circuit Breaker {"NAME":"RCD_CONTACTOR","GPIO":[32,224,0,0,0,0,0,0,288,544,0,0,0,0],"FLAG":0,"BASE":18}
Tongou 2P 63A Circuit Breaker {"NAME":"RCD_CONTACTOR","GPIO":[32,224,0,3104,0,0,0,0,288,544,0,0,0,0],"FLAG":0,"BASE":18}
```
## Dehumidifier
@ -622,7 +622,7 @@ Antsig Universal Remote Controller {"NAME":"Antsig Smart Wi-Fi IR","GPIO":[1,1,
Athom {"NAME":"Athom_IR_Remote","GPIO":[32,0,0,0,1056,1088,0,0,0,576,0,0,0,0],"FLAG":0,"BASE":18}
Automate Things IR Bridge {"NAME":"AT-IRBR-1.0","GPIO":[0,0,0,0,1056,1088,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18,"CMND":"Module 0"}
Automate Things IR Bridge {"NAME":"AT-IRBR-1.4","GPIO":[1088,0,0,0,1056,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18,"CMND":"Module 0"}
auvisio S06 {"NAME":"NX-4519-675","GPIO":[0,0,0,0,288,1088,0,0,0,0,1056,0,0,0],"FLAG":0,"BASE":18}
auvisio S06 {"NAME":"NX-4519-675","GPIO":[0,0,0,0,288,1088,0,0,0,32,1056,0,0,0],"FLAG":0,"BASE":18}
Avatto Temperature and Humidity Sensor and {"NAME":"S08Pro","GPIO":[0,640,0,608,288,1088,0,0,0,32,1056,0,0,0],"FLAG":0,"BASE":18}
BlitzWolf BW-RC1 {"NAME":"BW-RC1","GPIO":[0,0,0,0,320,1088,0,0,0,32,1056,0,0,0],"FLAG":0,"BASE":62}
Connect SmartHome Universal Remote {"NAME":"CSH IR Controller","GPIO":[1,1,1,1,320,1088,0,0,0,32,1056,0,0,0],"FLAG":0,"BASE":62}
@ -1250,7 +1250,7 @@ Geeni Spot {"NAME":"Geeni Spot","GPIO":[576,0,0,0,320,0,0,0,0,
Geeni Spot Glo {"NAME":"Geeni Glo","GPIO":[0,0,0,0,320,0,0,0,224,32,225,0,0,0],"FLAG":0,"BASE":18}
Geeni SWITCH {"NAME":"Geeni Switch","GPIO":[0,0,0,0,288,321,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
Geeni Switch Duo {"NAME":"Geeni Duo","GPIO":[0,0,0,0,33,225,0,0,32,288,224,0,289,0],"FLAG":0,"BASE":18}
GHome EP2-A {"NAME":"GHome EP2-A","GPIO":[320,0,576,0,2656,2720,0,0,2624,32,0,224,0,0],"FLAG":0,"BASE":45}
GHome EP2-A {"NAME":"GHome EP2-A","GPIO":[576,0,320,0,2656,2720,0,0,2624,32,0,224,0,0],"FLAG":0,"BASE":45}
Girier 16A {"NAME":"Girier - JR-PM01","GPIO":[0,544,0,2624,2720,2656,0,0,224,32,320,0,0,0],"FLAG":0,"BASE":68}
Globe 15A {"NAME":"Globe 50329","GPIO":[0,0,0,0,320,0,0,0,224,0,32,0,0,0],"FLAG":0,"BASE":18}
Globe 2 Outlet {"NAME":"Globe 50020","GPIO":[0,576,0,321,33,32,0,0,224,320,225,0,0,0],"FLAG":0,"BASE":18}
@ -1624,7 +1624,7 @@ Vettora Smart Plug {"NAME":"Vettora","GPIO":[0,0,0,32,0,0,0,0,0,320,22
Vingo {"NAME":"Karpal-01","GPIO":[0,0,0,0,0,320,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
Vivanco 39625 Smart Home Power Adapter {"NAME":"Vivianco","GPIO":[0,0,0,32,2688,2656,0,0,2624,288,224,0,0,0],"FLAG":0,"BASE":18}
Vivitar {"NAME":"Vivitar HA1003","GPIO":[576,0,320,0,0,0,0,0,0,32,0,224,0,0],"FLAG":0,"BASE":18}
Vivitar {"NAME":"Vivitar HA1004","GPIO":[576,0,0,0,0,320,0,0,224,0,0,0,0,0],"FLAG":0,"BASE":18}
Vivitar {"NAME":"Vivitar HA-1004","GPIO":[320,0,321,0,0,0,0,0,0,32,0,224,0,0],"FLAG":0,"BASE":18}
Vivitar HA-1006 {"NAME":"HA-1006","GPIO":[0,0,0,0,320,0,0,0,224,64,0,0,0,0],"FLAG":0,"BASE":18}
Vivitar HA-1006-AU {"NAME":"HA-1006-AU","GPIO":[0,0,0,0,320,0,0,0,224,64,0,0,0,0],"FLAG":0,"BASE":18}
Vivitar Plug {"NAME":"HA-1005N-AU","GPIO":[0,0,0,0,544,0,0,0,224,64,0,0,0,0],"FLAG":0,"BASE":18}
@ -2693,7 +2693,6 @@ TreatLife 3-Way {"NAME":"Treatlife 3-Way","GPIO":[0,0,0,0,224,576,0
TreatLife Single Pole ON/OFF {"NAME":"Treatlife SS02","GPIO":[0,0,0,0,288,576,0,0,224,32,0,0,0,0],"FLAG":0,"BASE":18}
Tuya 20A {"NAME":"DS-161","GPIO":[544,0,0,32,0,0,0,0,0,224,288,0,0,0],"FLAG":0,"BASE":1}
Tuya 3 Gang {"NAME":"KING-Tuya-key","GPIO":[0,0,0,0,226,225,0,0,224,32,34,0,33,0],"FLAG":0,"BASE":18}
Tuya 4 Gang {"NAME":"Tuya 4 Gang Switch","GPIO":[1,34,224,32,33,0,0,0,225,576,0,0,0,0,0,0,0,0,226,227,35,1],"FLAG":0,"BASE":1}
Tuya T1 2 Gang No Neutral {"NAME":"Tuya T1 Wifi 2 Gang No Neutral Switch","GPIO":[32,0,0,0,0,225,33,0,224,544,0,0,0,0],"FLAG":0,"BASE":18}
Tuya T1 3 Gang No Neutral {"NAME":"Tuya T1 Wifi 3 Gang No Neutral Switch","GPIO":[32,0,0,0,226,225,33,34,224,544,0,0,0,0],"FLAG":0,"BASE":18}
TY-US-L1-W {"NAME":"TY-US-L1-W","GPIO":[0,0,0,0,0,32,0,0,0,224,0,0,576,0],"FLAG":0,"BASE":18}

View File

@ -1,10 +1,7 @@
{
"build": {
"arduino":{
"ldscript": "esp32_out.ld"
},
"core": "esp32",
"extra_flags": "-DARDUINO_ESP32_DEV -DBOARD_HAS_PSRAM -DHAS_PSRAM_FIX -mfix-esp32-psram-cache-issue -mfix-esp32-psram-cache-strategy=memw -DESP32_4M",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DHAS_PSRAM_FIX -mfix-esp32-psram-cache-issue -mfix-esp32-psram-cache-strategy=memw -DESP32_4M",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "dio",
@ -22,8 +19,7 @@
"openocd_target": "esp32.cfg"
},
"frameworks": [
"arduino",
"espidf"
"arduino"
],
"name": "Espressif Generic ESP32 >= 4M Flash, PSRAM with fix, Tasmota 2880k Code/OTA, 320k FS",
"upload": {

View File

@ -1,10 +1,7 @@
{
"build": {
"arduino":{
"ldscript": "esp32_out.ld"
},
"core": "esp32",
"extra_flags": "-DARDUINO_ESP32_DEV -DBOARD_HAS_PSRAM -DESP32_4M",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DESP32_4M",
"f_cpu": "160000000L",
"f_flash": "40000000L",
"flash_mode": "dio",
@ -22,8 +19,7 @@
"openocd_target": "esp32.cfg"
},
"frameworks": [
"arduino",
"espidf"
"arduino"
],
"name": "Espressif Generic ESP32 >= 4M Flash PSRAM, Tasmota 2880k Code/OTA, 320k FS",
"upload": {

View File

@ -1,10 +1,7 @@
{
"build": {
"arduino":{
"ldscript": "esp32_out.ld"
},
"core": "esp32",
"extra_flags": "-DARDUINO_ESP32_DEV -DBOARD_HAS_PSRAM -DESP32_4M -DCORE32SOLO1",
"extra_flags": "-DARDUINO_TASMOTA -DESP32_4M -DCORE32SOLO1",
"f_cpu": "240000000L",
"f_flash": "40000000L",
"flash_mode": "dio",
@ -22,10 +19,9 @@
"openocd_target": "esp32-solo-1.cfg"
},
"frameworks": [
"arduino",
"espidf"
"arduino"
],
"name": "Espressif Generic ESP32 >= 4M Flash, Tasmota 2880k Code/OTA, 320k FS",
"name": "Espressif Generic ESP32-solo1 >= 4M Flash, Tasmota 2880k Code/OTA, 320k FS",
"upload": {
"arduino": {
"flash_extra_images": [
@ -44,6 +40,6 @@
"download": {
"speed": 230400
},
"url": "https://en.wikipedia.org/wiki/ESP32",
"url": "https://www.espressif.com/sites/default/files/documentation/esp32-solo-1_datasheet_en.pdf",
"vendor": "Espressif"
}

View File

@ -1,10 +1,7 @@
{
"build": {
"arduino":{
"ldscript": "esp32c2_out.ld"
},
"core": "esp32",
"extra_flags": "-DESP32_4M -DESP32C2",
"extra_flags": "-DARDUINO_TASMOTA -DESP32_4M -DESP32C2",
"f_cpu": "120000000L",
"f_flash": "60000000L",
"flash_mode": "qio",
@ -20,8 +17,7 @@
"openocd_target": "esp32c2.cfg"
},
"frameworks": [
"arduino",
"espidf"
"arduino"
],
"name": "Espressif Generic ESP32-C2 = 4M Flash, Tasmota 2880k Code/OTA, 320k FS",
"upload": {

View File

@ -1,10 +1,7 @@
{
"build": {
"arduino":{
"ldscript": "esp32c2_out.ld"
},
"core": "esp32",
"extra_flags": "-DESP32_2M -DESP32C2",
"extra_flags": "-DARDUINO_TASMOTA -DESP32_2M -DESP32C2",
"f_cpu": "120000000L",
"f_flash": "60000000L",
"flash_mode": "qio",
@ -20,8 +17,7 @@
"openocd_target": "esp32c2.cfg"
},
"frameworks": [
"arduino",
"espidf"
"arduino"
],
"name": "Espressif Generic ESP32-C2 = 2M Flash, Tasmota 1245kB Code/OTA, 64k FS",
"upload": {

View File

@ -1,10 +1,7 @@
{
"build": {
"arduino":{
"ldscript": "esp32c3_out.ld"
},
"core": "esp32",
"extra_flags": "-DESP32_4M -DESP32C3",
"extra_flags": "-DARDUINO_TASMOTA -DARDUINO_USB_MODE=1 -DESP32_4M -DESP32C3 -DUSE_USB_CDC_CONSOLE",
"f_cpu": "160000000L",
"f_flash": "80000000L",
"flash_mode": "dio",
@ -17,11 +14,14 @@
"bluetooth"
],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": [
"esp-builtin"
],
"openocd_target": "esp32c3.cfg"
},
"frameworks": [
"arduino",
"espidf"
"arduino"
],
"name": "Espressif Generic ESP32-C3 >= 4M Flash, Tasmota 2880k Code/OTA, 320k FS",
"upload": {
@ -37,10 +37,10 @@
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
"speed": 460800
"speed": 2000000
},
"download": {
"speed": 230400
"speed": 2000000
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/hw-reference/esp32c3/user-guide-devkitm-1.html",
"vendor": "Espressif"

View File

@ -1,10 +1,7 @@
{
"build": {
"arduino":{
"ldscript": "esp32c3_out.ld"
},
"core": "esp32",
"extra_flags": "-DARDUINO_USB_MODE=1 -DESP32_4M -DESP32C3 -DUSE_USB_CDC_CONSOLE",
"extra_flags": "-DARDUINO_TASMOTA -DESP32_4M -DESP32C3",
"f_cpu": "160000000L",
"f_flash": "80000000L",
"flash_mode": "dio",
@ -17,15 +14,10 @@
"bluetooth"
],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": [
"esp-builtin"
],
"openocd_target": "esp32c3.cfg"
},
"frameworks": [
"arduino",
"espidf"
"arduino"
],
"name": "Espressif Generic ESP32-C3 >= 4M Flash, Tasmota 2880k Code/OTA, 320k FS",
"upload": {
@ -33,7 +25,7 @@
"flash_extra_images": [
[
"0x10000",
"tasmota32c3cdc-safeboot.bin"
"tasmota32c3ser-safeboot.bin"
]
]
},
@ -41,10 +33,10 @@
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
"speed": 2000000
"speed": 460800
},
"download": {
"speed": 2000000
"speed": 230400
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/hw-reference/esp32c3/user-guide-devkitm-1.html",
"vendor": "Espressif"

View File

@ -1,10 +1,7 @@
{
"build": {
"arduino":{
"ldscript": "esp32c6_out.ld"
},
"core": "esp32",
"extra_flags": "-DESP32_4M -DESP32C6",
"extra_flags": "-DARDUINO_TASMOTA -DARDUINO_USB_MODE=1 -DESP32_4M -DESP32C6 -DUSE_USB_CDC_CONSOLE",
"f_cpu": "160000000L",
"f_flash": "80000000L",
"flash_mode": "qio",
@ -17,11 +14,14 @@
"bluetooth"
],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": [
"esp-builtin"
],
"openocd_target": "esp32c6.cfg"
},
"frameworks": [
"arduino",
"espidf"
"arduino"
],
"name": "Espressif Generic ESP32-C6 >= 4M Flash, Tasmota 2880k Code/OTA, 320k FS",
"upload": {
@ -37,10 +37,10 @@
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
"speed": 460800
"speed": 2000000
},
"download": {
"speed": 230400
"speed": 2000000
},
"url": "https://docs.espressif.com/projects/espressif-esp-dev-kits/en/latest/esp32c6/esp32-c6-devkitc-1/index.html",
"vendor": "Espressif"

View File

@ -1,10 +1,7 @@
{
"build": {
"arduino":{
"ldscript": "esp32c6_out.ld"
},
"core": "esp32",
"extra_flags": "-DARDUINO_USB_MODE=1 -DESP32_4M -DESP32C6 -DUSE_USB_CDC_CONSOLE",
"extra_flags": "-DARDUINO_TASMOTA -DESP32_4M -DESP32C6",
"f_cpu": "160000000L",
"f_flash": "80000000L",
"flash_mode": "qio",
@ -17,15 +14,10 @@
"bluetooth"
],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": [
"esp-builtin"
],
"openocd_target": "esp32c6.cfg"
},
"frameworks": [
"arduino",
"espidf"
"arduino"
],
"name": "Espressif Generic ESP32-C6 >= 4M Flash, Tasmota 2880k Code/OTA, 320k FS",
"upload": {
@ -33,7 +25,7 @@
"flash_extra_images": [
[
"0x10000",
"tasmota32c6cdc-safeboot.bin"
"tasmota32c6ser-safeboot.bin"
]
]
},
@ -41,10 +33,10 @@
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
"speed": 2000000
"speed": 460800
},
"download": {
"speed": 2000000
"speed": 230400
},
"url": "https://docs.espressif.com/projects/espressif-esp-dev-kits/en/latest/esp32c6/esp32-c6-devkitc-1/index.html",
"vendor": "Espressif"

View File

@ -1,10 +1,7 @@
{
"build": {
"arduino":{
"ldscript": "esp32s2_out.ld"
},
"core": "esp32",
"extra_flags": "-DBOARD_HAS_PSRAM -DESP32_4M -DESP32S2",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DESP32_4M -DESP32S2",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "dio",
@ -19,7 +16,6 @@
"openocd_target": "esp32s2.cfg"
},
"frameworks": [
"espidf",
"arduino"
],
"name": "Espressif Generic ESP32-S2 >= 4M Flash PSRAM, Tasmota 2880k Code/OTA, 320k FS",

View File

@ -1,10 +1,7 @@
{
"build": {
"arduino":{
"ldscript": "esp32s2_out.ld"
},
"core": "esp32",
"extra_flags": "-DBOARD_HAS_PSRAM -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S2",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S2",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "dio",
@ -19,7 +16,6 @@
"openocd_target": "esp32s2.cfg"
},
"frameworks": [
"espidf",
"arduino"
],
"name": "Espressif Generic ESP32-S2 >= 4M Flash PSRAM, Tasmota 2880k Code/OTA, 320k FS",

View File

@ -1,14 +1,19 @@
{
"build": {
"arduino":{
"ldscript": "esp32s3_out.ld",
"memory_type": "opi_opi"
},
"core": "esp32",
"extra_flags": "-DBOARD_HAS_PSRAM -DESP32_4M -DESP32S3",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S3",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "dout",
"hwids": [
[
"0x303A",
"0x1001"
]
],
"mcu": "esp32s3",
"variant": "esp32s3",
"partitions": "partitions/esp32_partition_app2880k_fs320k.csv"
@ -19,10 +24,13 @@
"ethernet"
],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": [
"esp-builtin"
],
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
"espidf",
"arduino"
],
"name": "Espressif Generic ESP32-S3 >= 4M OPI Flash + PSRAM, Tasmota 2880k Code/OTA, 320k FS",
@ -39,11 +47,11 @@
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
"speed": 460800
"speed": 2000000
},
"download": {
"speed": 230400
"speed": 2000000
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"
}
}

View File

@ -0,0 +1,53 @@
{
"build": {
"arduino":{
"memory_type": "opi_opi"
},
"core": "esp32",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"f_boot": "120000000L",
"boot": "opi",
"flash_mode": "dout",
"mcu": "esp32s3",
"variant": "esp32s3",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S3",
"partitions": "partitions/esp32_partition_app2880k_fs320k.csv"
},
"connectivity": [
"wifi",
"bluetooth",
"ethernet"
],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": [
"esp-builtin"
],
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
"arduino"
],
"name": "Espressif Generic ESP32-S3 >= 4M OPI Flash + PSRAM, Tasmota 2880k Code/OTA, 320k FS",
"upload": {
"arduino": {
"flash_extra_images": [
[
"0x10000",
"tasmota32s3-safeboot.bin"
]
]
},
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
"speed": 2000000
},
"download": {
"speed": 2000000
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"
}

View File

@ -1,14 +1,19 @@
{
"build": {
"arduino":{
"ldscript": "esp32s3_out.ld",
"memory_type": "qio_opi"
},
"core": "esp32",
"extra_flags": "-DBOARD_HAS_PSRAM -DESP32_4M -DESP32S3",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S3",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "qio",
"hwids": [
[
"0x303A",
"0x1001"
]
],
"mcu": "esp32s3",
"variant": "esp32s3",
"partitions": "partitions/esp32_partition_app2880k_fs320k.csv"
@ -19,10 +24,13 @@
"ethernet"
],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": [
"esp-builtin"
],
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
"espidf",
"arduino"
],
"name": "Espressif Generic ESP32-S3 >= 4M Flash OPI PSRAM, Tasmota 2880k Code/OTA, 320k FS",
@ -39,10 +47,10 @@
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
"speed": 460800
"speed": 2000000
},
"download": {
"speed": 230400
"speed": 2000000
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"

View File

@ -1,22 +1,17 @@
{
"build": {
"arduino":{
"ldscript": "esp32s3_out.ld",
"memory_type": "qio_opi"
},
"core": "esp32",
"extra_flags": "-DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S3",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"f_boot": "120000000L",
"boot": "qio",
"flash_mode": "qio",
"hwids": [
[
"0x303A",
"0x1001"
]
],
"mcu": "esp32s3",
"variant": "esp32s3",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S3",
"partitions": "partitions/esp32_partition_app2880k_fs320k.csv"
},
"connectivity": [
@ -32,16 +27,15 @@
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
"espidf",
"arduino"
],
"name": "Espressif Generic ESP32-S3 >= 4M Flash OPI PSRAM, Tasmota 2880k Code/OTA, 320k FS",
"name": "Espressif Generic ESP32-S3 >= 4M QIO Flash + OPI PSRAM, Tasmota 2880k Code/OTA, 320k FS",
"upload": {
"arduino": {
"flash_extra_images": [
[
"0x10000",
"tasmota32s3cdc-safeboot.bin"
"tasmota32s3-safeboot.bin"
]
]
},

View File

@ -1,14 +1,19 @@
{
"build": {
"arduino":{
"ldscript": "esp32s3_out.ld",
"memory_type": "qio_qspi"
},
"core": "esp32",
"extra_flags": "-DBOARD_HAS_PSRAM -DESP32_4M -DESP32S3",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S3",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "qio",
"hwids": [
[
"0x303A",
"0x1001"
]
],
"mcu": "esp32s3",
"variant": "esp32s3",
"partitions": "partitions/esp32_partition_app2880k_fs320k.csv"
@ -19,10 +24,13 @@
"ethernet"
],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": [
"esp-builtin"
],
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
"espidf",
"arduino"
],
"name": "Espressif Generic ESP32-S3 >= 4M Flash QSPI PSRAM, Tasmota 2880k Code/OTA, 320k FS",
@ -39,10 +47,10 @@
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
"speed": 460800
"speed": 2000000
},
"download": {
"speed": 230400
"speed": 2000000
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"

View File

@ -1,22 +1,17 @@
{
"build": {
"arduino":{
"ldscript": "esp32s3_out.ld",
"memory_type": "qio_qspi"
},
"core": "esp32",
"extra_flags": "-DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S3",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"f_boot": "120000000L",
"boot": "qio",
"flash_mode": "qio",
"hwids": [
[
"0x303A",
"0x1001"
]
],
"mcu": "esp32s3",
"variant": "esp32s3",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S3",
"partitions": "partitions/esp32_partition_app2880k_fs320k.csv"
},
"connectivity": [
@ -32,16 +27,15 @@
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
"espidf",
"arduino"
],
"name": "Espressif Generic ESP32-S3 >= 4M Flash QSPI PSRAM, Tasmota 2880k Code/OTA, 320k FS",
"name": "Espressif Generic ESP32-S3 >= 4M QIO Flash + QSPI PSRAM, Tasmota 2880k Code/OTA, 320k FS",
"upload": {
"arduino": {
"flash_extra_images": [
[
"0x10000",
"tasmota32s3cdc-safeboot.bin"
"tasmota32s3-safeboot.bin"
]
]
},

View File

@ -1,20 +1,13 @@
{
"build": {
"arduino":{
"ldscript": "esp32s3_out.ld",
"memory_type": "opi_opi"
},
"core": "esp32",
"extra_flags": "-DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S3",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DESP32_4M -DESP32S3",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "dout",
"hwids": [
[
"0x303A",
"0x1001"
]
],
"mcu": "esp32s3",
"variant": "esp32s3",
"partitions": "partitions/esp32_partition_app2880k_fs320k.csv"
@ -25,14 +18,9 @@
"ethernet"
],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": [
"esp-builtin"
],
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
"espidf",
"arduino"
],
"name": "Espressif Generic ESP32-S3 >= 4M OPI Flash + PSRAM, Tasmota 2880k Code/OTA, 320k FS",
@ -41,7 +29,7 @@
"flash_extra_images": [
[
"0x10000",
"tasmota32s3cdc-safeboot.bin"
"tasmota32s3ser-safeboot.bin"
]
]
},
@ -49,11 +37,11 @@
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
"speed": 2000000
"speed": 460800
},
"download": {
"speed": 2000000
"speed": 230400
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"
}
}

View File

@ -0,0 +1,49 @@
{
"build": {
"arduino":{
"memory_type": "opi_opi"
},
"core": "esp32",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"f_boot": "120000000L",
"boot": "opi",
"flash_mode": "dout",
"mcu": "esp32s3",
"variant": "esp32s3",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DESP32_4M -DESP32S3",
"partitions": "partitions/esp32_partition_app2880k_fs320k.csv"
},
"connectivity": [
"wifi",
"bluetooth",
"ethernet"
],
"debug": {
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
"arduino"
],
"name": "Espressif Generic ESP32-S3 >= 4M OPI Flash + PSRAM, Tasmota 2880k Code/OTA, 320k FS",
"upload": {
"arduino": {
"flash_extra_images": [
[
"0x10000",
"tasmota32s3ser-safeboot.bin"
]
]
},
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
"speed": 460800
},
"download": {
"speed": 230400
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"
}

View File

@ -0,0 +1,47 @@
{
"build": {
"arduino":{
"memory_type": "qio_opi"
},
"core": "esp32",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DESP32_4M -DESP32S3",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "qio",
"mcu": "esp32s3",
"variant": "esp32s3",
"partitions": "partitions/esp32_partition_app2880k_fs320k.csv"
},
"connectivity": [
"wifi",
"bluetooth",
"ethernet"
],
"debug": {
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
"arduino"
],
"name": "Espressif Generic ESP32-S3 >= 4M Flash OPI PSRAM, Tasmota 2880k Code/OTA, 320k FS",
"upload": {
"arduino": {
"flash_extra_images": [
[
"0x10000",
"tasmota32s3ser-safeboot.bin"
]
]
},
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
"speed": 460800
},
"download": {
"speed": 230400
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"
}

View File

@ -0,0 +1,49 @@
{
"build": {
"arduino":{
"memory_type": "qio_opi"
},
"core": "esp32",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"f_boot": "120000000L",
"boot": "qio",
"flash_mode": "qio",
"mcu": "esp32s3",
"variant": "esp32s3",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DESP32_4M -DESP32S3",
"partitions": "partitions/esp32_partition_app2880k_fs320k.csv"
},
"connectivity": [
"wifi",
"bluetooth",
"ethernet"
],
"debug": {
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
"arduino"
],
"name": "Espressif Generic ESP32-S3 >= 4M QIO Flash + OPI PSRAM, Tasmota 2880k Code/OTA, 320k FS",
"upload": {
"arduino": {
"flash_extra_images": [
[
"0x10000",
"tasmota32s3ser-safeboot.bin"
]
]
},
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
"speed": 460800
},
"download": {
"speed": 230400
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"
}

View File

@ -0,0 +1,47 @@
{
"build": {
"arduino":{
"memory_type": "qio_qspi"
},
"core": "esp32",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DESP32_4M -DESP32S3",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "qio",
"mcu": "esp32s3",
"variant": "esp32s3",
"partitions": "partitions/esp32_partition_app2880k_fs320k.csv"
},
"connectivity": [
"wifi",
"bluetooth",
"ethernet"
],
"debug": {
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
"arduino"
],
"name": "Espressif Generic ESP32-S3 >= 4M Flash QSPI PSRAM, Tasmota 2880k Code/OTA, 320k FS",
"upload": {
"arduino": {
"flash_extra_images": [
[
"0x10000",
"tasmota32s3ser-safeboot.bin"
]
]
},
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
"speed": 460800
},
"download": {
"speed": 230400
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"
}

View File

@ -0,0 +1,30 @@
{
"build": {
"arduino": {
"ldscript": "eagle.flash.16m14m.ld"
},
"core": "esp8266",
"extra_flags": "-DARDUINO_TASMOTA -DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_16M -DESP8266_16M14M",
"f_cpu": "80000000L",
"f_flash": "40000000L",
"flash_mode": "dout",
"mcu": "esp8266",
"variant": "generic"
},
"connectivity": [
"wifi"
],
"frameworks": [
"arduino"
],
"name": "Espressif Generic ESP8266 Tasmota 1M sketch 1M OTA 14M FS",
"upload": {
"maximum_ram_size": 81920,
"maximum_size": 995326,
"require_upload_port": true,
"resetmethod": "ck",
"speed": 115200
},
"url": "http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family",
"vendor": "Espressif"
}

View File

@ -4,7 +4,7 @@
"ldscript": "eagle.flash.1m.ld"
},
"core": "esp8266",
"extra_flags": "-DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_1M",
"extra_flags": "-DARDUINO_TASMOTA -DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_1M",
"f_cpu": "80000000L",
"f_flash": "40000000L",
"flash_mode": "dout",

View File

@ -4,7 +4,7 @@
"ldscript": "eagle.flash.2m1m.ld"
},
"core": "esp8266",
"extra_flags": "-DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_2M -DESP8266_2M1M",
"extra_flags": "-DARDUINO_TASMOTA -DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_2M -DESP8266_2M1M",
"f_cpu": "80000000L",
"f_flash": "40000000L",
"flash_mode": "dout",

View File

@ -4,7 +4,7 @@
"ldscript": "eagle.flash.2m256.ld"
},
"core": "esp8266",
"extra_flags": "-DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_2M -DESP8266_2M256",
"extra_flags": "-DARDUINO_TASMOTA -DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_2M -DESP8266_2M256",
"f_cpu": "80000000L",
"f_flash": "40000000L",
"flash_mode": "dout",

View File

@ -4,7 +4,7 @@
"ldscript": "eagle.flash.4m2m.ld"
},
"core": "esp8266",
"extra_flags": "-DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_4M -DESP8266_4M2M",
"extra_flags": "-DARDUINO_TASMOTA -DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_4M -DESP8266_4M2M",
"f_cpu": "80000000L",
"f_flash": "40000000L",
"flash_mode": "dout",

View File

@ -4,7 +4,7 @@
"ldscript": "eagle.flash.4m3m.ld"
},
"core": "esp8266",
"extra_flags": "-DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_4M -DESP8266_4M3M",
"extra_flags": "-DARDUINO_TASMOTA -DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_4M -DESP8266_4M3M",
"f_cpu": "80000000L",
"f_flash": "40000000L",
"flash_mode": "dout",

View File

@ -4,7 +4,7 @@
"ldscript": "eagle.flash.2m256.ld"
},
"core": "esp8266",
"extra_flags": "-DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_2M -DESP8266_2M256",
"extra_flags": "-DARDUINO_TASMOTA -DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_2M -DESP8266_2M256",
"f_cpu": "160000000L",
"f_flash": "40000000L",
"flash_mode": "dout",

View File

@ -157,6 +157,26 @@ char * U64toHex(uint64_t value, char *str) {
}
*/
char * ToBinary(uint32_t value, char *str, int32_t digits) {
if (digits > 32) { digits = 32; }
if (digits < 1) { digits = 1; }
int32_t digits_to_one = 1; // how many digits until we find the last `1`
str[32] = 0; // end of string
for (uint32_t i=0; i<32; i++) { // 32 digits in uint32_t
if ((value & 1) && (i+1 > digits_to_one)) {
digits_to_one = i+1;
}
str[31 - i] = (char)(value & 1)+'0';
value = value >> 1;
}
// adjust digits to always show the total value
if (digits_to_one > digits) { digits = digits_to_one; }
if (digits < 32) {
memmove(str, str + 32 - digits, digits + 1);
}
return str;
}
char * U64toHex(uint64_t value, char *str, uint32_t zeroleads) {
// str must be at least 17 bytes long
str[16] = 0; // end of string
@ -235,7 +255,7 @@ int32_t ext_vsnprintf_P(char * out_buf, size_t buf_len, const char * fmt_P, va_l
const uint32_t ALLOC_SIZE = 12;
static const char * allocs[ALLOC_SIZE] = {}; // initialized to zeroes
uint32_t alloc_idx = 0;
static char hex[20]; // buffer used for 64 bits, favor RAM instead of stack to remove pressure
static char hex[34]; // buffer used for 64 bits, favor RAM instead of stack to remove pressure
for (; *fmt != 0; ++fmt) {
int32_t decimals = -2; // default to 2 decimals and remove trailing zeros
@ -306,6 +326,16 @@ int32_t ext_vsnprintf_P(char * out_buf, size_t buf_len, const char * fmt_P, va_l
}
}
break;
// '%_b' outputs a uint32_t to binary
// '%8_b' outputs a uint8_t to binary
case 'b': // Binary, decimals indicates the zero prefill
{
ToBinary(cur_val, hex, decimals);
new_val_str = copyStr(hex);
if (new_val_str == nullptr) { goto free_allocs; }
allocs[alloc_idx++] = new_val_str;
}
break;
/*
case 'V': // 2-byte values, decimals indicates the length, default 2
{

View File

@ -40,6 +40,7 @@ class TasmotaSerial : public Stream {
TasmotaSerial(int receive_pin, int transmit_pin, int hardware_fallback = 0, int nwmode = 0, int buffer_size = TM_SERIAL_BUFFER_SIZE, bool invert = false);
virtual ~TasmotaSerial();
void setTransmitEnablePin(int tx_enable_pin);
void clearTransmitEnablePin(void) { m_tx_enable_pin = -1; }
size_t setRxBufferSize(size_t size);
size_t getRxBufferSize() { return serial_buffer_size; }

View File

@ -0,0 +1,19 @@
Wifi Helper for Tasmota bridging differences between ESP8266 and ESP32
This Class is for compatibility with esp8266 code
== License ==
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library 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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

View File

@ -0,0 +1,8 @@
{
"name": "WiFiHelper",
"keywords": "esp32, esp8266",
"description": "Bridges differences in Arduino WiFi between ESP32 and ESP8266",
"version": "1.0.0",
"frameworks": "arduino",
"platforms": "*"
}

View File

@ -0,0 +1,90 @@
/*
WiFiHelper.h - provide a wrapper for differences between ESP8266 and ESP32 WiFi
Copyright (C) 2024 Theo Arends / Stephan Hadinger
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 <http://www.gnu.org/licenses/>.
*/
#ifndef WIFIHELPER_H
#define WIFIHELPER_H
// ======================================================
// ESP8266 specific section
// ======================================================
#ifdef ESP8266
#include "ESP8266WiFi.h"
#endif
// ======================================================
// ESP32 specific section
// ======================================================
#ifdef ESP32
#include <WiFi.h>
#define ENC_TYPE_NONE WIFI_AUTH_OPEN
#define ENC_TYPE_WEP WIFI_AUTH_WEP
#define ENC_TYPE_CCMP WIFI_AUTH_WPA2_PSK
#define ENC_TYPE_TKIP WIFI_AUTH_WPA_WPA2_PSK
#define ENC_TYPE_AUTO WIFI_AUTH_MAX + 1
#define WIFI_NONE_SLEEP 0
#define WIFI_LIGHT_SLEEP 1
#define WIFI_MODEM_SLEEP 2
// ESP8266
typedef enum WiFiPhyMode
{
TAS_WIFI_PHY_MODE_LR = 0, TAS_WIFI_PHY_MODE_11B = 1, TAS_WIFI_PHY_MODE_11G = 2, TAS_WIFI_PHY_MODE_11N = 3
#if ESP_IDF_VERSION_MAJOR >= 5
, TAS_WIFI_PHY_MODE_11AX = 4
#endif
} WiFiPhyMode_t;
#endif // ESP32
// This is an abstract class containing wrappers to call WiFi
class WiFiHelper {
public:
#ifdef ESP32
static wl_status_t begin(const char* wpa2_ssid, wpa2_auth_method_t method, const char* wpa2_identity=NULL, const char* wpa2_username=NULL, const char *wpa2_password=NULL, const char* ca_pem=NULL, const char* client_crt=NULL, const char* client_key=NULL, int32_t channel=0, const uint8_t* bssid=0, bool connect=true);
#endif
static wl_status_t begin(const char* ssid, const char *passphrase = NULL, int32_t channel = 0, const uint8_t* bssid = NULL, bool connect = true);
static wl_status_t begin(char* ssid, char *passphrase = NULL, int32_t channel = 0, const uint8_t* bssid = NULL, bool connect = true);
static wl_status_t begin();
static void hostname(const char* aHostname);
static void setSleepMode(int iSleepMode);
static int getPhyMode();
static bool setPhyMode(WiFiPhyMode_t mode);
static void setOutputPower(int n);
static void forceSleepBegin();
static void forceSleepWake();
static bool getNetworkInfo(uint8_t i, String &ssid, uint8_t &encType, int32_t &rssi, uint8_t* &bssid, int32_t &channel, bool &hidden_scan);
static int hostByName(const char* aHostname, IPAddress& aResult, int32_t timer_ms);
static int hostByName(const char* aHostname, IPAddress& aResult);
static void scrubDNS(void);
// With ESP32 Core3, the WiFi mac address is not valid until the wifi is actually started
// this helper function always provide a valid mac address
static String macAddress(void);
};
#endif // WIFIHELPER_H

View File

@ -16,48 +16,48 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
//
#ifdef ESP32
#include "Arduino.h"
#include <ESP8266WiFi.h>
#include "WiFiHelper.h"
#include <esp_wifi.h>
extern void AddLog(uint32_t loglevel, PGM_P formatP, ...);
enum LoggingLevels {LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE};
//
// Wifi
//
#ifdef WiFi
#undef WiFi
#endif
#ifdef USE_IPV6
ip_addr_t dns_save4[DNS_MAX_SERVERS] = {}; // IPv4 DNS servers
ip_addr_t dns_save6[DNS_MAX_SERVERS] = {}; // IPv6 DNS servers
#endif // USE_IPV6
#include "tasmota_options.h"
#include "lwip/dns.h"
wl_status_t WiFiClass32::begin(const char* wpa2_ssid, wpa2_auth_method_t method, const char* wpa2_identity, const char* wpa2_username, const char *wpa2_password, const char* ca_pem, const char* client_crt, const char* client_key, int32_t channel, const uint8_t* bssid, bool connect) {
scrubDNS();
wl_status_t ret = WiFiClass::begin(wpa2_ssid, method, wpa2_identity, wpa2_username, wpa2_password, ca_pem, client_crt, client_key, channel, bssid, connect);
scrubDNS();
wl_status_t WiFiHelper::begin(const char* wpa2_ssid, wpa2_auth_method_t method, const char* wpa2_identity, const char* wpa2_username, const char *wpa2_password, const char* ca_pem, const char* client_crt, const char* client_key, int32_t channel, const uint8_t* bssid, bool connect) {
WiFiHelper::scrubDNS();
wl_status_t ret = WiFi.begin(wpa2_ssid, method, wpa2_identity, wpa2_username, wpa2_password, ca_pem, client_crt, client_key, channel, bssid, connect);
WiFiHelper::scrubDNS();
return ret;
}
wl_status_t WiFiClass32::begin(const char* ssid, const char *passphrase, int32_t channel, const uint8_t* bssid, bool connect) {
scrubDNS();
wl_status_t ret = WiFiClass::begin(ssid, passphrase, channel, bssid, connect);
scrubDNS();
wl_status_t WiFiHelper::begin(const char* ssid, const char *passphrase, int32_t channel, const uint8_t* bssid, bool connect) {
WiFiHelper::scrubDNS();
wl_status_t ret = WiFi.begin(ssid, passphrase, channel, bssid, connect);
WiFiHelper::scrubDNS();
return ret;
}
wl_status_t WiFiClass32::begin(char* ssid, char *passphrase, int32_t channel, const uint8_t* bssid, bool connect) {
scrubDNS();
wl_status_t ret = WiFiClass::begin(ssid, passphrase, channel, bssid, connect);
scrubDNS();
wl_status_t WiFiHelper::begin(char* ssid, char *passphrase, int32_t channel, const uint8_t* bssid, bool connect) {
WiFiHelper::scrubDNS();
wl_status_t ret = WiFi.begin(ssid, passphrase, channel, bssid, connect);
WiFiHelper::scrubDNS();
return ret;
}
wl_status_t WiFiClass32::begin() {
scrubDNS();
wl_status_t ret = WiFiClass::begin();
scrubDNS();
wl_status_t WiFiHelper::begin() {
WiFiHelper::scrubDNS();
wl_status_t ret = WiFi.begin();
WiFiHelper::scrubDNS();
return ret;
}
@ -73,7 +73,7 @@ extern bool EthernetHasIPv4(void);
extern bool WifiHasIPv6(void);
extern bool EthernetHasIPv6(void);
void WiFiClass32::scrubDNS(void) {
void WiFiHelper::scrubDNS(void) {
// String dns_entry0 = IPAddress(dns_getserver(0)).toString();
// String dns_entry1 = IPAddress(dns_getserver(1)).toString();
// scan DNS entries
@ -118,36 +118,52 @@ void WiFiClass32::scrubDNS(void) {
// AddLog(LOG_LEVEL_DEBUG, "IP>: DNS: from(%s %s) to (%s %s) has4/6:%i-%i", dns_entry0.c_str(), dns_entry1.c_str(), IPAddress(dns_getserver(0)).toString().c_str(), IPAddress(dns_getserver(1)).toString().c_str(), has_v4, has_v6);
}
void WiFiClass32::setSleepMode(int iSleepMode) {
void WiFiHelper::hostname(const char* aHostname) {
WiFi.setHostname(aHostname);
}
void WiFiHelper::setSleepMode(int iSleepMode) {
// WIFI_LIGHT_SLEEP and WIFI_MODEM_SLEEP
WiFi.setSleep(iSleepMode != WIFI_NONE_SLEEP);
}
int WiFiClass32::getPhyMode() {
int phy_mode = 0; // " BGNL"
uint8_t protocol_bitmap;
if (esp_wifi_get_protocol(WIFI_IF_STA, &protocol_bitmap) == ESP_OK) {
if (protocol_bitmap & 1) { phy_mode = TAS_WIFI_PHY_MODE_11B; } // 1 = 11b (WIFI_PHY_MODE_11B)
if (protocol_bitmap & 2) { phy_mode = TAS_WIFI_PHY_MODE_11G; } // 2 = 11bg (WIFI_PHY_MODE_11G)
if (protocol_bitmap & 4) { phy_mode = TAS_WIFI_PHY_MODE_11N; } // 3 = 11bgn (WIFI_PHY_MODE_11N)
if (protocol_bitmap & 8) { phy_mode = 4; } // Low rate (WIFI_PHY_MODE_LR)
int WiFiHelper::getPhyMode() {
/*
typedef enum
{
WIFI_PHY_MODE_LR, // PHY mode for Low Rate
WIFI_PHY_MODE_11B, // PHY mode for 11b
WIFI_PHY_MODE_11G, // PHY mode for 11g
WIFI_PHY_MODE_HT20, // PHY mode for Bandwidth HT20 (11n)
WIFI_PHY_MODE_HT40, // PHY mode for Bandwidth HT40 (11n)
WIFI_PHY_MODE_HE20, // PHY mode for Bandwidth HE20 (11ax)
} wifi_phy_mode_t;
*/
int phy_mode = 0; // "low rate|11b|11g|HT20|HT40|HE20"
wifi_phy_mode_t WiFiMode;
if (esp_wifi_sta_get_negotiated_phymode(&WiFiMode) == ESP_OK) {
phy_mode = (int)WiFiMode;
if (phy_mode > 5) {
phy_mode = 5;
}
}
return phy_mode;
}
bool WiFiClass32::setPhyMode(WiFiPhyMode_t mode) {
uint8_t protocol_bitmap = WIFI_PROTOCOL_11B; // 1
bool WiFiHelper::setPhyMode(WiFiPhyMode_t mode) {
uint8_t protocol_bitmap = WIFI_PROTOCOL_11B; // 1
switch (mode) {
case 3: protocol_bitmap |= WIFI_PROTOCOL_11N; // 4
case 2: protocol_bitmap |= WIFI_PROTOCOL_11G; // 2
#if ESP_IDF_VERSION_MAJOR >= 5
case 4: protocol_bitmap |= WIFI_PROTOCOL_11AX; // 16
#endif
case 3: protocol_bitmap |= WIFI_PROTOCOL_11N; // 4
case 2: protocol_bitmap |= WIFI_PROTOCOL_11G; // 2
}
return (ESP_OK == esp_wifi_set_protocol(WIFI_IF_STA, protocol_bitmap));
}
void WiFiClass32::wps_disable() {
}
void WiFiClass32::setOutputPower(int n) {
void WiFiHelper::setOutputPower(int n) {
wifi_power_t p = WIFI_POWER_2dBm;
if (n > 19)
p = WIFI_POWER_19_5dBm;
@ -170,13 +186,13 @@ void WiFiClass32::setOutputPower(int n) {
WiFi.setTxPower(p);
}
void WiFiClass32::forceSleepBegin() {
void WiFiHelper::forceSleepBegin() {
}
void WiFiClass32::forceSleepWake() {
void WiFiHelper::forceSleepWake() {
}
bool WiFiClass32::getNetworkInfo(uint8_t i, String &ssid, uint8_t &encType, int32_t &rssi, uint8_t *&bssid, int32_t &channel, bool &hidden_scan) {
bool WiFiHelper::getNetworkInfo(uint8_t i, String &ssid, uint8_t &encType, int32_t &rssi, uint8_t *&bssid, int32_t &channel, bool &hidden_scan) {
hidden_scan = false;
return WiFi.getNetworkInfo(i, ssid, encType, rssi, bssid, channel);
}
@ -199,6 +215,16 @@ static volatile uint32_t ip_addr_counter = 0; // counter for requests
extern int32_t WifiDNSGetTimeout(void);
extern bool WifiDNSGetIPv6Priority(void);
static volatile bool dns_found = false;
bool DNS_TimeReached(uint32_t timer)
{
// Check if a certain timeout has been reached.
int32_t passed = ((int32_t) (millis() - timer));
return (passed >= 0);
}
static void wifi32_dns_found_callback(const char *name, const ip_addr_t *ipaddr, void *callback_arg)
{
// Serial.printf("DNS: cb name=%s ipaddr=%s arg=%i counter=%i\n", name ? name : "<null>", IPAddress(ipaddr).toString().c_str(), (int) callback_arg, ip_addr_counter);
@ -210,13 +236,9 @@ static void wifi32_dns_found_callback(const char *name, const ip_addr_t *ipaddr,
} else {
dns_ipaddr = *IP4_ADDR_ANY; // set to IPv4 0.0.0.0
}
WiFiClass32::dnsDone();
dns_found = true;
// AddLog(LOG_LEVEL_DEBUG, "WIF: dns_found=%s", ipaddr ? IPAddress(*ipaddr).toString().c_str() : "<null>");
}
// We need this helper method to access protected methods from WiFiGeneric
void WiFiClass32::dnsDone(void) {
setStatusBits(NET_DNS_DONE_BIT);
}
/**
* Resolve the given hostname to an IP address.
@ -225,19 +247,22 @@ void WiFiClass32::dnsDone(void) {
* @return 1 if aIPAddrString was successfully converted to an IP address,
* else error code
*/
int WiFiClass32::hostByName(const char* aHostname, IPAddress& aResult, int32_t timer_ms)
int WiFiHelper::hostByName(const char* aHostname, IPAddress& aResult, int32_t timer_ms)
{
// return WiFi.hostByName(aHostname, aResult);
// #if 0
ip_addr_t addr;
aResult = (uint32_t) 0; // by default set to IPv4 0.0.0.0
dns_ipaddr = *IP4_ADDR_ANY; // by default set to IPv4 0.0.0.0
scrubDNS(); // internal calls to reconnect can zero the DNS servers, save DNS for future use
WiFiHelper::scrubDNS(); // internal calls to reconnect can zero the DNS servers, save DNS for future use
ip_addr_counter++; // increase counter, from now ignore previous responses
clearStatusBits(NET_DNS_IDLE_BIT | NET_DNS_DONE_BIT);
// clearStatusBits(NET_DNS_IDLE_BIT | NET_DNS_DONE_BIT);
uint8_t v4v6priority = LWIP_DNS_ADDRTYPE_IPV4;
#ifdef USE_IPV6
v4v6priority = WifiDNSGetIPv6Priority() ? LWIP_DNS_ADDRTYPE_IPV6_IPV4 : LWIP_DNS_ADDRTYPE_IPV4_IPV6;
#endif // USE_IPV6
dns_found = false;
err_t err = dns_gethostbyname_addrtype(aHostname, &dns_ipaddr, &wifi32_dns_found_callback, (void*) ip_addr_counter, v4v6priority);
// Serial.printf("DNS: dns_gethostbyname_addrtype errg=%i counter=%i\n", err, ip_addr_counter);
if(err == ERR_OK && !ip_addr_isany_val(dns_ipaddr)) {
@ -247,8 +272,10 @@ int WiFiClass32::hostByName(const char* aHostname, IPAddress& aResult, int32_t t
aResult = ip_addr_get_ip4_u32(&dns_ipaddr);
#endif // USE_IPV6
} else if(err == ERR_INPROGRESS) {
waitStatusBits(NET_DNS_DONE_BIT, timer_ms); //real internal timeout in lwip library is 14[s]
clearStatusBits(NET_DNS_DONE_BIT);
uint32_t deadline = millis() + timer_ms;
while ((!DNS_TimeReached(deadline)) && !dns_found) {
delay(1);
}
}
if (!ip_addr_isany_val(dns_ipaddr)) {
@ -260,19 +287,29 @@ int WiFiClass32::hostByName(const char* aHostname, IPAddress& aResult, int32_t t
return true;
}
return false;
// #endif
}
int WiFiClass32::hostByName(const char* aHostname, IPAddress& aResult)
int WiFiHelper::hostByName(const char* aHostname, IPAddress& aResult)
{
return hostByName(aHostname, aResult, WifiDNSGetTimeout());
return WiFiHelper::hostByName(aHostname, aResult, WifiDNSGetTimeout());
}
void wifi_station_disconnect() {
// erase ap: empty ssid, ...
WiFi.disconnect(true, true);
#if (ESP_IDF_VERSION_MAJOR >= 5)
#include "esp_mac.h"
#endif
String WiFiHelper::macAddress(void) {
#if (ESP_IDF_VERSION_MAJOR < 5)
return WiFi.macAddress();
#else
uint8_t mac[6] = {0,0,0,0,0,0};
char macStr[18] = { 0 };
esp_read_mac(mac, ESP_MAC_WIFI_STA);
snprintf(macStr, sizeof(macStr), "%02X:%02X:%02X:%02X:%02X:%02X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
return String(macStr);
#endif
}
void wifi_station_dhcpc_start() {
}
WiFiClass32 WiFi32;
#endif // ESP32

View File

@ -0,0 +1,80 @@
/*
WiFi compat with ESP32
Copyright (C) 2021 Theo Arends / Jörg Schüler-Maroldt
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 <http://www.gnu.org/licenses/>.
*/
//
#ifdef ESP8266
#include "Arduino.h"
#include "WiFiHelper.h"
wl_status_t WiFiHelper::begin(const char* ssid, const char *passphrase, int32_t channel, const uint8_t* bssid, bool connect) {
return WiFi.begin(ssid, passphrase, channel, bssid, connect);
}
wl_status_t WiFiHelper::begin(char* ssid, char *passphrase, int32_t channel, const uint8_t* bssid, bool connect) {
return WiFi.begin(ssid, passphrase, channel, bssid, connect);
}
wl_status_t WiFiHelper::begin() {
return WiFi.begin();
}
void WiFiHelper::scrubDNS(void) {
}
void WiFiHelper::hostname(const char* aHostname) {
WiFi.hostname(aHostname);
}
void WiFiHelper::setSleepMode(int iSleepMode) {
WiFi.setSleepMode((WiFiSleepType_t)iSleepMode);
}
int WiFiHelper::getPhyMode() {
return WiFi.getPhyMode();
}
bool WiFiHelper::setPhyMode(WiFiPhyMode_t mode) {
return WiFi.setPhyMode(mode);
}
void WiFiHelper::setOutputPower(int n) {
WiFi.setOutputPower(n);
}
void WiFiHelper::forceSleepBegin() {
WiFi.forceSleepBegin();
}
void WiFiHelper::forceSleepWake() {
WiFi.forceSleepWake();
}
bool WiFiHelper::getNetworkInfo(uint8_t i, String &ssid, uint8_t &encType, int32_t &rssi, uint8_t* &bssid, int32_t &channel, bool &hidden_scan) {
return WiFi.getNetworkInfo(i, ssid, encType, rssi, bssid, channel, hidden_scan);
}
int WiFiHelper::hostByName(const char* aHostname, IPAddress& aResult, int32_t timer_ms) {
return WiFi.hostByName(aHostname, aResult, timer_ms);
}
int WiFiHelper::hostByName(const char* aHostname, IPAddress& aResult) {
return WiFi.hostByName(aHostname, aResult);
}
String WiFiHelper::macAddress(void) {
return WiFi.macAddress();
}
#endif // ESP8266

View File

@ -24,6 +24,7 @@
#include <Arduino.h>
#ifdef ESP32
#include <HTTPClient.h>
#include <WiFi.h>
#else
#include <ESP8266HTTPClient.h>
#endif

View File

@ -24,6 +24,7 @@
#include <Arduino.h>
#ifdef ESP32
#include <HTTPClient.h>
#include <WiFi.h>
#else
#include <ESP8266HTTPClient.h>
#endif

Some files were not shown because too many files have changed in this diff Show More