Merge branch 'mega' into CSS-for-two-extra-tabs
@@ -23,10 +23,10 @@ jobs:
|
||||
documentation:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: '3.x'
|
||||
python-version: '3.13'
|
||||
- name: Build documentation
|
||||
run: |
|
||||
cd docs
|
||||
@@ -37,7 +37,7 @@ jobs:
|
||||
make html
|
||||
cd ..
|
||||
zip -r -qq ESPEasy_docs.zip docs/build/*
|
||||
- uses: actions/upload-artifact@v4
|
||||
- uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: Documentation
|
||||
path: ESPEasy_docs.zip
|
||||
@@ -46,10 +46,10 @@ jobs:
|
||||
outputs:
|
||||
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: '3.x'
|
||||
python-version: '3.13'
|
||||
- id: set-matrix
|
||||
run: |
|
||||
pip install uv
|
||||
@@ -62,10 +62,10 @@ jobs:
|
||||
strategy:
|
||||
matrix: ${{ fromJson(needs.generate-matrix.outputs.matrix) }}
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: '3.x'
|
||||
python-version: '3.13'
|
||||
- name: Dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
@@ -88,7 +88,7 @@ jobs:
|
||||
uses: Entepotenz/change-string-case-action-min-dependencies@v1
|
||||
with:
|
||||
string: ${{ matrix.chip }}
|
||||
- uses: actions/upload-artifact@v4
|
||||
- uses: actions/upload-artifact@v6
|
||||
with:
|
||||
# FIXME Workaround to (temporarily) not use # in the artifact name, see https://github.com/actions/upload-artifact/issues/473
|
||||
name: Bin-${{ steps.string.outputs.uppercase }}-${{ matrix.env }}-${{ steps.date.outputs.builddate }}_PR_${{ github.event.number }}_${{ github.run_id }} # Sort by ESP type
|
||||
@@ -101,16 +101,16 @@ jobs:
|
||||
needs: build
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: '3.x'
|
||||
python-version: '3.13'
|
||||
- name: Get current date
|
||||
id: date
|
||||
run: |
|
||||
echo "builddate=$(date +'%Y%m%d')" >> $GITHUB_OUTPUT
|
||||
- name: Download all artifacts
|
||||
uses: actions/download-artifact@v5
|
||||
uses: actions/download-artifact@v7
|
||||
with:
|
||||
path: artifacts/Binaries/bin/
|
||||
pattern: Bin-*
|
||||
@@ -119,7 +119,7 @@ jobs:
|
||||
run: |
|
||||
cd artifacts/Binaries/
|
||||
ls -R
|
||||
- uses: actions/upload-artifact@v4
|
||||
- uses: actions/upload-artifact@v6
|
||||
with:
|
||||
# FIXME Workaround to (temporarily) not use # in the artifact name, see https://github.com/actions/upload-artifact/issues/473
|
||||
name: ESPEasy-all-Binaries-${{ steps.date.outputs.builddate }}_PR_${{ github.event.number }}_${{ github.run_id }}
|
||||
|
||||
@@ -21,10 +21,10 @@ jobs:
|
||||
outputs:
|
||||
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: '3.x'
|
||||
python-version: '3.13'
|
||||
- id: set-matrix
|
||||
run: |
|
||||
pip install uv
|
||||
@@ -37,8 +37,10 @@ jobs:
|
||||
strategy:
|
||||
matrix: ${{ fromJson(needs.generate-matrix.outputs.matrix) }}
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: '3.13'
|
||||
- name: Dependencies
|
||||
run: |
|
||||
sudo apt install binutils build-essential libffi-dev libgit2-dev
|
||||
@@ -56,7 +58,7 @@ jobs:
|
||||
uses: Entepotenz/change-string-case-action-min-dependencies@v1
|
||||
with:
|
||||
string: ${{ matrix.chip }}
|
||||
- uses: actions/upload-artifact@v4
|
||||
- uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: Bin-${{ steps.string.outputs.uppercase }}-${{ matrix.env }}
|
||||
path: |
|
||||
@@ -67,8 +69,10 @@ jobs:
|
||||
needs: build
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: '3.13'
|
||||
- name: Build documentation
|
||||
run: |
|
||||
cd docs
|
||||
@@ -83,7 +87,7 @@ jobs:
|
||||
cd dist
|
||||
zip -r -qq ../ESPEasy_dist.zip *
|
||||
cd ..
|
||||
- uses: actions/upload-artifact@v4
|
||||
- uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: Distribution
|
||||
path: |
|
||||
@@ -121,19 +125,19 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: '3.x'
|
||||
python-version: '3.13'
|
||||
- name: Get current date
|
||||
id: date
|
||||
run: |
|
||||
echo "builddate=$(date +'%Y%m%d')" >> $GITHUB_OUTPUT
|
||||
- name: Download all successfully compiled artifacts
|
||||
uses: actions/download-artifact@v5
|
||||
uses: actions/download-artifact@v7
|
||||
with:
|
||||
path: artifacts/bin/
|
||||
pattern: Bin-*
|
||||
merge-multiple: true
|
||||
- name: Download dist and docs zip files
|
||||
uses: actions/download-artifact@v5
|
||||
uses: actions/download-artifact@v7
|
||||
with:
|
||||
path: distribution/
|
||||
name: Distribution
|
||||
@@ -150,6 +154,7 @@ jobs:
|
||||
find . -name '*ESP32c3*' -print | zip -@ ../ESPEasy_ESP32c3.zip
|
||||
find . -name '*ESP32s3*' -print | zip -@ ../ESPEasy_ESP32s3.zip
|
||||
find . -name '*ESP32c2*' -print | zip -@ ../ESPEasy_ESP32c2.zip
|
||||
find . -name '*ESP32c5*' -print | zip -@ ../ESPEasy_ESP32c5.zip
|
||||
find . -name '*ESP32c6*' -print | zip -@ ../ESPEasy_ESP32c6.zip
|
||||
find . -name '*ESP32solo1*' -print | zip -@ ../ESPEasy_ESP32solo1.zip
|
||||
find . -name '*ESP32_*' -print | zip -@ ../ESPEasy_ESP32.zip
|
||||
@@ -167,6 +172,7 @@ jobs:
|
||||
zipmerge ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32c3_binaries.zip ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32_binaries.zip ESPEasy_ESP32c3.zip
|
||||
zipmerge ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32s3_binaries.zip ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32_binaries.zip ESPEasy_ESP32s3.zip
|
||||
zipmerge ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32c2_binaries.zip ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32_binaries.zip ESPEasy_ESP32c2.zip
|
||||
zipmerge ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32c5_binaries.zip ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32_binaries.zip ESPEasy_ESP32c5.zip
|
||||
zipmerge ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32c6_binaries.zip ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32_binaries.zip ESPEasy_ESP32c6.zip
|
||||
zipmerge ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32solo1_binaries.zip ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32_binaries.zip ESPEasy_ESP32solo1.zip
|
||||
zipmerge ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32_binaries.zip ESPEasy_ESP32.zip
|
||||
@@ -174,6 +180,6 @@ jobs:
|
||||
with:
|
||||
# Upload all separately supported CPU models and the docs zip
|
||||
# TODO if/when available: ESP32h2
|
||||
artifacts: "ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP82xx_binaries.zip,ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32_binaries.zip,ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32solo1_binaries.zip,ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32s2_binaries.zip,ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32c3_binaries.zip,ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32s3_binaries.zip,ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32c2_binaries.zip,ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32c6_binaries.zip,distribution/*.zip"
|
||||
artifacts: "ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP82xx_binaries.zip,ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32_binaries.zip,ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32solo1_binaries.zip,ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32s2_binaries.zip,ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32c3_binaries.zip,ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32s3_binaries.zip,ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32c2_binaries.zip,ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32c5_binaries.zip,ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32c6_binaries.zip,distribution/*.zip"
|
||||
body: ${{ needs.prepare-notes.outputs.notes }}
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
@@ -72,19 +72,22 @@ docs/source/Plugin/_plugin_sets_overview.repl
|
||||
|
||||
.platformio/
|
||||
.pio/
|
||||
|
||||
managed_components/
|
||||
|
||||
managed_components/
|
||||
|
||||
CMakeLists.txt
|
||||
|
||||
sdkconfig.max_ESP32s3_16M8M_LittleFS_OPI_PSRAM_ETH
|
||||
sdkconfig.max_ESP32s3_16M8M_OPI_PSRAM
|
||||
|
||||
sdkconfig.defaults
|
||||
|
||||
dependencies.lock
|
||||
dependencies.lock
|
||||
|
||||
.dummy/
|
||||
|
||||
.cache/
|
||||
|
||||
src/src/CustomBuild/CompiletimeDefines_generated.h
|
||||
|
||||
|
||||
.dummy/
|
||||
|
||||
.cache/
|
||||
|
||||
src/src/CustomBuild/CompiletimeDefines_generated.h
|
||||
sdkconfig.normal_ESP32solo1_4M316k
|
||||
|
||||
@@ -40,7 +40,8 @@ ESPEasy_mega\_*[releasedate]*\_*[build-type]*\_*[opt-arduino-library]*\_*[hardwa
|
||||
*[build-type]* can be any of:
|
||||
Build type | Description | included plugins |
|
||||
-------------|-------------------------------------------|----------------------------------|
|
||||
climate | All plugins related to climate measurement| Stable + Climate |
|
||||
climate A | Plugins related to climate measurement A | Stable + Climate A |
|
||||
climate B | Plugins related to climate measurement B | Stable + Climate B |
|
||||
custom | Custom predefined set/Defined in Custom.h | Specific |
|
||||
normal | Standard plugins | Stable |
|
||||
collection_A | Normal + plugin collection A | Stable + Collection base + set A |
|
||||
@@ -50,9 +51,11 @@ collection_D | Normal + plugin collection D | Stable + Collection b
|
||||
collection_E | Normal + plugin collection E | Stable + Collection base + set E |
|
||||
collection_F | Normal + plugin collection F | Stable + Collection base + set F |
|
||||
collection_G | Normal + plugin collection G | Stable + Collection base + set G |
|
||||
collection_H | Normal + plugin collection H | Stable + Collection base + set H |
|
||||
max | All available plugins | All available |
|
||||
energy | All plugins related to energy measurement | Stable + Energy measurement |
|
||||
display | All plugins related to displays | Stable + Displays |
|
||||
display A | All plugins related to displays A | Stable + Displays A |
|
||||
display B | All plugins related to displays B | Stable + Displays B |
|
||||
neopixel | All plugins related to neopixel | Stable + Neopixel |
|
||||
hard | hardware specific builds | Minimal |
|
||||
minimal | minimal plugins for specific use-cases | Switch and Controller |
|
||||
@@ -112,6 +115,8 @@ Flash size | Description |
|
||||
|
||||
N.B. Starting with release 2023/12/25, All ESP32 LittleFS builds use IDF 5.3, to support newer ESP32 chips like ESP32-C2 and ESP32-C6, and SPI Ethernet. Other SPIFFS based ESP32 builds will be migrated to LittleFS as SPIFFS is no longer officially available in IDF 5 and later. As a temporary solution, a specially crafted IDF 5.1 build that still includes SPIFFS, is used for the SPIFFS builds. A migration plan will be made available in 2025.
|
||||
|
||||
N.B.2 Starting with builds made after 2025/11/04, ESP32 builds will no longer have ``_LittleFS`` in the name as all ESP32 builds use LittleFS. Also the suffix ``_ETH`` has been removed since all builds will have Ethernet support, except for ESP32C2 builds.
|
||||
|
||||
*[opt-build-features]* can be any of:
|
||||
Build features | Description |
|
||||
----------------|-----------------------------------------------------------------------------------------------------------|
|
||||
@@ -129,18 +134,18 @@ noOTA/NO_OTA | Does not support OTA (Over The Air-updating of the firmware) U
|
||||
N.B. Starting ca. 2025/02/27, many ESP32 builds are *only* available with _ETH suffix, indicating that Ethernet support is enabled, to reduce the (rather high) number of builds.
|
||||
|
||||
Some example firmware names:
|
||||
Firmware name | Hardware | Included plugins |
|
||||
----------------------------------------------------------------------|-------------------------------------------------|----------------------------------|
|
||||
ESPEasy_mega-20230822_normal_ESP8266_1M.bin | ESP8266/ESP8285 with 1MB flash | Stable |
|
||||
ESPEasy_mega-20230822_normal_ESP8266_4M1M.bin | ESP8266 with 4MB flash | Stable |
|
||||
ESPEasy_mega-20230822_collection_A_ESP8266_4M1M.bin | ESP8266 with 4MB flash | Stable + Collection base + set A |
|
||||
ESPEasy_mega-20230822_normal_ESP32_4M316k_ETH.bin | ESP32 with 4MB flash | Stable |
|
||||
ESPEasy_mega-20230822_collection_A_ESP32_4M316k_ETH.bin | ESP32 with 4MB flash | Stable + Collection base + set A |
|
||||
ESPEasy_mega-20230822_collection_B_ESP32_4M316k_ETH.bin | ESP32 with 4MB flash | Stable + Collection base + set B |
|
||||
ESPEasy_mega-20230822_max_ESP32s3_8M1M_LittleFS_ETH.bin | ESP32-S3 with 8MB flash, CDC-serial, Ethernet | All available plugins |
|
||||
ESPEasy_mega-20230822_max_ESP32s3_8M1M_LittleFS_OPI_PSRAM_ETH.bin | ESP32-S3 8MB flash, PSRAM, CDC-serial, Ethernet | All available plugins |
|
||||
ESPEasy_mega-20230822_max_ESP32_16M1M_ETH.bin | ESP32 with 16MB flash, SPIFFS, Ethernet | All available plugins |
|
||||
ESPEasy_mega-20230822_max_ESP32_16M8M_LittleFS_ETH.bin | ESP32 with 16MB flash, LittleFS, Ethernet | All available plugins |
|
||||
Firmware name | Hardware | Included plugins |
|
||||
--------------------------------------------------------|-------------------------------------------------|----------------------------------|
|
||||
ESPEasy_mega-20230822_normal_ESP8266_1M.bin | ESP8266/ESP8285 with 1MB flash | Stable |
|
||||
ESPEasy_mega-20230822_normal_ESP8266_4M1M.bin | ESP8266 with 4MB flash | Stable |
|
||||
ESPEasy_mega-20230822_collection_A_ESP8266_4M1M.bin | ESP8266 with 4MB flash | Stable + Collection base + set A |
|
||||
ESPEasy_mega-20230822_normal_ESP32_4M316k_ETH.bin | ESP32 with 4MB flash | Stable |
|
||||
ESPEasy_mega-20230822_collection_A_ESP32_4M316k_ETH.bin | ESP32 with 4MB flash | Stable + Collection base + set A |
|
||||
ESPEasy_mega-20230822_collection_B_ESP32_4M316k_ETH.bin | ESP32 with 4MB flash | Stable + Collection base + set B |
|
||||
ESPEasy_mega-20230822_max_ESP32s3_8M1M.bin | ESP32-S3 with 8MB flash, CDC-serial, Ethernet | All available plugins |
|
||||
ESPEasy_mega-20230822_max_ESP32s3_8M1M_OPI_PSRAM.bin | ESP32-S3 8MB flash, PSRAM, CDC-serial, Ethernet | All available plugins |
|
||||
ESPEasy_mega-20230822_max_ESP32_16M1M_ETH.bin | ESP32 with 16MB flash, SPIFFS, Ethernet | All available plugins |
|
||||
ESPEasy_mega-20230822_max_ESP32_16M8M.bin | ESP32 with 16MB flash, LittleFS, Ethernet | All available plugins |
|
||||
|
||||
The binary files for the different ESP32 variants (S2, C3, S3, C2, C6, Solo1, 'Classic') are available in separate archives.
|
||||
|
||||
|
||||
@@ -32,7 +32,9 @@
|
||||
},
|
||||
"espidf": {
|
||||
"custom_sdkconfig": [
|
||||
"CONFIG_FREERTOS_UNICORE=y"
|
||||
"CONFIG_FREERTOS_UNICORE=y",
|
||||
"# CONFIG_BOOTLOADER_SPI_CUSTOM_WP_PIN is not set",
|
||||
"CONFIG_BOOTLOADER_SPI_WP_PIN=7"
|
||||
]
|
||||
},
|
||||
"url": "https://en.wikipedia.org/wiki/ESP32",
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"build": {
|
||||
"arduino":{
|
||||
"ldscript": "esp32c5_out.ld"
|
||||
},
|
||||
"core": "esp32",
|
||||
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_8M -DESP32C5 -DARDUINO_USB_CDC_ON_BOOT=1",
|
||||
"f_cpu": "160000000L",
|
||||
"f_flash": "80000000L",
|
||||
"flash_mode": "qio",
|
||||
"mcu": "esp32c5",
|
||||
"variant": "esp32c5",
|
||||
"partitions": "boards/partitions/esp32_partition_app3520k_spiffs1088k.csv"
|
||||
},
|
||||
"connectivity": [
|
||||
"wifi",
|
||||
"bluetooth"
|
||||
],
|
||||
"debug": {
|
||||
"default_tool": "esp-builtin",
|
||||
"onboard_tools": [
|
||||
"esp-builtin"
|
||||
],
|
||||
"openocd_target": "esp32c5.cfg"
|
||||
},
|
||||
"frameworks": [
|
||||
"arduino",
|
||||
"espidf"
|
||||
],
|
||||
"name": "Espressif Generic ESP32-C5 >= 8M Flash, ESPEasy 3520k Code/OTA 1088k FS",
|
||||
"upload": {
|
||||
"flash_size": "8MB",
|
||||
"maximum_ram_size": 327680,
|
||||
"maximum_size": 8388608,
|
||||
"require_upload_port": true,
|
||||
"speed": 460800
|
||||
},
|
||||
"url": "https://docs.espressif.com/projects/espressif-esp-dev-kits/en/latest/esp32c5/esp32-c5-devkitc-1/index.html",
|
||||
"vendor": "Espressif"
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"build": {
|
||||
"arduino":{
|
||||
"ldscript": "esp32c5_out.ld"
|
||||
},
|
||||
"core": "esp32",
|
||||
"extra_flags": "-DARDUINO_TASMOTA -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32C5 -DARDUINO_USB_CDC_ON_BOOT=1",
|
||||
"f_cpu": "160000000L",
|
||||
"f_flash": "80000000L",
|
||||
"flash_mode": "qio",
|
||||
"mcu": "esp32c5",
|
||||
"variant": "esp32c5",
|
||||
"partitions": "boards/partitions/esp32_partition_app1810k_spiffs316k.csv"
|
||||
},
|
||||
"connectivity": [
|
||||
"wifi",
|
||||
"bluetooth"
|
||||
],
|
||||
"debug": {
|
||||
"default_tool": "esp-builtin",
|
||||
"onboard_tools": [
|
||||
"esp-builtin"
|
||||
],
|
||||
"openocd_target": "esp32c5.cfg"
|
||||
},
|
||||
"frameworks": [
|
||||
"arduino",
|
||||
"espidf"
|
||||
],
|
||||
"name": "Espressif Generic ESP32-C5 >= 4M Flash, ESPEasy 1810k Code/OTA 316k FS",
|
||||
"upload": {
|
||||
"flash_size": "4MB",
|
||||
"maximum_ram_size": 327680,
|
||||
"maximum_size": 4194304,
|
||||
"require_upload_port": true,
|
||||
"speed": 460800
|
||||
},
|
||||
"url": "https://docs.espressif.com/projects/espressif-esp-dev-kits/en/latest/esp32c5/esp32-c5-devkitc-1/index.html",
|
||||
"vendor": "Espressif"
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"build": {
|
||||
"arduino":{
|
||||
"ldscript": "esp32c61_out.ld"
|
||||
},
|
||||
"core": "esp32",
|
||||
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_8M -DESP32C61 -DARDUINO_USB_CDC_ON_BOOT=1",
|
||||
"f_cpu": "160000000L",
|
||||
"f_flash": "80000000L",
|
||||
"flash_mode": "qio",
|
||||
"mcu": "esp32c61",
|
||||
"variant": "esp32c61",
|
||||
"partitions": "boards/partitions/esp32_partition_app3520k_spiffs1088k.csv"
|
||||
},
|
||||
"connectivity": [
|
||||
"wifi",
|
||||
"bluetooth"
|
||||
],
|
||||
"debug": {
|
||||
"default_tool": "esp-builtin",
|
||||
"onboard_tools": [
|
||||
"esp-builtin"
|
||||
],
|
||||
"openocd_target": "esp32c61.cfg"
|
||||
},
|
||||
"frameworks": [
|
||||
"arduino",
|
||||
"espidf"
|
||||
],
|
||||
"name": "Espressif Generic ESP32-C61 >= 8M Flash, ESPEasy 3520k Code/OTA 1088k FS",
|
||||
"upload": {
|
||||
"flash_size": "8MB",
|
||||
"maximum_ram_size": 327680,
|
||||
"maximum_size": 8388608,
|
||||
"require_upload_port": true,
|
||||
"speed": 460800
|
||||
},
|
||||
"url": "https://docs.espressif.com/projects/espressif-esp-dev-kits/en/latest/esp32c6/esp32-c6-devkitc-1/index.html",
|
||||
"vendor": "Espressif"
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"build": {
|
||||
"core": "esp32",
|
||||
"extra_flags": [
|
||||
"-DARDUINO_TASMOTA -DESP32P4 -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE"
|
||||
],
|
||||
"f_cpu": "360000000L",
|
||||
"f_flash": "80000000L",
|
||||
"f_psram": "200000000L",
|
||||
"flash_mode": "qio",
|
||||
"mcu": "esp32p4",
|
||||
"chip_variant": "esp32p4_es",
|
||||
"variant": "esp32p4",
|
||||
"partitions": "boards/partitions/esp32_partition_app4096k_spiffs8124k.csv"
|
||||
},
|
||||
"connectivity": [
|
||||
"wifi",
|
||||
"bluetooth",
|
||||
"openthread",
|
||||
"ethernet"
|
||||
],
|
||||
"debug": {
|
||||
"openocd_target": "esp32p4.cfg"
|
||||
},
|
||||
"frameworks": [
|
||||
"arduino",
|
||||
"espidf"
|
||||
],
|
||||
"name": "Espressif ESP32-P4 Function EV Board 16M Flash, ESPEasy 4096k Code/OTA 8M FS",
|
||||
"upload": {
|
||||
"flash_size": "16MB",
|
||||
"maximum_ram_size": 768000,
|
||||
"maximum_size": 16777216,
|
||||
"require_upload_port": true,
|
||||
"speed": 1500000
|
||||
},
|
||||
"url": "https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32p4/esp32-p4-function-ev-board/index.html",
|
||||
"vendor": "Espressif"
|
||||
}
|
||||
@@ -5,7 +5,7 @@
|
||||
"memory_type": "dio_qspi"
|
||||
},
|
||||
"core": "esp32",
|
||||
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DESP32_4M -DESP32S2 -DCONFIG_IDF_TARGET_ESP32S2=1 -DUSE_USB_CDC_CONSOLE -DARDUINO_USB_CDC_ON_BOOT=1",
|
||||
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DESP32_4M -DESP32S2 -DCONFIG_IDF_TARGET_ESP32S2=1 -DUSE_USB_CDC_CONSOLE -DARDUINO_USB_CDC_ON_BOOT=1 -DCONFIG_TINYUSB_CDC_ENABLED=1",
|
||||
"f_cpu": "240000000L",
|
||||
"f_flash": "80000000L",
|
||||
"flash_mode": "dio",
|
||||
|
||||
@@ -5,10 +5,11 @@
|
||||
"memory_type": "qio_opi"
|
||||
},
|
||||
"core": "esp32",
|
||||
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_16M -DESP32S3 -DARDUINO_USB_CDC_ON_BOOT=1",
|
||||
"f_cpu": "240000000L",
|
||||
"f_flash": "80000000L",
|
||||
"boot": "opi",
|
||||
"flash_mode": "qio",
|
||||
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_16M -DESP32S3 -DARDUINO_USB_CDC_ON_BOOT=1",
|
||||
"hwids": [
|
||||
[
|
||||
"0x303A",
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"build": {
|
||||
"arduino": {
|
||||
"ldscript": "eagle.flash.4m1m.ld"
|
||||
},
|
||||
"core": "esp8266",
|
||||
"extra_flags": "-DARDUINO_TASMOTA -DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_4M -DESP8266_4M1M",
|
||||
"f_cpu": "120000000L",
|
||||
"f_flash": "40000000L",
|
||||
"flash_mode": "dout",
|
||||
"mcu": "esp8266",
|
||||
"variant": "generic"
|
||||
},
|
||||
"connectivity": [
|
||||
"wifi"
|
||||
],
|
||||
"frameworks": [
|
||||
"arduino"
|
||||
],
|
||||
"name": "Espressif Generic ESP8266 ESPEasy 4M Flash 1M FS",
|
||||
"upload": {
|
||||
"maximum_ram_size": 81920,
|
||||
"maximum_size": 1040316,
|
||||
"require_upload_port": true,
|
||||
"resetmethod": "nodemcu",
|
||||
"speed": 115200
|
||||
},
|
||||
"url": "http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family",
|
||||
"vendor": "Espressif"
|
||||
}
|
||||
|
||||
@@ -1,3 +1,557 @@
|
||||
-------------------------------------------------
|
||||
Changes in release mega-20260108 (since mega-20260107)
|
||||
-------------------------------------------------
|
||||
|
||||
Release date: Thu Jan 8 08:33:12 AM CET 2026
|
||||
|
||||
TD-er (1):
|
||||
Add Python version for prepare-dist in release.yml
|
||||
|
||||
|
||||
-------------------------------------------------
|
||||
Changes in release mega-20260107 (since mega-20250430)
|
||||
-------------------------------------------------
|
||||
|
||||
Release date: Wed Jan 7 11:00:02 PM CET 2026
|
||||
|
||||
Bartłomiej Zimoń (4):
|
||||
Update Flashing.rst
|
||||
Update Flashing.rst
|
||||
Update Flashing.rst
|
||||
Update Flashing.rst
|
||||
|
||||
Fabio Ancona (2):
|
||||
Update LD2410 doc adding info of false positive
|
||||
Update P159.rst
|
||||
|
||||
Jason2866 (8):
|
||||
remove cache use uv
|
||||
Update build.yml
|
||||
Update post_esp32.py
|
||||
Update post_esp32.py
|
||||
add forgotten function
|
||||
missing import os
|
||||
Update post_esp32.py
|
||||
remove cache use uv
|
||||
|
||||
TD-er (55):
|
||||
[Favicon] Serve favicon.ico as inline SVG
|
||||
[settings] Reduce initial default config.dat to 96k on ESP32
|
||||
[JSON] Tweak generating JSON via web requests
|
||||
[Favicon] Tweak blue color in SVG ESPEasy favicon
|
||||
[Time] Speedup printing date/time string
|
||||
[Build] Remove TAR support from LIMIT_BUILD_SIZE builds (saves 5+ kB)
|
||||
[OLED display] Reduce build size for P023
|
||||
[SysVarPage] Fix table layout on builds with excludes features
|
||||
[SysVarPage] Make more clear separation for "Standard Conversions"
|
||||
[Sysvar] Enable %c_random% for all builds
|
||||
[ESP32-S2] Change ADC for ESP32-S2 back to 13 bit
|
||||
[ESPtool] Prepare use of esptool v5.0.0
|
||||
[Build] Get rid of all ESP32-SPIFFS builds
|
||||
[ESPtool] Prepare use of esptool v5.0.0
|
||||
[ESPEasy p2p] Add node-IDs for new Espressif SoC models
|
||||
[ADC] Fix not setting attenuation on internal ADC
|
||||
[Build] Update to latest IDF5.4 build + add C6 builds
|
||||
[ESP32-S3] Revert changes in board defines for ESP32-S3 with OPI PSRAM
|
||||
[Build] Speed up ESP32 builds via CompiletimeDefines_generated.h
|
||||
[WebFlasher] Add missing ESP32-xx MCUs to manifest script
|
||||
[Build] Speed up ESP32 builds via CompiletimeDefines_generated.h
|
||||
[WebFlasher] Add missing ESP32-xx MCUs to manifest script
|
||||
[Rules] Fix processing variables with index > 2^31
|
||||
[MFRC522] Speed-up detecting cards + make error recovery more stable
|
||||
[MFRC522] Improve range of reader
|
||||
[MFRC522] Simplify board reset during init
|
||||
[MFRC522] Allow to dump card info to debug logs
|
||||
[MFRC522] Do proper timing for communicating with card
|
||||
[MFRC522] Speedup reading by acting on interrupt pin
|
||||
Add HTML_Print and PrintToString helpers
|
||||
[Log] Add PrintToLog helper
|
||||
[PWM motor] Speedup acting on limit switch interrupt
|
||||
[ESP-IDF] Update to latest SDK version
|
||||
[WebFlasher] Add more info on migrate to LittleFS on web flasher page
|
||||
[WebFlasher] Update LittleFS migration guide in webflasher page
|
||||
[PWM motor] Fix limit switch invert (again)
|
||||
[PubSubClient] Update to new fork PubSubClient3
|
||||
[PubSubClient3] Speedup publish large messages using buffer
|
||||
[PubSubClient3] Add check for nullptr in CHECK_STRING_LENGTH
|
||||
[Controller] Fix crashes on MQTT callback calls
|
||||
[WebServer] Properly close chunked transfer
|
||||
[Cleanup] Fix JS issues + correctly end chunked transfer
|
||||
[Build] Try fixing failing solo1 build
|
||||
[ESP32-U4WDH] Fix bootloop on non-Solo1 builds
|
||||
Fix missing #ifdef USES_P056
|
||||
[Build] Fix missing #ifndef LIMIT_BUILD_SIZE
|
||||
[SysVars] Fix showing variables with hex number as index
|
||||
[MQTTDiscovery] Reduce mem alloc MQTT_DiscoveryPublishWithStatusAndSet
|
||||
Reduce ESP32 Display build size (BUILD_NO_DEBUG)
|
||||
[CacheReader] Fix continue reading after crash/reboot
|
||||
[CacheReader] Fix reading cache files from CacheController
|
||||
[CacheReader] Add support for 64bit ints + output as events
|
||||
[CacheReader] Fix incorrect settings array index
|
||||
[Build] Limit package building to use Python 3.13
|
||||
[Collection] Remove P038 and P095 from ESP32 Collection builds
|
||||
|
||||
Ton Huisman (369):
|
||||
[P073] Add support for 74HC595 displays
|
||||
[P073] Disable debug log
|
||||
[P073] Make build fit again (part 1)
|
||||
[P073] Make build fit again (part 2)
|
||||
[P094] Remove from Collection D for ESP8266 buildsize
|
||||
[P073] Move most code to PluginStruct files, explicit compile-time defines
|
||||
[P073] Make 7-segment font functions publicly available
|
||||
[P073] Separate 74HC595 multiplexed displays, code improvements
|
||||
[P073] Update documentation
|
||||
[P073] Disable 74HC595 displays for now
|
||||
[P073] Add double-buffering for 74HC595 displays
|
||||
[P073] Make some functions available externally, fix 74HC595 matrix display (sort-of, still some flickering)
|
||||
[P073] Fine-tuning and allow to include 74HC595 in ESP8266 Custom builds
|
||||
[P073] Make P073_revert7bits() available for global use
|
||||
[P073] Fix copy/paste error
|
||||
[P073] Use more efficient bit-revert algorithm, as suggested
|
||||
[P073] Add option for time-blinking the second dot instead of the colon
|
||||
[P073] Use DIRECT_PIN_IO for TM1637 displays for better timing accuracy
|
||||
[P073] Update documentation
|
||||
[P073] Should use the public function
|
||||
[P165] Fix compiler warning
|
||||
[MQTT] (Auto)Discovery implementation
|
||||
[P052] Add MQTT Discovery data for supported Values
|
||||
[Source] Fix CR/LF vs LF
|
||||
[MQTT] Add support for more VTypes, implement more VTypes, small improvements
|
||||
[MQTT] Move TaskValue VType Discovery to each plugin where needed. Some other code improvements
|
||||
[P105] Fix Uncrustify formatting
|
||||
[P164] Add fixme for currently unsupported AQI Discovery value
|
||||
[Discovery] Add VType for Reactive Power
|
||||
[Discovery] Implement VType for Reactive Power
|
||||
[P076] Implement Discovery support (for user-selected values)
|
||||
[P077] Implement Discovery support (for user-selected values)
|
||||
[P078] Implement Discovery support (for user-selected values)
|
||||
[P085] Implement Discovery support (for user-selected values)
|
||||
[P102] Implement Discovery support (for user-selected values)
|
||||
[P108] Implement Discovery support (for user-selected values)
|
||||
[P115] Implement Discovery support (for user-selected values)
|
||||
[P132] Implement Discovery support (for user-selected values)
|
||||
[P142] Implement Discovery support (for user-selected values)
|
||||
[Discovery] Refactor getting VType per plugin, add some more plugins for AutoDiscovery
|
||||
[Discovery] Add support for some more VTypes, add AQI and NOx
|
||||
[P147] Implement MQTT Discovery support
|
||||
[P164] Update MQTT Discovery support
|
||||
[EasyColorCode] Updates April 2025
|
||||
[P020] Update documentation
|
||||
[P116] Fix typo in docs
|
||||
[P180] Add plugin Generic I2C
|
||||
[P180] Add also to Display, Energy and Neopixel collection builds (ESP32 only)
|
||||
[P180] No defaults for I2C address or number of values
|
||||
[P180] Cleanup memory after use, fix ESP8266 compilation
|
||||
[P180] Cleanup memory after use, fix ESP8266 compilation
|
||||
[Rules] Fix parsing bracketed expressions from position 0
|
||||
[P180] Add conditionally cancelling a command sequence (if)
|
||||
[Rules] Add support for crc8 and crc32 functions
|
||||
[P180] Optimize hex formatting, add preprocessed calculation to logging
|
||||
[Rules] Add optional validation of crc to crc8 and crc32 functions
|
||||
[EasyColorCode] Add more plugin commands
|
||||
[P180] Correct regular value handling, improved hex formatting
|
||||
[P180] Add documentation and usage examples
|
||||
[P180] Add exec subcommand, add valuename support, fix issue updating command-cache
|
||||
[P180] Add handling 1/sec, 10/sec and 50/sec event processing, add log subcommand
|
||||
[P180] Update documentation and usage examples
|
||||
[P180] Update documentation and usage examples
|
||||
[EasyColorCode] Update commands for P180
|
||||
[Docs] Add examples for substring for translation of day/month names
|
||||
[P180] Add let I2C Command, limit delay to max 10ms for 1ps/10ps/50ps
|
||||
[P180] Add to Custom-sample.h
|
||||
Bugfix [P075] Typo in check for RxD GPIO pin
|
||||
[P180] Refactor into BusCmd, phase 1
|
||||
[P021] Bugfix: Make Invert work without a GPIO pin selected
|
||||
[P180] Refactor into BusCmd_Handler interface, phase 2, Add String support
|
||||
[P180] Remove previously added but unused I2C functions
|
||||
[P061] Resolve I2C related FIXMEs, gaining ~120 bytes
|
||||
[P180] Update documentation
|
||||
[P011] Optimize I2C calls, gaining ~110 bytes
|
||||
[Discovery] Add /config and Retain Discovery settings to MQTT Controller with AutoDiscovery
|
||||
[Discovery] Fix Switch auto-discovery [Discovery] Add support for Inverted Switch [Discovery] Add support for Switch Device Class configuration
|
||||
[P001] Implement Switch MQTT Device Class setting and Inverted Switch discovery
|
||||
[P009] Implement Switch MQTT Device Class setting and Inverted Switch discovery
|
||||
[P001][P009] Correct typo
|
||||
[P019] Implement Switch MQTT Device Class setting and Inverted Switch discovery
|
||||
[P021] Implement Switch MQTT Device Class setting and Inverted Switch discovery
|
||||
[Discovery] Add support for different Switch device class per value
|
||||
[Rules] Add support for String type variables
|
||||
[StringVars] Fix variable typo
|
||||
[StringVars] Remove unneeded UnaryOperator::IsNum
|
||||
[StringVars] Fix new introduced template parser bug
|
||||
[StringVars] Make string comparisons work with `if`
|
||||
Add new commands and functions for String variables support
|
||||
[SysVars] Make second argument for 2-argument conversions optional
|
||||
[StringVars] Add documentation
|
||||
[StringVars] Add documentation for [length#var]
|
||||
[Bugfix] String commands parser fix off-by-one issue
|
||||
[Rules] Add string function Lookup with docs
|
||||
[Rules] Add conversion function %c_strf%() with docs
|
||||
[Rules] Fix typo in docs
|
||||
[StringVars] Add TaskValueSetDerived, TaskValueSetPresentation commands and handling
|
||||
[StringVars] Add TaskValueSetDerived, TaskValueSetPresentation docs
|
||||
[Docs] Move Data Acquisition to separate include file
|
||||
[StringVars] Avoid calculation of formula with presentation prefix ($)
|
||||
[StringVars] Improved handling of calculated values for Derived values
|
||||
[SysVars, Conversions] Add %localunixtime%, %systzoffset_s% sysvars and %c_ts2date%() conversion + docs
|
||||
[SysVars] Exclude %localunixtime% from Limited builds
|
||||
[SysVars] Rename %localunixtime% to %unixtime_lcl%
|
||||
[DerivedValues] Add Event & Log option and generate events and logging for Derived values, update docs
|
||||
[SysVars] Add %c_ts2wday%(timestamp) (dow) conversion and docs
|
||||
[EasyColorCode] Add more new commands and functions for String variables support
|
||||
[P180] Add GET_CONFIG_VAR support
|
||||
[Discovery] Fix typo in BinarySensorInverted helper
|
||||
[Docs] Update WSL2 USB Serial configuration since Linux 6.x core update
|
||||
[Feature] Add Unit of Measure for all taskvalues and present on Devices overview page
|
||||
[UoM] Add Unit of measure value to /json endpoint
|
||||
[UoM] Add Unit of measure value Devices overview page update script (also uses Presentation if available)
|
||||
[Build] Reduce size of included Github clipboard script
|
||||
[Build] Include reboot.js script in readable form
|
||||
[Build] Reduce size of included Fetch and parse logs script
|
||||
[UoM] Add Unit of measure value Devices overview page update script (also uses Presentation if available)
|
||||
[JSON] Add Presentation as separate value instead of replacing Value (using updated .js scrip)
|
||||
[UoM] Make .js script more fault tolerant when no global UoM enable setting is available
|
||||
[DerivedValues] Don't determine max decimals for display but use default
|
||||
[DerivedValues] Add optional Unit of Measure and include in /json output
|
||||
[UoM] Make .js script more fault tolerant when no global UoM enable setting is available
|
||||
[UoM] Optional default when fetching Unit of Measure
|
||||
[Discovery] Implement UoM per taskValue when available
|
||||
[I2C] Show I2C Bus nr in Not enabled message of i2cscanner
|
||||
[I2C] Add a few missing I2C device addresses for INA219
|
||||
[UoM] Add Feature TaskValue-attributes with support for .uom, .decimals, .hasformula and .statsenabled
|
||||
[DerivedValues] Move parsing derived variables to correct code-location
|
||||
[DerivedValues] Add TaskValue attribute support for DerivedValues (empty is not valid)
|
||||
[Discovery] Add default empty option for Device Class selector (all values shift 1 index up!)
|
||||
[P116] Add support for ST7735/ST7789 170x320 displays
|
||||
[SysVarPage] Exclude c_random from list for limited builds
|
||||
[UoM] Add documentation
|
||||
[UoM] Update documentation
|
||||
[UoM] Update documentation
|
||||
[VTypes] Refactor SensorValueType selector so it can be used separately
|
||||
[VTypes] Refactor SensorValueType selector so it can be used separately (cherry picked)
|
||||
[ValueTypes] Add Custom VType selection
|
||||
[Plugins] Add CustomVTypeVar option for plugins that need custom Value Type selection
|
||||
[DerivedValues] Add support for Value Type argument
|
||||
[AutoDiscovery] Add support for Derived values, UoM and Value Type, some code optimizations
|
||||
[C006] Add support for sending derived values
|
||||
[C014] Add Unit of Measure to AutoDiscovery, add Send Derived values support
|
||||
[Docs] Updates and improvements, Summer '25
|
||||
[Docs] Update docs for Value Type setting for selected plugins
|
||||
[Docs] Move Send derived values as a per controller setting for tasks
|
||||
[Derived Values] Move enable sending per task-controller, Code optimization
|
||||
[C014] Docs: Update UoM feature
|
||||
[P027] Docs: Fix a few typos
|
||||
[P180] Improvements and fixes in handling of signed values
|
||||
[Docs] Update/extend the SPIFFS to LittleFS migration procedure
|
||||
[Docs] Update/extend the SPIFFS to LittleFS migration procedure
|
||||
[Docs] Extract SPIFFS to LittleFS migration guide for accessability
|
||||
[Docs] Expand SPIFFS to LittleFS migration guide, add troubleshooting section
|
||||
[AutoDiscovery] Add support for Wind direction and Wind speed
|
||||
[Plugins] Minor code improvement
|
||||
[UoM] Restructure UoM selector into categories, add more uom options
|
||||
[UoM] Fix UoM selector empty value
|
||||
[Docs] Update Unit of Measure documentation and screenshots
|
||||
[AutoDiscovery] Embed setting for `online` message in `/config` setting
|
||||
[Docs] Update documentation for C005
|
||||
[AutoDiscovery] Update PluginTemplate
|
||||
[AutoDiscovery] Embed setting for `online` message in `/config` setting
|
||||
[Docs] P165 Fix a few typos
|
||||
[AutoDiscovery] Remove unused code
|
||||
[AutoDiscovery] Make start delay compiletime configurable, and extend max delay from 10 to 30 sec.
|
||||
[Docs] Update documentation for C005
|
||||
[AutoDiscover] Add Duration, Date and Timestamp device classes, fix some irregularities
|
||||
[AutoDiscover] Add Data rate, Data size, Sound pressure and Signal strength
|
||||
[AutoDiscover] Refactor discovery message composition to reduce binary size by nearly 4k
|
||||
[AutoDiscover] Set Unit of Measure and Value Type when adding a device (when possible/available)
|
||||
[P095] Add ILI9342 display variants
|
||||
[P095] ILI9342 added configurations, set resolution correctly
|
||||
[P095] Update documentation
|
||||
[UoM] Correct a few Value Type UoM defaults
|
||||
[P026] Set default Value Type and UoM when changing a task value setting
|
||||
[Converters] Add `%c_ts2isodate%()` Timestamp to ISO date conversion
|
||||
[Converters] Add `%c_ts2isodate%()` Timestamp to ISO date conversion
|
||||
[AutoDiscover] Clean names sent to HA by replacing unsupported characters by `_`
|
||||
[Converters] Include system time-zone in `%c_ts2isodate%()` to have HA accept the `Timestamp` value type
|
||||
[Converters] Make system time-zone optional in `%c_ts2isodate%()` (second argument != 0)
|
||||
[Converters] Make system time-zone optional in `%c_ts2isodate%()` (second argument != 0)
|
||||
[AutoDiscover] Add `Date/Time` (`datetime`) Device class
|
||||
[AutoDiscover] Fix handling of BARO_ONLY values, and allow multiple BARO_ONLY values
|
||||
[AutoDiscover] Remove non-working `Date/Time` (`datetime`) Device class :-(
|
||||
[ValueTypes] Add categorized selector for Value Type per Value
|
||||
[P176] Set default Value Types when adding the plugin
|
||||
[ValueTypes] Fix optional None value
|
||||
[P180] Remove unneeded code
|
||||
[AutoDiscover] Try to get switch trigger working
|
||||
[ValueTypes] Reorder value types somewhat, use categorized selector where applicable
|
||||
[ValueTypes] Update documentation
|
||||
[P014] Fix MQTT Discovery value types
|
||||
[Build] Remove "_CDC_" from all env names due to linker issues
|
||||
[MQTT] Fix command handling for /set and /cmd topic endpoints, add support for P001 in /set
|
||||
[AutoDiscover] Mark some MQTT Device classes as 2-way to have on/off devices (Light)
|
||||
[CustomVtype, UoM] Fix compilation for ESP8266 when not all enabled
|
||||
[AutoDiscover] Better array index checks
|
||||
[Backup] Add backup without credentials included (security.dat)
|
||||
[Metrics] Add internal CPU temperature
|
||||
[Backup] Use term credentials instead of username/password
|
||||
[Backup] Update documentation
|
||||
[Metrics] Update documentation
|
||||
[AutoDiscover] Add support for P009 and P019, only send discovery for plugins that actually send data
|
||||
[AutoDiscover] Fix flippin bit-flip issue
|
||||
[AutoDiscover] Fix P021 not to be handled as a Switch
|
||||
[Backup] Fix typo in variable name for ESP8266
|
||||
[AutoDiscover] Fix Group configuration
|
||||
[Backup] Compile error when TAR support disabled
|
||||
[Libs] MFRC522 remove unused variable
|
||||
[Libs] PubSubClient signed/unsigned comnparison warning
|
||||
[AutoDiscover] Set default Auto Discovery topics when adding HA Controller
|
||||
[P009][P019] Fix logging alignment
|
||||
[AutoDiscover] Fix a few comments
|
||||
[AutoDiscover] Docs improvement for Group feature
|
||||
[TaskValueSetDerived] Improved parsing of Unit of Measure value
|
||||
[AutoDiscover] Fix conditional compilation issue
|
||||
[Rules] Enable rules by default on a clean install
|
||||
[AutoDiscover] Add state_class support and some Value Types
|
||||
[AutoDiscover] Enable state_class support for plugins and correct a few Value Types
|
||||
[AutoDiscover] Update documentation
|
||||
[AutoDiscover] Fix compilation when state_class support not enabled
|
||||
[AutoDiscover] Small code improvement
|
||||
[P078] Improved value descriptions and register appended, small code improvements
|
||||
[Caches] Formatting (minor)
|
||||
[P056] Add multi-instance use
|
||||
[P078] Fix docs parser warning
|
||||
[P056] Update documentation
|
||||
[P102] Add support for PZEM-017v1
|
||||
[P102] UI updates and corrections
|
||||
[P102] Add documentation
|
||||
[Build] Fix compiler warning for unused variable
|
||||
[BusCmd I2C] Add support for handling > 128 bytes on I2C read/write (ESP32)
|
||||
[BusCmd Helper] Add support for variable length string and buffers (Byte/Word), and some bugfixes
|
||||
[P180] Update documentation
|
||||
[BusCmd Helper] Send data & event when updating value.N from other than PLUGIN_READ action
|
||||
[BusCmd Helper] Add LetStr I2C command, analogue to the `LetStr` Rules command, updated documentation
|
||||
[P102] Small typo in documentation
|
||||
[AutoDiscover] Use %sysname% instead of group_nr if Controller Group = UnitNr
|
||||
[AutoDiscover] Update documentation for Group setting
|
||||
[AutoDiscover] Add 15 more Value types and 7 UoM values, fix some default UoM
|
||||
[AutoDiscover] Update Value type and UoM documentation
|
||||
[MQTT] Add Retain option per task
|
||||
[MQTT] Update documentation for Retained setting per task
|
||||
[MQTT] Some documentation improvements
|
||||
[Build] Add [P105] AHT2x to Collection G so it can be used with [P164] ENS160
|
||||
[P089] Add support for ESP32
|
||||
[P089] Remove unneeded attribute
|
||||
[P089] Create separate Ping Service to handle single-instance Ping function sequentially
|
||||
[P180] Add Tiny Code Reader example to documentation
|
||||
[P180] Add optional skip argument to IF I2C command, update docs
|
||||
[P021] Emphasize warning to prevent saving settings too often
|
||||
[P039] Update SPI and GPIO documentation
|
||||
[P037] Use configured decimals when generating events
|
||||
[P037] Update documentation for: use configured decimals when generating events
|
||||
[P168] Disable blocking Lux Read-Method options
|
||||
[P168] Update documentation
|
||||
[P102] Don't check non-available values for NaN
|
||||
[P102] Correct documentation small typos
|
||||
[MQTT] Handle connecting to broker as a background process
|
||||
[Tools] Update documentation for MQTT Connect in background
|
||||
[MQTT] Move Settings attribute to next available bit
|
||||
[MQTT] Reconnect on unexpected network interruptions
|
||||
[P089] Update documentation
|
||||
[MQTT] Cancel background connection request after 2 minutes when still not connected
|
||||
[MQTT] Fix reconnect on unexpected network interruptions
|
||||
[Discovery] Avoid setting the timeout more than once
|
||||
[MQTT] Use client timeout for delay between connection attempts
|
||||
[Build] Fix missing include
|
||||
[MQTT] Refactor background connection process to avoid logging from background task
|
||||
[AutoDiscover] Fix small typos in default UoM list
|
||||
[AutoDiscover] Fix spelling error in precipitation
|
||||
[AutoDiscover] Fix spelling error in precipitation
|
||||
[MQTT] Fix compilation on ESP8266 (Retain per task)
|
||||
[P089] Bugfix: Putt include in scope
|
||||
[P102] Use added setModel() method when needed
|
||||
[P033] Enable formula field
|
||||
[P033] Update documentation
|
||||
[P102] Use defined constants
|
||||
[P102] Add Submit instruction after use of 'Reset energy' mode
|
||||
[P102] Update documentation
|
||||
[Info] Emphasize the number of flash writes count since cold boot #3116
|
||||
[C011] HTTP Advanced - Don't URL-encode header
|
||||
[HTTP] Add support for TLS
|
||||
[HTTP] Enable TLS support for Controllers using HTTP
|
||||
[P002] Fix docs layout issue
|
||||
[HTTP] Defensive programming in test for https url
|
||||
[HTTP] Enable TLS support also for Controller C007 Emoncms
|
||||
[Devices] Limit displaying of (old) Wiki Help button to P056 and below
|
||||
[Devices] Limit displaying of (old) Wiki Help button to P079 and below
|
||||
[MQTT] Reduce work/memory in background task, use xTaskDelay as required
|
||||
[Docs] Correct some layout inconsistencies
|
||||
[Docs] Update overview generator, include Notify and Network plugins
|
||||
[Build] Fix compiler warning
|
||||
[Tools] Add Plugin list overview page
|
||||
[Tools] Update documentation for Plugin list
|
||||
[Build] Split Display into Display A and Display B
|
||||
[Build] Display A/B split: Update documentation
|
||||
[Tools] Add documentation-button to Plugin list overview page
|
||||
[Tools] Add preliminary support for Network plugins
|
||||
[Docs] Add MQTT Device class documentation for plugins where available
|
||||
[MQTT] Minor corrections
|
||||
[TLS] Update TLS to be able to use ECDHE_ECDSA_AES_128_GCM_SHA256 cipher
|
||||
[Docs] ESP8266 is Feature Complete!
|
||||
[TLS-MQTT] Automatic switch to ECDSA when error is 296 (TLS handshake)
|
||||
[MQTT AutoDiscovery] Add support for Switch Device Class
|
||||
[MQTT AutoDiscovery] Update documentation for Device Class
|
||||
[P026] Fix Value Type for TXpower to use dBm
|
||||
[HTTP] Fix build and feature-enable for non-MAX builds
|
||||
[HTTP] Update documentation for TLS options
|
||||
[UoM] Refactoring to reduce page-load time and size
|
||||
[Build] Add Collection H and split Climate into Climate A and Climate B
|
||||
[Build] Fix build errors for Collection H and Climate B
|
||||
[Build] Remove obsolete comments
|
||||
[Build] Move more plugins from Collection G to H to make Collection G fit
|
||||
[Build] Reduce build-size for all Collection builds using BUILD_NO_DEBUG
|
||||
[Build] Reduce build-size for Collection C build
|
||||
[P169] Fix DEBUG log
|
||||
[Build] Avoid build-reduction for MAX builds
|
||||
[Build] Avoid build-reduction for MAX builds
|
||||
[P021] Code optimizations
|
||||
[Build] Remove _LittleFS and _ETH from build names due to linker issues
|
||||
[Build] Enable `custom_remove_include` to not build ignored libs
|
||||
[Build] Limit package building to use Python 3.13
|
||||
[UI] Update addTaskSelector() to use FormSelectorOptions
|
||||
[Docs] P180 Add example for reading Sensirion SDP-8xx
|
||||
[Docs] P180 Small corrections
|
||||
[Docs] P180 Sensirion SDP-8xx add description for Single-shot measurement
|
||||
[Bugfix] Don't use Flash-string parameter default as ESP8266 compiler doesn't support that
|
||||
[Bugfix] PluginList add missing includes needed in some builds
|
||||
[PluginList] Update for HTTPS TLS support
|
||||
[Build] Fix SafeBoot build
|
||||
[Bugfix] Derived values avoid parsing invalid values causing crashes
|
||||
[Bugfix] Derived values avoid parsing invalid values causing crashes, more global fix
|
||||
[Bugfix] Revert previous change as that didn't really fix the issue
|
||||
[AutoDiscovery] Show Auto Discovery for Controllers that have this enabled (Task configuration)
|
||||
[Bugfix] Calculation missed value when returning from multiple brackets
|
||||
[Bugfix] MQTT StateClass selector stored wrong index
|
||||
[P003] Enable MQTT State Class option so pulse-counter can be used for energy measurement (in HA)
|
||||
[P180] BusCmd_Helper processing I2C commands via cmd subcommand was locked out
|
||||
[SysVars] Add %latitude% and %longitude% vars and Latitude and Longitude commands
|
||||
[SysVars] Documentation for %latitude% and %longitude% vars and Latitude and Longitude commands
|
||||
[P180] Enable CustomVTypeVar and MQTTStateClass device flags
|
||||
[P180] Fix typo in parameter for log subcommand
|
||||
[P180] Add documentation for TF-Luna laser distance sensor
|
||||
[P180] Small updates in documentation of TF-Luna laser distance sensor
|
||||
[P180] Add documentation for QMC6310 3-axis magnetic sensor, add example-index to docs page
|
||||
[Bugfix] Calculation of functions discarded the next operator
|
||||
[Bugfix] Calculation of functions remove unneeded value duplication, small debug-code optimization
|
||||
[Rules] Add some functions, conversions and constants
|
||||
[Rules] Add some functions, conversions and constants, fix docs typo
|
||||
[Docs] Updates and improvements (2025 Q4/2026-01)
|
||||
[Stats] Add minp/maxp stats values and change min/max stats values for running min/max value, update docs
|
||||
[Bugfix] Compilation error fix for custom IR build
|
||||
[Bugfix] Metrix: Export 0 for empty values
|
||||
[Bugfix] Metrix: Export 0 for empty values, fix for ESP8266
|
||||
[AdaGFX] Fix `tpm` subcommand argument check
|
||||
[Docs] Update copyright notice to show 2026
|
||||
[AdaGFX] Fix space-height issue for some fonts
|
||||
[P116] Add ST77xx resolutions 240x320 and 240x280
|
||||
[P116] Allow for > 16 hardware types in selection
|
||||
[P116] Update documentation with new resolutions
|
||||
[P087] Add support for receiving binary data, fixed length data, and event as hex string
|
||||
[P087] Update documentation
|
||||
[P087] Add to `ENERGY` build (ESP32 only)
|
||||
[Converters] Bugfix formatToHex_wordarray()
|
||||
[P087] Use PCONFIG_ULONG to store new config flags
|
||||
[P004] Change name to include DS18xxx/MAX31xxx for better recognizability
|
||||
[P057] Add documentation as it wasn't included yet
|
||||
|
||||
chromoxdor (63):
|
||||
Update Networking.cpp
|
||||
a tiny bit better formatting
|
||||
changes for OPENMETEO_EVENT and THINGSPEAK_EVENT
|
||||
Update Networking.cpp
|
||||
combining two functions
|
||||
wrong use of concat times two :)
|
||||
update
|
||||
Update Networking.cpp
|
||||
put thingspeak and openmeteo events into extra file
|
||||
added inverter event
|
||||
fix for not building on minimal_core_274_esp8266...
|
||||
#ifdef to #if. m(
|
||||
more universal json event approach
|
||||
Update HTTPResponseParser.h
|
||||
added variable decimals for floating point numbers
|
||||
some changes to the json-event
|
||||
made the eventQueue even more complex :P
|
||||
minor changes
|
||||
moved variable to cpp file
|
||||
updates
|
||||
Update HTTPResponseParser.cpp
|
||||
Update define_plugin_sets.h
|
||||
Update HTTPResponseParser.cpp
|
||||
Update HTTPResponseParser.cpp
|
||||
documentation and slight reduction of code
|
||||
Update define_plugin_sets.h
|
||||
corrected json examples
|
||||
Docs: Formatting and linking
|
||||
fixed typo
|
||||
[P164 ] Adding a sleep mode
|
||||
Update P164_data_struct.cpp
|
||||
Update define_plugin_sets.h
|
||||
Changes as requested
|
||||
Update HTTPResponseParser.rst
|
||||
Update HTTPResponseParser.cpp
|
||||
ColorCode Additions
|
||||
Update espeasy.js
|
||||
forgot the "f" and the minified version
|
||||
some unessecary commas removed
|
||||
no indentation for comments....
|
||||
added a format button if on mobile device
|
||||
format even without colorcode enabled
|
||||
more robust block checks
|
||||
jump to line of first error and keep history
|
||||
make it work for android non color rules again
|
||||
Readded search bar and enhanced it.
|
||||
fixed broken replace function
|
||||
forgot someting to change
|
||||
find while typing
|
||||
fix replace
|
||||
more robust live search handling
|
||||
removed unnecessary function
|
||||
scroll to top when found
|
||||
Update codemirror.min.css
|
||||
replace: scroll to top too
|
||||
as good as it gets :)
|
||||
minor corrections help text
|
||||
rephrasing of the confirm dialog
|
||||
fix: jump back to cursor position after formatting
|
||||
..and remove an old dialog before opening a new one
|
||||
disable shortcuts
|
||||
disable shortcut: forgot to add the corresponding function
|
||||
Update espeasy.min.js
|
||||
|
||||
dependabot[bot] (10):
|
||||
Bump cryptography from 43.0.1 to 44.0.1
|
||||
Bump actions/download-artifact from 4 to 5
|
||||
Bump actions/checkout from 4 to 5
|
||||
Bump actions/setup-python from 5 to 6
|
||||
Bump actions/github-script from 7 to 8
|
||||
Bump actions/download-artifact from 5 to 6
|
||||
Bump actions/upload-artifact from 4 to 5
|
||||
Bump actions/checkout from 5 to 6
|
||||
Bump actions/upload-artifact from 5 to 6
|
||||
Bump actions/download-artifact from 6 to 7
|
||||
|
||||
jfmennedy (1):
|
||||
Fix horizantal vane not working
|
||||
|
||||
repa6 (7):
|
||||
added TAC2100 support to _P078_Eastron plugin
|
||||
Update _P078_Eastron.ino with changelog info
|
||||
Update P078_data_struct.h: added comma after TAC2100=7
|
||||
extended TAC2100 registers list and added TAC2100 to docimentation
|
||||
fixed redister nature of load
|
||||
Update P078_data_struct.cpp - added nat:load to SDM_UOMtoString strings
|
||||
Update P078_data_struct.cpp - updated register addresses for the last 5 registers of TAC2100
|
||||
|
||||
|
||||
-------------------------------------------------
|
||||
Changes in release mega-20250430 (since mega-20241222)
|
||||
-------------------------------------------------
|
||||
|
||||
@@ -5,13 +5,15 @@
|
||||
#############################################################################################################
|
||||
# This script parses all documentation substitution files to determine in what builds a plugin is available
|
||||
# Collection A..G, Display, Energy and Neopixel, IR and IRext get Normal plugins injected
|
||||
# Collection plugins are also injected into Collection A..G
|
||||
# Collection, Notify and Network plugins are also injected into Collection A..G
|
||||
# All plugins get injected into MAX build set
|
||||
# Some build sets have exceptions for plugins not available
|
||||
# The output generation order is determined by how they are ordered in list 'buildColors'
|
||||
# When adding or removing a build set, this script may need adjustments!
|
||||
|
||||
# Changelog:
|
||||
# 2025-10-05 tonhuisman: Adjustments for Display A and Display B split
|
||||
# 2025-10-01 tonhuisman: Include Notify and Network plugins, ignore not available files, parse NWxxx also
|
||||
# 2024-05-04 tonhuisman: Working and documented
|
||||
# 2024-04-28 tonhuisman: Initial script
|
||||
|
||||
@@ -30,8 +32,10 @@ appendBuilds = {'MAX'}
|
||||
|
||||
# What build set to add plugins also
|
||||
appendAlso = {
|
||||
'NORMAL': {'CLIMATE', 'COLLECTION A', 'COLLECTION B', 'COLLECTION C', 'COLLECTION D', 'COLLECTION E', 'COLLECTION F', 'COLLECTION G', 'DISPLAY', 'ENERGY', 'IR', 'IRext', 'NEOPIXEL'},
|
||||
'COLLECTION': {'COLLECTION A', 'COLLECTION B', 'COLLECTION C', 'COLLECTION D', 'COLLECTION E', 'COLLECTION F', 'COLLECTION G'}
|
||||
'NORMAL': {'CLIMATE', 'COLLECTION A', 'COLLECTION B', 'COLLECTION C', 'COLLECTION D', 'COLLECTION E', 'COLLECTION F', 'COLLECTION G', 'COLLECTION H', 'DISPLAY A', 'DISPLAY B', 'ENERGY', 'IR', 'IRext', 'NEOPIXEL'},
|
||||
'COLLECTION': {'COLLECTION A', 'COLLECTION B', 'COLLECTION C', 'COLLECTION D', 'COLLECTION E', 'COLLECTION F', 'COLLECTION G', 'COLLECTION H'},
|
||||
'DISPLAY': {'DISPLAY A', 'DISPLAY B'},
|
||||
'CLIMATE': {'CLIMATE A', 'CLIMATE B'}
|
||||
}
|
||||
|
||||
# Ignore these, not real build sets
|
||||
@@ -39,9 +43,11 @@ excludeBuilds = {'DEVELOPMENT', 'RETIRED'}
|
||||
|
||||
# Plugins not included
|
||||
excludePlugins = {
|
||||
'CLIMATE': {'P007', 'P008', 'P009', 'P017', 'P022', 'P027', 'P030', 'P035', 'P040', 'P041', 'P042', 'P045'},
|
||||
'DISPLAY': {'P070'},
|
||||
'MAX': {'P089'},
|
||||
'CLIMATE A': {'P007', 'P008', 'P009', 'P017', 'P022', 'P027', 'P030', 'P035', 'P040', 'P041', 'P042', 'P045'},
|
||||
'CLIMATE B': {'P007', 'P008', 'P009', 'P017', 'P022', 'P027', 'P030', 'P035', 'P040', 'P041', 'P042', 'P045'},
|
||||
'DISPLAY A': {'P038', 'P041', 'P042', 'P070'},
|
||||
'DISPLAY B': {'P038', 'P041', 'P042', 'P057', 'P070', 'P075', 'P104'},
|
||||
# 'MAX': {''},
|
||||
# 'NEOPIXEL': {''},
|
||||
'NORMAL': {'P016', 'P035'},
|
||||
}
|
||||
@@ -56,8 +62,11 @@ buildColors = {
|
||||
'COLLECTION E': 'yellow',
|
||||
'COLLECTION F': 'yellow',
|
||||
'COLLECTION G': 'yellow',
|
||||
'CLIMATE': 'yellow',
|
||||
'DISPLAY': 'yellow',
|
||||
'COLLECTION H': 'yellow',
|
||||
'CLIMATE A': 'yellow',
|
||||
'CLIMATE B': 'yellow',
|
||||
'DISPLAY A': 'yellow',
|
||||
'DISPLAY B': 'yellow',
|
||||
'ENERGY': 'yellow',
|
||||
'IR': 'yellow',
|
||||
'IRext': 'yellow',
|
||||
@@ -101,6 +110,8 @@ def addToAllBuilds(plugin, pluginName, builds:dict):
|
||||
# Parse a single substitution file
|
||||
def parseSingleSubstitutionFile(fileName):
|
||||
filepath = os.path.relpath(os.path.join(basePath, fileName), '.')
|
||||
if not os.path.isfile(filepath):
|
||||
return
|
||||
# print(filepath) # For debugging
|
||||
pfile = open(filepath, "r")
|
||||
# Start empty
|
||||
@@ -113,7 +124,7 @@ def parseSingleSubstitutionFile(fileName):
|
||||
break
|
||||
# Parse into label, plugin ID, description and up to 4 separate builds (current max.),
|
||||
# append "(?:[^`]+`([^`]+)`)?" to regex for an extra build, if needed
|
||||
m = re.search(r"[^|]\|([PCN](\d{3}))([^\|]+)\|[^`]+`([^`]+)`(?:[^`]+`([^`]+)`)?(?:[^`]+`([^`]+)`)?(?:[^`]+`([^`]+)`)?", line)
|
||||
m = re.search(r"[^|]\|((?:NW|[PCN])(\d{3}))([^\|]+)\|[^`]+`([^`]+)`(?:[^`]+`([^`]+)`)?(?:[^`]+`([^`]+)`)?(?:[^`]+`([^`]+)`)?", line)
|
||||
if m:
|
||||
if m.group(3) == "_typename": # the typename substitution should be before _status...
|
||||
if plugin != "" and plugin != m.group(1): # Changed plugin ID, store current
|
||||
@@ -178,6 +189,10 @@ print('Parsing substitutions for build sets...')
|
||||
parseSubstitutionFiles('../Plugin/_plugin_substitutions.repl')
|
||||
# Parse all Controller substitutions
|
||||
parseSingleSubstitutionFile('../Controller/_controller_substitutions.repl')
|
||||
# Parse all Notify substitutions
|
||||
parseSingleSubstitutionFile('../Notify/_notify_substitutions_n00x.repl')
|
||||
# Parse all Network substitutions
|
||||
parseSingleSubstitutionFile('../Network/_network_substitutions.repl')
|
||||
|
||||
# Generate output
|
||||
generateBuildOverview('../Plugin/_plugin_sets_overview.repl')
|
||||
|
||||
@@ -52,6 +52,10 @@ Generic fields
|
||||
- **Controller Port** - TCP/UDP Port number (0...65536)
|
||||
- **Enabled** - Whether or not the controller is active.
|
||||
|
||||
When **TLS** is included in the build, some of the Controllers have a setting to enable a TLS option. For HTTP-based controller protocols, this usually expects the port to adjusted from 80 to 443, but of course any custom port can be used. For MQTT controllers, the port is automatically updated from 1883 (No TLS) to 8883 when a TLS-enabled setting is selected.
|
||||
|
||||
- **Use TLS** - Select the desired TLS type. The available options depend on what's implemented, and will change when development progresses. The default setting is **No TLS**.
|
||||
|
||||
Send queue parameters
|
||||
---------------------
|
||||
|
||||
|
||||
@@ -1,6 +1,29 @@
|
||||
Supported ESP Chips
|
||||
*******************
|
||||
|
||||
ESP8266 is Feature Complete!
|
||||
============================
|
||||
|
||||
(Since 2025-04-30)
|
||||
|
||||
The core team has decided to declare the ESP8266 builds (that also support ESP8285) Feature Complete, for multiple reasons:
|
||||
|
||||
* **Binary size**: Making (new or enhanced) plugins and growing feature set fit in the limited available binary space of an ESP8266 (1020kB) is getting harder and harder. Many hundreds of hours have been spent already to reduce size as much as possble, and there isn't much room for improvement anymore.
|
||||
* **Limited RAM available**: The ESP8266 has only 80 kB of RAM available, and with the core of ESPEasy loaded, that leaves only between 15 and 25 kB of free memory for plugins to work with. This is a major cause for crashes when some complicated tasks are handling data of some size.
|
||||
* **Chip development progress**: New features for ESP chips are being developed, but the ESP8266 platform, while still being manufactured, does not get technical improvements anymore.
|
||||
* **Software support by Espressif**: New software development in the framework for supporting the ESP platform is only directed at the ESP32 line of MCUs. No new development for ESP8266 is being done.
|
||||
|
||||
The consequences of this decision are that:
|
||||
|
||||
* New plugins and features are **not** included in the regularly made available ESP8266 builds.
|
||||
* To enable some of the new features (many are still useable) for ESP8266, a Custom build can be configured and built by the user, as documented in :ref:`PlatformIO_page`.
|
||||
* A notable exception is support for TLS: That's *not* possible to enable on ESPEasy in ESP8266 builds as it doesn't fit in the limited available RAM memory.
|
||||
|
||||
For new projects, it is strongly advised to select one of the many available ESP32 boards, or chips when designing a custom board. Some of the ESP32 variants are available with 16 MB Flash (ESP32 Classic, ESP32-C3, ESP32-C6 and ESP32-S3), and have 1 or more MAX builds available in ESPEasy, that include all plugins and features available, and also a larger selection of fonts for displays (TFT/LCD, OLed and 7-segment).
|
||||
|
||||
Overview of supported chips
|
||||
===========================
|
||||
|
||||
ESPEasy does support a number of variants of the processors manufactured by Espressif.
|
||||
|
||||
* **ESP8266** The original ESP processor, with external flash.
|
||||
@@ -593,8 +616,10 @@ Datasheets
|
||||
* `DS:ESP32-S3 <https://www.espressif.com/sites/default/files/documentation/esp32-s3_datasheet_en.pdf>`_
|
||||
* `DS:ESP32-C3 <https://www.espressif.com/sites/default/files/documentation/esp32-c3_datasheet_en.pdf>`_ / `DS:ESP8685 <https://www.espressif.com/sites/default/files/documentation/esp8685_datasheet_en.pdf>`_
|
||||
* `DS:ESP32-C2 <https://www.espressif.com/sites/default/files/documentation/esp8684_datasheet_en.pdf>`_ / `DS:ESP8684 <https://www.espressif.com/sites/default/files/documentation/esp8684_datasheet_en.pdf>`_
|
||||
* `DS:ESP32-C5 <https://www.espressif.com/sites/default/files/documentation/esp32-c5_datasheet_en.pdf>`_
|
||||
* `DS:ESP32-C6 <https://www.espressif.com/sites/default/files/documentation/esp32-c6_datasheet_en.pdf>`_
|
||||
* `DS:ESP32-H2 <https://cdn-shop.adafruit.com/product-files/5715/esp32-h2_datasheet_en.pdf>`_
|
||||
* `DS:ESP32-P4 <https://www.espressif.com/sites/default/files/documentation/esp32-p4_datasheet_en.pdf>`_
|
||||
|
||||
|
||||
Technical Reference Manuals
|
||||
@@ -606,8 +631,10 @@ Technical Reference Manuals
|
||||
* `TR:ESP32-S3 <https://www.espressif.com/sites/default/files/documentation/esp32-s3_technical_reference_manual_en.pdf>`_
|
||||
* `TR:ESP32-C3 <https://www.espressif.com/sites/default/files/documentation/esp32-c3_technical_reference_manual_en.pdf>`_
|
||||
* `TR:ESP32-C2 <https://www.espressif.com/sites/default/files/documentation/esp8684_technical_reference_manual_en.pdf>`_
|
||||
* `TR:ESP32-C5 <https://www.espressif.com/sites/default/files/documentation/esp32-c5_technical_reference_manual_en.pdf>`_
|
||||
* `TR:ESP32-C6 <https://www.espressif.com/sites/default/files/documentation/esp32-c6_technical_reference_manual_en.pdf>`_
|
||||
* `TR:ESP32-H2 <https://www.espressif.com/sites/default/files/documentation/esp32-h2_technical_reference_manual_en.pdf>`_
|
||||
* `TR:ESP32-P4 <https://www.espressif.com/sites/default/files/documentation/esp32-p4_technical_reference_manual_en.pdf>`_
|
||||
|
||||
|
||||
ESP8266/ESP8285
|
||||
@@ -854,7 +881,7 @@ ESP32-C5
|
||||
|
||||
This will be the first Espressif SoC supporting 5 GHz WiFi.
|
||||
|
||||
.. note:: Not yet available (as of Dec 2024)
|
||||
.. note:: Beta silicon is available (as of June 2025), which may change in Q3 or Q4 of 2025. So not yet adviced to be used in real products
|
||||
|
||||
ESP32-C6
|
||||
========
|
||||
@@ -897,4 +924,5 @@ The CPU is rather powerful and there are versions with quite a large amount of P
|
||||
|
||||
It does have a RMII interface for Ethernet, like the ESP32-classic does.
|
||||
|
||||
.. note:: Not yet supported (as of Dec 2024)
|
||||
.. note:: Not yet supported. Beta silicon is available (as of June 2025), which may change in Q3 or Q4 of 2025. So not yet adviced to be used in real products
|
||||
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
.. include:: _network_substitutions.repl
|
||||
|
||||
.. _NW001_page:
|
||||
|
||||
|NW001_typename|
|
||||
==================================================
|
||||
|
||||
|NW001_shortinfo|
|
||||
|
||||
Network details
|
||||
---------------
|
||||
|
||||
Type: |NW001_type|
|
||||
|
||||
Name: |NW001_name|
|
||||
|
||||
Status: |NW001_status|
|
||||
|
||||
GitHub: |NW001_github|_
|
||||
|
||||
Maintainer: |NW001_maintainer|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
|
||||
Description
|
||||
-----------
|
||||
@@ -0,0 +1,39 @@
|
||||
.. include:: _network_substitutions.repl
|
||||
|
||||
.. _NW002_page:
|
||||
|
||||
|NW002_typename|
|
||||
==================================================
|
||||
|
||||
|NW002_shortinfo|
|
||||
|
||||
Network details
|
||||
---------------
|
||||
|
||||
Type: |NW002_type|
|
||||
|
||||
Name: |NW002_name|
|
||||
|
||||
Status: |NW002_status|
|
||||
|
||||
GitHub: |NW002_github|_
|
||||
|
||||
Maintainer: |NW002_maintainer|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
|
||||
Description
|
||||
-----------
|
||||
@@ -0,0 +1,39 @@
|
||||
.. include:: _network_substitutions.repl
|
||||
|
||||
.. _NW003_page:
|
||||
|
||||
|NW003_typename|
|
||||
==================================================
|
||||
|
||||
|NW003_shortinfo|
|
||||
|
||||
Network details
|
||||
---------------
|
||||
|
||||
Type: |NW003_type|
|
||||
|
||||
Name: |NW003_name|
|
||||
|
||||
Status: |NW003_status|
|
||||
|
||||
GitHub: |NW003_github|_
|
||||
|
||||
Maintainer: |NW003_maintainer|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
|
||||
Description
|
||||
-----------
|
||||
@@ -0,0 +1,39 @@
|
||||
.. include:: _network_substitutions.repl
|
||||
|
||||
.. _NW004_page:
|
||||
|
||||
|NW004_typename|
|
||||
==================================================
|
||||
|
||||
|NW004_shortinfo|
|
||||
|
||||
Network details
|
||||
---------------
|
||||
|
||||
Type: |NW004_type|
|
||||
|
||||
Name: |NW004_name|
|
||||
|
||||
Status: |NW004_status|
|
||||
|
||||
GitHub: |NW004_github|_
|
||||
|
||||
Maintainer: |NW004_maintainer|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
|
||||
Description
|
||||
-----------
|
||||
@@ -0,0 +1,56 @@
|
||||
.. include:: _network_substitutions.repl
|
||||
|
||||
.. _NW005_page:
|
||||
|
||||
|NW005_typename|
|
||||
==================================================
|
||||
|
||||
|NW005_shortinfo|
|
||||
|
||||
Network details
|
||||
---------------
|
||||
|
||||
Type: |NW005_type|
|
||||
|
||||
Name: |NW005_name|
|
||||
|
||||
Status: |NW005_status|
|
||||
|
||||
GitHub: |NW005_github|_
|
||||
|
||||
Maintainer: |NW005_maintainer|
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
|
||||
Device Settings
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
|
||||
|
||||
Connection Settings
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Initial release version.
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
After Width: | Height: | Size: 59 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 37 KiB |
@@ -0,0 +1,31 @@
|
||||
.. include:: _network_substitutions.repl
|
||||
|
||||
Network
|
||||
*******
|
||||
|
||||
A Network plugin is compable with a 'driver' for a network adapter.
|
||||
|
||||
The first 2 entries will be the same for every ESPEasy setup and these cannot be removed.
|
||||
|
||||
- Wi-Fi Station: To connect the ESP board to an access point.
|
||||
- Wi-Fi AP: To let the ESP board act as an access point.
|
||||
|
||||
|
||||
|
||||
.. _Network Plugins:
|
||||
|
||||
Network Plugins
|
||||
==================
|
||||
|
||||
.. csv-table::
|
||||
:header: "Plugin name", "Plugin status", "Plugin number"
|
||||
:widths: 10, 8, 5
|
||||
|
||||
":ref:`NW001_page`","|NW001_status|","NW001"
|
||||
":ref:`NW002_page`","|NW002_status|","NW002"
|
||||
":ref:`NW003_page`","|NW003_status|","NW003"
|
||||
":ref:`NW004_page`","|NW004_status|","NW004"
|
||||
":ref:`NW005_page`","|NW005_status|","NW005"
|
||||
|
||||
Network Parameters
|
||||
=====================
|
||||
@@ -0,0 +1,58 @@
|
||||
|
||||
|
||||
|
||||
.. |NW001_name| replace:: :cyan:`WiFi Station`
|
||||
.. |NW001_type| replace:: :cyan:`Network`
|
||||
.. |NW001_typename| replace:: :cyan:`Network - WiFi Station`
|
||||
.. |NW001_status| replace:: :green:`NORMAL`
|
||||
.. |NW001_github| replace:: _NW001_WiFi_STA.cpp
|
||||
.. _NW001_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/ESPEasy/net/_NW001_WiFi_STA.cpp
|
||||
.. |NW001_usedby| replace:: `.`
|
||||
.. |NW001_shortinfo| replace:: `.`
|
||||
.. |NW001_maintainer| replace:: `TD-er`
|
||||
.. |NW001_compileinfo| replace:: `.`
|
||||
|
||||
.. |NW002_name| replace:: :cyan:`WiFi AP`
|
||||
.. |NW002_type| replace:: :cyan:`Network`
|
||||
.. |NW002_typename| replace:: :cyan:`Network - WiFi AP`
|
||||
.. |NW002_status| replace:: :green:`NORMAL`
|
||||
.. |NW002_github| replace:: _NW002_WiFi_AP.cpp
|
||||
.. _NW002_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/ESPEasy/net/_NW002_WiFi_AP.cpp
|
||||
.. |NW002_usedby| replace:: `.`
|
||||
.. |NW002_shortinfo| replace:: `.`
|
||||
.. |NW002_maintainer| replace:: `TD-er`
|
||||
.. |NW002_compileinfo| replace:: `.`
|
||||
|
||||
.. |NW003_name| replace:: :cyan:`Ethernet (RMII)`
|
||||
.. |NW003_type| replace:: :cyan:`Network`
|
||||
.. |NW003_typename| replace:: :cyan:`Network - Ethernet (RMII)`
|
||||
.. |NW003_status| replace:: :green:`NORMAL`
|
||||
.. |NW003_github| replace:: _NW003_ETH_RMII.cpp
|
||||
.. _NW003_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/ESPEasy/net/_NW003_ETH_RMII.cpp
|
||||
.. |NW003_usedby| replace:: `.`
|
||||
.. |NW003_shortinfo| replace:: `.`
|
||||
.. |NW003_maintainer| replace:: `TD-er`
|
||||
.. |NW003_compileinfo| replace:: `.`
|
||||
|
||||
.. |NW004_name| replace:: :cyan:`Ethernet (SPI)`
|
||||
.. |NW004_type| replace:: :cyan:`Network`
|
||||
.. |NW004_typename| replace:: :cyan:`Network - Ethernet (SPI)`
|
||||
.. |NW004_status| replace:: :green:`NORMAL`
|
||||
.. |NW004_github| replace:: _NW004_ETH_SPI.cpp
|
||||
.. _NW004_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/ESPEasy/net/_NW004_ETH_SPI.cpp
|
||||
.. |NW004_usedby| replace:: `.`
|
||||
.. |NW004_shortinfo| replace:: `.`
|
||||
.. |NW004_maintainer| replace:: `TD-er`
|
||||
.. |NW004_compileinfo| replace:: `.`
|
||||
|
||||
.. |NW005_name| replace:: :cyan:`PPP Modem`
|
||||
.. |NW005_type| replace:: :cyan:`Network`
|
||||
.. |NW005_typename| replace:: :cyan:`Network - PPP Modem`
|
||||
.. |NW005_status| replace:: :green:`NORMAL`
|
||||
.. |NW005_github| replace:: _NW005_PPP_modem.cpp
|
||||
.. _NW005_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/ESPEasy/net/_NW005_PPP_modem.cpp
|
||||
.. |NW005_usedby| replace:: `.`
|
||||
.. |NW005_shortinfo| replace:: `.`
|
||||
.. |NW005_maintainer| replace:: `TD-er`
|
||||
.. |NW005_compileinfo| replace:: `.`
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
.. _N001_page:
|
||||
|
||||
Notifications Email (SMTP)
|
||||
===========================
|
||||
|N001_typename|
|
||||
===============================
|
||||
|
||||
|N001_shortinfo|
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
|
||||
.. _N002_page:
|
||||
|
||||
Notifications Buzzer
|
||||
=====================
|
||||
|N002_typename|
|
||||
========================
|
||||
|
||||
|N002_shortinfo|
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
.. |N001_type| replace:: :cyan:`Notifications`
|
||||
.. |N001_name| replace:: :cyan:`Notifications Email (SMTP)`
|
||||
.. |N001_name| replace:: :cyan:`Notifications - Email (SMTP)`
|
||||
.. |N001_typename| replace:: :cyan:`Notifications - Email (SMTP)`
|
||||
.. |N001_porttype| replace:: `.`
|
||||
.. |N001_status| replace:: :green:`NORMAL` :yellow:`CLIMATE` :yellow:`COLLECTION` :yellow:`SONOFF` :yellow:`SHELLY`
|
||||
@@ -11,7 +11,7 @@
|
||||
.. |N001_page| replace:: N001
|
||||
|
||||
.. |N002_type| replace:: :cyan:`Notifications`
|
||||
.. |N002_name| replace:: :cyan:`Notifications Buzzer`
|
||||
.. |N002_name| replace:: :cyan:`Notifications - Buzzer`
|
||||
.. |N002_typename| replace:: :cyan:`Notifications - Buzzer`
|
||||
.. |N002_porttype| replace:: `.`
|
||||
.. |N002_status| replace:: :green:`NORMAL` :yellow:`CLIMATE` :yellow:`COLLECTION` :yellow:`SONOFF` :yellow:`SHELLY`
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
MQTT Device class
|
||||
^^^^^^^^^^^^^^^^^
|
||||
|
||||
(Only available if both MQTT Auto Discovery and Device Class features are included in the build.)
|
||||
|
||||
* **MQTT Device class**: Select the Binary Device class that's to be used for this task device. Device classes marked with ``²`` are 'two-way' devices, meaning that the state will be updated when changed, either on the ESPEasy side, or on the MQTT (Home Assistant) side. For the MQTT Device classes ``switch`` and ``outlet``, both also marked with ``÷``, the discovery is marked as ``switch`` instead of ``light``.
|
||||
|
||||
The default value used is ``switch``, also when not set (empty), and can be updated in Home Assistant by resending the MQTT Discovery.
|
||||
|
||||
The available options are based on the Summer 2025 version of this `Home Assistant MQTT Binary sensor documentation page <https://www.home-assistant.io/integrations/binary_sensor/#device-class>`_ and also related to this `Home Assistant MQTT Switch device page <https://www.home-assistant.io/integrations/switch.mqtt/>`_ (though that doesn't document *any* Auto Discovery information)
|
||||
|
||||
The ``switch`` device class shows an On/Off icon, the default icon shown for other ``light`` or ``binary_sensor`` devices in Home Assistant (HA) can be changed for an alternative in the HA configuration, if desired, after Auto Discovery has created the device there.
|
||||
@@ -303,6 +303,18 @@
|
||||
|
||||
Example output: ``IP:192.168.10.86(DHCP)``"
|
||||
"
|
||||
Latitude","
|
||||
:red:`Internal`","
|
||||
Set the latitude for the unit, that's used when calculation the sunrise/sunset times.
|
||||
|
||||
``Latitude[,<degrees>]``
|
||||
|
||||
Range: -90 .. 90 (decimal, negative is southern hemisphere)
|
||||
|
||||
When no argument is provided, the current setting is shown.
|
||||
|
||||
See also ``Longitude``."
|
||||
"
|
||||
Let","
|
||||
:red:`Internal`","
|
||||
Set the value of variable n (1..INT_MAX), or use a variable name.
|
||||
@@ -344,6 +356,18 @@
|
||||
|
||||
``LogPortStatus``"
|
||||
"
|
||||
Longitude","
|
||||
:red:`Internal`","
|
||||
Set the longitude for the unit, that's used when calculation the sunrise/sunset times.
|
||||
|
||||
``Longitude[,<degrees>]``
|
||||
|
||||
Range: -180 .. 180 (decimal, negative is west of the prime meridian)
|
||||
|
||||
When no argument is provided, the current setting is shown.
|
||||
|
||||
See also ``Latitude``."
|
||||
"
|
||||
LoopTimerSet
|
||||
|
||||
LoopTimerSet_ms","
|
||||
@@ -521,6 +545,12 @@
|
||||
Added: 2023-01-15
|
||||
"
|
||||
"
|
||||
PostToHTTPS","
|
||||
:green:`Rules`","
|
||||
Like ``PostToHTTP`` but using a TLS connection, by default on port 443
|
||||
|
||||
NB: No certificate validation is done!
|
||||
"
|
||||
ProvisionConfig","
|
||||
:red:`Internal`","
|
||||
Fetch ``config.dat`` as configured in the Provisioning configuration (see Settings Archive)
|
||||
@@ -622,6 +652,12 @@
|
||||
Added: 2023-04-17
|
||||
"
|
||||
"
|
||||
PutToHTTPS","
|
||||
:green:`Rules`","
|
||||
Like ``PutToHTTP`` but using a TLS connection, by default on port 443
|
||||
|
||||
NB: No certificate validation is done!
|
||||
"
|
||||
Reboot","
|
||||
:red:`Internal`","
|
||||
Reboot the ESP
|
||||
@@ -696,6 +732,12 @@
|
||||
On completion of the command, the returned status code can be handled in a generated event, f.e. ``http#hostname=404`` for not found error, or ``http#hostname=200`` for success.
|
||||
"
|
||||
"
|
||||
SendToHTTPS","
|
||||
:green:`Rules`","
|
||||
Like ``SendToHTTP`` but using a TLS connection, by default on port 443
|
||||
|
||||
NB: No certificate validation is done!
|
||||
"
|
||||
SendToUDP","
|
||||
:green:`Rules`","
|
||||
Send command to other network device using UDP (non-ESP Easy units)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p00x.repl
|
||||
.. include:: ../Plugin/_plugin_substitutions_p00x.repl
|
||||
.. _P001_page:
|
||||
|
||||
|P001_typename|
|
||||
@@ -25,6 +25,9 @@ Supported hardware
|
||||
|
||||
|P001_usedby|
|
||||
|
||||
|
||||
.. include:: DeviceClass_binary.repl
|
||||
|
||||
Commands available
|
||||
------------------
|
||||
|
||||
|
||||
@@ -437,10 +437,12 @@ Change log
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|improved| 2020-04-25 Added support for ESP32 ADC pins + Hall Effect Sensor.
|
||||
|improved| 2022-07-11 Added ESP32 Factory calibration, multipoint processing, binning and charts.
|
||||
|improved| 2022-07-27 Improved resolution when using ESP32 Factory Calibration.
|
||||
|
||||
|improved| 2022-07-11 Added ESP32 Factory calibration, multipoint processing, binning and charts.
|
||||
|
||||
|improved| 2020-04-25 Added support for ESP32 ADC pins + Hall Effect Sensor.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|
||||
@@ -110,6 +110,8 @@ Advanced event management
|
||||
|
||||
* **Use safe button (slower)**: This effectively adds an extra De-bounce delay and sends event value ``4`` when reached.
|
||||
|
||||
.. include:: DeviceClass_binary.repl
|
||||
|
||||
.. include:: DataAcquisition.repl
|
||||
|
||||
* **Interval** By default, Interval will be set to 60 sec. It is the frequency used to read sensor values and send these to any Controllers configured for this device.
|
||||
|
||||
@@ -112,6 +112,8 @@ Advanced event management
|
||||
|
||||
* **Use safe button (slower)**: This effectively adds an extra De-bounce delay and sends event value ``4`` when reached.
|
||||
|
||||
.. include:: DeviceClass_binary.repl
|
||||
|
||||
.. include:: DataAcquisition.repl
|
||||
|
||||
* **Interval** By default, Interval will be set to 60 sec. It is the frequency used to read sensor values and send these to any Controllers configured for this device.
|
||||
|
||||
@@ -136,6 +136,8 @@ Sensor
|
||||
|
||||
* **Auto-save interval** Here a time in minutes can be set after which any changed 'Set Level' via the ``config,task,<taskname>,SetLevel,<value>`` command will be saved. This *requires* that the above setting **Save 'Set Level' after change via config command** is **disabled**! When used, a setting of ca. 30 minutes, or even longer when the Set Level is changed often, seems apropriate, unless the unit often reboots, but then that cause should be investigated and solved. The timer, when activated, should survive a warm reboot.
|
||||
|
||||
.. warning:: Saving settings too often will cause damage to the Flash memory of the unit!
|
||||
|
||||
* **Extended functionality**:sup:`1)` Enable new functionality. Changing this will reload the form showing/hiding the new options below.
|
||||
|
||||
* **Long time span**:sup:`1)` Timer values are per default entered in [seconds], enabling this option timing settings are tuned to long intervals using [hours] or [seconds]. Changing this will reload the form showing rescaled values and new units.
|
||||
@@ -160,6 +162,8 @@ Sensor
|
||||
|
||||
:sup:`1)` Configuration may not be available due to build size limitations.
|
||||
|
||||
.. include:: DeviceClass_binary.repl
|
||||
|
||||
.. include:: DataAcquisition.repl
|
||||
|
||||
Values
|
||||
|
||||
@@ -32,6 +32,16 @@ Dummy tasks can be used like temporary variables to store data.
|
||||
One nice benefit is that these task values of Dummy tasks are also kept in RTC memory.
|
||||
So these may survive a reboot, as long as the ESP remains powered.
|
||||
|
||||
Device Configuration
|
||||
--------------------
|
||||
|
||||
.. image:: P033_DeviceConfiguration.png
|
||||
|
||||
* **Name**: Required by ESPEasy, must be unique among the list of available devices/tasks.
|
||||
|
||||
* **Enabled**: The device can be disabled or enabled. When not enabled the device should not use any resources.
|
||||
|
||||
|
||||
Storing Values
|
||||
--------------
|
||||
|
||||
@@ -77,7 +87,7 @@ This selector is using a categorized display when the build includes this enhanc
|
||||
|
||||
Available options, grouped per category:
|
||||
|
||||
**Basic**: ``Single, Dual, Tripple, Quad``
|
||||
**Basic**: ``Single, Dual, Triple, Quad``
|
||||
|
||||
**Environment**: ``Temp¹, Hum¹, Baro¹, Wind¹``
|
||||
|
||||
@@ -147,6 +157,13 @@ And all connected controllers of that task will be handed over the values presen
|
||||
|
||||
Especially Domoticz controllers are very specific to the output data type.
|
||||
|
||||
Values
|
||||
^^^^^^
|
||||
|
||||
The plugin provides the ``Dummy`` value, that can be changed to the desired name. A formula can be set to recalculate the displayed, and sent, value. The number of decimals can be set as desired, and defaults to 2.
|
||||
|
||||
In selected builds, per Value is a **Stats** checkbox available, that when checked, gathers the data and presents recent data in a graph, as described here: :ref:`Task Value Statistics: <Task Value Statistics>`
|
||||
|
||||
|
||||
.. Supported hardware
|
||||
.. ------------------
|
||||
@@ -169,6 +186,9 @@ Change log
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|improved|
|
||||
2025-07-17 Add categorized output configuration (ESP32 only)
|
||||
|
||||
|improved|
|
||||
2023-04-15 Add more types of task values, like (u)int32, (u)int64 and double.
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 46 KiB |
@@ -54,7 +54,7 @@ Description
|
||||
This Plugin reads the data from Thermocouples and Resistor Temperature Detector sensors. You have to use an Adapter Board with a respective
|
||||
adapter/converter in order to read the values. Take a look at the usual sources to find such boards.
|
||||
|
||||
You can only use ESP8266 boards which expose the SPI Interface. This Plugin uses only the Hardware SPI Interface - no software SPI at the moment.
|
||||
You can use any board which expose the SPI Interface. This Plugin uses only the selected SPI Interface.
|
||||
Nevertheless you need at least 3 Pins to use SPI. So using an very simple ESP-01 is unfortunately no option.
|
||||
|
||||
**Basic Information on Thermocouples**
|
||||
@@ -68,7 +68,7 @@ Wiring
|
||||
|
||||
Basic Information on SPI Bus you can find in `Wikipedia: SPI Bus <https://en.wikipedia.org/wiki/Serial_Peripheral_Interface>`_
|
||||
|
||||
You need an ESP8266 device with accessible SPI Pins. These Pins are:
|
||||
You need an **ESP8266** device with accessible SPI Pins. These Pins are:
|
||||
|
||||
==== ============= ====== ======== =========================================================================
|
||||
Name Description PIO NodeMCU Notes
|
||||
@@ -81,6 +81,8 @@ CS Chip Select GPIO15 D8 Hardware SPI (CS is configurable through
|
||||
|
||||
.. note:: Write Access to device registers is required for MAX 31856 and MAX 31865 devices so far.
|
||||
|
||||
For **ESP32** you can use any VSPI, HSPI or User Defined configuration, as the GPIO multiplexer in ESP32 chips can handle any GPIO pin with Input and Output capability for SPI.
|
||||
|
||||
Supported Hardware
|
||||
------------------
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
.. include:: ../Plugin/_plugin_substitutions_p05x.repl
|
||||
.. include:: ../Plugin/_plugin_substitutions_p05x.repl
|
||||
.. _P057_page:
|
||||
|
||||
|P057_typename|
|
||||
@@ -26,10 +26,59 @@ Supported hardware
|
||||
|
||||
|P057_usedby|
|
||||
|
||||
.. Commands available
|
||||
.. ^^^^^^^^^^^^^^^^^^
|
||||
Introduction
|
||||
------------
|
||||
|
||||
.. .. include:: P057_commands.repl
|
||||
The HT16K33 16 port generic I/O chip can be configured to act as a LED driver or as a maxtrix-keyboard input. This plugin describes settings for it to be used as a LED / 7-segment display driver.
|
||||
|
||||
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
.. image:: P057_DeviceConfiguration.png
|
||||
|
||||
|
||||
Task settings
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
* **Name** The name of the task. This should be unique for all devices that are configured. (Initially empty)
|
||||
|
||||
* **Enabled** For the device to work it has to be enabled. When checked, the device will be started as soon as the ESP starts. If desired, the device can also be enabled from f.e. a rule by using the ``TaskEnable,<tasknr>`` or ``TaskEnable,<taskname>`` command, or disabled using the corresponding ``TaskDisable,<tasknr>|<taskname>`` commands.
|
||||
|
||||
I2C options
|
||||
^^^^^^^^^^^
|
||||
|
||||
* **I2C Address**: Select the address the chip is set for, available options:
|
||||
|
||||
.. image:: P057_I2CAddressOptions.png
|
||||
|
||||
The available settings here depend on the build and hardware configuration used. At least the **Force Slow I2C speed** option is available, but selections for the I2C Multiplexer can also be shown. For details see the :ref:`Hardware_page`
|
||||
|
||||
|
||||
|
||||
Device Settings
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
7-Seg. Clock
|
||||
~~~~~~~~~~~~
|
||||
|
||||
* **Clock Type**: Select wether the time should be automatically displayed, in either 24h or 12h format, or ``none``, so other information can be shown, using the commands below.
|
||||
|
||||
* **Seg. for Xx:xx**: Choose the segment to be used for the 10-hour digit. Usually 0.
|
||||
|
||||
* **Seg. for xX:xx**: Choose the segment to be used for the hour digit. Usually 1.
|
||||
|
||||
* **Seg. for xx:Xx**: Choose the segment to be used for the 10-minutes digit. Usually 3 (when a colon is included).
|
||||
|
||||
* **Seg. for xx:xX**: Choose the segment to be used for the minutes digit. Usually 4 (when a colon is included).
|
||||
|
||||
* **Seg. for Colon**: Choose the segment to be used for the colon sign (if any). usually 2. And the value to be used for lighting up the colon. Usually (also) 2.
|
||||
|
||||
Commands available
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. include:: P057_commands.repl
|
||||
|
||||
.. Events
|
||||
.. ~~~~~~
|
||||
@@ -42,8 +91,7 @@ Change log
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added|
|
||||
Major overhaul for 2.0 release.
|
||||
|added| 2025-12-29 Documentation added.
|
||||
|
||||
.. versionadded:: 1.0
|
||||
...
|
||||
|
||||
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 39 KiB |
@@ -0,0 +1,50 @@
|
||||
.. csv-table::
|
||||
:header: "Command Syntax", "Extra information"
|
||||
:widths: 20, 30
|
||||
|
||||
"
|
||||
| ``m,<param>[,<param>,<param>...]``
|
||||
","
|
||||
| Light up leds on the display, description of params below, all values treated as decimal.
|
||||
|
||||
| This is a low-level command, giving exact control over what led/segment is lit.
|
||||
"
|
||||
"
|
||||
| ``mx,<param>[,<param>,<param>...]``
|
||||
","
|
||||
| Light up leds on the display, description of params below, all values treated as hexadecimal.
|
||||
|
||||
| This is a low-level command, giving exact control over what led/segment is lit.
|
||||
"
|
||||
"
|
||||
| ``mnum,<param>[,<param>,<param>...]``
|
||||
","
|
||||
| Light up segments on the display, description of params below, all values to be used as numeric content for a 7-segment display.
|
||||
"
|
||||
"
|
||||
| ``mprint,<text>``
|
||||
","
|
||||
| Light up numeric digits on a 7-segment display. If a colon is configured, and another character would land on that segment, then the colon-segment is skipped, a colon would be shown on the colon segment.
|
||||
|
||||
| This would be the standard command to display numeric data on the display, when not used in Clock-mode.
|
||||
"
|
||||
"
|
||||
| ``mbr,<0..255>``
|
||||
","
|
||||
| Set the brightness of the display in given range, 0 is off, 255 is max. brightness.
|
||||
"
|
||||
"
|
||||
| ``<param>``
|
||||
","
|
||||
| A ``<param>`` can be one of these:
|
||||
|
||||
| ``<value>`` : A numeric (or hexadecimal, without any prefix, for ``MX`` command) value, that is displayed starting on segment 0, auto-incrementing the segment for multiple values in a single command.
|
||||
|
||||
| ``<seg>=<value>`` : Address an explicit segment with a value.
|
||||
|
||||
| ``clear`` : Set all values to 0, turning off all leds/segments.
|
||||
|
||||
| ``test`` : Fill the leds/segments with a test-pattern.
|
||||
|
||||
| ``log`` : Write the current led-buffer values to the log (INFO level).
|
||||
"
|
||||
@@ -90,6 +90,18 @@ Statistic data is only visible if the plugin is configured and enabled.
|
||||
|
||||
This shows the latest data received and some statistics.
|
||||
|
||||
Data options
|
||||
^^^^^^^^^^^^
|
||||
|
||||
(These options are only available if build is without ``LIMIT_BUILD_SIZE`` set)
|
||||
|
||||
* **Receive binary data**: When enabled accepts any character for input. Does not terminate on a CR character received, but on end of data (no more bytes available), or when using the **Fixed length input data** setting.
|
||||
|
||||
* **Fixed length input data**: When 0 this feature is disabled. When set > 0 (max. length 255 characters), reading is stopped after this number of characters. Best used for reading binary data.
|
||||
|
||||
* **Event with hex. data (no prefix)**: When checked will generate the event with the received data converted to hexadecimal data (length is doubled), without a prefix (often hex data is prefixed with ``0x``). Data is still filtered (when enabled) and proxied *without* conversion!
|
||||
|
||||
|
||||
.. include:: DataAcquisition.repl
|
||||
|
||||
* **Interval** By default, Interval will be set to 60 sec.
|
||||
@@ -226,6 +238,8 @@ Change log
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added| 2025-12-23 Add support for binary data, fixed length input and convert event data to hex.
|
||||
|
||||
|added| 2024-02-25 Add support for ``serialproxy_test`` command and retrieving the separate groups from parsed regex.
|
||||
|
||||
|added| 2023-03-22 Add support for writing any binary data out via the serial port.
|
||||
|
||||
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 51 KiB |
@@ -24,7 +24,7 @@ Used libraries: |P102_usedlibraries|
|
||||
Description
|
||||
-----------
|
||||
|
||||
PZEM-004T V3.0 or Version 3.0 is the upgraded version to replace the old PZEM004T V1.0.
|
||||
PZEM-004T (AC) V3.0 or Version 3.0 is the upgraded version to replace the old PZEM004T V1.0.
|
||||
The old version has been sold out in most of the online store and is no longer being produced.
|
||||
|
||||
Improvements over V1:
|
||||
@@ -99,18 +99,238 @@ Active Energy
|
||||
* Resolution: 1Wh
|
||||
* Measurement accuracy: 0.5%
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
PZEM-017 v1.0/v2.0 (DC) For measuring DC loads. When the voltage is below 7V, an independent (**not from PC USB port!**) USB powersupply should be used on the USB input connector.
|
||||
|
||||
Specifications
|
||||
--------------
|
||||
|
||||
Voltage
|
||||
^^^^^^^
|
||||
|
||||
* Measuring range: 0.05 - 300V
|
||||
* Resolution: 0.01V
|
||||
* Measurement accuracy: 1%
|
||||
|
||||
Current
|
||||
^^^^^^^
|
||||
|
||||
* Measuring range:
|
||||
|
||||
* 0.02 - 50/100/200/300A(Depending on shunt)
|
||||
|
||||
* Resolution: 0.01A
|
||||
|
||||
* Measurement accuracy: 1%
|
||||
|
||||
|
||||
Active power
|
||||
^^^^^^^^^^^^
|
||||
|
||||
* Measuring range:
|
||||
|
||||
* 0.2 - 90kW(Depending on shunt)
|
||||
|
||||
* Starting measure power: 0.2W
|
||||
* Resolution: 0.1W
|
||||
* Measurement accuracy: 1%
|
||||
|
||||
|
||||
Active Energy
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
* Measuring range: 0 - 9999.99kWh
|
||||
* Resolution: 1Wh
|
||||
* Measurement accuracy: 1%
|
||||
|
||||
Installation and configuration
|
||||
------------------------------
|
||||
|
||||
When installing multiple PZEM devices on a single ESP unit, some specific order of configuration is required to be able to correctly configure a second, third, etc. PZEM.
|
||||
|
||||
This is described below, in the :cyan:`Installing multiple PZEM units on a single ESP` paragraph.
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
.. image:: P102_DeviceConfiguration.png
|
||||
|
||||
Task Settings
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
* **Name**: Required by ESPEasy, must be unique among the list of available devices/tasks.
|
||||
|
||||
* **Enabled**: The device can be disabled or enabled. When not enabled the device should not use any resources.
|
||||
|
||||
Sensor
|
||||
^^^^^^
|
||||
|
||||
See: :ref:`SerialHelper_page`
|
||||
|
||||
Device Settings
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
* **PZEM Model**: Select the PZEM model that is to be handled by this task. (For changing the Address the model doesn't matter as they use the same command.)
|
||||
|
||||
Available options:
|
||||
|
||||
* *PZEM-004Tv30 (AC)*: The AC model, and default setting.
|
||||
* *PZEM-017v1 (DC)*: The DC model. Also compatible with later v2/2.0 models.
|
||||
|
||||
For reading the correct values from a PZEM-017, that Model *must* be selected as it uses a different data format to fetch the results.
|
||||
|
||||
PZEM Actions
|
||||
^^^^^^^^^^^^
|
||||
|
||||
* **PZEM Mode**: By default, the ``Read value`` option is selected.
|
||||
|
||||
Available options:
|
||||
|
||||
* *Read value*: Normal operating mode, for reading the configured values from the PZEM.
|
||||
* *Reset Energy*: For resetting the counted total energy, this option can be selected. See below for a description.
|
||||
* *Program address*: Only available on the *first* PZEM device, for changing the PZEM unit MODBUS address, as described below.
|
||||
|
||||
|
|
||||
|
||||
* **Address of PZEM**: Set to the address of the PZEM unit to be used. When only a single device is connected, can be set to 0, as a sort of 'universal' address.
|
||||
|
||||
Available address range for the *first* PZEM device: 0 .. 247, on subsequent PZEM devices: 1 .. 247.
|
||||
|
||||
Output Configuration
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
For all 4 available Values slots for this task, a value to use can be selected here. The available options depend om the **PZEM Model** setting:
|
||||
|
||||
* *Voltage_V*
|
||||
* *Current_A*
|
||||
* *Power_W*
|
||||
* *Energy_kWh*
|
||||
* *Power_Factor_cosphi*: for ``PZEM-004Tv30 (AC)`` only.
|
||||
* *Frequency_Hz*: for ``PZEM-004Tv30 (AC)`` only.
|
||||
|
||||
.. include:: DataAcquisition.repl
|
||||
|
||||
* **Interval**: By default, Interval will be set to 60 sec for this plugin. It is the frequency used to read sensor values and send these to any Controllers configured for this device.
|
||||
|
||||
Values
|
||||
^^^^^^
|
||||
|
||||
The measured values are configured above, and get their names based on the selection made there.
|
||||
|
||||
For a complete description of all available columns see the `Plugin - Values <_Plugin.html#values>`_ section.
|
||||
|
||||
|
|
||||
|
||||
|
||||
.. Events
|
||||
.. ~~~~~~
|
||||
|
||||
.. .. include:: P102_events.repl
|
||||
|
||||
Resetting the Energy counter
|
||||
----------------------------
|
||||
|
||||
For resetting the counted Energy value in the PZEM unit, there are 2 methods:
|
||||
|
||||
1. Use the *Reset Energy* **PZEM Mode** setting.
|
||||
2. Send the command ``resetenergy,<modbus_address>`` to the ESP unit. This can be done via the Command entry on the Tools page, from Rules, or via a url command as shown in the configuration page.
|
||||
|
||||
Use the *Reset Energy* **PZEM Mode** setting
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
For resetting the incrementing Energy counter in the PZEM unit, this PZEM Mode option can be used.
|
||||
|
||||
* Set **PZEM Mode** to ``Reset Energy``, and :cyan:`Submit` the page.
|
||||
|
||||
The command will be executed immediately, and afterward the status will shown:
|
||||
|
||||
.. image:: P102_ResetEnergyDone.png
|
||||
|
||||
The blue message showing that the command was sent. The **PZEM Mode** is already reset to ``Read value``.
|
||||
|
||||
To store this change in settings, the :cyan:`Submit` button should be used once more (you can of course change more settings if desired, that's why no automatic save is done.)
|
||||
|
||||
Send the ``resetenergy,<modbus_address>`` command
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
For an easy alternative to reset the Energy counter, you can use the ``resetenergy,<modbus_address>`` command, f.e. from the ``Command`` field on the Tools page, to reset the counter for the specific modbus address (range 1..247, or 0 if only 1 device is on the bus).
|
||||
|
||||
Installing multiple PZEM units on a single ESP
|
||||
----------------------------------------------
|
||||
|
||||
Configuring separate MODBUS addresses on each device
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
To uniquely identify each PZEM unit on the bus, it has to be configured to use a unique address. The range of these addresses is 1 .. 247.
|
||||
|
||||
* Add the, numerically, first PZEM task, f.e. in Devices slot 1.
|
||||
|
||||
* Configure the serial port, and on ESP32 also the GPIO pins, to be used, enable the plugin, and connect a single PZEM to the RS485 converter. When using ``HW Serial0``, the Serial Console Settings, on the Tools/Advanced page, have to be disabled to avoid issues with his port.
|
||||
|
||||
* Set **PZEM Mode** to ``Program address`` and :cyan:`Submit` the page.
|
||||
|
||||
.. image:: P102_ProgramAddress.png
|
||||
|
||||
Fill the desired address in the **Address of PZEM** field, change the **Confirm address programming ?** field to ``YES``, and again :cyan:`Submit` the page.
|
||||
|
||||
When successful, a message :green:`Address programming done !` is displayed, and the **PZEM Mode** is set to the default ``Read value`` setting.
|
||||
|
||||
* Disconnect the PZEM unit from the RS485 bus, connect the next PZEM unit, and repeat above steps, using a diferent **Address of PZEM** value, for all units to be connected.
|
||||
|
||||
N.B.: The last set Address of PZEM will be kept in the configuration, but can be changed to the desired first PZEM unit.
|
||||
|
||||
N.B.2: To correctly store the **PZEM Mode** setting, the configuration should be saved once more, using the :cyan:`Submit` button!
|
||||
|
||||
Configuring a secondary PZEM unit
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
The first PZEM unit can be configured as shown above in the generic Configuration paragraph. Once thats completed, with the correct, unique, MODBUS Address set, both in all PZEM units to connect and the task configuration for the first PZEM task, that task should be Enabled, so the next task added can detect that it will be the second (or third, etc.) device on the MODBUS chain.
|
||||
|
||||
After that task is running, a new PZEM task can be added, with a task number higher than the *first* PZEM task.
|
||||
|
||||
.. warning:: This is crucial for the PZEM tasks to start correctly, and in the correct order, on reboot or power-up of the ESP!
|
||||
|
||||
These secondary PZEM tasks do not use the Serial configuration, as they use the same connection as the *first* PZEM task.
|
||||
|
||||
.. image:: P102_SecondConfiguration.png
|
||||
|
||||
Sensor
|
||||
^^^^^^
|
||||
|
||||
This selector should not be used, as it is ignored.
|
||||
|
||||
Device Settings
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
* **PZEM Model**: Select the PZEM model that is to be handled by this task. (Changing the selection will save the new setting and reload the page.)
|
||||
|
||||
For reading the correct values from a PZEM-017, that Model *must* be selected as it uses a different data format to fetch the results.
|
||||
|
||||
PZEM Actions
|
||||
^^^^^^^^^^^^
|
||||
|
||||
* **PZEM Mode**: By default, the ``Read value`` option is selected.
|
||||
|
||||
Available options:
|
||||
|
||||
* *Read value*: Normal operating mode, for reading the configured values from the PZEM.
|
||||
* *Reset Energy*: For resetting the counted total energy, this option can be selected. See above for a description.
|
||||
|
||||
* **Address of PZEM**: Set to the address of the PZEM unit to be used.
|
||||
|
||||
Available address range: 1 .. 247.
|
||||
|
||||
When using the same address as the *first* PZEM task, and the **PZEM Model** connected is a ``PZEM-004Tv30 (AC)``, the extra values ``Power_Factor_cosphi`` and ``Frequency_Hz`` can be made available in a task, for sending to a controller.
|
||||
|
||||
|
|
||||
|
||||
Commands
|
||||
--------
|
||||
|
||||
.. include:: P102_commands.repl
|
||||
|
||||
|
||||
|
||||
Change log
|
||||
@@ -119,4 +339,6 @@ Change log
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added| 2025-08-06: Support for PZEM-017, updated documentation.
|
||||
|
||||
|added| 2020-04-25
|
||||
|
||||
|
After Width: | Height: | Size: 82 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 18 KiB |
@@ -0,0 +1,15 @@
|
||||
.. csv-table::
|
||||
:header: "Command Syntax", "Extra information"
|
||||
:widths: 20, 30
|
||||
|
||||
"
|
||||
|
||||
| ``ResetEnergy,<modbus_address>``
|
||||
|
||||
","
|
||||
|
||||
| This command will reset the Energy counter for the PZEM unit (value is stored in the unit). The value retrieved on the next read should return the updated value. (Can be 0 if no energy is flowing, or the energy counted since the reset command was executed.)
|
||||
|
||||
| This command can be executed by any task if multiple PZEM tasks are configured, as they all share the single MODBUS Serial configuration of the *first* PZEM task.
|
||||
|
||||
"
|
||||
@@ -28,9 +28,10 @@ The ST7735, ST7789 and ST7796 chip families drive color TFT displays in various
|
||||
|
||||
This plugin supports these display models:
|
||||
|
||||
* **ST7735** with resolutions 128 x 128, 128 x 160, 80 x 160, 135 x 240, 170 x 320 and 172 x 320 pixels
|
||||
* **ST7735** with resolutions 128 x 128, 128 x 160, 80 x 160, 135 x 240 and 172 x 320 pixels
|
||||
* **ST7789** with resolutions 240 x 320, 240 x 240, 240 x 280 and 135 x 240 pixels
|
||||
* **ST7796** with resolution of 320 x 480 pixels.
|
||||
* **ST77xx** (unknown if this is ST7735 or ST7789) with resolution of 170 x 320, 240 x 320, 240 x 280 pixels.
|
||||
|
||||
The plugin can be configured to show predefined text, a reservation for up to 24 lines is made, but only the lines that can fit on-screen will be shown, or via commands, sent via http or from rules, text or graphical elements like lines, rectangles, circles, pixels, etc., can be shown.
|
||||
|
||||
@@ -146,6 +147,8 @@ Available options:
|
||||
* *ST7735 135 x 240px*: Added to support a revision of the TTGO T-Display 16MB Flash module, that won't work with the ST7789 driver, the seller is claiming to use, but does work with this specially crafted ST7735 driver.
|
||||
* *ST7735 172 x 320px*: Added to support an ESP32-C6 module having a display with this specific resolution.
|
||||
* *ST77xx 170 x 320px*: Added to support ST7789v3 / ST7735 displays with this specific resolution.
|
||||
* *ST77xx 240 x 320px*: Added to support ST7789v3 / ST7735 displays with this specific resolution.
|
||||
* *ST77xx 240 x 280px*: Added to support ST7789v3 / ST7735 displays with this specific resolution.
|
||||
* *ST7789 240 x 320px*: Allows 32 lines of text in the smallest font scaling setting. Predefined text only goes to 24, extra lines can be displayed from rules or external commands.
|
||||
* *ST7789 240 x 240px*: Allows 24 lines of text in the smallest font scaling setting.
|
||||
* *ST7789 240 x 280px*: Allows 28 lines of text in the smallest font scaling setting. Predefined text only goes to 24, extra lines can be displayed from rules or external commands.
|
||||
|
||||
@@ -27,6 +27,8 @@ Description
|
||||
Detecting (human) presence can be achieved in several ways, like via IR detection sensors, or a light-beam that's interrupted by someone passing. But these sensors have quite some limitations, like limited sensitivity, no information about the distance, or weather a person is there but not moving.
|
||||
|
||||
The limitations of these existing sensors are not applicable when using radar-based presence detection, and since some time, rather affordable radar human-presence detectors are available. These are available with 5 GHz, 10 GHz, 24 GHz and 60 GHz radar frequency transmitter/receiver chips. Because of the accuracy and range, achievable with 24 GHz sensors, these are quite popular, so support has been added to ESPEasy.
|
||||
Some notes about "false positive" detections: based on our test and experience some false positive presence detections can happens. For example if the sensor is near to plant, the movement of leaves can be incorrectly translated as presence detection; also electric cables in front of the sensor can provide noise to the sensor. To avoid false positive presence detection try to leave the sensor as free from obstacles as possible.
|
||||
|
||||
|
||||
Some examples of these sensors:
|
||||
|
||||
|
||||
@@ -30,6 +30,17 @@ This enables the implementation of yet unsupported I2C devices or use I2C device
|
||||
|
||||
.. warning:: This plugin is in the 'pro' category of plugins (i.o.w. not really *Easy* to use), and requires in-depth studying of the datasheet for the device, extracting the required commands and calculation(s) for implementing correct usage. (Some examples available below)
|
||||
|
||||
Example device configurations
|
||||
-----------------------------
|
||||
|
||||
* :ref:`aht2x-temperature-humidity-sensor`
|
||||
* :ref:`m5stack-ain4-20ma-unit-module`
|
||||
* :ref:`bosch-bmp58x-temp-baro`
|
||||
* :ref:`tiny-code-reader-qr-code-reader`
|
||||
* :ref:`sensirion-sdp-810-differential-pressure-sensor`
|
||||
* :ref:`tf-luna-lidar-distance-sensor`
|
||||
* :ref:`qmc6310-3-axis-magnetic-sensor`
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
@@ -189,6 +200,8 @@ A few warnings though:
|
||||
Example I2C command sequences
|
||||
-----------------------------
|
||||
|
||||
.. _aht2x-temperature-humidity-sensor:
|
||||
|
||||
AHT2x Temperature / Humidity sensor
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@@ -231,6 +244,8 @@ Command sequence explanation:
|
||||
|
||||
|
|
||||
|
||||
.. _m5stack-ain4-20ma-unit-module:
|
||||
|
||||
M5Stack AIN4-20mA Unit / Module
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@@ -277,6 +292,8 @@ This device supports adjusting the calibration to the current current that is fl
|
||||
|
||||
|
|
||||
|
||||
.. _bosch-bmp58x-temp-baro:
|
||||
|
||||
Bosch BMP58x Temp/Baro
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@@ -341,6 +358,8 @@ Command sequence explanation:
|
||||
|
||||
|
|
||||
|
||||
.. _tiny-code-reader-qr-code-reader:
|
||||
|
||||
Tiny Code Reader (QR-code reader)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@@ -370,7 +389,7 @@ Command sequence explanation:
|
||||
* ``value.1``: Store value in first **Values** field.
|
||||
* ``get.str.=%value%+2``: Read a string from the code-reader, for indicated length, and including the 2 byte lengthe prefix.
|
||||
* ``eval``: Load the value to be used.
|
||||
* ``letstr.qrtxt.`{substring:1::'%value%'}``: Save the received string into a String variable named ``qrtxt``, skipping the first character, that holds the length. De actual size prefix is 2 bytes, but ``\0`` characters are ignored when reading a string, and the max. length that the reader will return is 255 characters, so the first byte is always 0 and thus skipped.
|
||||
* ``letstr.qrtxt.`{substring:1::'%value%'}```: Save the received string into a String variable named ``qrtxt``, skipping the first character, that holds the length. De actual size prefix is 2 bytes, but ``\0`` characters are ignored when reading a string, and the max. length that the reader will return is 255 characters, so the first byte is always 0 and thus skipped.
|
||||
|
||||
Additionally, for de-duplicating of reading and handling a QR code, this code can be appended to **I2C Commands 1** to reset the Size value after 10 seconds, and Rules code to handle the received text.
|
||||
|
||||
@@ -409,12 +428,192 @@ This device needs a Rule to handle the result, as we can't store string values i
|
||||
|
||||
|
|
||||
|
||||
.. _sensirion-sdp-810-differential-pressure-sensor:
|
||||
|
||||
Sensirion SDP-810 Differential pressure sensor
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Based on this data sheet `Sensirion Differential Pressure Datasheet SDP8xx <https://sensirion.com/media/documents/90500156/6167E43B/Sensirion_Differential_Pressure_Datasheet_SDP8xx_Digital.pdf>`_
|
||||
|
||||
.. note:: The checksum available from the sensor measurements is ignored!
|
||||
|
||||
The plugin should be configured with these settings:
|
||||
|
||||
* **I2C Address (Hex)**: ``0x25`` (or ``0x26`` when the model number is SDP-8x1)
|
||||
|
||||
* **Output Data Type**: ``Temp / Baro``
|
||||
|
||||
* **Interval**: can be set to 60 seconds to retrieve a measurement every minute.
|
||||
|
||||
* **Values**: the names can be changed to Temp or Temperature and Baro or Pressure, and the number of decimals adjusted as desired (usually 1 or 2 decimals is fine for temperature, and 0 for pressure). Stats can be enabled, best would be to set the Axis to L1 for Temperature, and R1 for Pressure, as the scales don't match the same range.
|
||||
|
||||
* **I2C Init Commands** sequence for initializing the sensor:
|
||||
|
||||
``put.b.2.0x36.0x03``: Start continuous measurement.
|
||||
|
||||
* **I2C Exit Commands** sequence for shutting down the sensor:
|
||||
|
||||
``put.b.2.0x3f.0xf9``: Stop continuous measurement.
|
||||
|
||||
* **Cache-Name 1 (optional)**: Fill with a useable name, f.e. ``sdp``, so the I2C Command sequence is cached for much improved execution-performance.
|
||||
|
||||
* **I2C Commands 1**:
|
||||
|
||||
``get.b.9;eval;let.tmp.0x{substring:8:12:%h%};if.{and:%v_tmp%:0x8000}.1;let.tmp.%v_tmp%-0x10000;calc.%v_tmp%/0x{substring:14:18:%h%};value.1;let.prs.0x{substring:2:6:%h%};if.{and:%v_prs%:0x8000}.1;let.prs.%v_prs%-0x10000;calc.%v_prs%/0x{substring:14:18:%h%};value.2``
|
||||
|
||||
Command sequence explanation:
|
||||
|
||||
* ``get.b.9``: Read 9 bytes from the sensor.
|
||||
* ``eval``: Load the value to be used.
|
||||
* ``let.tmp.0x{substring:8:12:%h%}``: Assign the raw temperature to variable ``tmp``.
|
||||
* ``if.{and:%v_tmp%:0x8000}.1``: Check if positive, if so, skip next 1 command.
|
||||
* ``let.tmp.%v_tmp%-0x10000``: Subtract 65536 to get the correct negative value.
|
||||
* ``calc.%v_tmp%/0x{substring:14:18:%h%}``: Divide the raw temperature by the scale factor.
|
||||
* ``value.1``: Store the temperature in Value 1.
|
||||
* ``let.prs.0x{substring:2:6:%h%}``: Assign the raw pressure to variable ``prs``.
|
||||
* ``if.{and:%v_prs%:0x8000}.1``: Check if positive, if so, skip next 1 command.
|
||||
* ``let.prs.%v_prs%-0x10000``: Subtract 65536 to get the correct negative value.
|
||||
* ``calc.%v_prs%/0x{substring:14:18:%h%}``: Divide the raw pressure by the scale factor.
|
||||
* ``value.2``: Store the pressure in Value 2.
|
||||
|
||||
Alternative read method
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Instead of having the sensor doing continuous measurements, and returning the average value since the last read, a single measurement can be started, wait a little to complete the measurement, and read the results.
|
||||
|
||||
In this case, the **I2C Init Commands** and **I2C Exit Commands** fields must be made empty, and **I2C Commands 1** should be set to:
|
||||
|
||||
``put.b.2.0x36.0x24;delay.50;get.b.9;eval;let.tmp.0x{substring:8:12:%h%};if.{and:%v_tmp%:0x8000}.1;let.tmp.%v_tmp%-0x10000;calc.%v_tmp%/0x{substring:14:18:%h%};value.1;let.prs.0x{substring:2:6:%h%};if.{and:%v_prs%:0x8000}.1;let.prs.%v_prs%-0x10000;calc.%v_prs%/0x{substring:14:18:%h%};value.2``
|
||||
|
||||
This command sequence is nearly the same as with the Continuous measurement, except there are a few commands added *before* the values are read.
|
||||
|
||||
* ``put.b.2.0x36.0x24``: Send the command to start a single measurement.
|
||||
* ``delay.50``: Insert an asynchronous delay of 50 msec, as the sensor needs ca. 45 msec to complete a measurement. This delay does **not** block processing, as is described above.
|
||||
* The rest of the commands is already explained in the Continuous measurement description, above this paragraph.
|
||||
|
||||
|
|
||||
|
||||
.. _tf-luna-lidar-distance-sensor:
|
||||
|
||||
TF-Luna Lidar distance sensor
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
The somewhat popular laser-distance sensor, with a range of 0.2 to 8 meter, TF-Luna, can be configured to use I2C as the communication protocol, instead of the default RS232 serial protocol, by connecting pin 5 of the sensor to GND on startup.
|
||||
|
||||
The command sequence is based on documentation from this `WaveShare page <https://www.waveshare.com/wiki/TF-Luna_LiDAR_Range_Sensor>`_
|
||||
|
||||
.. note:: The checksum available from the sensor measurements is ignored!
|
||||
|
||||
When only retrieving the ``distance`` from the sensor
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The plugin should be configured with these settings:
|
||||
|
||||
* **I2C Address (Hex)**: ``0x10``
|
||||
|
||||
* **Output Data Type**: ``Single``
|
||||
|
||||
* **Interval**: can be set to 1 second to retrieve a measurement every second.
|
||||
|
||||
* **Values**: the name can be changed to Distance, and the number of decimals 0. Stats can be enabled, as desired. The Unit of Measure should he set to ``cm``, and the Value Type to ``Distance``
|
||||
|
||||
* **Cache-Name 1 (optional)**: Fill with a useable name, f.e. ``distance``, so the I2C Command sequence is cached for much improved execution-performance.
|
||||
|
||||
* **I2C Commands 1**:
|
||||
|
||||
``put.u8.0;delay.5;get.b.7;eval;calc.0x{substring:4:6:%h%}*256+0x{substring:2:4:%h%}``
|
||||
|
||||
Command sequence explanation:
|
||||
|
||||
* ``put.u8.0`` : Announce data fetch
|
||||
* ``delay.5`` : Give the sensor a few msec to prepare
|
||||
* ``get.b.7`` : Read 7 bytes (entire available buffer)
|
||||
* ``eval`` : Make data available for processing
|
||||
* ``calc.0x{substring:4:6:%h%}*256+0x{substring:2:4:%h%}`` : Fetch byte 1 (* 256) + byte 0 to calculate distance in cm, value is set to Values 1 field
|
||||
|
||||
When retrieving both ``distance`` and ``signal strength`` from the sensor
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The plugin should be configured with these settings:
|
||||
|
||||
* **I2C Address (Hex)**: ``0x10``
|
||||
|
||||
* **Output Data Type**: ``Dual``
|
||||
|
||||
* **Interval**: can be set to 1 second to retrieve a measurement every second.
|
||||
|
||||
* **Values**: the first name can be changed to ``Distance``, and the number of decimals 0. Stats can be enabled, as desired. The Unit of Measure should he set to ``cm``, and the Value Type to ``Distance``, the second name can be changed to f.e. ``SignalStrength``, and number of decimals to 0. Stats can be enabled, as desired. No further settings for this value, as it has an undefined unit and value type.
|
||||
|
||||
* **Cache-Name 1 (optional)**: Fill with a useable name, f.e. ``distance``, so the I2C Command sequence is cached for much improved execution-performance.
|
||||
|
||||
* **I2C Commands 1**:
|
||||
|
||||
``put.u8.0;delay.5;get.b.7;eval;calc.0x{substring:4:6:%h%}*256+0x{substring:2:4:%h%};value.1;calc.0x{substring:8:10:%h%}*256+0x{substring:6:8:%h%};value.2``
|
||||
|
||||
NB: The fields for **Cache-Name 2** and **I2C Commands 2** are left empty, the entire command sequence is combined into the first command sequence, as the complete data set is read and the separate values calculated and assigned in a single command sequence. This makes processing more efficient.
|
||||
|
||||
Command sequence explanation:
|
||||
|
||||
* ``put.u8.0`` : Announce data fetch
|
||||
* ``delay.5`` : Give the sensor a few msec to prepare
|
||||
* ``get.b.7`` : Read 7 bytes (entire available buffer)
|
||||
* ``eval`` : Make data available for processing
|
||||
* ``calc.0x{substring:4:6:%h%}*256+0x{substring:2:4:%h%}`` : Fetch byte 1 (* 256) + byte 0 to calculate distance in cm
|
||||
* ``value.1`` : current value, Distance, set to Values 1 field
|
||||
* ``calc.0x{substring:8:10:%h%}*256+0x{substring:6:8:%h%}`` : Fetch byte 3 (* 256) + byte 2 to calculate signal strength (unknown unit)
|
||||
* ``value.2`` : current value, Signal strength, set to Values 2 field
|
||||
|
||||
|
|
||||
|
||||
.. _qmc6310-3-axis-magnetic-sensor:
|
||||
|
||||
QMC6310 3-axis magnetic sensor
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
This sensor provides a 3-axis directional signal, as documented in the QST Corp `QMC6310 Datasheet <https://www.qstcorp.com/upload/pdf/202202/%EF%BC%88%E5%B7%B2%E4%BC%A0%EF%BC%8913-52-17%20QMC6310%20Datasheet%20Rev.C(1).pdf>`_ (url includes some Chinese characters).
|
||||
|
||||
The plugin should be configured with these settings:
|
||||
|
||||
* **I2C Address (Hex)**: ``0x1C``
|
||||
|
||||
* **Output Data Type**: ``Triple`` To activate this setting, the page must be submitted to show the extra input fields.
|
||||
|
||||
* **Interval**: Can be set in the seconds range to retrieve a measurement often.
|
||||
|
||||
* **Values**: The names can be changed to ``x``, ``y`` and ``z``, and the number of decimals to 0. Stats can be enabled, as desired. The Unit of Measure is undocumented.
|
||||
|
||||
* **I2C Init Commands** sequence for initializing the sensor:
|
||||
|
||||
``write.u8.0x29.0x06;write.u8.0x0B.0x00;write.u8.0x0A.0xCD``: Initialize the sensor according to the datasheet, Normal mode, field range 8 Gauss, output data rate 200 Hz, over-sample ratio 8, down-sample ratio 8.
|
||||
|
||||
* **I2C Exit Commands** sequence for shutting down the sensor:
|
||||
|
||||
``write.u8.0x0A.0x00``: Set sensor in Suspend mode.
|
||||
|
||||
* **Cache-Name 1 (optional)**: Fill with a useable name, f.e. ``x``, so the I2C Command sequence is cached for much improved execution-performance.
|
||||
|
||||
* **I2C Commands 1**: ``read.16le.0x01`` Read 2 bytes starting at register 1, the ``x`` value, and store in first Value field.
|
||||
|
||||
* **Cache-Name 2 (optional)**: Fill with a useable name, f.e. ``y``.
|
||||
|
||||
* **I2C Commands 2**: ``read.16le.0x03`` Read 2 bytes starting at register 3, the ``y`` value, and store in second Value field.
|
||||
|
||||
* **Cache-Name 3 (optional)**: Fill with a useable name, f.e. ``z``.
|
||||
|
||||
* **I2C Commands 3**: ``read.16le.0x05`` Read 2 bytes starting at register 5, the ``z`` value, and store in third Value field.
|
||||
|
||||
To reduce the logging content, **Single event with all values** can be enabled, to generate a single event ``<task-name>#All`` with all values as argument, and thus reduce the logging from 3 lines per Interval to a single line per Interval.
|
||||
|
||||
|
|
||||
|
||||
Change log
|
||||
----------
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
...
|
||||
|
||||
|added| 2025-12-08 Add index to example configurations.
|
||||
|
||||
|added|
|
||||
2025-04-19 Initial release version.
|
||||
|
||||
|
||||
@@ -93,15 +93,19 @@ Enabling "Stats" on a task value also extends how task values can be addressed w
|
||||
|
||||
For example using just like normal task value data:
|
||||
|
||||
* ``[bme#temp.avg]`` Compute the average over the last N samples in the historic buffer (typically: 64 samples on ESP32, 16 on ESP8266)
|
||||
* ``[bme#temp.avg]`` Compute the average over the last N samples in the historic buffer (typically: 250 samples on ESP32, 16 on ESP8266)
|
||||
* ``[bme#temp.avgX]`` Compute the average over the last X samples (or less if there are less samples available)
|
||||
* ``[bme#temp.stddev]`` Compute the standard deviation over the last N samples in the historic buffer (typically: 64 samples on ESP32, 16 on ESP8266)
|
||||
* ``[bme#temp.stddev]`` Compute the standard deviation over the last N samples in the historic buffer (typically: 250 samples on ESP32, 16 on ESP8266)
|
||||
* ``[bme#temp.stddevX]`` Compute the standard deviation over the last X samples (or less if there are less samples available)
|
||||
* ``[bme#temp.max]`` Refer to the maximum recorded sample since the last ``resetpeaks``. N.B. Not all tasks log the min and max peaks.
|
||||
* ``[bme#temp.min]`` See ``[bme#temp.max]``
|
||||
* ``[bme#temp.max]`` Refer to the maximum recorded sample in available samples (rolling maximum)
|
||||
* ``[bme#temp.maxX]`` Refer to the maximum recorded sample in the last X samples (or less if there are less samples available)
|
||||
* ``[bme#temp.maxp]`` (max-peak) Refer to the maximum recorded sample since the last ``resetpeaks``. N.B. Not all tasks log the min and max peaks.
|
||||
* ``[bme#temp.min]`` Refer to the minimum recorded sample in available samples (rolling minimum)
|
||||
* ``[bme#temp.minX]`` Refer to the minimum recorded sample in the last X samples (or less if there are less samples available)
|
||||
* ``[bme#temp.minp]`` (min-peak) See ``[bme#temp.maxp]``.
|
||||
* ``[bme#temp.size]`` Return the number of samples in memory.
|
||||
* ``[bme#temp.sample]`` Access the last sample in memory.
|
||||
* ``[bme#temp.sampleN]`` Access the N-th last sample in memory.
|
||||
* ``[bme#temp.sample]`` Return the number of samples in memory. (Doc. reflects the actual code!)
|
||||
* ``[bme#temp.sampleN]`` Access the N-th last sample in memory, negative value accesses N-th value from the *oldest* available sample.
|
||||
|
||||
|
||||
Commands on "Stats" data:
|
||||
@@ -250,10 +254,10 @@ If set the UoM will be space-appended to the value when displayed on the Devices
|
||||
A list of 165+ Unit of Measure values is available (derived of what's supported/expected by Home Assistant):
|
||||
|
||||
``°C, °F, K, %, Pa, hPa, bar, mbar, inHg, psi, W, kW, V, Wh, kWh, A, VA, mm, cm, m, km,`` ``L, mL, m³, ft³, m³/h, ft³/h, lx, UV index, µg/m³, mg/m³, p/m³, ppm, ppb,``
|
||||
``°, €, $, ¢, µs, ms, s, min, h, d, w, m, y, in, ft, yd, mi, Hz, GHz, gal, fl. oz, m²,`` ``g, kg, mg, µg, oz, lb, µS/cm, W/m², mm/h, mm/s, in/s, m/s, in/h, km/h, mph, db, dBm,``
|
||||
``°, €, $, ¢, µs, ms, s, min, h, d, w, m, y, in, ft, yd, mi, Hz, GHz, gal, fl. oz, m²,`` ``g, kg, mg, µg, oz, lb, µS/cm, W/m², mm/h, mm/s, in/s, m/s, in/h, km/h, mph, dB, dBm,``
|
||||
``bit, kbit, Mbit, Gbit, B, kB, MB, GB, TB, PB, EB, ZB, YB, KiB, MiB, GiB, TiB, PiB, EiB, ZiB, YiB,`` ``bit/s, kbit/s, Mbit/s, Gbit/s, B/s, kB/s, MB/s, GB/s, KiB/s, MiB/s, GiB/s,``
|
||||
``ft/s, kn, mW, MW, GW, TW, BTU/(h·ft²), pH, cbar, mmHg, kPa, mA, µA, mV, µV, kV, cm², km², mm²,`` ``in², ft², yd², mi², ac, ha, kHz, MHz, mWh, MWh, GWh, TWh, cal, kcal, Mcal,``
|
||||
``Gcal, J, kJ, MJ, GJ, var, kvar, varh, kvarh, st, mg/dL, mmol/L, µSv, µSv/h, m³/s, ft³/min,`` ``L/h, L/min, L/s, gal/min, mL/s, g/m³, kWh/100km, Wh/km, mi/kWh, km/kWh, in/d, mm/d``
|
||||
``Gcal, J, kJ, MJ, GJ, var, kvar, varh, kvarh, st, mg/dL, mmol/L, µSv, µSv/h, m³/s, ft³/min,`` ``L/h, L/min, L/s, gal/min, mL/s, g/m³, kWh/100km, Wh/km, mi/kWh, km/kWh, in/d, mm/d, Ah``
|
||||
|
||||
Displaying the Unit of Measure in the Devices overview page can be disabled by unchecking the **Show Unit of Measure** checkbox on the Tools/Advanced page.
|
||||
|
||||
@@ -261,6 +265,7 @@ The **Unit of Measure** selector is, because of the vast number of options, divi
|
||||
|
||||
.. image:: Task_config_page_UoM_selector_part.png
|
||||
|
||||
Depending on the available data, the number of options is limited as much as possible, to reduce page-load time, as filling this many option in multiple comboboxes takes quite some time.
|
||||
|
||||
Value Type
|
||||
^^^^^^^^^^
|
||||
@@ -324,7 +329,7 @@ There are different released versions of ESP Easy:
|
||||
|
||||
:red:`DEVELOPMENT` is used for plugins that are still being developed and are not considered stable at all. Currently there are no DEVELOPMENT builds available.
|
||||
|
||||
:yellow:`ENERGY` :yellow:`DISPLAY` :yellow:`IR` :yellow:`IRext` :yellow:`NEOPIXEL` :yellow:`CLIMATE` are specialized builds holding all Energy-, Display-, Infra Red- (extended), NeoPixel- and Climate- related plugins.
|
||||
:yellow:`ENERGY` :yellow:`DISPLAY` (split into sets A..B) :yellow:`IR` :yellow:`IRext` :yellow:`NEOPIXEL` :yellow:`CLIMATE` (split into sets A..B) are specialized builds holding all Energy-, Display-, Infra Red- (extended), NeoPixel- and Climate- related plugins.
|
||||
|
||||
:yellow:`MAX` is the build that has all plugins that are available in the ESPEasy repository. Available for ESP32 16MB and ESP32 8MB Flash units (available for ESP32 Classic, ESP32-S3 and ESP32-C6).
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
.. |Plugin_Display| replace:: :ref:`P012_page`, :ref:`P023_page`, :ref:`P036_page`, :ref:`P057_page`, :ref:`P073_page`, :ref:`P075_page`, :ref:`P095_page`, :ref:`P104_page`, :ref:`P116_page`, :ref:`P131_page`, :ref:`P148_page`
|
||||
.. |Plugin_Distance| replace:: :ref:`P013_page`, :ref:`P110_page`, :ref:`P113_page`, :ref:`P134_page`
|
||||
.. |Plugin_Dust| replace:: :ref:`P018_page`, :ref:`P053_page`, :ref:`P056_page`, :ref:`P144_page`, :ref:`P175_page`
|
||||
.. |Plugin_Energy_AC| replace:: :ref:`P076_page`, :ref:`P077_page`, :ref:`P078_page`, :ref:`P102_page`, :ref:`P108_page`
|
||||
.. |Plugin_Energy_DC| replace:: :ref:`P027_page`, :ref:`P085_page`, :ref:`P115_page`, :ref:`P132_page`
|
||||
.. |Plugin_Energy_AC| replace:: :ref:`P076_page`, :ref:`P077_page`, :ref:`P078_page`, :ref:`P092_page`, :ref:`P102_page`, :ref:`P108_page`, :ref:`P176_page`
|
||||
.. |Plugin_Energy_DC| replace:: :ref:`P027_page`, :ref:`P085_page`, :ref:`P102_page`, :ref:`P115_page`, :ref:`P132_page`, :ref:`P176_page`
|
||||
.. |Plugin_Energy_Heat| replace:: :ref:`P088_page`, :ref:`P093_page`
|
||||
.. |Plugin_Environment| replace:: :ref:`P004_page`, :ref:`P005_page`, :ref:`P006_page`, :ref:`P014_page`, :ref:`P024_page`, :ref:`P028_page`, :ref:`P030_page`, :ref:`P031_page`, :ref:`P032_page`, :ref:`P034_page`, :ref:`P039_page`, :ref:`P047_page`, :ref:`P051_page`, :ref:`P068_page`, :ref:`P069_page`, :ref:`P072_page`, :ref:`P103_page`, :ref:`P105_page`, :ref:`P106_page`, :ref:`P122_page`, :ref:`P150_page`, :ref:`P151_page`, :ref:`P153_page`, :ref:`P154_page`, :ref:`P163_page`, :ref:`P167_page`, :ref:`P169_page`, :ref:`P172_page`, :ref:`P173_page`, :ref:`P177_page`
|
||||
.. |Plugin_Extra_IO| replace:: :ref:`P011_page`, :ref:`P022_page`, :ref:`P178_page`
|
||||
|
||||
@@ -56,9 +56,9 @@
|
||||
.. |P003_compileinfo| replace:: `.`
|
||||
.. |P003_usedlibraries| replace:: `.`
|
||||
|
||||
.. |P004_name| replace:: :cyan:`1-Wire Temperature`
|
||||
.. |P004_name| replace:: :cyan:`DS18xxx/MAX31xxx/1-Wire Temperature`
|
||||
.. |P004_type| replace:: :cyan:`Environment`
|
||||
.. |P004_typename| replace:: :cyan:`Environment - 1-Wire Temperature`
|
||||
.. |P004_typename| replace:: :cyan:`Environment - DS18xxx/MAX31xxx/1-Wire Temperature`
|
||||
.. |P004_porttype| replace:: `1-Wire`
|
||||
.. |P004_status| replace:: :green:`NORMAL` :yellow:`CLIMATE`
|
||||
.. |P004_github| replace:: P004_Dallas.ino
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
.. |P012_type| replace:: :cyan:`Display`
|
||||
.. |P012_typename| replace:: :cyan:`Display - LCD2004`
|
||||
.. |P012_porttype| replace:: `.`
|
||||
.. |P012_status| replace:: :green:`NORMAL` :yellow:`DISPLAY` :yellow:`CLIMATE`
|
||||
.. |P012_status| replace:: :green:`NORMAL` :yellow:`CLIMATE` :yellow:`DISPLAY A`
|
||||
.. |P012_github| replace:: P012_LCD.ino
|
||||
.. _P012_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_P012_LCD.ino
|
||||
.. |P012_usedby| replace:: `.`
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
.. |P023_type| replace:: :cyan:`Display`
|
||||
.. |P023_typename| replace:: :cyan:`Display - OLED SSD1306`
|
||||
.. |P023_porttype| replace:: `.`
|
||||
.. |P023_status| replace:: :green:`NORMAL` :yellow:`DISPLAY` :yellow:`CLIMATE`
|
||||
.. |P023_status| replace:: :green:`NORMAL` :yellow:`CLIMATE` :yellow:`DISPLAY A`
|
||||
.. |P023_github| replace:: P023_OLED.ino
|
||||
.. _P023_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_P023_OLED.ino
|
||||
.. |P023_usedby| replace:: `.`
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
.. |P075_type| replace:: :cyan:`Display`
|
||||
.. |P075_typename| replace:: :cyan:`Display - Nextion`
|
||||
.. |P075_porttype| replace:: `.`
|
||||
.. |P075_status| replace:: :yellow:`DISPLAY` :yellow:`COLLECTION`
|
||||
.. |P075_status| replace:: :yellow:`COLLECTION` :yellow:`DISPLAY A`
|
||||
.. |P075_github| replace:: P075_Nextion.ino
|
||||
.. _P075_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_P075_Nextion.ino
|
||||
.. |P075_usedby| replace:: `.`
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
.. |P087_type| replace:: :cyan:`Communication`
|
||||
.. |P087_typename| replace:: :cyan:`Communication - SerialProxy`
|
||||
.. |P087_porttype| replace:: `Serial`
|
||||
.. |P087_status| replace:: :yellow:`COLLECTION C`
|
||||
.. |P087_status| replace:: :yellow:`COLLECTION C` :yellow:`ENERGY`
|
||||
.. |P087_github| replace:: P087_SerialProxy.ino
|
||||
.. _P087_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_P087_SerialProxy.ino
|
||||
.. |P087_usedby| replace:: `.`
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
.. |P093_name| replace:: :cyan:`Mitsubishi Heat Pump`
|
||||
.. |P093_type| replace:: :cyan:`Energy (Heat)`
|
||||
.. |P093_typename| replace:: :cyan:`Energy (Heat) - Mitsubishi Heat Pump`
|
||||
.. |P093_status| replace:: :yellow:`ENERGY` :yellow:`COLLECTION D`
|
||||
.. |P093_status| replace:: :yellow:`COLLECTION D` :yellow:`ENERGY`
|
||||
.. |P093_github| replace:: P093_MitsubishiHP.ino
|
||||
.. _P093_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_P093_MitsubishiHP.ino
|
||||
.. |P093_usedby| replace:: `.`
|
||||
@@ -63,7 +63,7 @@
|
||||
.. |P095_type| replace:: :cyan:`Display`
|
||||
.. |P095_typename| replace:: :cyan:`Display - TFT ILI934x/ILI948x`
|
||||
.. |P095_porttype| replace:: `.`
|
||||
.. |P095_status| replace:: :yellow:`DISPLAY` :yellow:`COLLECTION` :yellow:`(ESP32)`
|
||||
.. |P095_status| replace:: :yellow:`COLLECTION` :yellow:`\(ESP32\)` :yellow:`DISPLAY B`
|
||||
.. |P095_github| replace:: _P095_ILI9341.ino
|
||||
.. _P095_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_P095_ILI9341.ino
|
||||
.. |P095_usedby| replace:: `.`
|
||||
@@ -102,7 +102,7 @@
|
||||
.. |P099_type| replace:: :cyan:`Touch`
|
||||
.. |P099_typename| replace:: :cyan:`Touch - XPT2046 touchscreen on TFT display`
|
||||
.. |P099_porttype| replace:: `SPI`
|
||||
.. |P099_status| replace:: :yellow:`DISPLAY`
|
||||
.. |P099_status| replace:: :yellow:`DISPLAY B`
|
||||
.. |P099_github| replace:: _P099_XPT2046Touch.ino
|
||||
.. _P099_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_P099_XPT2046Touch.ino
|
||||
.. |P099_usedby| replace:: `.`
|
||||
|
||||
@@ -24,18 +24,18 @@
|
||||
.. |P101_compileinfo| replace:: `.`
|
||||
.. |P101_usedlibraries| replace:: https://github.com/a7md0/WakeOnLan
|
||||
|
||||
.. |P102_name| replace:: :cyan:`PZEM-004Tv30-Multiple`
|
||||
.. |P102_type| replace:: :cyan:`Energy (AC)`
|
||||
.. |P102_typename| replace:: :cyan:`Energy (AC) - PZEM-004Tv30-Multiple`
|
||||
.. |P102_name| replace:: :cyan:`PZEM-004Tv30 / PZEM-017v1`
|
||||
.. |P102_type| replace:: :cyan:`Energy`
|
||||
.. |P102_typename| replace:: :cyan:`Energy - PZEM-004T (AC) / PZEM-017 (DC)`
|
||||
.. |P102_porttype| replace:: `.`
|
||||
.. |P102_status| replace:: :yellow:`ENERGY`
|
||||
.. |P102_github| replace:: P102_PZEM004Tv3.ino
|
||||
.. _P102_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_P102_PZEM004Tv3.ino
|
||||
.. |P102_usedby| replace:: `.`
|
||||
.. |P102_shortinfo| replace:: `.`
|
||||
.. |P102_maintainer| replace:: TD-er
|
||||
.. |P102_maintainer| replace:: TD-er tonhuisman
|
||||
.. |P102_compileinfo| replace:: `.`
|
||||
.. |P102_usedlibraries| replace:: https://github.com/olehs/PZEM004T
|
||||
.. |P102_usedlibraries| replace:: https://github.com/olehs/PZEM004T https://github.com/mandulaj/PZEM-004T-v30
|
||||
|
||||
.. |P103_name| replace:: :cyan:`Atlas Scientific EZO pH ORP EC DO HUM`
|
||||
.. |P103_type| replace:: :cyan:`Environment`
|
||||
@@ -55,7 +55,7 @@
|
||||
.. |P104_type| replace:: :cyan:`Display`
|
||||
.. |P104_typename| replace:: :cyan:`Display - MAX7219 dot matrix`
|
||||
.. |P104_porttype| replace:: `SPI`
|
||||
.. |P104_status| replace:: :yellow:`DISPLAY`
|
||||
.. |P104_status| replace:: :yellow:`DISPLAY A`
|
||||
.. |P104_github| replace:: P104_max7219_Dotmatrix.ino
|
||||
.. _P104_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_P104_max7210_Dotmatrix.ino
|
||||
.. |P104_usedby| replace:: `.`
|
||||
@@ -122,7 +122,7 @@
|
||||
.. |P108_type| replace:: :cyan:`Energy (AC)`
|
||||
.. |P108_typename| replace:: :cyan:`Energy (AC) - DDS238-x`
|
||||
.. |P108_porttype| replace:: `.`
|
||||
.. |P108_status| replace:: :yellow:`ENERGY` :yellow:`COLLECTION B`
|
||||
.. |P108_status| replace:: :yellow:`COLLECTION B` :yellow:`ENERGY`
|
||||
.. |P108_github| replace:: P108_DDS238.ino
|
||||
.. _P108_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_P108_DDS238.ino
|
||||
.. |P108_usedby| replace:: `.`
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
.. |P115_type| replace:: :cyan:`Energy`
|
||||
.. |P115_typename| replace:: :cyan:`Energy - MAX1704x`
|
||||
.. |P115_porttype| replace:: `.`
|
||||
.. |P115_status| replace:: :yellow:`ENERGY` :yellow:`COLLECTION B`
|
||||
.. |P115_status| replace:: :yellow:`COLLECTION B` :yellow:`ENERGY`
|
||||
.. |P115_github| replace:: _P115_MAX1704x_v2.ino
|
||||
.. _P115_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_P115_MAX1704x_v2.ino
|
||||
.. |P115_usedby| replace:: `.`
|
||||
@@ -80,7 +80,7 @@
|
||||
.. |P116_type| replace:: :cyan:`Display`
|
||||
.. |P116_typename| replace:: :cyan:`Display - ST77xx TFT`
|
||||
.. |P116_porttype| replace:: `.`
|
||||
.. |P116_status| replace:: :yellow:`DISPLAY`
|
||||
.. |P116_status| replace:: :yellow:`DISPLAY B`
|
||||
.. |P116_github| replace:: _P116_ST77xx.ino
|
||||
.. _P116_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_P116_ST77xx.ino
|
||||
.. |P116_usedby| replace:: `.`
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
.. |P123_type| replace:: :cyan:`Touch`
|
||||
.. |P123_typename| replace:: :cyan:`Touch - I2C Touchscreens`
|
||||
.. |P123_porttype| replace:: `.`
|
||||
.. |P123_status| replace:: :yellow:`DISPLAY`
|
||||
.. |P123_status| replace:: :yellow:`DISPLAY B`
|
||||
.. |P123_github| replace:: P123_I2CTouch.ino
|
||||
.. _P123_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_P123_I2CTouch.ino
|
||||
.. |P123_usedby| replace:: `.`
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
.. |P141_type| replace:: :cyan:`Display`
|
||||
.. |P141_typename| replace:: :cyan:`Display - PCD8544 Nokia 5110 LCD`
|
||||
.. |P141_porttype| replace:: `.`
|
||||
.. |P141_status| replace:: :yellow:`DISPLAY`
|
||||
.. |P141_status| replace:: :yellow:`DISPLAY B`
|
||||
.. |P141_github| replace:: P141_PCD8544_Nokia5110.ino
|
||||
.. _P141_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_P141_PCD8544_Nokia5110.ino
|
||||
.. |P141_usedby| replace:: `.`
|
||||
@@ -106,7 +106,7 @@
|
||||
.. |P148_type| replace:: :cyan:`Display`
|
||||
.. |P148_typename| replace:: :cyan:`Display - POWR3xxD/THR3xxD`
|
||||
.. |P148_porttype| replace:: `.`
|
||||
.. |P148_status| replace:: :yellow:`ENERGY` :yellow:`DISPLAY`
|
||||
.. |P148_status| replace:: :yellow:`DISPLAY B` :yellow:`ENERGY`
|
||||
.. |P148_github| replace:: P148_POWRxxD_THR3xxD.ino
|
||||
.. _P148_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_P148_POWRxxD_THR3xxD.ino
|
||||
.. |P148_usedby| replace:: `.`
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
.. |P165_type| replace:: :cyan:`Display`
|
||||
.. |P165_typename| replace:: :cyan:`Display - NeoPixel (7-Segment)`
|
||||
.. |P165_porttype| replace:: `.`
|
||||
.. |P165_status| replace:: :yellow:`DISPLAY` :yellow:`NEOPIXEL`
|
||||
.. |P165_status| replace:: :yellow:`NEOPIXEL`
|
||||
.. |P165_github| replace:: P165_7SegNeopixel.ino
|
||||
.. _P165_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_P165_7SegNeopixel.ino
|
||||
.. |P165_usedby| replace:: `.`
|
||||
@@ -67,7 +67,7 @@
|
||||
.. |P167_type| replace:: :cyan:`Environment`
|
||||
.. |P167_typename| replace:: :cyan:`Environment - Sensirion SEN5x (IKEA Vindstyrka)`
|
||||
.. |P167_porttype| replace:: `.`
|
||||
.. |P167_status| replace:: :yellow:`CLIMATE`
|
||||
.. |P167_status| replace:: :yellow:`CLIMATE B`
|
||||
.. |P167_github| replace:: P167_Vindstyrka.ino
|
||||
.. _P167_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_P167_Vindstyrka.ino
|
||||
.. |P167_usedby| replace:: `.`
|
||||
@@ -80,7 +80,7 @@
|
||||
.. |P168_type| replace:: :cyan:`Light/Lux`
|
||||
.. |P168_typename| replace:: :cyan:`Light/Lux - VEML6030/VEML7700`
|
||||
.. |P168_porttype| replace:: `.`
|
||||
.. |P168_status| replace:: :yellow:`COLLECTION G` :yellow:`CLIMATE`
|
||||
.. |P168_status| replace:: :yellow:`COLLECTION G` :yellow:`CLIMATE B`
|
||||
.. |P168_github| replace:: P168_VEML6030_7700.ino
|
||||
.. _P168_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_P168_VEML6030_7700.ino
|
||||
.. |P168_usedby| replace:: `.`
|
||||
@@ -93,7 +93,7 @@
|
||||
.. |P169_type| replace:: :cyan:`Environment`
|
||||
.. |P169_typename| replace:: :cyan:`Environment - AS3935 Lightning Detector`
|
||||
.. |P169_porttype| replace:: `.`
|
||||
.. |P169_status| replace:: :yellow:`CLIMATE`
|
||||
.. |P169_status| replace:: :yellow:`CLIMATE B`
|
||||
.. |P169_github| replace:: P169_AS3935_LightningDetector.ino
|
||||
.. _P169_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_P169_AS3935_LightningDetector.ino
|
||||
.. |P169_usedby| replace:: `.`
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
.. |P172_type| replace:: :cyan:`Environment`
|
||||
.. |P172_typename| replace:: :cyan:`Environment - BMP3xx (SPI)`
|
||||
.. |P172_porttype| replace:: `.`
|
||||
.. |P172_status| replace:: :yellow:`COLLECTION G` :yellow:`CLIMATE`
|
||||
.. |P172_status| replace:: :yellow:`COLLECTION G` :yellow:`CLIMATE B`
|
||||
.. |P172_github| replace:: P172_BMP3xx_SPI.ino
|
||||
.. _P172_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_P172_BMP3xx_SPI.ino
|
||||
.. |P172_usedby| replace:: `.`
|
||||
@@ -28,7 +28,7 @@
|
||||
.. |P173_type| replace:: :cyan:`Environment`
|
||||
.. |P173_typename| replace:: :cyan:`Environment - SHTC3`
|
||||
.. |P173_porttype| replace:: `.`
|
||||
.. |P173_status| replace:: :yellow:`COLLECTION G` :yellow:`CLIMATE`
|
||||
.. |P173_status| replace:: :yellow:`COLLECTION H` :yellow:`CLIMATE B`
|
||||
.. |P173_github| replace:: P173_SHTC3.ino
|
||||
.. _P173_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_P173_SHTC3.ino
|
||||
.. |P173_usedby| replace:: `.`
|
||||
@@ -41,7 +41,7 @@
|
||||
.. |P175_type| replace:: :cyan:`Dust`
|
||||
.. |P175_typename| replace:: :cyan:`Dust - PMSx003i (I2C)`
|
||||
.. |P175_porttype| replace:: `I2C`
|
||||
.. |P175_status| replace:: :yellow:`CLIMATE`
|
||||
.. |P175_status| replace:: :yellow:`CLIMATE B`
|
||||
.. |P175_github| replace:: P175_PMSx003i.ino
|
||||
.. _P175_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_P175_PMSx003i.ino
|
||||
.. |P175_usedby| replace:: `.`
|
||||
@@ -67,7 +67,7 @@
|
||||
.. |P177_type| replace:: :cyan:`Environment`
|
||||
.. |P177_typename| replace:: :cyan:`Environment - XDB401 I2C Pressure`
|
||||
.. |P177_porttype| replace:: `.`
|
||||
.. |P177_status| replace:: :yellow:`COLLECTION G` :yellow:`CLIMATE`
|
||||
.. |P177_status| replace:: :yellow:`COLLECTION H` :yellow:`CLIMATE B`
|
||||
.. |P177_github| replace:: P177_XDB_pressure.ino
|
||||
.. _P177_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_P177_XDB_pressure.ino
|
||||
.. |P177_usedby| replace:: `.`
|
||||
@@ -80,7 +80,7 @@
|
||||
.. |P178_type| replace:: :cyan:`Extra IO`
|
||||
.. |P178_typename| replace:: :cyan:`Extra IO - LU9685 Servo controller`
|
||||
.. |P178_porttype| replace:: `.`
|
||||
.. |P178_status| replace:: :yellow:`COLLECTION G` :yellow:`CLIMATE`
|
||||
.. |P178_status| replace:: :yellow:`COLLECTION H` :yellow:`CLIMATE B`
|
||||
.. |P178_github| replace:: P178_LU9685.ino
|
||||
.. _P178_github: https://github.com/letscontrolit/ESPEasy/blob/mega/src/_P178_LU9685.ino
|
||||
.. |P178_usedby| replace:: `LU9685 16/20 channel servo controller`
|
||||
|
||||
@@ -614,6 +614,21 @@ ESP32-C2 (ESP8684)
|
||||
The strapping combination of GPIO-8 = 0 and GPIO-9 = 0 is invalid and will trigger unexpected behavior.
|
||||
|
||||
|
||||
ESP32-C5
|
||||
~~~~~~~~
|
||||
|
||||
* GPIO-26 ... 28: "Select Bootloader Mode" pin
|
||||
* GPIO-27: Enable or disable ROM messages printing
|
||||
* GPIO-7: JTAG signal source
|
||||
* GPIO-2: MTMS, used to select crystal frequency in non-standard boot mode
|
||||
|
||||
|
||||
GPIO-2 is only used when the crystal frequency isn't explicitly set via efuses (which should not happen).
|
||||
|
||||
GPIO-25 and -3 are used to set SDIO sampling and driving clock edge.
|
||||
However this is also never used as SDIO mode means no flash and the chip is connected to a CPU and used as WiFi card.
|
||||
|
||||
|
||||
ESP32-C6
|
||||
~~~~~~~~
|
||||
|
||||
|
||||
@@ -123,6 +123,14 @@ More uses of these system variables can be seen in the rules section and formula
|
||||
|
||||
Does not have the ``+xm`` and ``-xh`` calculations that ``%sunrise%`` and ``%sunset%`` support.
|
||||
-
|
||||
* - ``%latitude%``
|
||||
- 50.12345
|
||||
- Configured Latitude (decimal degrees) as used for calculating the sunrise and sunset times.
|
||||
-
|
||||
* - ``%longitude%``
|
||||
- 50.12345
|
||||
- Configured Longitude (decimal degrees) as used for calculating the sunrise and sunset times.
|
||||
-
|
||||
* - ``%lcltime_am%``
|
||||
- 2020-03-16 1:23:54 AM
|
||||
- Current date/time (AM/PM) if NTP is enabled (YYYY-MM-DD hh:mm:ss xM).
|
||||
@@ -357,6 +365,12 @@ The conversion always outputs a string, but not all of these can be converted ba
|
||||
* - mm to imperial: ``%c_mm2imp%(1900)``
|
||||
- mm to imperial: ``6'2.8"``
|
||||
- Millimeter to imperial units
|
||||
* - Degrees to radians: ``%c_d2r%(22)``
|
||||
- Degrees to radians: ``0.38``
|
||||
- Degrees to radians
|
||||
* - Radians to degrees: ``%c_r2d%(0.357)``
|
||||
- Radians to degrees: ``20.45``
|
||||
- Radians to degrees
|
||||
* - Mins to days: ``%c_m2day%(1900)``
|
||||
- Mins to days: ``1.32``
|
||||
- Minutes expressed in days
|
||||
|
||||
@@ -1587,9 +1587,11 @@ Basic Math Functions
|
||||
* ``round(x)`` Rounds to the nearest integer, but rounds halfway cases away from zero (instead of to the nearest even integer).
|
||||
* ``^`` The caret is used as the exponentiation operator for calculating the value of x to the power of y (x\ :sup:`y`).
|
||||
|
||||
* ``map(value:fromLow:fromHigh:toLow:toHigh)`` Maps value x in the fromLow/fromHigh range to toLow/toHigh values. Similar to the Arduino map() function. See examples below. (Using a colon as an argument separator to not interfere with regular argument processing)
|
||||
* ``map(value:fromLow:fromHigh:toLow:toHigh)`` Maps ``value`` in the fromLow/fromHigh range to toLow/toHigh values. Similar to the Arduino map() function. See examples below. (Using a colon as an argument separator to not interfere with regular argument processing)
|
||||
* ``mapc(value:fromLow:fromHigh:toLow:toHigh)`` same as map, but constrains the result to the fromLow/fromHigh range.
|
||||
|
||||
* ``fmod(x:y)`` Like the modulo operator ``%`` that returns an integer remainder, ``fmod`` returns the floating-point remainder of the division ``x / y``. Added: 2025-12-13 (Not available in limited builds)
|
||||
|
||||
|
||||
Rules example:
|
||||
|
||||
@@ -1662,6 +1664,7 @@ Radian Angle:
|
||||
* ``aSin(x)`` Arc Sine of x (radian)
|
||||
* ``aCos(x)`` Arc Cosine of x (radian)
|
||||
* ``aTan(x)`` Arc Tangent of x (radian)
|
||||
* ``aTan2(x:y)`` Arc Tangent of x / y (radian) Added: 2025-12-13
|
||||
|
||||
Degree Angle:
|
||||
|
||||
@@ -1671,6 +1674,7 @@ Degree Angle:
|
||||
* ``aSin_d(x)`` Arc Sine of x (degree)
|
||||
* ``aCos_d(x)`` Arc Cosine of x (degree)
|
||||
* ``aTan_d(x)`` Arc Tangent of x (degree)
|
||||
* ``aTan2_d(x:y)`` Arc Tangent of x / y (degree) Added: 2025-12-13
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -482,6 +482,16 @@ If the Unit of Measure, configurable per Task Value, should not be displayed on
|
||||
|
||||
NB: This option is excluded from the build if this feature is not enabled.
|
||||
|
||||
MQTT Connect in background
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Added: 2025-08-23
|
||||
|
||||
Depending on the internet connection, f.e. when connecting via a low-end mobile network or other slow connection type, starting a connection to a MQTT Broker can take quite some time.
|
||||
|
||||
On ESP32, tasks like starting the MQTT connection can be delegated to an independent background task, to avoid blocking the normal working of ESPEasy, that will report the result when completed. This feature is enabled by default, as it is the preferred setting, but when this way of connecting is causing issues, it can be disabled.
|
||||
|
||||
|
||||
Allow OTA without size-check
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@@ -951,6 +961,18 @@ System Variables
|
||||
|
||||
Shows an overview of the available variables set from rules, and available ``%variable%`` variables in several categories.
|
||||
|
||||
Included Plugins
|
||||
================
|
||||
|
||||
Show a list of all plugins available in the build, Plugins, Controllers and Notifications.
|
||||
|
||||
For Devices, the plugins are listed both sorted by Description and by Plugin ID, for easier retrieval.
|
||||
|
||||
Controller plugins also show columns for MQTT and TLS (when included in the build).
|
||||
|
||||
.. image:: images/Tools_PluginList_Controllers.png
|
||||
|
||||
|
||||
|
||||
Interfaces
|
||||
**********
|
||||
|
||||
|
After Width: | Height: | Size: 11 KiB |
@@ -21,7 +21,7 @@ import sphinx_bootstrap_theme
|
||||
# -- Project information -----------------------------------------------------
|
||||
|
||||
project = u'ESP Easy'
|
||||
copyright = u'2018-2025, ESP Easy'
|
||||
copyright = u'2018-2026, ESP Easy'
|
||||
author = u'Grovkillen, TD-er & Friends'
|
||||
|
||||
# The short X.Y version
|
||||
|
||||
@@ -14,8 +14,9 @@ Welcome to ESP Easy's documentation!
|
||||
ESPEasy/ESPchips.rst
|
||||
ESPEasy/FunctionBlocks.rst
|
||||
Config/Config.rst
|
||||
Controller/_Controller.rst
|
||||
Hardware/Hardware.rst
|
||||
Network/_Network.rst
|
||||
Controller/_Controller.rst
|
||||
Plugin/_Plugin.rst
|
||||
Rules/Rules.rst
|
||||
Notify/_Notifications.rst
|
||||
|
||||
@@ -206,6 +206,22 @@ static const uint8_t PROGMEM
|
||||
ST77XX_RASET, 4, // 2: Row addr set, 4 args, no delay:
|
||||
0x00, 0x00, // XSTART = 0
|
||||
320 >> 8, 320 & 0xFF }, // XEND = 320
|
||||
Rcmd2black240x320[] = { // 7735R init, part 2 (mini 240x320)
|
||||
2, // 2 commands in list:
|
||||
ST77XX_CASET, 4, // 1: Column addr set, 4 args, no delay:
|
||||
0x00, 0x00, // XSTART = 0
|
||||
0x00, 240, // XEND = 240
|
||||
ST77XX_RASET, 4, // 2: Row addr set, 4 args, no delay:
|
||||
0x00, 0x00, // XSTART = 0
|
||||
320 >> 8, 320 & 0xFF }, // XEND = 320
|
||||
Rcmd2black240x280[] = { // 7735R init, part 2 (mini 240x280)
|
||||
2, // 2 commands in list:
|
||||
ST77XX_CASET, 4, // 1: Column addr set, 4 args, no delay:
|
||||
0x00, 0x00, // XSTART = 0
|
||||
0x00, 240, // XEND = 240
|
||||
ST77XX_RASET, 4, // 2: Row addr set, 4 args, no delay:
|
||||
0x00, 0x00, // XSTART = 0
|
||||
280 >> 8, 280 & 0xFF }, // XEND = 240
|
||||
#endif // if ST7735_EXTRA_INIT
|
||||
|
||||
Rcmd3[] = { // 7735R init, part 3 (red or green tab)
|
||||
@@ -292,6 +308,20 @@ void Adafruit_ST7735::initR(uint8_t options) {
|
||||
const uint8_t data = 0x00;
|
||||
sendCommand(ST77XX_INVON, &data, 0);
|
||||
sendCommand(ST77XX_INVON, &data, 0); // Write twice...
|
||||
} else if (options == INITR_BLACKTAB240x320) {
|
||||
_height = ST7735_TFTHEIGHT_320;
|
||||
_width = ST7735_TFTWIDTH_240;
|
||||
displayInit(Rcmd2black240x320);
|
||||
const uint8_t data = 0x00;
|
||||
sendCommand(ST77XX_INVON, &data, 0);
|
||||
sendCommand(ST77XX_INVON, &data, 0); // Write twice...
|
||||
} else if (options == INITR_BLACKTAB240x280) {
|
||||
_height = ST7735_TFTHEIGHT_280;
|
||||
_width = ST7735_TFTWIDTH_240;
|
||||
displayInit(Rcmd2black240x280);
|
||||
const uint8_t data = 0x00;
|
||||
sendCommand(ST77XX_INVON, &data, 0);
|
||||
sendCommand(ST77XX_INVON, &data, 0); // Write twice...
|
||||
#endif // if ST7735_EXTRA_INIT
|
||||
} else {
|
||||
// colstart, rowstart left at default '0' values
|
||||
@@ -339,7 +369,7 @@ void Adafruit_ST7735::setRotation(uint8_t m) {
|
||||
if ((tabcolor == INITR_BLACKTAB) || (tabcolor == INITR_MINI160x80)) {
|
||||
madctl = ST77XX_MADCTL_MX | ST77XX_MADCTL_MY | ST77XX_MADCTL_RGB;
|
||||
#if ST7735_EXTRA_INIT
|
||||
} else if ((tabcolor == INITR_BLACKTAB135x240) || (tabcolor == INITR_BLACKTAB172x320) || (tabcolor == INITR_BLACKTAB170x320)) {
|
||||
} else if ((tabcolor == INITR_BLACKTAB135x240) || (tabcolor == INITR_BLACKTAB172x320) || (tabcolor == INITR_BLACKTAB170x320) || (tabcolor == INITR_BLACKTAB240x320) || (tabcolor == INITR_BLACKTAB240x280)) {
|
||||
madctl = ST77XX_MADCTL_MY | ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB;
|
||||
#endif // if ST7735_EXTRA_INIT
|
||||
} else {
|
||||
@@ -368,6 +398,16 @@ void Adafruit_ST7735::setRotation(uint8_t m) {
|
||||
_width = ST7735_TFTWIDTH_170;
|
||||
_colstart = 35;
|
||||
_rowstart = 0;
|
||||
} else if (tabcolor == INITR_BLACKTAB240x320) {
|
||||
_height = ST7735_TFTHEIGHT_320;
|
||||
_width = ST7735_TFTWIDTH_240;
|
||||
_colstart = 0;
|
||||
_rowstart = 0;
|
||||
} else if (tabcolor == INITR_BLACKTAB240x280) {
|
||||
_height = ST7735_TFTHEIGHT_280;
|
||||
_width = ST7735_TFTWIDTH_240;
|
||||
_colstart = 0;
|
||||
_rowstart = 20;
|
||||
#endif // if ST7735_EXTRA_INIT
|
||||
} else {
|
||||
_height = ST7735_TFTHEIGHT_160;
|
||||
@@ -380,7 +420,7 @@ void Adafruit_ST7735::setRotation(uint8_t m) {
|
||||
if ((tabcolor == INITR_BLACKTAB) || (tabcolor == INITR_MINI160x80)) {
|
||||
madctl = ST77XX_MADCTL_MY | ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB;
|
||||
#if ST7735_EXTRA_INIT
|
||||
} else if ((tabcolor == INITR_BLACKTAB135x240) || (tabcolor == INITR_BLACKTAB172x320) || (tabcolor == INITR_BLACKTAB170x320)) {
|
||||
} else if ((tabcolor == INITR_BLACKTAB135x240) || (tabcolor == INITR_BLACKTAB172x320) || (tabcolor == INITR_BLACKTAB170x320) || (tabcolor == INITR_BLACKTAB240x320) || (tabcolor == INITR_BLACKTAB240x280)) {
|
||||
madctl = ST77XX_MADCTL_MX | ST77XX_MADCTL_MY | ST77XX_MADCTL_RGB;
|
||||
#endif // if ST7735_EXTRA_INIT
|
||||
} else {
|
||||
@@ -409,6 +449,16 @@ void Adafruit_ST7735::setRotation(uint8_t m) {
|
||||
_height = ST7735_TFTWIDTH_170;
|
||||
_colstart = 35;
|
||||
_rowstart = 0;
|
||||
} else if (tabcolor == INITR_BLACKTAB240x320) {
|
||||
_width = ST7735_TFTHEIGHT_320;
|
||||
_height = ST7735_TFTWIDTH_240;
|
||||
_colstart = 0;
|
||||
_rowstart = 0;
|
||||
} else if (tabcolor == INITR_BLACKTAB240x280) {
|
||||
_width = ST7735_TFTHEIGHT_280;
|
||||
_height = ST7735_TFTWIDTH_240;
|
||||
_colstart = 0;
|
||||
_rowstart = 20;
|
||||
#endif // if ST7735_EXTRA_INIT
|
||||
} else {
|
||||
_width = ST7735_TFTHEIGHT_160;
|
||||
@@ -421,7 +471,7 @@ void Adafruit_ST7735::setRotation(uint8_t m) {
|
||||
if ((tabcolor == INITR_BLACKTAB) || (tabcolor == INITR_MINI160x80)) {
|
||||
madctl = ST77XX_MADCTL_RGB;
|
||||
#if ST7735_EXTRA_INIT
|
||||
} else if ((tabcolor == INITR_BLACKTAB135x240) || (tabcolor == INITR_BLACKTAB172x320) || (tabcolor == INITR_BLACKTAB170x320)) {
|
||||
} else if ((tabcolor == INITR_BLACKTAB135x240) || (tabcolor == INITR_BLACKTAB172x320) || (tabcolor == INITR_BLACKTAB170x320) || (tabcolor == INITR_BLACKTAB240x320) || (tabcolor == INITR_BLACKTAB240x280)) {
|
||||
madctl = ST77XX_MADCTL_MX | ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB;
|
||||
#endif // if ST7735_EXTRA_INIT
|
||||
} else {
|
||||
@@ -450,6 +500,16 @@ void Adafruit_ST7735::setRotation(uint8_t m) {
|
||||
_width = ST7735_TFTWIDTH_170;
|
||||
_colstart = 35;
|
||||
_rowstart = 0;
|
||||
} else if (tabcolor == INITR_BLACKTAB240x320) {
|
||||
_height = ST7735_TFTHEIGHT_320;
|
||||
_width = ST7735_TFTWIDTH_240;
|
||||
_colstart = 0;
|
||||
_rowstart = 0;
|
||||
} else if (tabcolor == INITR_BLACKTAB240x280) {
|
||||
_height = ST7735_TFTHEIGHT_280;
|
||||
_width = ST7735_TFTWIDTH_240;
|
||||
_colstart = 0;
|
||||
_rowstart = 20;
|
||||
#endif // if ST7735_EXTRA_INIT
|
||||
} else {
|
||||
_height = ST7735_TFTHEIGHT_160;
|
||||
@@ -462,7 +522,7 @@ void Adafruit_ST7735::setRotation(uint8_t m) {
|
||||
if ((tabcolor == INITR_BLACKTAB) || (tabcolor == INITR_MINI160x80)) {
|
||||
madctl = ST77XX_MADCTL_MX | ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB;
|
||||
#if ST7735_EXTRA_INIT
|
||||
} else if ((tabcolor == INITR_BLACKTAB135x240) || (tabcolor == INITR_BLACKTAB172x320) || (tabcolor == INITR_BLACKTAB170x320)) {
|
||||
} else if ((tabcolor == INITR_BLACKTAB135x240) || (tabcolor == INITR_BLACKTAB172x320) || (tabcolor == INITR_BLACKTAB170x320) || (tabcolor == INITR_BLACKTAB240x320) || (tabcolor == INITR_BLACKTAB240x280)) {
|
||||
madctl = ST77XX_MADCTL_RGB;
|
||||
#endif // if ST7735_EXTRA_INIT
|
||||
} else {
|
||||
@@ -491,6 +551,16 @@ void Adafruit_ST7735::setRotation(uint8_t m) {
|
||||
_height = ST7735_TFTWIDTH_170;
|
||||
_colstart = 35;
|
||||
_rowstart = 0;
|
||||
} else if (tabcolor == INITR_BLACKTAB240x320) {
|
||||
_width = ST7735_TFTHEIGHT_320;
|
||||
_height = ST7735_TFTWIDTH_240;
|
||||
_colstart = 0;
|
||||
_rowstart = 0;
|
||||
} else if (tabcolor == INITR_BLACKTAB240x280) {
|
||||
_width = ST7735_TFTHEIGHT_280;
|
||||
_height = ST7735_TFTWIDTH_240;
|
||||
_colstart = 0;
|
||||
_rowstart = 20;
|
||||
#endif // if ST7735_EXTRA_INIT
|
||||
} else {
|
||||
_width = ST7735_TFTHEIGHT_160;
|
||||
|
||||
@@ -33,6 +33,8 @@
|
||||
#define INITR_BLACKTAB135x240 0x07
|
||||
#define INITR_BLACKTAB172x320 0x08
|
||||
#define INITR_BLACKTAB170x320 0x09
|
||||
#define INITR_BLACKTAB240x320 0x0A
|
||||
#define INITR_BLACKTAB240x280 0x0B
|
||||
|
||||
// Some register settings
|
||||
#define ST7735_MADCTL_BGR 0x08
|
||||
|
||||
@@ -36,9 +36,11 @@
|
||||
#define ST7735_TFTWIDTH_135 135
|
||||
#define ST7735_TFTWIDTH_172 172
|
||||
#define ST7735_TFTWIDTH_170 170
|
||||
#define ST7735_TFTWIDTH_240 240
|
||||
#define ST7735_TFTHEIGHT_128 128 // for 1.44" display
|
||||
#define ST7735_TFTHEIGHT_160 160 // for 1.8" and mini display
|
||||
#define ST7735_TFTHEIGHT_240 240
|
||||
#define ST7735_TFTHEIGHT_280 280
|
||||
#define ST7735_TFTHEIGHT_320 320
|
||||
|
||||
#define ST_CMD_DELAY 0x80 // special signifier for command lists
|
||||
|
||||
@@ -182,6 +182,14 @@ int ESPeasySerial::read(void)
|
||||
return _serialPort->read();
|
||||
}
|
||||
|
||||
int ESPeasySerial::read(uint8_t *buffer, size_t size)
|
||||
{
|
||||
if (!isValid()) {
|
||||
return -1;
|
||||
}
|
||||
return _serialPort->read(buffer, size);
|
||||
}
|
||||
|
||||
int ESPeasySerial::available(void)
|
||||
{
|
||||
if (!isValid()) {
|
||||
|
||||
@@ -17,6 +17,15 @@ const __FlashStringHelper* ESPEasySerialPort_toString(ESPEasySerialPort port, bo
|
||||
#if USABLE_SOC_UART_NUM > 2
|
||||
case ESPEasySerialPort::serial2: return shortName ? F("serial2") : F("HW Serial2");
|
||||
#endif // if USABLE_SOC_UART_NUM > 2
|
||||
#if USABLE_SOC_UART_NUM > 3
|
||||
case ESPEasySerialPort::serial3: return shortName ? F("serial3") : F("HW Serial3");
|
||||
#endif
|
||||
#if USABLE_SOC_UART_NUM > 4
|
||||
case ESPEasySerialPort::serial4: return shortName ? F("serial4") : F("HW Serial4");
|
||||
#endif
|
||||
#if USABLE_SOC_UART_NUM > 5
|
||||
case ESPEasySerialPort::serial5: return shortName ? F("serial5") : F("HW Serial5");
|
||||
#endif
|
||||
#if USES_SW_SERIAL
|
||||
case ESPEasySerialPort::software: return shortName ? F("serialsw") : F("SW Serial");
|
||||
#endif // if USES_SW_SERIAL
|
||||
@@ -49,6 +58,15 @@ bool isHWserial(ESPEasySerialPort port)
|
||||
#if USABLE_SOC_UART_NUM > 2
|
||||
case ESPEasySerialPort::serial2:
|
||||
#endif // if USABLE_SOC_UART_NUM > 2
|
||||
#if USABLE_SOC_UART_NUM > 3
|
||||
case ESPEasySerialPort::serial3:
|
||||
#endif
|
||||
#if USABLE_SOC_UART_NUM > 4
|
||||
case ESPEasySerialPort::serial4:
|
||||
#endif
|
||||
#if USABLE_SOC_UART_NUM > 5
|
||||
case ESPEasySerialPort::serial5:
|
||||
#endif
|
||||
return true;
|
||||
default:
|
||||
break;
|
||||
@@ -69,6 +87,15 @@ bool useGPIOpins(ESPEasySerialPort port)
|
||||
#if USABLE_SOC_UART_NUM > 2
|
||||
case ESPEasySerialPort::serial2:
|
||||
#endif // if USABLE_SOC_UART_NUM > 2
|
||||
#if USABLE_SOC_UART_NUM > 3
|
||||
case ESPEasySerialPort::serial3:
|
||||
#endif
|
||||
#if USABLE_SOC_UART_NUM > 4
|
||||
case ESPEasySerialPort::serial4:
|
||||
#endif
|
||||
#if USABLE_SOC_UART_NUM > 5
|
||||
case ESPEasySerialPort::serial5:
|
||||
#endif
|
||||
#if USES_SW_SERIAL
|
||||
case ESPEasySerialPort::software:
|
||||
#endif // if USES_SW_SERIAL
|
||||
@@ -96,6 +123,15 @@ bool validSerialPort(ESPEasySerialPort port)
|
||||
#if USABLE_SOC_UART_NUM > 2
|
||||
case ESPEasySerialPort::serial2:
|
||||
#endif // if USABLE_SOC_UART_NUM > 2
|
||||
#if USABLE_SOC_UART_NUM > 3
|
||||
case ESPEasySerialPort::serial3:
|
||||
#endif
|
||||
#if USABLE_SOC_UART_NUM > 4
|
||||
case ESPEasySerialPort::serial4:
|
||||
#endif
|
||||
#if USABLE_SOC_UART_NUM > 5
|
||||
case ESPEasySerialPort::serial5:
|
||||
#endif
|
||||
#if USES_SW_SERIAL
|
||||
case ESPEasySerialPort::software:
|
||||
#endif // if USES_SW_SERIAL
|
||||
|
||||
@@ -20,6 +20,16 @@ enum class ESPEasySerialPort : uint8_t {
|
||||
#if USABLE_SOC_UART_NUM > 2
|
||||
serial2 = 5,
|
||||
#endif // if USABLE_SOC_UART_NUM > 2
|
||||
#if USABLE_SOC_UART_NUM > 3
|
||||
serial3 = 10,
|
||||
#endif
|
||||
#if USABLE_SOC_UART_NUM > 4
|
||||
serial4 = 11,
|
||||
#endif
|
||||
#if USABLE_SOC_UART_NUM > 5
|
||||
serial5 = 12,
|
||||
#endif
|
||||
|
||||
#if USES_SW_SERIAL
|
||||
software = 6,
|
||||
#endif // if USES_SW_SERIAL
|
||||
|
||||
@@ -22,12 +22,16 @@
|
||||
# define SOC_RX0 44
|
||||
# elif CONFIG_IDF_TARGET_ESP32C6
|
||||
# define SOC_RX0 17
|
||||
# elif CONFIG_IDF_TARGET_ESP32C61
|
||||
# define SOC_RX0 17
|
||||
# elif CONFIG_IDF_TARGET_ESP32C5
|
||||
# define SOC_RX0 12
|
||||
# elif CONFIG_IDF_TARGET_ESP32C3
|
||||
# define SOC_RX0 20
|
||||
# elif CONFIG_IDF_TARGET_ESP32C2
|
||||
# define SOC_RX0 19
|
||||
# endif // if CONFIG_IDF_TARGET_ESP32
|
||||
# endif // ifndef SOC_RX0
|
||||
# endif // ifndef SOC_RX0
|
||||
|
||||
# ifndef SOC_TX0
|
||||
# if CONFIG_IDF_TARGET_ESP32
|
||||
@@ -36,68 +40,99 @@
|
||||
# define SOC_TX0 43
|
||||
# elif CONFIG_IDF_TARGET_ESP32C6
|
||||
# define SOC_TX0 16
|
||||
# elif CONFIG_IDF_TARGET_ESP32C61
|
||||
# define SOC_TX0 16
|
||||
# elif CONFIG_IDF_TARGET_ESP32C5
|
||||
# define SOC_TX0 11
|
||||
# elif CONFIG_IDF_TARGET_ESP32C3
|
||||
# define SOC_TX0 21
|
||||
# elif CONFIG_IDF_TARGET_ESP32C2
|
||||
# define SOC_TX0 20
|
||||
# endif // if CONFIG_IDF_TARGET_ESP32
|
||||
# endif // ifndef SOC_TX0
|
||||
# endif // ifndef SOC_TX0
|
||||
|
||||
# if SOC_UART_NUM > 1
|
||||
|
||||
# if SOC_UART_HP_NUM > 1
|
||||
|
||||
# ifndef SOC_RX1
|
||||
# if CONFIG_IDF_TARGET_ESP32
|
||||
# define SOC_RX1 13
|
||||
# elif CONFIG_IDF_TARGET_ESP32S2
|
||||
# define SOC_RX1 18
|
||||
# elif CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6
|
||||
# define SOC_RX1 4
|
||||
# elif CONFIG_IDF_TARGET_ESP32S3
|
||||
# define SOC_RX1 15
|
||||
# endif // if CONFIG_IDF_TARGET_ESP32
|
||||
# endif // ifndef SOC_RX1
|
||||
# ifdef RX1
|
||||
# define SOC_RX1 RX1
|
||||
# else
|
||||
# if CONFIG_IDF_TARGET_ESP32
|
||||
# define SOC_RX1 13
|
||||
# elif CONFIG_IDF_TARGET_ESP32S2
|
||||
# define SOC_RX1 18
|
||||
# elif CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C5 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32C61
|
||||
# define SOC_RX1 4
|
||||
# elif CONFIG_IDF_TARGET_ESP32S3
|
||||
# define SOC_RX1 15
|
||||
# endif // if CONFIG_IDF_TARGET_ESP32
|
||||
# endif // ifdef RX1
|
||||
# endif // ifndef SOC_RX1
|
||||
|
||||
# ifndef SOC_TX1
|
||||
# if CONFIG_IDF_TARGET_ESP32
|
||||
# define SOC_TX1 15
|
||||
# elif CONFIG_IDF_TARGET_ESP32S2
|
||||
# define SOC_TX1 17
|
||||
# elif CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6
|
||||
# define SOC_TX1 5
|
||||
# elif CONFIG_IDF_TARGET_ESP32S3
|
||||
# define SOC_TX1 16
|
||||
# endif // if CONFIG_IDF_TARGET_ESP32
|
||||
# endif // ifndef SOC_TX1
|
||||
# ifdef TX1
|
||||
# define SOC_TX1 TX1
|
||||
# else
|
||||
# if CONFIG_IDF_TARGET_ESP32
|
||||
# define SOC_TX1 15
|
||||
# elif CONFIG_IDF_TARGET_ESP32S2
|
||||
# define SOC_TX1 17
|
||||
# elif CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C5 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32C61
|
||||
# define SOC_TX1 5
|
||||
# elif CONFIG_IDF_TARGET_ESP32S3
|
||||
# define SOC_TX1 16
|
||||
# endif // if CONFIG_IDF_TARGET_ESP32
|
||||
# endif // ifdef TX1
|
||||
# endif // ifndef SOC_TX1
|
||||
|
||||
# endif // if SOC_UART_NUM > 1
|
||||
# endif // if SOC_UART_HP_NUM > 1
|
||||
|
||||
# if SOC_UART_NUM > 2
|
||||
# if SOC_UART_HP_NUM > 2
|
||||
|
||||
# ifndef SOC_RX2
|
||||
# if CONFIG_IDF_TARGET_ESP32
|
||||
# define SOC_RX2 16
|
||||
# elif CONFIG_IDF_TARGET_ESP32S3
|
||||
# define SOC_RX2 19
|
||||
# elif CONFIG_IDF_TARGET_ESP32C6
|
||||
# define SOC_RX2 6
|
||||
# else // if CONFIG_IDF_TARGET_ESP32
|
||||
# define SOC_RX2 -1
|
||||
# endif // if CONFIG_IDF_TARGET_ESP32
|
||||
# endif // ifndef SOC_RX2
|
||||
# ifdef RX2
|
||||
# define SOC_RX2 RX2
|
||||
# else
|
||||
|
||||
# if CONFIG_IDF_TARGET_ESP32
|
||||
# define SOC_RX2 16
|
||||
# elif CONFIG_IDF_TARGET_ESP32S3
|
||||
# define SOC_RX2 19
|
||||
# elif CONFIG_IDF_TARGET_ESP32C6
|
||||
# define SOC_RX2 6
|
||||
# elif CONFIG_IDF_TARGET_ESP32C61
|
||||
# define SOC_RX2 6
|
||||
# elif CONFIG_IDF_TARGET_ESP32C5
|
||||
# define SOC_RX2 6
|
||||
# else // if CONFIG_IDF_TARGET_ESP32
|
||||
# define SOC_RX2 -1
|
||||
# endif // if CONFIG_IDF_TARGET_ESP32
|
||||
# endif // ifdef RX2
|
||||
# endif // ifndef SOC_RX2
|
||||
|
||||
# ifndef SOC_TX2
|
||||
# if CONFIG_IDF_TARGET_ESP32
|
||||
# define SOC_TX2 17
|
||||
# elif CONFIG_IDF_TARGET_ESP32S3
|
||||
# define SOC_TX2 20
|
||||
# elif CONFIG_IDF_TARGET_ESP32C6
|
||||
# define SOC_TX2 7
|
||||
# else // if CONFIG_IDF_TARGET_ESP32
|
||||
# define SOC_TX2 -1
|
||||
# endif // if CONFIG_IDF_TARGET_ESP32
|
||||
# endif // ifndef SOC_TX2
|
||||
# ifdef TX2
|
||||
# define SOC_TX2 TX2
|
||||
# else
|
||||
|
||||
# endif // if SOC_UART_NUM > 2
|
||||
# if CONFIG_IDF_TARGET_ESP32
|
||||
# define SOC_TX2 17
|
||||
# elif CONFIG_IDF_TARGET_ESP32S3
|
||||
# define SOC_TX2 20
|
||||
# elif CONFIG_IDF_TARGET_ESP32C6
|
||||
# define SOC_TX2 7
|
||||
# elif CONFIG_IDF_TARGET_ESP32C61
|
||||
# define SOC_TX2 7
|
||||
# elif CONFIG_IDF_TARGET_ESP32C5
|
||||
# define SOC_TX2 7
|
||||
# else // if CONFIG_IDF_TARGET_ESP32
|
||||
# define SOC_TX2 -1
|
||||
# endif // if CONFIG_IDF_TARGET_ESP32
|
||||
# endif // ifdef TX2
|
||||
# endif // ifndef SOC_TX2
|
||||
|
||||
# endif // if SOC_UART_HP_NUM > 2
|
||||
|
||||
#endif // ifdef ESP32
|
||||
|
||||
@@ -109,6 +144,7 @@ struct ESPeasySerialType {
|
||||
static ESPEasySerialPort getSerialType(ESPEasySerialPort typeHint,
|
||||
int receivePin,
|
||||
int transmitPin);
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -16,6 +16,15 @@ bool ESPeasySerialType::getSerialTypePins(ESPEasySerialPort serType, int& rxPin,
|
||||
# if USABLE_SOC_UART_NUM > 2
|
||||
case ESPEasySerialPort::serial2: rxPin = SOC_RX2; txPin = SOC_TX2; return true;
|
||||
# endif // if USABLE_SOC_UART_NUM > 2
|
||||
# if USABLE_SOC_UART_NUM > 3
|
||||
case ESPEasySerialPort::serial3: return true;
|
||||
# endif
|
||||
# if USABLE_SOC_UART_NUM > 4
|
||||
case ESPEasySerialPort::serial4: return true;
|
||||
# endif
|
||||
# if USABLE_SOC_UART_NUM > 5
|
||||
case ESPEasySerialPort::serial5: return true;
|
||||
# endif
|
||||
# if USES_I2C_SC16IS752
|
||||
case ESPEasySerialPort::sc16is752: return true;
|
||||
# endif // if USES_I2C_SC16IS752
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
#ifndef SOC_UART_NUM
|
||||
# ifdef ESP8266
|
||||
# define SOC_UART_NUM 2
|
||||
# elif defined(ESP32_CLASSIC) || defined(ESP32S2) || defined(ESP32S3) || defined(ESP32C2) || defined(ESP32C3) || defined(ESP32C6)
|
||||
# elif defined(ESP32_CLASSIC) || defined(ESP32S2) || defined(ESP32S3) || defined(ESP32C2) || defined(ESP32C3) || defined(ESP32C5) || defined(ESP32C6) || defined(ESP32C61)
|
||||
# include <soc/soc_caps.h>
|
||||
# else // ifdef ESP8266
|
||||
static_assert(false, "Implement processor architecture");
|
||||
@@ -35,12 +35,12 @@ static_assert(false, "Implement processor architecture");
|
||||
#ifdef ESP32
|
||||
|
||||
/*
|
||||
#if CONFIG_IDF_TARGET_ESP32C6 || // support USB via HWCDC using JTAG interface
|
||||
#if CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32C61 || // support USB via HWCDC using JTAG interface
|
||||
CONFIG_IDF_TARGET_ESP32C3 || // support USB via HWCDC using JTAG interface
|
||||
CONFIG_IDF_TARGET_ESP32S2 || // support USB via USBCDC
|
||||
CONFIG_IDF_TARGET_ESP32S3 // support USB via HWCDC using JTAG interface or USBCDC
|
||||
*/
|
||||
# if CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3
|
||||
# if CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C5 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32C61 || CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3
|
||||
|
||||
// #if CONFIG_TINYUSB_CDC_ENABLED // This define is not recognized here so use USE_USB_CDC_CONSOLE
|
||||
# ifdef USE_USB_CDC_CONSOLE
|
||||
@@ -48,7 +48,14 @@ static_assert(false, "Implement processor architecture");
|
||||
|
||||
// ESP32C3/S3 embedded USB using JTAG interface
|
||||
# ifndef USES_HWCDC
|
||||
# define USES_HWCDC 1
|
||||
# if CONFIG_IDF_TARGET_ESP32S2
|
||||
# define USES_HWCDC 0
|
||||
# ifndef USES_USBCDC
|
||||
# define USES_USBCDC 1
|
||||
# endif // ifndef USES_USBCDC
|
||||
# else
|
||||
# define USES_HWCDC 1
|
||||
# endif
|
||||
# endif // ifndef USES_HWCDC
|
||||
# else // No ARDUINO_USB_MODE
|
||||
# ifndef USES_USBCDC
|
||||
@@ -96,7 +103,11 @@ static_assert(false, "Implement processor architecture");
|
||||
#endif // ifndef USES_HWCDC
|
||||
|
||||
#ifndef USES_USBCDC
|
||||
#ifdef ESP32S2
|
||||
# define USES_USBCDC 1
|
||||
#else
|
||||
# define USES_USBCDC 0
|
||||
#endif
|
||||
#endif // ifndef USES_USBCDC
|
||||
|
||||
|
||||
|
||||
@@ -89,6 +89,7 @@ public:
|
||||
int peek(void);
|
||||
size_t write(uint8_t val) override;
|
||||
int read(void) override;
|
||||
int read(uint8_t *buffer, size_t size);
|
||||
int available(void) override;
|
||||
int availableForWrite(void);
|
||||
void flush(void) override;
|
||||
|
||||
@@ -40,6 +40,16 @@ void Port_ESPEasySerial_HardwareSerial_t::resetConfig(const ESPEasySerialConfig&
|
||||
#if USABLE_SOC_UART_NUM > 2
|
||||
case ESPEasySerialPort::serial2:
|
||||
#endif // if USABLE_SOC_UART_NUM > 2
|
||||
#if USABLE_SOC_UART_NUM > 3
|
||||
case ESPEasySerialPort::serial3:
|
||||
#endif
|
||||
#if USABLE_SOC_UART_NUM > 4
|
||||
case ESPEasySerialPort::serial4:
|
||||
#endif
|
||||
#if USABLE_SOC_UART_NUM > 5
|
||||
case ESPEasySerialPort::serial5:
|
||||
#endif
|
||||
|
||||
_config.port = config.port;
|
||||
break;
|
||||
default:
|
||||
@@ -64,6 +74,18 @@ void Port_ESPEasySerial_HardwareSerial_t::resetConfig(const ESPEasySerialConfig&
|
||||
} else if (_config.port == ESPEasySerialPort::serial2) {
|
||||
_serial = &Serial2;
|
||||
#endif // if USABLE_SOC_UART_NUM > 2
|
||||
#if USABLE_SOC_UART_NUM > 3
|
||||
} else if (_config.port == ESPEasySerialPort::serial3) {
|
||||
_serial = &Serial3;
|
||||
#endif
|
||||
#if USABLE_SOC_UART_NUM > 4
|
||||
} else if (_config.port == ESPEasySerialPort::serial4) {
|
||||
_serial = &Serial4;
|
||||
#endif
|
||||
#if USABLE_SOC_UART_NUM > 5
|
||||
} else if (_config.port == ESPEasySerialPort::serial5) {
|
||||
_serial = &Serial5;
|
||||
#endif
|
||||
} else {
|
||||
_config.port = ESPEasySerialPort::not_set;
|
||||
}
|
||||
|
||||
@@ -3,12 +3,14 @@
|
||||
|
||||
#if USES_USBCDC
|
||||
|
||||
# if !ARDUINO_USB_CDC_ON_BOOT
|
||||
#include <USB.h>
|
||||
|
||||
# if !USB_SERIAL_IS_DEFINED
|
||||
USBCDC ESPEasySerial_USBCDC_port0(0);
|
||||
|
||||
// USBCDC ESPEasySerial_USBCDC_port1(1);
|
||||
# endif // if !ARDUINO_USB_CDC_ON_BOOT
|
||||
|
||||
# endif
|
||||
/*
|
||||
volatile bool usbActive = false;
|
||||
|
||||
volatile int32_t eventidTriggered = ESP_EVENT_ANY_ID;
|
||||
@@ -59,15 +61,15 @@ static void usbcdcEventCallback(void *arg, esp_event_base_t event_base, int32_t
|
||||
usbActive = true;
|
||||
break;
|
||||
case ARDUINO_USB_CDC_RX_EVENT:
|
||||
/*
|
||||
Serial.printf("CDC RX EVENT [%u]: ", data->rx.len);
|
||||
{
|
||||
uint8_t buf[data->rx.len];
|
||||
size_t len = Serial.read(buf, data->rx.len);
|
||||
Serial.write(buf, len);
|
||||
}
|
||||
Serial.println();
|
||||
*/
|
||||
|
||||
// Serial.printf("CDC RX EVENT [%u]: ", data->rx.len);
|
||||
// {
|
||||
// uint8_t buf[data->rx.len];
|
||||
// size_t len = Serial.read(buf, data->rx.len);
|
||||
// Serial.write(buf, len);
|
||||
// }
|
||||
// Serial.println();
|
||||
|
||||
usbActive = true;
|
||||
break;
|
||||
case ARDUINO_USB_CDC_TX_EVENT:
|
||||
@@ -83,12 +85,14 @@ static void usbcdcEventCallback(void *arg, esp_event_base_t event_base, int32_t
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
Port_ESPEasySerial_USBCDC_t::Port_ESPEasySerial_USBCDC_t(const ESPEasySerialConfig& config)
|
||||
{
|
||||
# if ARDUINO_USB_CDC_ON_BOOT
|
||||
# if USB_SERIAL_IS_DEFINED
|
||||
_serial = &USBSerial;
|
||||
|
||||
# else // if ARDUINO_USB_CDC_ON_BOOT
|
||||
# else
|
||||
_serial = nullptr;
|
||||
|
||||
if (config.port == ESPEasySerialPort::usb_cdc_0) {
|
||||
@@ -100,10 +104,11 @@ Port_ESPEasySerial_USBCDC_t::Port_ESPEasySerial_USBCDC_t(const ESPEasySerialConf
|
||||
_serial = &ESPEasySerial_USBCDC_port1;
|
||||
}
|
||||
*/
|
||||
# endif // if ARDUINO_USB_CDC_ON_BOOT
|
||||
# endif
|
||||
|
||||
if (_serial != nullptr) {
|
||||
_config.port = config.port;
|
||||
// _serial->end();
|
||||
|
||||
// USB.onEvent(usbcdcEventCallback);
|
||||
// _serial->onEvent(usbcdcEventCallback);
|
||||
@@ -115,7 +120,7 @@ Port_ESPEasySerial_USBCDC_t::Port_ESPEasySerial_USBCDC_t(const ESPEasySerialConf
|
||||
_serial->begin();
|
||||
|
||||
// _serial->onEvent(usbcdcEventCallback);
|
||||
// USB.begin();
|
||||
// USB.begin();
|
||||
delay(1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,11 @@
|
||||
|
||||
# include "Port_ESPEasySerial_base.h"
|
||||
|
||||
class Port_ESPEasySerial_USBCDC_t : public Port_ESPEasySerial_base {
|
||||
# include <cstdint>
|
||||
|
||||
|
||||
class Port_ESPEasySerial_USBCDC_t : public Port_ESPEasySerial_base
|
||||
{
|
||||
public:
|
||||
|
||||
Port_ESPEasySerial_USBCDC_t(const ESPEasySerialConfig& config);
|
||||
@@ -41,27 +45,27 @@ public:
|
||||
size_t setRxBufferSize(size_t new_size);
|
||||
size_t setTxBufferSize(size_t new_size);
|
||||
|
||||
bool setRS485Mode(int8_t rtsPin, bool enableCollisionDetection = false);
|
||||
bool setRS485Mode(int8_t rtsPin,
|
||||
bool enableCollisionDetection = false);
|
||||
|
||||
virtual int getBaudRate() const override;
|
||||
|
||||
private:
|
||||
|
||||
# if ARDUINO_USB_CDC_ON_BOOT
|
||||
USBCDC *_serial = &Serial;
|
||||
#if USB_SERIAL_IS_DEFINED
|
||||
USBCDC *_serial = &USBSerial;
|
||||
# else // if ARDUINO_USB_CDC_ON_BOOT
|
||||
USBCDC *_serial = nullptr;
|
||||
# endif // if ARDUINO_USB_CDC_ON_BOOT
|
||||
};
|
||||
}; // class Port_ESPEasySerial_USBCDC_t
|
||||
|
||||
|
||||
// Need to define these objects as extern as they need to be defined before setup() is being called.
|
||||
# if ARDUINO_USB_CDC_ON_BOOT
|
||||
# else
|
||||
# if !USB_SERIAL_IS_DEFINED
|
||||
extern USBCDC ESPEasySerial_USBCDC_port0;
|
||||
|
||||
// extern USBCDC ESPEasySerial_USBCDC_port1;
|
||||
# endif // if ARDUINO_USB_CDC_ON_BOOT
|
||||
# endif
|
||||
|
||||
|
||||
#endif // if USES_USBCDC
|
||||
|
||||
@@ -2,7 +2,9 @@
|
||||
|
||||
#if USES_HWCDC
|
||||
|
||||
// #include <USB.h>
|
||||
#if !ARDUINO_USB_CDC_ON_BOOT
|
||||
#include <USB.h>
|
||||
#endif
|
||||
|
||||
volatile bool usbActive = false;
|
||||
|
||||
@@ -47,18 +49,19 @@ static void hwcdcEventCallback(void *arg, esp_event_base_t event_base, int32_t e
|
||||
}
|
||||
|
||||
Port_ESPEasySerial_USB_HWCDC_t::Port_ESPEasySerial_USB_HWCDC_t(const ESPEasySerialConfig& config)
|
||||
:
|
||||
|
||||
# if ARDUINO_USB_CDC_ON_BOOT // Serial used for USB CDC
|
||||
_hwcdc_serial(&Serial)
|
||||
: _hwcdc_serial(&Serial)
|
||||
# else // if ARDUINO_USB_CDC_ON_BOOT
|
||||
_hwcdc_serial(&USBSerial)
|
||||
: _hwcdc_serial(&myUsbSerial)
|
||||
# endif // if ARDUINO_USB_CDC_ON_BOOT
|
||||
{
|
||||
_config.port = ESPEasySerialPort::usb_hw_cdc;
|
||||
|
||||
// USB.begin();
|
||||
#if !ARDUINO_USB_CDC_ON_BOOT
|
||||
USB.begin();
|
||||
#endif
|
||||
if (_hwcdc_serial != nullptr) {
|
||||
// _hwcdc_serial->end();
|
||||
_hwcdc_serial->end();
|
||||
|
||||
// _config.rxBuffSize = _hwcdc_serial->setRxBufferSize(_config.rxBuffSize);
|
||||
// _config.txBuffSize = _hwcdc_serial->setTxBufferSize(_config.txBuffSize);
|
||||
@@ -103,24 +106,24 @@ void Port_ESPEasySerial_USB_HWCDC_t::end() {
|
||||
|
||||
int Port_ESPEasySerial_USB_HWCDC_t::available(void)
|
||||
{
|
||||
if (_hwcdc_serial != nullptr) {
|
||||
return _hwcdc_serial->available();
|
||||
if (_hwcdc_serial != nullptr && _hwcdc_serial->isConnected()) {
|
||||
return _hwcdc_serial->available();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int Port_ESPEasySerial_USB_HWCDC_t::availableForWrite(void)
|
||||
{
|
||||
if (_hwcdc_serial != nullptr) {
|
||||
const int res = _hwcdc_serial->availableForWrite();
|
||||
return res > 64 ? 64 : res;
|
||||
if (_hwcdc_serial != nullptr && _hwcdc_serial->isConnected()) {
|
||||
const int res = _hwcdc_serial->availableForWrite();
|
||||
return res > 64 ? 64 : res;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int Port_ESPEasySerial_USB_HWCDC_t::peek(void)
|
||||
{
|
||||
if (_hwcdc_serial != nullptr) {
|
||||
if (_hwcdc_serial != nullptr && _hwcdc_serial->isConnected()) {
|
||||
return _hwcdc_serial->peek();
|
||||
}
|
||||
return 0;
|
||||
@@ -128,7 +131,7 @@ int Port_ESPEasySerial_USB_HWCDC_t::peek(void)
|
||||
|
||||
int Port_ESPEasySerial_USB_HWCDC_t::read(void)
|
||||
{
|
||||
if (_hwcdc_serial != nullptr) {
|
||||
if (_hwcdc_serial != nullptr && _hwcdc_serial->isConnected()) {
|
||||
return _hwcdc_serial->read();
|
||||
}
|
||||
return 0;
|
||||
@@ -137,7 +140,7 @@ int Port_ESPEasySerial_USB_HWCDC_t::read(void)
|
||||
size_t Port_ESPEasySerial_USB_HWCDC_t::read(uint8_t *buffer,
|
||||
size_t size)
|
||||
{
|
||||
if (_hwcdc_serial != nullptr) {
|
||||
if (_hwcdc_serial != nullptr && _hwcdc_serial->isConnected()) {
|
||||
return _hwcdc_serial->read(buffer, size);
|
||||
}
|
||||
return 0;
|
||||
@@ -145,7 +148,7 @@ size_t Port_ESPEasySerial_USB_HWCDC_t::read(uint8_t *buffer,
|
||||
|
||||
void Port_ESPEasySerial_USB_HWCDC_t::flush(void)
|
||||
{
|
||||
if (_hwcdc_serial != nullptr) {
|
||||
if (_hwcdc_serial != nullptr && _hwcdc_serial->isConnected()) {
|
||||
return _hwcdc_serial->flush();
|
||||
}
|
||||
}
|
||||
@@ -174,10 +177,9 @@ size_t Port_ESPEasySerial_USB_HWCDC_t::write(const uint8_t *buffer,
|
||||
|
||||
Port_ESPEasySerial_USB_HWCDC_t::operator bool() const
|
||||
{
|
||||
if (_hwcdc_serial != nullptr) {
|
||||
if (_hwcdc_serial != nullptr && _hwcdc_serial->isConnected()) {
|
||||
// return usbActive;
|
||||
const bool connected = (*_hwcdc_serial);
|
||||
return connected;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -43,7 +43,9 @@ public:
|
||||
bool setRS485Mode(int8_t rtsPin, bool enableCollisionDetection = false);
|
||||
|
||||
private:
|
||||
|
||||
#if !ARDUINO_USB_CDC_ON_BOOT
|
||||
HWCDC myUsbSerial;
|
||||
#endif
|
||||
HWCDC *_hwcdc_serial= nullptr;
|
||||
};
|
||||
|
||||
|
||||
@@ -139,6 +139,7 @@ void DIRECT_PINMODE_INPUT_ISR(IO_REG_TYPE pin);
|
||||
#include <soc/gpio_struct.h>
|
||||
#include <driver/rtc_io.h>
|
||||
#include <esp_idf_version.h>
|
||||
#include <soc/soc_caps.h>
|
||||
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 5, 0)
|
||||
#include <driver/gpio.h>
|
||||
#endif
|
||||
@@ -152,17 +153,17 @@ void DIRECT_PINMODE_INPUT_ISR(IO_REG_TYPE pin);
|
||||
static inline __attribute__((always_inline))
|
||||
IO_REG_TYPE directRead(IO_REG_TYPE pin)
|
||||
{
|
||||
#if CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3
|
||||
#if CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C5
|
||||
return (GPIO.in.val >> pin) & 0x1;
|
||||
#elif CONFIG_IDF_TARGET_ESP32C6
|
||||
#elif CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32C61 || CONFIG_IDF_TARGET_ESP32P4
|
||||
if ( pin < 32 )
|
||||
return (GPIO.in.val >> pin) & 0x1;
|
||||
else if ( pin < 46 )
|
||||
else if ( pin < SOC_GPIO_PIN_COUNT )
|
||||
return (GPIO.in1.val >> (pin - 32)) & 0x1;
|
||||
#else // plain ESP32
|
||||
if ( pin < 32 )
|
||||
return (GPIO.in >> pin) & 0x1;
|
||||
else if ( pin < 46 )
|
||||
else if ( pin < SOC_GPIO_PIN_COUNT )
|
||||
return (GPIO.in1.val >> (pin - 32)) & 0x1;
|
||||
#endif
|
||||
|
||||
@@ -172,18 +173,18 @@ IO_REG_TYPE directRead(IO_REG_TYPE pin)
|
||||
static inline __attribute__((always_inline))
|
||||
void directWriteLow(IO_REG_TYPE pin)
|
||||
{
|
||||
#if CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3
|
||||
#if CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C5
|
||||
GPIO.out_w1tc.val = ((uint32_t)1 << pin);
|
||||
#elif CONFIG_IDF_TARGET_ESP32C6
|
||||
#elif CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32C61 || CONFIG_IDF_TARGET_ESP32P4
|
||||
if ( pin < 32 )
|
||||
GPIO.out_w1tc.val = ((uint32_t)1 << pin);
|
||||
else if ( pin < 46 )
|
||||
else if ( pin < SOC_GPIO_PIN_COUNT )
|
||||
GPIO.out1_w1tc.val = ((uint32_t)1 << (pin - 32));
|
||||
|
||||
#else // plain ESP32
|
||||
if ( pin < 32 )
|
||||
GPIO.out_w1tc = ((uint32_t)1 << pin);
|
||||
else if ( pin < 46 )
|
||||
else if ( pin < SOC_GPIO_PIN_COUNT )
|
||||
GPIO.out1_w1tc.val = ((uint32_t)1 << (pin - 32));
|
||||
#endif
|
||||
}
|
||||
@@ -191,18 +192,18 @@ void directWriteLow(IO_REG_TYPE pin)
|
||||
static inline __attribute__((always_inline))
|
||||
void directWriteHigh(IO_REG_TYPE pin)
|
||||
{
|
||||
#if CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3
|
||||
#if CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C5
|
||||
GPIO.out_w1ts.val = ((uint32_t)1 << pin);
|
||||
#elif CONFIG_IDF_TARGET_ESP32C6
|
||||
#elif CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32C61 || CONFIG_IDF_TARGET_ESP32P4
|
||||
if ( pin < 32 )
|
||||
GPIO.out_w1ts.val = ((uint32_t)1 << pin);
|
||||
else if ( pin < 46 )
|
||||
else if ( pin < SOC_GPIO_PIN_COUNT )
|
||||
GPIO.out1_w1ts.val = ((uint32_t)1 << (pin - 32));
|
||||
|
||||
#else // plain ESP32
|
||||
if ( pin < 32 )
|
||||
GPIO.out_w1ts = ((uint32_t)1 << pin);
|
||||
else if ( pin < 46 )
|
||||
else if ( pin < SOC_GPIO_PIN_COUNT )
|
||||
GPIO.out1_w1ts.val = ((uint32_t)1 << (pin - 32));
|
||||
#endif
|
||||
}
|
||||
@@ -210,7 +211,7 @@ void directWriteHigh(IO_REG_TYPE pin)
|
||||
static inline __attribute__((always_inline))
|
||||
void directModeInput(IO_REG_TYPE pin)
|
||||
{
|
||||
#if CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3
|
||||
#if CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C5
|
||||
GPIO.enable_w1tc.val = ((uint32_t)1 << (pin));
|
||||
#else
|
||||
if ( GPIO_IS_VALID_GPIO(pin) )
|
||||
@@ -225,7 +226,7 @@ void directModeInput(IO_REG_TYPE pin)
|
||||
}
|
||||
#endif
|
||||
// Input
|
||||
#if CONFIG_IDF_TARGET_ESP32C6
|
||||
#if CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32C61 || CONFIG_IDF_TARGET_ESP32P4
|
||||
if ( pin < 32 )
|
||||
GPIO.enable_w1tc.val = ((uint32_t)1 << pin);
|
||||
else
|
||||
@@ -243,7 +244,7 @@ void directModeInput(IO_REG_TYPE pin)
|
||||
static inline __attribute__((always_inline))
|
||||
void directModeOutput(IO_REG_TYPE pin)
|
||||
{
|
||||
#if CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3
|
||||
#if CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C5
|
||||
GPIO.enable_w1ts.val = ((uint32_t)1 << (pin));
|
||||
#else
|
||||
if ( GPIO_IS_VALID_GPIO(pin) && pin <= 33 ) // pins above 33 can be only inputs
|
||||
@@ -258,7 +259,7 @@ void directModeOutput(IO_REG_TYPE pin)
|
||||
}
|
||||
#endif
|
||||
// Output
|
||||
#if CONFIG_IDF_TARGET_ESP32C6
|
||||
#if CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32C61 || CONFIG_IDF_TARGET_ESP32P4
|
||||
if ( pin < 32 )
|
||||
GPIO.enable_w1ts.val = ((uint32_t)1 << pin);
|
||||
else // already validated to pins <= 33
|
||||
|
||||
@@ -87,8 +87,12 @@ struct ImprovWiFiParamsStruct {
|
||||
"ESP32-C2"
|
||||
#elif defined(CONFIG_IDF_TARGET_ESP32C3)
|
||||
"ESP32-C3"
|
||||
#elif defined(CONFIG_IDF_TARGET_ESP32C5)
|
||||
"ESP32-C5"
|
||||
#elif defined(CONFIG_IDF_TARGET_ESP32C6)
|
||||
"ESP32-C6"
|
||||
#elif defined(CONFIG_IDF_TARGET_ESP32C61)
|
||||
"ESP32-C61"
|
||||
#elif defined(CONFIG_IDF_TARGET_ESP32H2)
|
||||
"ESP32-H2"
|
||||
#elif defined(ESP8266)
|
||||
|
||||
@@ -29,12 +29,12 @@ License along with NeoPixel. If not, see
|
||||
|
||||
#include "driver/spi_master.h"
|
||||
|
||||
#if (defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C2) || defined(CONFIG_IDF_TARGET_ESP32C6)) && !defined(HSPI_HOST)
|
||||
#if (defined(CONFIG_IDF_TARGET_ESP32C5) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C2) || defined(CONFIG_IDF_TARGET_ESP32C6)) && !defined(HSPI_HOST)
|
||||
// HSPI_HOST depreciated in C3
|
||||
#define HSPI_HOST SPI2_HOST
|
||||
#endif
|
||||
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C2) && !defined(CONFIG_IDF_TARGET_ESP32C6)
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C2) && !defined(CONFIG_IDF_TARGET_ESP32C6)
|
||||
class Esp32VspiBus
|
||||
{
|
||||
public:
|
||||
@@ -52,7 +52,7 @@ public:
|
||||
const static int ParallelBits = 1;
|
||||
};
|
||||
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C2) && !defined(CONFIG_IDF_TARGET_ESP32C6)
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C2) && !defined(CONFIG_IDF_TARGET_ESP32C6)
|
||||
class Esp32Vspi2BitBus
|
||||
{
|
||||
public:
|
||||
@@ -70,7 +70,7 @@ public:
|
||||
const static int ParallelBits = 2;
|
||||
};
|
||||
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C2) && !defined(CONFIG_IDF_TARGET_ESP32C6)
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C2) && !defined(CONFIG_IDF_TARGET_ESP32C6)
|
||||
class Esp32Vspi4BitBus
|
||||
{
|
||||
public:
|
||||
@@ -174,7 +174,7 @@ public:
|
||||
// If pins aren't specified, initialize bus with just the default SCK and MOSI pins for the SPI peripheral (no SS, no >1-bit pins)
|
||||
void Initialize()
|
||||
{
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C2) && !defined(CONFIG_IDF_TARGET_ESP32C6)
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C2) && !defined(CONFIG_IDF_TARGET_ESP32C6)
|
||||
if (T_SPIBUS::SpiHostDevice == VSPI_HOST)
|
||||
{
|
||||
Initialize(SCK, -1, MOSI, -1, -1, -1);
|
||||
@@ -277,7 +277,7 @@ private:
|
||||
int8_t _ssPin;
|
||||
};
|
||||
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C2) && !defined(CONFIG_IDF_TARGET_ESP32C6)
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C2) && !defined(CONFIG_IDF_TARGET_ESP32C6)
|
||||
// Clock Speed and Default Definitions for DotStarEsp32DmaVspi
|
||||
typedef DotStarEsp32DmaSpiMethod<SpiSpeed40Mhz, Esp32VspiBus> DotStarEsp32DmaVspi40MhzMethod;
|
||||
typedef DotStarEsp32DmaSpiMethod<SpiSpeed20Mhz, Esp32VspiBus> DotStarEsp32DmaVspi20MhzMethod;
|
||||
@@ -303,7 +303,7 @@ typedef DotStarEsp32DmaSpiMethod<SpiSpeedHz, Esp32HspiBus> DotStarEsp32DmaHspiHz
|
||||
|
||||
typedef DotStarEsp32DmaHspi10MhzMethod DotStarEsp32DmaHspiMethod;
|
||||
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C2) && !defined(CONFIG_IDF_TARGET_ESP32C6)
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C2) && !defined(CONFIG_IDF_TARGET_ESP32C6)
|
||||
// Clock Speed and Default Definitions for DotStarEsp32DmaVspi2Bit
|
||||
typedef DotStarEsp32DmaSpiMethod<SpiSpeed40Mhz,Esp32Vspi2BitBus> DotStarEsp32DmaVspi2Bit40MhzMethod;
|
||||
typedef DotStarEsp32DmaSpiMethod<SpiSpeed20Mhz,Esp32Vspi2BitBus> DotStarEsp32DmaVspi2Bit20MhzMethod;
|
||||
@@ -329,7 +329,7 @@ typedef DotStarEsp32DmaSpiMethod<SpiSpeedHz,Esp32Hspi2BitBus> DotStarEsp32DmaHsp
|
||||
|
||||
typedef DotStarEsp32DmaHspi2Bit10MhzMethod DotStarEsp32DmaHspi2BitMethod;
|
||||
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C2) && !defined(CONFIG_IDF_TARGET_ESP32C6)
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C2) && !defined(CONFIG_IDF_TARGET_ESP32C6)
|
||||
// Clock Speed and Default Definitions for DotStarEsp32DmaVspi4Bit
|
||||
typedef DotStarEsp32DmaSpiMethod<SpiSpeed40Mhz,Esp32Vspi4BitBus> DotStarEsp32DmaVspi4Bit40MhzMethod;
|
||||
typedef DotStarEsp32DmaSpiMethod<SpiSpeed20Mhz,Esp32Vspi4BitBus> DotStarEsp32DmaVspi4Bit20MhzMethod;
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
// ESP32C3/S3 I2S is not supported yet due to significant changes to interface
|
||||
#ifndef CONFIG_SOC_RMT_TX_CANDIDATES_PER_GROUP // turn this off with something new from idf5.1
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32S3) && !defined(CONFIG_IDF_TARGET_ESP32C2)
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32S3) && !defined(CONFIG_IDF_TARGET_ESP32C2)
|
||||
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
@@ -113,7 +113,7 @@ typedef struct {
|
||||
|
||||
static uint8_t i2s_silence_buf[I2S_DMA_SILENCE_SIZE] = { 0 };
|
||||
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3)
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32C3)
|
||||
// (I2S_NUM_MAX == 2)
|
||||
static i2s_bus_t I2S[I2S_NUM_MAX] = {
|
||||
{&I2S0, -1, -1, -1, -1, 0, NULL, NULL, i2s_silence_buf, I2S_DMA_SILENCE_SIZE, NULL, I2S_DMA_BLOCK_COUNT_DEFAULT, 0, 0, I2s_Is_Idle},
|
||||
@@ -187,7 +187,7 @@ esp_err_t i2sSetClock(uint8_t bus_num, uint8_t div_num, uint8_t div_b, uint8_t d
|
||||
typeof(i2s->clkm_conf) clkm_conf;
|
||||
|
||||
clkm_conf.val = 0;
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3)
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32C3)
|
||||
clkm_conf.clka_en = 0;
|
||||
#else
|
||||
clkm_conf.clk_sel = 2;
|
||||
@@ -222,7 +222,7 @@ void i2sSetPins(uint8_t bus_num, int8_t out, bool invert) {
|
||||
pinMode(out, OUTPUT);
|
||||
|
||||
int i2sSignal;
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3)
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32C3)
|
||||
// (I2S_NUM_MAX == 2)
|
||||
if (bus_num == 1) {
|
||||
i2sSignal = I2S1O_DATA_OUT23_IDX;
|
||||
@@ -268,7 +268,7 @@ void i2sInit(uint8_t bus_num,
|
||||
return;
|
||||
}
|
||||
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3)
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32C3)
|
||||
// (I2S_NUM_MAX == 2)
|
||||
if (bus_num) {
|
||||
periph_module_enable(PERIPH_I2S1_MODULE);
|
||||
@@ -310,7 +310,7 @@ void i2sInit(uint8_t bus_num,
|
||||
lc_conf.out_eof_mode = 1;
|
||||
i2s->lc_conf.val = lc_conf.val;
|
||||
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3)
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32C3)
|
||||
i2s->pdm_conf.pcm2pdm_conv_en = 0;
|
||||
i2s->pdm_conf.pdm2pcm_conv_en = 0;
|
||||
#endif
|
||||
@@ -341,7 +341,7 @@ void i2sInit(uint8_t bus_num,
|
||||
|
||||
i2s->fifo_conf.tx_fifo_mod_force_en = 1;
|
||||
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3)
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32C3)
|
||||
i2s->pdm_conf.rx_pdm_en = 0;
|
||||
i2s->pdm_conf.tx_pdm_en = 0;
|
||||
#endif
|
||||
@@ -351,7 +351,7 @@ void i2sInit(uint8_t bus_num,
|
||||
// enable intr in cpu //
|
||||
int i2sIntSource;
|
||||
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3)
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32C3)
|
||||
// (I2S_NUM_MAX == 2)
|
||||
if (bus_num == 1) {
|
||||
i2sIntSource = ETS_I2S1_INTR_SOURCE;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
#ifndef CONFIG_SOC_RMT_TX_CANDIDATES_PER_GROUP // turn this off with something new from idf5.1
|
||||
// ESP32C3 I2S is not supported yet due to significant changes to interface
|
||||
#if defined(ARDUINO_ARCH_ESP32) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C2)
|
||||
#if defined(ARDUINO_ARCH_ESP32) && !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C2)
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
||||
@@ -12,7 +12,7 @@ enum NeoBusChannel
|
||||
NeoBusChannel_0,
|
||||
NeoBusChannel_1,
|
||||
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C2) && !defined(CONFIG_IDF_TARGET_ESP32C6)
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C2) && !defined(CONFIG_IDF_TARGET_ESP32C6) && !defined(CONFIG_IDF_TARGET_ESP32C61)
|
||||
|
||||
NeoBusChannel_2,
|
||||
|
||||
@@ -35,7 +35,7 @@ enum NeoBusChannel
|
||||
NeoBusChannel_7,
|
||||
#endif // !defined(CONFIG_IDF_TARGET_ESP32S2)
|
||||
|
||||
#endif // !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C2) && !defined(CONFIG_IDF_TARGET_ESP32C6)
|
||||
#endif
|
||||
|
||||
#endif // ARDUINO_ARCH_ESP32
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ License along with NeoPixel. If not, see
|
||||
|
||||
#if ESP_IDF_VERSION_MAJOR <= 4
|
||||
// ESP32C3 I2S is not supported yet due to significant changes to interface
|
||||
#if defined(ARDUINO_ARCH_ESP32) && !defined(CONFIG_IDF_TARGET_ESP32C3)
|
||||
#if defined(ARDUINO_ARCH_ESP32) && !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32C3)
|
||||
|
||||
extern "C"
|
||||
{
|
||||
@@ -305,7 +305,7 @@ typedef NeoEsp32I2sMethodBase<NeoEsp32I2sSpeed800Kbps, NeoEsp32I2sBusZero, NeoEs
|
||||
typedef NeoEsp32I2sMethodBase<NeoEsp32I2sSpeed400Kbps, NeoEsp32I2sBusZero, NeoEsp32I2sInverted> NeoEsp32I2s0400KbpsInvertedMethod;
|
||||
typedef NeoEsp32I2sMethodBase<NeoEsp32I2sSpeedApa106, NeoEsp32I2sBusZero, NeoEsp32I2sInverted> NeoEsp32I2s0Apa106InvertedMethod;
|
||||
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3)
|
||||
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32C3)
|
||||
// (I2S_NUM_MAX == 2)
|
||||
|
||||
typedef NeoEsp32I2sMethodBase<NeoEsp32I2sSpeedWs2812x, NeoEsp32I2sBusOne, NeoEsp32I2sNotInverted> NeoEsp32I2s1Ws2812xMethod;
|
||||
@@ -347,7 +347,7 @@ typedef NeoEsp32I2sMethodBase<NeoEsp32I2sSpeedApa106, NeoEsp32I2sBusN, NeoEsp32I
|
||||
|
||||
#endif
|
||||
|
||||
#if !defined(NEOPIXEL_ESP32_RMT_DEFAULT) && !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3)
|
||||
#if !defined(NEOPIXEL_ESP32_RMT_DEFAULT) && !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32C3)
|
||||
|
||||
// I2s Bus 1 method is the default method for Esp32
|
||||
// Esp32S2 & Esp32C3 will use RMT as the default allways
|
||||
@@ -379,6 +379,6 @@ typedef NeoEsp32I2s1Apa106InvertedMethod NeoApa106InvertedMethod;
|
||||
typedef NeoEsp32I2s1Ws2812xInvertedMethod Neo800KbpsInvertedMethod;
|
||||
typedef NeoEsp32I2s1400KbpsInvertedMethod Neo400KbpsInvertedMethod;
|
||||
|
||||
#endif // !defined(NEOPIXEL_ESP32_RMT_DEFAULT) && !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3)
|
||||
#endif // !defined(NEOPIXEL_ESP32_RMT_DEFAULT) && !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32C3)
|
||||
#endif
|
||||
#endif // ESP_IDF_VERSION_MAJOR < 5
|
||||
|
||||