Compare commits

..
6 Commits
Author SHA1 Message Date
ESPEasy release bot f59f25ee40 automaticly updated release notes for v2.0-20180510 2018-05-10 04:00:27 +02:00
Gijs NoorlanderandGitHub 14030ec15b Merge pull request #1395 from letscontrolit/revert-1389-patch-1
Revert "Update _P045_MPU6050.ino"
2018-05-09 23:42:50 +02:00
Gijs NoorlanderandGitHub 1fd6179408 Revert "Update _P045_MPU6050.ino" 2018-05-09 23:40:27 +02:00
Gijs NoorlanderandGitHub 22424fb03b Merge pull request #1389 from maartenpaauw/patch-1
Update _P045_MPU6050.ino
2018-05-09 23:33:26 +02:00
Maarten PaauwandGitHub 97cd06440e Update _P045_MPU6050.ino
Fix debug code (commented out code).
2018-05-08 23:14:08 +02:00
ESPEasy release bot 8346e39ac9 automaticly updated release notes for v2.0-20180322 2018-03-22 04:00:24 +01:00
5836 changed files with 201750 additions and 1199360 deletions
+1 -3
View File
@@ -26,8 +26,6 @@ Also there are more people on the forum that can help you with support.
* Incomplete or unstable plugins should have a PLUGIN_BUILD_DEV #ifdef around them. Also add [DEVELOPMENT] to the name.
* Do not modify any of the variables passed to your PLUGIN_WRITE handler.
* New plugins that seem to be working correctly should have a PLUGIN_BUILD_TESTING around until they are tested enough. Also add [TESTING] to the name
* New plugins that seem to be working correctly should have a PLUGIN_BUILD_TESTING around until they are tested enough.
* Also see our general guidelines at: https://www.letscontrolit.com/wiki/index.php/ESPEasyDevelopmentGuidelines
-37
View File
@@ -1,37 +0,0 @@
---
name: Bug report
about: Create a report to help us improve
title: "[BUG]"
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Used platform (please complete the following information):**
- ESP type: [e.g. ESP8266, ESP32, ESP32-S2, ESP32-S3, ESP32-C3]
- Build version: [e.g. self built, mega-YYYYMMDD]
- Build set [e.g. normal, energy, display, climate, collection-X, max]
**Platform Specifics (when applicable, please complete the following information):**
- Flash size: [e.g. 4M]
- Brand/Model: [e.g. Sonoff Basic r2, NodeMCU, Wemos D1]
- Browser + OS [e.g. Windows 11/Chrome, IOS/safari]
**Additional context**
Add any other context about the problem here.
-20
View File
@@ -1,20 +0,0 @@
---
name: Feature request
about: Suggest an idea for this project
title: "[FR]"
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
-6
View File
@@ -1,6 +0,0 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
+12 -62
View File
@@ -1,68 +1,18 @@
### Checklist
- [ ] The title of this issue is "to the point" and descriptive.
- [ ] This issue describes what is happening.
- [ ] This issue describes what components are affected (e.g. name of plugin/controller)
- [ ] This issue describes how to reproduce it.
- [ ] This issue describes when it was introduced (when known) and what version is now showing the problem.
### I have...
- [ ] searched the [issue tracker](https://github.com/letscontrolit/ESPEasy/issues) or the [forum](https://www.letscontrolit.com/forum/viewforum.php?f=1) for a similar issue. (include links when applicable)
- [ ] entered a system description using "Copy info to clipboard" on the sysinfo page. (when possible)
- [ ] entered the full filename of the used version (e.g. `ESP_Easy_mega-20181001_test_ESP8266_4096_VCC.bin` )
- [ ] given a list of active plugins or controllers when applicable.
- [ ] filled out all applicable fields below.
### Steps already tried...
- [ ] Tried a clean install (empty `.bin` files are included in the ZIP)
- [ ] Tested previous/other build (mention which one already tested)
- [ ] Tested on other node to make sure hardware isn't defective.
- [ ] Verified if the problem is limited to a single plugin/controller
### If you self compile, please state this and PLEASE try to ONLY REPORT ISSUES WITH OFFICIAL BUILDS! ###
<!--- If you self compile, please state this and PLEASE try to ONLY REPORT ISSUES WITH OFFICIAL BUILDS! --->
<!--- NOTE: This is not a support forum! For questions and support go here: --->
<!--- https://www.letscontrolit.com/forum/viewforum.php?f=1 --->
<!--- Remove topics that are not applicable to your feature request of issue --->
<!--- Remember to have a "to the point" TITLE --->
### Summarize of the problem/feature request
<!--- Describe the problem or feature request --->
YOUR TEXT GOES HERE
### Expected behavior
<!--- Tell us what should happen? --->
YOUR TEXT GOES HERE
### Actual behavior
<!--- Tell us what happens instead? --->
YOUR TEXT GOES HERE
**NOTE: This is not a support forum! For questions and support go here: https://www.letscontrolit.com/forum/viewforum.php?f=1**
### Steps to reproduce
<!--- How can we trigger this problem? --->
1.
2.
3.
How can we trigger this problem?
Does the problem presist after powering off and on? (just resetting isnt enough sometimes)
### Expected behavior
Tell us what should happen?
### Actual behavior
Tell us what happens instead?
<!--- Does the problem persists after powering off and on? (just resetting isn't enough sometimes) --->
<!--- Please document if you have restarted the unit and if the problem is then gone etc. etc. --->
### System configuration
<!--- Please add as much information and screenshots as possible --->
Hardware:
<!--- You should also provide links to hardware pages etc where we can find more info --->
<!--- If you self compile, please state this and PLEASE try to ONLY REPORT ISSUES WITH OFFICIAL BUILDS! --->
ESP Easy version:
<!--- In order to have a better readablity of your issue then you should place screenshots here --->
<!--- Simply drag and drop them onto this template, move the text string below the "ESP Easy settings/screenshots" topic --->
ESP Easy settings/screenshots:
### Rules or log data
<!--- place your code/rules between the two ``` rows --->
<!--- remove if not applicable! --->
```
```
Software or git version:
-17
View File
@@ -1,17 +0,0 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 60
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 14
# Issues with these labels will never be considered stale
exemptLabels:
- pinned
- security
# Label to use when marking an issue as stale
staleLabel: stale
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: true
-128
View File
@@ -1,128 +0,0 @@
# Checks whether the pushed commit can be build with PIO. Only triggered on normal push to the mega branch without tag and with pull requests targeting mega
name: Build
on:
push:
branches: [mega]
tags-ignore: ['**']
paths-ignore:
- 'dist/Release_notes.txt'
- 'docs/**'
pull_request:
branches: [mega]
permissions:
contents: read
concurrency:
group: ${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
documentation:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v7
with:
python-version: '3.13'
- name: Build documentation
run: |
cd docs
sudo apt install imagemagick zip
pip install uv
uv pip install --system -r requirements.txt
python ./builds_overview.py
make html
cd ..
zip -r -qq ESPEasy_docs.zip docs/build/*
- uses: actions/upload-artifact@v7
with:
name: Documentation
path: ESPEasy_docs.zip
generate-matrix:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v7
with:
python-version: '3.13'
- id: set-matrix
run: |
pip install uv
uv pip install --system pioarduino
python tools/ci/generate-matrix.py
build:
needs: generate-matrix
runs-on: ubuntu-latest
strategy:
matrix: ${{ fromJson(needs.generate-matrix.outputs.matrix) }}
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v7
with:
python-version: '3.13'
- name: Dependencies
run: |
sudo apt-get update
sudo apt install binutils build-essential libffi-dev libgit2-dev
pip install uv
uv pip install --system -r requirements.txt
pio pkg update -e ${{ matrix.env }}
- name: Get current date
id: date
run: |
echo "builddate=$(date +'%Y%m%d')" >> $GITHUB_OUTPUT
- name: Build and archive
id: build-and-archive
env:
CHIP: ${{ matrix.chip }}
ENV: ${{ matrix.env }}
run: |
python tools/ci/build-and-archive.py
- id: string
uses: Entepotenz/change-string-case-action-min-dependencies@v1
with:
string: ${{ matrix.chip }}
- uses: actions/upload-artifact@v7
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
path: |
bin
if-no-files-found: ignore
# Package all ESP82xx and ESP32 into a single ESPEasy-all-Binaries-<date>_PR#<pr_nr>_<runnr>.zip
combine_package:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v7
with:
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@v8
with:
path: artifacts/Binaries/bin/
pattern: Bin-*
merge-multiple: true
- name: List all files in the package for single-archive upload
run: |
cd artifacts/Binaries/
ls -R
- uses: actions/upload-artifact@v7
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 }}
path: |
artifacts/Binaries/
if-no-files-found: ignore
-187
View File
@@ -1,187 +0,0 @@
# NOTICE the generate-matrix and build are c/p from the build workflow
# NOTICE manual deletion following a re-created tag and push will also trigger this
#
# Checks whether the pushed commit is buildable and creates a release with the provided tag. Only triggered on mega-* tag push
# Documentation and distribution files (tools, readme, etc.) are uploaded as .zip files prepared similarly to the build_ESPEasy.sh
# Every .bin build artifact is merged in a single .zip file, which is then uploaded as a single release asset
name: Release
on:
push:
branches-ignore: ['**']
tags: ['mega-*']
permissions:
contents: read
jobs:
generate-matrix:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v7
with:
python-version: '3.13'
- id: set-matrix
run: |
pip install uv
uv pip install --system pioarduino
python tools/ci/generate-matrix.py
build:
needs: generate-matrix
runs-on: ubuntu-latest
strategy:
matrix: ${{ fromJson(needs.generate-matrix.outputs.matrix) }}
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v7
with:
python-version: '3.13'
- name: Dependencies
run: |
sudo apt install binutils build-essential libffi-dev libgit2-dev
pip install uv
uv pip install --system -r requirements.txt
pio pkg update -e ${{ matrix.env }}
- name: Build and archive
id: build-and-archive
env:
CHIP: ${{ matrix.chip }}
ENV: ${{ matrix.env }}
run: |
python tools/ci/build-and-archive.py
- id: string
uses: Entepotenz/change-string-case-action-min-dependencies@v1
with:
string: ${{ matrix.chip }}
- uses: actions/upload-artifact@v7
with:
name: Bin-${{ steps.string.outputs.uppercase }}-${{ matrix.env }}
path: |
bin
if-no-files-found: ignore
prepare-dist:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v7
with:
python-version: '3.13'
- name: Build documentation
run: |
cd docs
sudo apt install imagemagick zip
pip install uv
uv pip install --system -r requirements.txt
make html
cd ..
zip -r -qq ESPEasy_docs.zip docs/build/*
- name: Package utilities
run: |
cd dist
zip -r -qq ../ESPEasy_dist.zip *
cd ..
- uses: actions/upload-artifact@v7
with:
name: Distribution
path: |
ESPEasy_docs.zip
ESPEasy_dist.zip
prepare-notes:
needs: build
runs-on: ubuntu-latest
outputs:
notes: ${{ steps.release-notes.outputs.result }}
steps:
- id: release-notes
uses: actions/github-script@v9
with:
result-encoding: string
script: |
const tagRefObj = await github.rest.git.getRef({
...context.repo,
ref: context.ref.replace('refs/', '')
});
const tagObj = await github.rest.git.getTag({
...context.repo,
tag_sha: tagRefObj.data.object.sha
});
return tagObj.data.message;
release:
permissions:
contents: write # for ncipollo/release-action
needs: [build, prepare-dist, prepare-notes]
runs-on: ubuntu-latest
steps:
- uses: actions/setup-python@v7
with:
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@v8
with:
path: artifacts/bin/
pattern: Bin-*
merge-multiple: true
- name: Download dist and docs zip files
uses: actions/download-artifact@v8
with:
path: distribution/
name: Distribution
- name: Repackage for release upload
run: |
ls -R
sudo apt install zipmerge zip
cd artifacts
# ESP8266 and ESP8285
find . -not -name '*ESP32*' -print | zip -@ ../ESPEasy_ESP82xx.zip
# ESP32 and derived chips
# TODO if/when available: ESP32h2
find . -name '*ESP32s2*' -print | zip -@ ../ESPEasy_ESP32s2.zip
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 '*ESP32p4*' -print | zip -@ ../ESPEasy_ESP32p4.zip
find . -name '*ESP32_*' -print | zip -@ ../ESPEasy_ESP32.zip
cd ..
# Add dist tools to each package, after removing some unneeded files
# Copy dist zip for ESP82xx use
cp distribution/ESPEasy_dist.zip ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP82xx_binaries.zip
zip -d ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP82xx_binaries.zip "bin/blank_8MB.bin"
# Move dist zip for ESP32 use
mv distribution/ESPEasy_dist.zip ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32_binaries.zip
zip -d ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32_binaries.zip "bin/blank_1MB.bin" "bin/blank_2MB.bin" "bin/ESPEasy_2step_UploaderMega_1024.bin"
zipmerge ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP82xx_binaries.zip ESPEasy_ESP82xx.zip
# TODO if/when available: ESP32h2
zipmerge ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32s2_binaries.zip ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32_binaries.zip ESPEasy_ESP32s2.zip
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 }}_ESP32p4_binaries.zip ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32_binaries.zip ESPEasy_ESP32p4.zip
zipmerge ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32_binaries.zip ESPEasy_ESP32.zip
- uses: ncipollo/release-action@v1
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 }}_ESP32c5_binaries.zip,ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32c6_binaries.zip,ESPEasy_mega_${{ steps.date.outputs.builddate }}_ESP32p4_binaries.zip,distribution/*.zip"
body: ${{ needs.prepare-notes.outputs.notes }}
token: ${{ secrets.GITHUB_TOKEN }}
+6 -97
View File
@@ -1,98 +1,7 @@
## OS Specific Hidden Files ####
# MacOSX Finder *****
.DS_Store
# Fuse FileSystem ***
.fuse_hidden*
## PlatformIO ##################
.pioenvs
.clang_complete
.gcc-flags.json
.piolibdeps
pre_extra_script.py
*.code-workspace
.pio
.piopm
## Project #####################
lib/readme.txt
src/Custom.h
/ESPEasy
test/output_export.cpp
.vscode
.vscode/.browse.c_cpp.db*
.vscode/c_cpp_properties.json
.vscode/launch.json
src/ESPEasy.ino.cpp
docs/build/
\.pio/
docs/source/_build/
venv/
.idea/
tools/vagrant/.vagrant/
tools/vagrant/build/
tools/vagrant/Custom.h
.buildcache/
tools/vagrant/pio_envlist.txt
build_output/
**/__tmpfile.cpp
src/_Custom.h
src/*_*Custom.h
dist/Espressif_flash_download_tool_v3.8.5/logs/
dist/Espressif_flash_download_tool_v3.8.5/dl_temp/bin_tmp/
dist/Espressif_flash_download_tool_v3.8.5/dl_temp/_temp_by_dltool/
dist/Espressif_flash_download_tool_v3.8.5/configure/esp32/spi_download.conf
src/CustomIR.h
docs/source/Plugin/_plugin_sets_overview.repl
*.PVS-Studio.stacktrace.txt
.platformio/
.pio/
managed_components/
CMakeLists.txt
sdkconfig.max_ESP32s3_16M8M_OPI_PSRAM
sdkconfig.defaults
dependencies.lock
.dummy/
.cache/
src/src/CustomBuild/CompiletimeDefines_generated.h
sdkconfig.*
src/Custom_.h
compile_commands.json
.pioenvs
.clang_complete
.gcc-flags.json
.piolibdeps
*.Identifier
lib/readme.txt
src/Custom.h
-10
View File
@@ -1,10 +0,0 @@
FROM gitpod/workspace-full
USER gitpod
# Install custom tools, runtime, etc. using apt-get
# For example, the command below would install "bastet" - a command line tetris clone:
#
# RUN sudo apt-get -q update && # sudo apt-get install -yq bastet && # sudo rm -rf /var/lib/apt/lists/*
#
# More information: https://www.gitpod.io/docs/config-docker/
-13
View File
@@ -1,13 +0,0 @@
tasks:
- before: pip install -U platformio && brew install uncrustify && pip3 install -r ./requirements.txt
image:
file: .gitpod.Dockerfile
vscode:
extensions:
- ms-vscode.cpptools@0.26.3:u3GsZ5PK12Ddr79vh4TWgQ==
- eamodio.gitlens@10.2.1:e0IYyp0efFqVsrZwsIe8CA==
- LaurentTreguier.uncrustify@2.18.0:/k8Osjj/XSuz09F+pEu7wg==
- Atishay-Jain.All-Autocomplete@0.0.23:fbZNfSpnd8XkAHGfAPS2rA==
- 2gua.rainbow-brackets@0.0.6:Tbu8dTz0i+/bgcKQTQ5b8g==
-35
View File
@@ -1,35 +0,0 @@
# Read the Docs configuration file for Sphinx projects
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
# Required
version: 2
# Set the OS, Python version and other tools you might need
build:
os: ubuntu-22.04
tools:
python: "3.12"
# You can also specify other tool versions:
# nodejs: "20"
# rust: "1.70"
# golang: "1.20"
# Build documentation in the "docs/" directory with Sphinx
sphinx:
configuration: docs/source/conf.py
# You can configure Sphinx to use a different builder, for instance use the dirhtml builder for simpler URLs
# builder: "dirhtml"
# Fail on all warnings to avoid broken references
# fail_on_warning: true
# Optionally build your docs in additional formats such as PDF and ePub
# formats:
# - pdf
# - epub
# Optional but recommended, declare the Python requirements required
# to build your documentation
# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
python:
install:
- requirements: docs/requirements.txt
-3
View File
@@ -1,3 +0,0 @@
{
"extensions.showRecommendationsOnlyOnDemand": true
}
+55
View File
@@ -0,0 +1,55 @@
language: python
python:
- '2.7'
#we want a newer cppcheck, so use trusty
dist: trusty
sudo: false
cache:
directories:
- "~/.platformio"
- "./.pioenvs"
addons:
apt:
packages:
- cppcheck
install:
- pip install -U platformio
script:
- cppcheck --enable=warning src/*.ino -q --force -I src --include=src/ESPEasy.ino --error-exitcode=1
# - ./memanalyzer.py ~/.platformio/packages/toolchain-xtensa/bin/xtensa-lx106-elf-objdump
- PLATFORMIO_BUILD_FLAGS="-D CONTINUOUS_INTEGRATION" platformio run
# patch platformio core libs for PUYA bug (https://github.com/letscontrolit/ESPEasy/issues/650)
- cd patches; ./check_puya_patch; cd ..
- PLATFORMIO_BUILD_FLAGS="-D CONTINUOUS_INTEGRATION" platformio run -s --environment dev_ESP8266PUYA_1024
before_deploy:
- ./before_deploy
- export RELEASE_FILE=$(ls ESPEasy*.zip)
deploy:
provider: releases
prerelease: true
api_key:
secure: bZeuKI7evXeZYmGayfcvIC1fThBGcksAyOrCbZ8kAGeTbHGJqFLBBy8to5UpNBSZVfeDWo25Iqy8Pfbyb7p2c1hg6fG9jS0UzQkLnoUNMxpUM1dJACkZxvFdP4Br3Y3vUPWtrWUbo8rN/b3E6tjSNLE7vQiwsarj+eWTO2V6BGcsN0eHc04/UCM2+DcHvJ4y7Ec36yIUaClNAWMal1osBYaViruylOdBKT/WDs1ZMoJMceXCfxMQ/8J2moYvymKfSkXSmoMGmzlTuq8v5N4AweutjpC4Zba2BbxIJv+PwWjhfIgTviHFggSU90UPTKVWYv13vms92VVKz1CDVrUQNn+YQes9+ROPUnrMc9bJ+q7E1lWJRZeDMqGECB+8BjUtUk6H81K+XhOnW1mtZiMnvMCwkmE0OT1eBObGMcpR962/DUBoQDmulMs2IieB0dLobmUBhpc1syrKEPKxjY7yhhQMr6In82jODVLR3qDkNQ8xtIfevzCo/ocUjiOrXW4b/pDMy28Yh109DMb/KSWEsjjkkpXhsT1YVy2MwOa7FRhHFW+SNKX4Us8T75H+pO4mQ4afnPEtjYKodj7XD92zqNxKfMx3elEx5RK6HKekHjpXdYtuXzGONB9StA+2T43/2llt3n5fzv4BRfCumBEJ77/ufB0U/uhsCe6lVwJf34U=
file_glob: true
file: "${RELEASE_FILE}"
skip_cleanup: true
on:
tags: true
# repo: psy0rz/ESPEasy-platformio
notifications:
email: false
+8 -107
View File
@@ -1,5 +1,5 @@
/*****************************************************************************************************************************\
* Arduino project "ESP Easy" © Copyright 2018-2020 github.com/letscontrolit
/****************************************************************************************************************************\
* Arduino project "ESP Easy" © Copyright www.esp8266.nu
*
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
@@ -8,18 +8,12 @@
* You received a copy of the GNU General Public License along with this program in file 'License.txt'.
*
* Additional information about licensing can be found at : http://www.gnu.org/licenses
\*****************************************************************************************************************************/
\*************************************************************************************************************************/
// This project incorporates work covered by the following copyrights and permission notices:
//
// Notes:
// - Parts of the source files in this repository are made available under different licenses.
// Refer to each individual source file/directory for more details.
// - Your copy of this product may not contain code covered by one or more of the licenses listed here,
// depending on the exact product and version you choose.
// This file incorporates work covered by the following copyright and permission notice:
/*****************************************************************************************************************************\
* Arduino project "Nodo" © Copyright 2010..2015 Paul Tonkes
/****************************************************************************************************************************\
* Arduino project "Nodo" © Copyright 2010..2015 Paul Tonkes
*
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
@@ -32,100 +26,7 @@
* bugs kunnen worden gelogd op : https://code.google.com/p/arduino-nodo/
* Compiler voor deze programmacode te downloaden op : http://arduino.cc
* Voor vragen of suggesties, mail naar : p.k.tonkes@gmail.com
\*****************************************************************************************************************************/
/*****************************************************************************************************************************\
* esp8266/Arduino is licensed under the
* GNU Lesser General Public License v2.1
*
* Additional information about licensing can be found at : https://github.com/esp8266/Arduino/blob/master/LICENSE
\*****************************************************************************************************************************/
/*****************************************************************************************************************************\
* espressif/arduino-esp32 is licensed under the
* GNU Lesser General Public License v2.1
*
* Additional information about licensing can be found at : https://github.com/espressif/arduino-esp32/blob/master/LICENSE.md
\*****************************************************************************************************************************/
/*****************************************************************************************************************************\
* platformio/platformio-core © Copyright 2014-present PlatformIO <contact@platformio.org>
* platformio/platform-espressif8266 © Copyright 2014-present PlatformIO <contact@platformio.org>
* platformio/platform-espressif32 © Copyright 2014-present PlatformIO <contact@platformio.org>
*
* is licensed under the Apache License 2.0
*
* Additional information about licensing can be found at : https://github.com/platformio/platformio-core/blob/develop/LICENSE
\*****************************************************************************************************************************/
/*****************************************************************************************************************************\
* espressif/esptool is licensed under the
* GNU General Public License v2.0
*
* Additional information about licensing can be found at : https://github.com/espressif/esptool/blob/master/LICENSE
\*****************************************************************************************************************************/
/*****************************************************************************************************************************\
* Grovkillen/ESP_Easy_Flasher is licensed under the
* GNU General Public License v3.0
*
* Additional information about licensing can be found at : https://github.com/Grovkillen/ESP_Easy_Flasher/blob/master/LICENSE
\*****************************************************************************************************************************/
/*****************************************************************************************************************************\
* ESPRESSIF MIT License
*
* Copyright (c) 2018 <ESPRESSIF SYSTEMS (SHANGHAI) PTE LTD>
*
* Permission is hereby granted for use on all ESPRESSIF SYSTEMS products, in which case,
* it is free of charge, to any person obtaining a copy of this software and associated
* documentation files (the "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the Software is furnished
* to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or
* substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Additional information about licensing can be found at : https://github.com/espressif/esp-at/blob/master/LICENSE
\*****************************************************************************************************************************/
/*****************************************************************************************************************************\
* sphinx-doc/sphinx © Copyright 2007-2020 by the Sphinx team (see AUTHORS file). All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Additional information about licensing can be found at : https://github.com/sphinx-doc/sphinx/blob/3.x/LICENSE
\*****************************************************************************************************************************/
\*************************************************************************************************************************/
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
@@ -800,4 +701,4 @@ into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
-8
View File
@@ -1,8 +0,0 @@
The scripts in this directory are so called GIT hooks.
Purpose is to do automatic changes after merge, commit and checkout.
Those files are for a Linux-like environment with basic tools ln, grep, sed and bash.
Windows users can see them as template.
To use them simply copy those files into your ESPEasy/.git/hooks directory.
+31 -176
View File
@@ -1,192 +1,47 @@
|Latest Nightly | Build Status | Downloads | Docs | Patreon | Ko-Fi | PayPal |
|-------|-------|-------|-------|-------|-------|-------|
| [![GitHub version](https://img.shields.io/github/release/letscontrolit/ESPEasy/all.svg)](https://github.com/letscontrolit/ESPEasy/releases/latest) | ![Build status](https://github.com/letscontrolit/ESPEasy/actions/workflows/build.yml/badge.svg) | [![Downloads](https://img.shields.io/github/downloads/letscontrolit/ESPEasy/total.svg)](https://github.com/letscontrolit/ESPEasy/releases) | [![Documentation Status](https://readthedocs.org/projects/espeasy/badge/?version=latest)](https://espeasy.readthedocs.io/en/latest/?badge=latest) | [![donate](https://img.shields.io/badge/donate-Patreon-blue.svg)](https://www.patreon.com/GrovkillenTDer) | [![donate](https://img.shields.io/badge/donate-KoFi-blue.svg)](https://ko-fi.com/grovkillentder) | [![donate](https://img.shields.io/badge/donate-PayPal-blue.svg)](https://www.paypal.me/espeasy) |
# ESPEasy (v2.0 stable branch)
For ways to *support* us, see [this announcement on the forum](https://www.letscontrolit.com/forum/viewtopic.php?f=14&t=5787), or have a look at the [Patreon](https://www.patreon.com/GrovkillenTDer), [Ko-Fi](https://ko-fi.com/grovkillentder) or [PayPal](https://www.paypal.me/espeasy) links above.
Build status: [![Build Status](https://travis-ci.org/letscontrolit/ESPEasy.svg?branch=v2.0)](https://travis-ci.org/letscontrolit/ESPEasy)
Introduction and wiki: https://www.letscontrolit.com/wiki/index.php/ESPEasy#Introduction
# ESPEasy, Automate (using) Common Sense, No AI.
**v2.0**
:warning:This is the stable branch for the next upcoming ESPeasy release (2.0.0).:warning:
The main objective for ESPEasy is to make people realize they can easily control appliances and act on sensor data.
If you're living on the edge and want the latest features and bugs, go to the development branch: https://github.com/letscontrolit/ESPEasy/tree/mega
Anyone can use it and you don't need AI.
Only requirement is common sense and appreciate the satisfaction of seeing things just work.
If you're a developer: Bug fixes go into this v2.0 branch, we will merge them back to the development branch.
If you can't build it yourself, you don't 'own' it.
So let's make sure YOU control it.
Check here to learn how to use this branch and help us improving ESPEasy: http://www.letscontrolit.com/wiki/index.php/ESPEasy#Source_code_development
We are more than willing to assist via our [forum](https://www.letscontrolit.com/forum).
## Versions
* v2.0-YYYYMMDD: These are the nightly builds. Once a day this is automaticly released whenever there are new changes. (this replaces the manual v2.0-devX release system)
* v2.0.0-betaX: as soon as we THINK everything is fixed, we start beta testing.
* v2.0.0-rcX: release candidates (almost stable)
* v2.0.0: This will be the first stable release. After this we will use more standard numbering. Next bugfix release will probably be 2.0.1.
# ESPEasy (development branch)
## Firmware binary releases
Binary development releases are here: https://github.com/letscontrolit/ESPEasy/releases
Introduction https://espeasy.readthedocs.io/en/latest/ (and, mostly outdated, wiki: https://www.letscontrolit.com/wiki/index.php/ESPEasy#Introduction)
Depending on your needs, we release different types of files.
**MEGA**
This is the development branch of ESPEasy. All new features go into this branch, and it has become the current stable branch. If you want to do a bugfix, do it on this branch.
This uses version v2.0-20181001 as an example.
Firmware name | Hardware | Included plugins |
----------------------------------------------|-------------------------|-----------------------------|
ESPEasy_v2.0-20181001_normal_ESP8266_1024.bin | ESP8266 with 1Mb flash | Stable |
ESPEasy_v2.0-20181001_test_ESP8266_1024.bin | ESP8266 with 1Mb flash | Stable + Test |
ESPEasy_v2.0-20181001_dev_ESP8266_1024.bin | ESP8266 with 1Mb flash | Stable + Test + Development |
ESPEasy_v2.0-20181001_normal_ESP8266_4096.bin | ESP8266 with 4Mb flash | Stable |
ESPEasy_v2.0-20181001_test_ESP8266_4096.bin | ESP8266 with 4Mb flash | Stable + Test |
ESPEasy_v2.0-20181001_dev_ESP8266_4096.bin | ESP8266 with 4Mb flash | Stable + Test + Development |
ESPEasy_v2.0-20181001_normal_ESP8285_1024.bin | ESP8285 with 1Mb flash | Stable |
ESPEasy_v2.0-20181001_test_ESP8285_1024.bin | ESP8285 with 1Mb flash | Stable + Test |
ESPEasy_v2.0-20181001_dev_ESP8285_1024.bin | ESP8285 with 1Mb flash | Stable + Test + Development |
Check here to learn how to use this branch and help us improving ESPEasy: [Starter guide for (local) development on ESPEasy](https://espeasy.readthedocs.io/en/latest/Participate/PlatformIO.html#starter-guide-for-local-development-on-espeasy)
## More info
## Web based flasher (experimental)
Details and discussion are on the Experimental forum: https://www.letscontrolit.com/forum/viewforum.php?f=18
To make it easier to get started, one may flash a build directly to the ESP from your browser.
Currently only Chrome and Edge are supported.
See [this flash page](https://td-er.nl/ESPEasy/) to try the new web flash feature.
The web flasher is using [ESP Web Tools](https://esphome.github.io/esp-web-tools/) made by the people behind ESPHome and Home Assistant.
## Binary releases
On demand, controlled by the repo owner, our build-bot will build a new binary release: https://github.com/letscontrolit/ESPEasy/releases
The releases are named something like 'mega-20220626' (last number is the build date)
Depending on your needs, we release different types of files:
The name is built up from a few key parts:
ESPEasy_mega\_*[releasedate]*\_*[build-type]*\_*[opt-arduino-library]*\_*[hardware-type]*\_*[flash-size][filesystem-size]*\_*[opt-build-features]*.bin
*[build-type]* can be any of:
Build type | Description | included plugins |
-------------|-------------------------------------------|----------------------------------|
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 |
collection_B | Normal + plugin collection B | Stable + Collection base + set B |
collection_C | Normal + plugin collection C | Stable + Collection base + set C |
collection_D | Normal + plugin collection D | Stable + Collection base + set D |
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 |
max32 | All available plugins, 32MB Flash | All available, large file system |
energy | All plugins related to energy measurement | Stable + Energy measurement |
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 |
spec_* | specialized technical builds | Not intended for regular use |
IRext | Infra-red hardware specific | Sending and receiving IR cmd |
safeboot | (Experimental) `safeboot` build to enable<br>most/all plugins on 4MB Flash boards | None |
*[opt-arduino-library]* (optional) can be any of:
Arduino library | Description |
----------------|------------------------------------|
alt_wifi | Alternative WiFi configuration |
beta | Arduino Beta release |
sdk3 | Arduino SDK v.3 |
core_274 | Arduino Core 2.7.4 release |
core_312 | Arduino Core 3.1.2 release |
core_274_sdk3 | Arduino Core 2.7.4 SDK v.3 release |
*[hardware-type]* can be any of:
Hardware type | Description |
-----------------|---------------------------------------------|
ESP8266 | Espressif ESP8266/ESP8285 generic boards |
WROOM02 | Espressif ESP8266 WRoom02 boards |
ESP32 | Espressif ESP32 generic boards |
ESP32solo1 | Espressif ESP32-Solo1 generic boards |
ESP32s2 | Espressif ESP32-S2 generic boards |
ESP32c3 | Espressif ESP32-C3 generic boards |
ESP32s3 | Espressif ESP32-S3 generic boards |
ESP32c2 | Espressif ESP32-C2 generic boards |
ESP32c6 | Espressif ESP32-C6 generic boards |
ESP32c61 | Espressif ESP32-C61 generic boards (experimental) |
ESP32c5 | Espressif ESP32-C5 generic boards (experimental) |
ESP32p4 | Espressif ESP32-P4 (Rev.1) generic boards |
ESP32p4r3 | Espressif ESP32-P4 (Rev.3/P4X) generic boards |
ESP32-wrover-kit | Espressif ESP32 wrover-kit boards |
SONOFF | Sonoff hardware specific |
other_POW | Switch with power measurement |
Shelly_1 | Shelly 1 switch |
Shelly_PLUG_S | Shelly plug S switch with power measurement |
Ventus | Ventus W266 weather station |
LCtech_relay | LC-tech serial switch |
N.B. Starting 2022/07/23, 1M ESP8266 builds can also be used on ESP8285 units and thus there is no longer a specific ESP8285 build anymore.
*[flash-size]* can be any of:
Flash size | Description |
-----------|-----------------------------|
1M | 1 MB with 128 kB filesystem |
2M | 2 MB with 128 kB filesystem |
2M256 | 2 MB with 256 kB filesystem |
2M320k | 2 MB with 320 kB filesystem |
4M1M | 4 MB with 1 MB filesystem |
4M2M | 4 MB with 2 MB filesystem |
16M | 16 MB with 14 MB filesystem |
4M316k | 4 MB with 316 kB filesystem |
8M1M | 8 MB with 1 MB filesystem |
16M8M | 16 MB with 8 MB filesystem |
32M20M | 32 MB with 20 MB filesystem |
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 is available, [here](https://espeasy.readthedocs.io/en/latest/Reference/Migrate_SPIFFS_to_LittleFS.html).
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 |
----------------|-----------------------------------------------------------------------------------------------------------|
LittleFS | Use LittleFS instead of SPIFFS filesystem (SPIFFS is unstable \> 2 MB, and no longer supported in IDF \> 5) |
VCC | Analog input configured to measure VCC voltage (ESP8266 only) |
OTA | Arduino OTA (Over The Air) update feature enabled |
Domoticz | Only Domoticz controllers (HTTP) and plugins included |
Domoticz_MQTT | Only Domoticz controllers (MQTT) and plugins included |
FHEM_HA | Only FHEM/OpenHAB/Home Assistant (MQTT) controllers and plugins included |
ETH | Ethernet support enabled (ESP32 and IDF 5.x based builds) |
OPI_PSRAM | Specific configuration to enable PSRAM detection, ESP32-S3 only |
CDC | Support USBCDC/HWCDC-serial console on ESP32-C3, ESP32-S2, ESP32-S3, ESP32-C6, ESP32-C61 and ESP32-C5 |
noOTA/NO_OTA | Does not support OTA (Over The Air-updating of the firmware) Use [the flash page](https://td-er.nl/ESPEasy/) or ESPTool via USB Serial |
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-20260121_normal_ESP8266_1M.bin | ESP8266/ESP8285 with 1MB flash | Stable |
ESPEasy_mega-20260121_normal_ESP8266_4M1M.bin | ESP8266 with 4MB flash | Stable |
ESPEasy_mega-20260121_collection_A_ESP8266_4M1M.bin | ESP8266 with 4MB flash | Stable + Collection base + set A |
ESPEasy_mega-20260121_normal_ESP32_4M316k.bin | ESP32 with 4MB flash | Stable |
ESPEasy_mega-20260121_collection_A_ESP32_4M316k.bin | ESP32 with 4MB flash | Stable + Collection base + set A |
ESPEasy_mega-20260121_collection_B_ESP32_4M316k.bin | ESP32 with 4MB flash | Stable + Collection base + set B |
ESPEasy_mega-20260121_max_ESP32s3_8M1M.bin | ESP32-S3 with 8MB flash, CDC-serial, Ethernet | All available plugins |
ESPEasy_mega-20260121_max_ESP32s3_8M1M_OPI_PSRAM.bin | ESP32-S3 8MB flash, PSRAM, CDC-serial, Ethernet | All available plugins |
ESPEasy_mega-20260121_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/C61, C5, P4, Solo1, 'Classic') are available in separate archives.
To see what plugins are included in which collection set, you can find that on the [ESPEasy Plugin overview page](https://espeasy.readthedocs.io/en/latest/Plugin/_Plugin.html)
For ESP32 builds (all models) there are 2 ``.bin`` files available:
1) a ``.factory.bin`` to be used when flashing the firmware via external tools, like the Espressif Flash Download tool, to be loaded at address ``0x0``, that includes the bootloader and flash-partitioning data. This is the second of 2 recommended methods to install ESPEasy on a new device.<BR/>
The main recommended method for flashing ESPEasy onto a (new) device is via [this flash page](https://td-er.nl/ESPEasy/) (using Chrome or Edge webbrowser), where you connect the device via USB-serial, and select what firmware-build to install.
2) a 'regular' ``.bin`` file, that can be used to update a running board via OTA (Over The Air), using the Update Firmware button on the Tools page. The .bin file then has to be available for the device the webbrowser is running from (local or via a network), as the file is uploaded via the webbrowser.<BR/>
The firmware to upload via OTA must match both the ESP32 model, and current partitioning & formatting, LittleFS as indicated in the name, or SPIFFS.
## Documentation & more info
Our new, in-depth documentation can be found at [ESPEasy.readthedocs.io](https://espeasy.readthedocs.io/en/latest/). Automatically built, so always up-to-date according to the contributed contents. The old Wiki documentation can be found at [letscontrolit.com/wiki](https://www.letscontrolit.com/wiki/index.php?title=ESPEasy).
Additional details and discussion are on the "Experimental" section of the forum: https://www.letscontrolit.com/forum/viewforum.php?f=18
[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/letscontrolit/ESPEasy)
## SAST Tools
[PVS-Studio](https://pvs-studio.com/en/pvs-studio/?utm_source=website&utm_medium=github&utm_campaign=open_source) - static analyzer for C, C++, C#, and Java code.
## Icons used
Icons on courtesy of [ICONS8](https://icons8.com/).
We're also on IRC: #ESPEasy @freenode
+29 -94
View File
@@ -1,107 +1,42 @@
#!/bin/bash
VERSION=$(git describe)
TMP_DIR=`mktemp -d`
if [ $? -eq 0 ]; then
# Make sure coreutils is installed.
# if not, these terrible things may happen:
# https://www.letscontrolit.com/forum/viewtopic.php?f=6&t=8542
echo "Created ${TMP_DIR}"
else
echo "Could not create tmp dir, mktemp -d failed"
exit 1
fi
TMP_DIST=`echo "${TMP_DIR}/ESPEasy_collect_dist"`
mkdir -p ${TMP_DIST}
if [ $? -eq 0 ]; then
echo "Created ${TMP_DIST}"
else
echo "Could not create tmp dir: ${TMP_DIST}"
exit 1
fi
CURPATH=`pwd`
BUILD_LOG=`echo "${TMP_DIST}/buildlog.txt"`
# PIO 3.x :
# BINARY_PATH=".pioenvs"
# PIO 4.0 and newer:
BINARY_PATH=".pio/build"
while getopts d: option
do
case "${option}"
in
d) VERSION=${OPTARG};;
esac
done
if [ ! -d ${TMP_DIST} ]; then
# Could not create temp dir, so exit
exit 1
fi
echo "### Creating zip archives"
#Naming convention:
# ESP_Easy_[github version]_[plugin set]_[chip type]_[flash memory].bin
if [ -d "build_output/reject" ]; then
zip -qq ${CURPATH}/ESPEasy_ELF_files_$VERSION.zip build_output/reject/*
fi
zip -qq ${CURPATH}/ESPEasy_ELF_files_$VERSION.zip build_output/debug/*
echo "### Created ESPEasy_ELF_files_$VERSION.zip"
for ENV in \
normal_ESP8266_1024 \
normal_ESP8266_4096 \
normal_ESP8285_1024 \
normal_ESP8266_1024_DOUT \
test_ESP8266_1024\
test_ESP8266_4096\
test_ESP8266_4096_VCC\
test_ESP8285_1024\
dev_ESP8266_1024\
dev_ESP8266_4096\
dev_ESP8285_1024\
dev_ESP8266PUYA_1024\
dev_ESP8266PUYA_1024_VCC;\
do
echo
echo "### Deploying environment $ENV for version $VERSION"
BIN=.pioenvs/$ENV/firmware.bin
cp $BIN dist/"ESP_Easy_$VERSION""_$ENV.bin"
done
mkdir -p ${TMP_DIST}
cp -r dist/* ${TMP_DIST}/
if [ -d "docs/build" ]; then
# Docs have been created
zip -r -qq ${CURPATH}/ESPEasy_docs_$VERSION.zip docs/build/*
echo "### Created ESPEasy_docs_$VERSION.zip"
fi
#create a source structure that is the same as the original ESPEasy project (and works with the howto on the wiki)
#rm -rf dist/Source 2>/dev/null
rm -rf dist/Source 2>/dev/null
mkdir dist/Source
cp -r lib dist/Source/
cp -r src dist/Source/
cp platformio.ini dist/Source/
mkdir -p ${TMP_DIST}/source
cp -r lib ${TMP_DIST}/source/
cp -r src ${TMP_DIST}/source/
cp -r misc ${TMP_DIST}/source/
cp -r static ${TMP_DIST}/source/
cp -r tools ${TMP_DIST}/source/
cp platformio*.ini ${TMP_DIST}/source/
cp *.txt ${TMP_DIST}/source/
cp *.csv ${TMP_DIST}/source/
cp README* ${TMP_DIST}/source/
cd dist
cp -r build_output/bin/* ${TMP_DIST}/bin
rm -f ${TMP_DIST}/bin/*ESP32*
cd ${TMP_DIST}
if [ "$(ls -A ${TMP_DIST}/bin/)" ]; then
echo
zip -qq ${CURPATH}/ESPEasy_ESP82xx_$VERSION.zip -r .
echo "### Created ESPEasy_ESP82xx_$VERSION.zip"
fi
cd ${CURPATH}
rm -f ${TMP_DIST}/bin/*
cp -r build_output/bin/*ESP32* ${TMP_DIST}/bin
cd ${TMP_DIST}
if [ "$(ls -A ${TMP_DIST}/bin/)" ]; then
echo
zip -qq ${CURPATH}/ESPEasy_ESP32_$VERSION.zip -r .
echo "### Created ESPEasy_ESP32_$VERSION.zip"
fi
rm -Rf ${TMP_DIST}/* 2>/dev/null
rmdir ${TMP_DIST}
echo
echo "### Creating zip archive"
zip ../ESPEasy_$VERSION.zip -r .
-39
View File
@@ -1,39 +0,0 @@
{
"build": {
"arduino":{
"ldscript": "esp32_out.ld",
"memory_type": "dio_qspi"
},
"core": "esp32",
"extra_flags": "-DARDUINO_TASMOTA -DARDUINO_ESP32_DEV -DBOARD_HAS_PSRAM -DHAS_PSRAM_FIX -mfix-esp32-psram-cache-issue -mfix-esp32-psram-cache-strategy=memw -DARDUINO_USB_CDC_ON_BOOT=0 -DESP32_4M -DESP32_CLASSIC",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "dio",
"mcu": "esp32",
"variant": "esp32",
"partitions": "boards/partitions/esp32_partition_app1810k_spiffs316k.csv"
},
"connectivity": [
"wifi",
"bluetooth",
"ethernet",
"can"
],
"debug": {
"openocd_target": "esp32.cfg"
},
"frameworks": [
"arduino",
"espidf"
],
"name": "AI Thinker ESP32-CAM 4M Flash 4MB PSRAM ESPEasy 1810k Code/OTA 316k FS",
"upload": {
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 1900544,
"require_upload_port": true,
"speed": 460800
},
"url": "https://wiki.ai-thinker.com/esp32-cam",
"vendor": "AI Thinker"
}
-39
View File
@@ -1,39 +0,0 @@
{
"build": {
"arduino":{
"ldscript": "esp32_out.ld",
"memory_type": "dio_qspi"
},
"core": "esp32",
"extra_flags": "-DARDUINO_TASMOTA -DARDUINO_M5STACK_Core2 -DBOARD_HAS_PSRAM -DARDUINO_USB_CDC_ON_BOOT=0 -DESP32_16M -DESP32_CLASSIC",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "dio",
"mcu": "esp32",
"variant": "m5stack_core2",
"partitions": "boards/partitions/esp32_partition_app4096k_spiffs8124k.csv"
},
"connectivity": [
"wifi",
"bluetooth",
"ethernet",
"can"
],
"debug": {
"openocd_target": "esp32.cfg"
},
"frameworks": [
"arduino",
"espidf"
],
"name": "M5Stack Core2 16M Flash 4MB PSRAM ESPEasy 4M Code/OTA 8M FS",
"upload": {
"flash_size": "16MB",
"maximum_ram_size": 327680,
"maximum_size": 16777216,
"require_upload_port": true,
"speed": 2000000
},
"url": "http://www.m5stack.com",
"vendor": "M5Stack"
}
-39
View File
@@ -1,39 +0,0 @@
{
"build": {
"arduino":{
"ldscript": "esp32_out.ld",
"memory_type": "dio_qspi"
},
"core": "esp32",
"extra_flags": "-DARDUINO_TASMOTA -DARDUINO_ODROID_ESP32 -DBOARD_HAS_PSRAM -DHAS_PSRAM_FIX -mfix-esp32-psram-cache-issue -mfix-esp32-psram-cache-strategy=memw -DARDUINO_USB_CDC_ON_BOOT=0 -DESP32_16M -DESP32_CLASSIC",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "dio",
"mcu": "esp32",
"variant": "odroid_esp32",
"partitions": "boards/partitions/esp32_partition_app4096k_spiffs8124k.csv"
},
"connectivity": [
"wifi",
"bluetooth",
"ethernet",
"can"
],
"debug": {
"openocd_target": "esp32.cfg"
},
"frameworks": [
"arduino",
"espidf"
],
"name": "ESP32 ODROID-GO 16M Flash 4MB PSRAM ESPEasy 4M Code/OTA 8M FS",
"upload": {
"flash_size": "16MB",
"maximum_ram_size": 327680,
"maximum_size": 16777216,
"require_upload_port": true,
"speed": 2000000
},
"url": "https://www.hardkernel.com/main/products/prdt_info.php?g_code=G152875062626",
"vendor": "Hardkernel"
}
-39
View File
@@ -1,39 +0,0 @@
{
"build": {
"arduino":{
"ldscript": "esp32_out.ld",
"memory_type": "dio_qspi"
},
"core": "esp32",
"extra_flags": "-DARDUINO_TASMOTA -DARDUINO_ESP32_DEV -DBOARD_HAS_PSRAM -DARDUINO_USB_CDC_ON_BOOT=0 -DESP32_16M -DESP32_CLASSIC",
"f_cpu": "240000000L",
"f_flash": "40000000L",
"flash_mode": "dio",
"mcu": "esp32",
"variant": "esp32",
"partitions": "boards/partitions/esp32_partition_app4096k_spiffs1024k.csv"
},
"connectivity": [
"wifi",
"bluetooth",
"ethernet",
"can"
],
"debug": {
"openocd_target": "esp32.cfg"
},
"frameworks": [
"arduino",
"espidf"
],
"name": "Espressif Generic ESP32 16M Flash ESPEasy 4M Code/OTA 1M FS",
"upload": {
"flash_size": "16MB",
"maximum_ram_size": 327680,
"maximum_size": 16777216,
"require_upload_port": true,
"speed": 460800
},
"url": "https://en.wikipedia.org/wiki/ESP32",
"vendor": "Espressif"
}
-39
View File
@@ -1,39 +0,0 @@
{
"build": {
"arduino":{
"ldscript": "esp32_out.ld",
"memory_type": "dio_qspi"
},
"core": "esp32",
"extra_flags": "-DARDUINO_TASMOTA -DARDUINO_ESP32_DEV -DBOARD_HAS_PSRAM -DARDUINO_USB_CDC_ON_BOOT=0 -DESP32_16M -DESP32_CLASSIC",
"f_cpu": "240000000L",
"f_flash": "40000000L",
"flash_mode": "dio",
"mcu": "esp32",
"variant": "esp32",
"partitions": "boards/partitions/esp32_partition_app4096k_spiffs8124k.csv"
},
"connectivity": [
"wifi",
"bluetooth",
"ethernet",
"can"
],
"debug": {
"openocd_target": "esp32.cfg"
},
"frameworks": [
"arduino",
"espidf"
],
"name": "Espressif Generic ESP32 16M Flash ESPEasy 4M Code/OTA 8M FS",
"upload": {
"flash_size": "16MB",
"maximum_ram_size": 327680,
"maximum_size": 16777216,
"require_upload_port": true,
"speed": 460800
},
"url": "https://en.wikipedia.org/wiki/ESP32",
"vendor": "Espressif"
}
-42
View File
@@ -1,42 +0,0 @@
{
"build": {
"arduino":{
"ldscript": "esp32_out.ld",
"memory_type": "dio_qspi"
},
"core": "esp32",
"extra_flags": "-DARDUINO_TASMOTA -DARDUINO_ESP32_DEV -DARDUINO_USB_CDC_ON_BOOT=0 -DESP32_4M -DESP32_CLASSIC",
"f_cpu": "240000000L",
"f_flash": "40000000L",
"flash_mode": "dio",
"mcu": "esp32",
"variant": "esp32",
"partitions": "boards/partitions/esp32_partition_app1810k_spiffs316k.csv"
},
"connectivity": [
"wifi",
"bluetooth",
"ethernet",
"can"
],
"debug": {
"openocd_target": "esp32.cfg"
},
"frameworks": [
"arduino",
"espidf"
],
"name": "Espressif Generic ESP32 4M Flash ESPEasy 1810k Code/OTA 316k FS",
"upload": {
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 1900544,
"require_upload_port": true,
"resetmethod": "nodemcu",
"before_reset": "default_reset",
"after_reset": "hard_reset",
"speed": 460800
},
"url": "https://en.wikipedia.org/wiki/ESP32",
"vendor": "Espressif"
}
-42
View File
@@ -1,42 +0,0 @@
{
"build": {
"arduino":{
"ldscript": "esp32_out.ld",
"memory_type": "dio_qspi"
},
"core": "esp32",
"extra_flags": "-DARDUINO_TASMOTA -DARDUINO_ESP32_DEV -DBOARD_HAS_PSRAM -DARDUINO_USB_CDC_ON_BOOT=0 -DESP32_4M -DESP32_CLASSIC",
"f_cpu": "240000000L",
"f_flash": "40000000L",
"flash_mode": "dio",
"mcu": "esp32",
"variant": "esp32",
"partitions": "boards/partitions/esp32_partition_app1810k_spiffs2172k.csv"
},
"connectivity": [
"wifi",
"bluetooth",
"ethernet",
"can"
],
"debug": {
"openocd_target": "esp32.cfg"
},
"frameworks": [
"arduino",
"espidf"
],
"name": "Espressif Generic ESP32 4M Flash ESPEasy 1810k Code/NO-OTA 2M FS",
"upload": {
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 1900544,
"require_upload_port": true,
"resetmethod": "nodemcu",
"before_reset": "default_reset",
"after_reset": "hard_reset",
"speed": 460800
},
"url": "https://en.wikipedia.org/wiki/ESP32",
"vendor": "Espressif"
}
-42
View File
@@ -1,42 +0,0 @@
{
"build": {
"arduino":{
"ldscript": "esp32_out.ld",
"memory_type": "dio_qspi"
},
"core": "esp32",
"extra_flags": "-DARDUINO_TASMOTA -DARDUINO_ESP32_DEV -DBOARD_HAS_PSRAM -DHAS_PSRAM_FIX -mfix-esp32-psram-cache-issue -mfix-esp32-psram-cache-strategy=memw -DARDUINO_USB_CDC_ON_BOOT=0 -DESP32_4M -DESP32_CLASSIC",
"f_cpu": "240000000L",
"f_flash": "40000000L",
"flash_mode": "dio",
"mcu": "esp32",
"variant": "esp32",
"partitions": "boards/partitions/esp32_partition_app1810k_spiffs316k.csv"
},
"connectivity": [
"wifi",
"bluetooth",
"ethernet",
"can"
],
"debug": {
"openocd_target": "esp32.cfg"
},
"frameworks": [
"arduino",
"espidf"
],
"name": "Espressif Generic ESP32 4M Flash ESPEasy 1810k Code/OTA 316k FS",
"upload": {
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 1900544,
"require_upload_port": true,
"resetmethod": "nodemcu",
"before_reset": "default_reset",
"after_reset": "hard_reset",
"speed": 460800
},
"url": "https://en.wikipedia.org/wiki/ESP32",
"vendor": "Espressif"
}
-39
View File
@@ -1,39 +0,0 @@
{
"build": {
"arduino":{
"ldscript": "esp32_out.ld",
"memory_type": "dio_qspi"
},
"core": "esp32",
"extra_flags": "-DARDUINO_TASMOTA -DARDUINO_ESP32_DEV -DBOARD_HAS_PSRAM -DARDUINO_USB_CDC_ON_BOOT=0 -DESP32_8M -DESP32_CLASSIC",
"f_cpu": "240000000L",
"f_flash": "40000000L",
"flash_mode": "dio",
"mcu": "esp32",
"variant": "esp32",
"partitions": "boards/partitions/esp32_partition_app2944k_spiffs2M.csv"
},
"connectivity": [
"wifi",
"bluetooth",
"ethernet",
"can"
],
"debug": {
"openocd_target": "esp32.cfg"
},
"frameworks": [
"arduino",
"espidf"
],
"name": "Espressif Generic ESP32 8M Flash ESPEasy 2944k Code/OTA 2112k FS",
"upload": {
"flash_size": "8MB",
"maximum_ram_size": 327680,
"maximum_size": 8388608,
"require_upload_port": true,
"speed": 460800
},
"url": "https://en.wikipedia.org/wiki/ESP32",
"vendor": "Espressif"
}
-39
View File
@@ -1,39 +0,0 @@
{
"build": {
"core": "esp32",
"extra_flags": "-DARDUINO_TASMOTA -DARDUINO_ESP32_DEV -DARDUINO_USB_CDC_ON_BOOT=0 -DESP32_4M -DCORE32SOLO1 -DESP32_CLASSIC",
"f_cpu": "160000000L",
"f_flash": "40000000L",
"flash_mode": "dio",
"mcu": "esp32",
"chip_variant": "esp32u",
"variant": "esp32",
"partitions": "boards/partitions/esp32_partition_app1810k_spiffs316k.csv"
},
"connectivity": [
"wifi",
"bluetooth",
"ethernet",
"can"
],
"debug": {
"openocd_target": "esp32-solo-1.cfg"
},
"frameworks": [
"arduino",
"espidf"
],
"name": "Espressif Generic ESP32 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
},
"download": {
"speed": 230400
},
"url": "https://en.wikipedia.org/wiki/ESP32",
"vendor": "Espressif"
}
-36
View File
@@ -1,36 +0,0 @@
{
"build": {
"arduino":{
"ldscript": "esp32c2_out.ld"
},
"core": "esp32",
"extra_flags": "-DARDUINO_TASMOTA -DESP32_4M -DESP32C2",
"f_cpu": "120000000L",
"f_flash": "60000000L",
"flash_mode": "qio",
"mcu": "esp32c2",
"variant": "esp32c2",
"partitions": "boards/partitions/esp32_partition_app1810k_spiffs316k.csv"
},
"connectivity": [
"wifi",
"bluetooth"
],
"debug": {
"openocd_target": "esp32c2.cfg"
},
"frameworks": [
"arduino",
"espidf"
],
"name": "Espressif Generic ESP32-C2 = 4M Flash, ESPEasy 1810k Code/OTA 316k FS",
"upload": {
"flash_size": "4MB",
"maximum_ram_size": 278528,
"maximum_size": 4194304,
"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"
}
-36
View File
@@ -1,36 +0,0 @@
{
"build": {
"arduino":{
"ldscript": "esp32c2_out.ld"
},
"core": "esp32",
"extra_flags": "-DARDUINO_TASMOTA -DESP32_2M -DESP32C2",
"f_cpu": "120000000L",
"f_flash": "60000000L",
"flash_mode": "qio",
"mcu": "esp32c2",
"variant": "esp32c2",
"partitions": "boards/partitions/esp32_partition_app1700k_spiffs320k_noOTA.csv"
},
"connectivity": [
"wifi",
"bluetooth"
],
"debug": {
"openocd_target": "esp32c2.cfg"
},
"frameworks": [
"arduino",
"espidf"
],
"name": "Espressif Generic ESP32-C2 = 2M Flash, ESPEasy 1810k Code/No OTA 316k FS",
"upload": {
"flash_size": "2MB",
"maximum_ram_size": 278528,
"maximum_size": 2097152,
"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"
}
-36
View File
@@ -1,36 +0,0 @@
{
"build": {
"arduino":{
"ldscript": "esp32c2_out.ld"
},
"core": "esp32",
"extra_flags": "-DARDUINO_TASMOTA -DESP32_4M -DESP32C2",
"f_cpu": "120000000L",
"f_flash": "60000000L",
"flash_mode": "qio",
"mcu": "esp32c2",
"variant": "esp32c2",
"partitions": "boards/partitions/esp32_safeboot_partition_app2880k_fs320k.csv"
},
"connectivity": [
"wifi",
"bluetooth"
],
"debug": {
"openocd_target": "esp32c2.cfg"
},
"frameworks": [
"arduino",
"espidf"
],
"name": "Espressif Generic ESP32-C2 = 4M Flash, Safeboot + ESPEasy 2880k Code/OTA 320k FS",
"upload": {
"flash_size": "4MB",
"maximum_ram_size": 278528,
"maximum_size": 2883584,
"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"
}
-37
View File
@@ -1,37 +0,0 @@
{
"build": {
"arduino":{
"ldscript": "esp32c3_out.ld"
},
"core": "esp32",
"extra_flags": "-DARDUINO_TASMOTA -DARDUINO_USB_MODE=1 -DESP32_16M -DESP32C3 -DUSE_USB_CDC_CONSOLE -DARDUINO_USB_CDC_ON_BOOT=0",
"f_cpu": "160000000L",
"f_flash": "80000000L",
"flash_mode": "dio",
"mcu": "esp32c3",
"variant": "esp32c3",
"partitions": "boards/partitions/esp32_partition_app4096k_spiffs8124k.csv"
},
"connectivity": [
"wifi",
"bluetooth"
],
"debug": {
"openocd_target": "esp32c3.cfg"
},
"frameworks": [
"arduino",
"espidf"
],
"name": "Espressif Generic ESP32-C3 USB CDC 16M Flash, ESPEasy 4096k Code/OTA 8M FS",
"upload": {
"flash_size": "16MB",
"maximum_ram_size": 327680,
"maximum_size": 16777216,
"require_upload_port": true,
"before_reset": "usb_reset",
"speed": 460800
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/hw-reference/esp32c3/user-guide-devkitm-1.html",
"vendor": "Espressif"
}
-36
View File
@@ -1,36 +0,0 @@
{
"build": {
"arduino":{
"ldscript": "esp32c3_out.ld"
},
"core": "esp32",
"extra_flags": "-DARDUINO_TASMOTA -DARDUINO_USB_MODE=1 -DESP32_4M -DESP32C3 -DUSE_USB_CDC_CONSOLE -DARDUINO_USB_CDC_ON_BOOT=0",
"f_cpu": "160000000L",
"f_flash": "80000000L",
"flash_mode": "dio",
"mcu": "esp32c3",
"variant": "esp32c3",
"partitions": "boards/partitions/esp32_partition_app1810k_spiffs316k.csv"
},
"connectivity": [
"wifi",
"bluetooth"
],
"debug": {
"openocd_target": "esp32c3.cfg"
},
"frameworks": [
"arduino",
"espidf"
],
"name": "Espressif Generic ESP32-C3 USB CDC 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/esp-idf/en/latest/esp32c3/hw-reference/esp32c3/user-guide-devkitm-1.html",
"vendor": "Espressif"
}
-40
View File
@@ -1,40 +0,0 @@
{
"build": {
"arduino":{
"ldscript": "esp32c5_out.ld"
},
"core": "esp32",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_16M -DESP32C5 -DARDUINO_USB_CDC_ON_BOOT=0",
"f_cpu": "160000000L",
"f_flash": "80000000L",
"flash_mode": "qio",
"mcu": "esp32c5",
"variant": "esp32c5",
"partitions": "boards/partitions/esp32_partition_app4096k_spiffs8124k.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 16M Flash, ESPEasy 4096k Code/OTA 8M FS",
"upload": {
"flash_size": "16MB",
"maximum_ram_size": 327680,
"maximum_size": 16777216,
"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"
}
-40
View File
@@ -1,40 +0,0 @@
{
"build": {
"arduino":{
"ldscript": "esp32c5_out.ld"
},
"core": "esp32",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_32M -DESP32C5 -DARDUINO_USB_CDC_ON_BOOT=0",
"f_cpu": "160000000L",
"f_flash": "80000000L",
"flash_mode": "qio",
"mcu": "esp32c5",
"variant": "esp32c5",
"partitions": "boards/partitions/esp32_partition_app6144k_spiffs20412k.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 32M Flash, ESPEasy 6144k Code/OTA 20M FS",
"upload": {
"flash_size": "32MB",
"maximum_ram_size": 327680,
"maximum_size": 33554432,
"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"
}
-40
View File
@@ -1,40 +0,0 @@
{
"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=0",
"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"
}
-40
View File
@@ -1,40 +0,0 @@
{
"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=0",
"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"
}
-40
View File
@@ -1,40 +0,0 @@
{
"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=0",
"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"
}
-40
View File
@@ -1,40 +0,0 @@
{
"build": {
"arduino":{
"ldscript": "esp32c6_out.ld"
},
"core": "esp32",
"extra_flags": "-DARDUINO_TASMOTA -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_16M -DESP32C6 -DARDUINO_USB_CDC_ON_BOOT=0",
"f_cpu": "160000000L",
"f_flash": "80000000L",
"flash_mode": "qio",
"mcu": "esp32c6",
"variant": "esp32c6",
"partitions": "boards/partitions/esp32_partition_app4096k_spiffs8124k.csv"
},
"connectivity": [
"wifi",
"bluetooth"
],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": [
"esp-builtin"
],
"openocd_target": "esp32c6.cfg"
},
"frameworks": [
"arduino",
"espidf"
],
"name": "Espressif Generic ESP32-C6 16M Flash, ESPEasy 4096k Code/OTA 8M FS",
"upload": {
"flash_size": "16MB",
"maximum_ram_size": 327680,
"maximum_size": 16777216,
"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"
}
-40
View File
@@ -1,40 +0,0 @@
{
"build": {
"arduino":{
"ldscript": "esp32c6_out.ld"
},
"core": "esp32",
"extra_flags": "-DARDUINO_TASMOTA -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_8M -DESP32C6 -DARDUINO_USB_CDC_ON_BOOT=0",
"f_cpu": "160000000L",
"f_flash": "80000000L",
"flash_mode": "qio",
"mcu": "esp32c6",
"variant": "esp32c6",
"partitions": "boards/partitions/esp32_partition_app3520k_spiffs1088k.csv"
},
"connectivity": [
"wifi",
"bluetooth"
],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": [
"esp-builtin"
],
"openocd_target": "esp32c6.cfg"
},
"frameworks": [
"arduino",
"espidf"
],
"name": "Espressif Generic ESP32-C6 >= 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"
}
-40
View File
@@ -1,40 +0,0 @@
{
"build": {
"arduino":{
"ldscript": "esp32c6_out.ld"
},
"core": "esp32",
"extra_flags": "-DARDUINO_TASMOTA -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32C6 -DARDUINO_USB_CDC_ON_BOOT=0",
"f_cpu": "160000000L",
"f_flash": "80000000L",
"flash_mode": "qio",
"mcu": "esp32c6",
"variant": "esp32c6",
"partitions": "boards/partitions/esp32_partition_app1810k_spiffs316k.csv"
},
"connectivity": [
"wifi",
"bluetooth"
],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": [
"esp-builtin"
],
"openocd_target": "esp32c6.cfg"
},
"frameworks": [
"arduino",
"espidf"
],
"name": "Espressif Generic ESP32-C6 >= 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/esp32c6/esp32-c6-devkitc-1/index.html",
"vendor": "Espressif"
}
-39
View File
@@ -1,39 +0,0 @@
{
"build": {
"core": "esp32",
"extra_flags": [
"-DARDUINO_TASMOTA -DESP32P4 -DESP32_32M -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_app6144k_spiffs20412k.csv"
},
"connectivity": [
"wifi",
"bluetooth",
"openthread",
"ethernet"
],
"debug": {
"openocd_target": "esp32p4.cfg"
},
"frameworks": [
"arduino",
"espidf"
],
"name": "Espressif ESP32-P4 Function EV Board 32M Flash, ESPEasy 6144k Code/OTA 20M FS",
"upload": {
"flash_size": "32MB",
"maximum_ram_size": 768000,
"maximum_size": 33554432,
"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"
}
-39
View File
@@ -1,39 +0,0 @@
{
"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"
}
-39
View File
@@ -1,39 +0,0 @@
{
"build": {
"core": "esp32",
"extra_flags": [
"-DARDUINO_TASMOTA -DESP32P4R3 -DESP32_32M -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE"
],
"f_cpu": "400000000L",
"f_flash": "80000000L",
"f_psram": "200000000L",
"flash_mode": "qio",
"mcu": "esp32p4",
"chip_variant": "esp32p4",
"variant": "esp32p4",
"partitions": "boards/partitions/esp32_partition_app6144k_spiffs20412k.csv"
},
"connectivity": [
"wifi",
"bluetooth",
"openthread",
"ethernet"
],
"debug": {
"openocd_target": "esp32p4.cfg"
},
"frameworks": [
"arduino",
"espidf"
],
"name": "Espressif Generic ESP32-P4 rev.3 32M Flash, ESPEasy 6144k Code/OTA 20M FS",
"upload": {
"flash_size": "32MB",
"maximum_ram_size": 768000,
"maximum_size": 33554432,
"require_upload_port": true,
"speed": 1500000
},
"url": "https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32p4/esp32-p4x-function-ev-board/index.html",
"vendor": "Espressif"
}
-39
View File
@@ -1,39 +0,0 @@
{
"build": {
"core": "esp32",
"extra_flags": [
"-DARDUINO_TASMOTA -DESP32P4R3 -DESP32_16M -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE"
],
"f_cpu": "400000000L",
"f_flash": "80000000L",
"f_psram": "200000000L",
"flash_mode": "qio",
"mcu": "esp32p4",
"chip_variant": "esp32p4",
"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 Generic ESP32-P4 rev.3 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-p4x-function-ev-board/index.html",
"vendor": "Espressif"
}
-40
View File
@@ -1,40 +0,0 @@
{
"build": {
"arduino":{
"ldscript": "esp32s2_out.ld",
"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 -DCONFIG_TINYUSB_CDC_ENABLED=1",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "dio",
"mcu": "esp32s2",
"variant": "esp32s2",
"partitions": "boards/partitions/esp32_partition_app1810k_spiffs316k.csv"
},
"connectivity": [
"wifi"
],
"debug": {
"openocd_target": "esp32s2.cfg"
},
"frameworks": [
"espidf",
"arduino"
],
"name": "Espressif Generic ESP32-S2 USB CDC 4M Flash ESPEasy 1810k Code/OTA 316k FS",
"upload": {
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"before_reset": "usb_reset",
"after_reset": "hard_reset",
"use_1200bps_touch": true,
"wait_for_upload_port": true,
"require_upload_port": true,
"speed": 460800
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/hw-reference/esp32s2/user-guide-saola-1-v1.2.html",
"vendor": "Espressif"
}
-41
View File
@@ -1,41 +0,0 @@
{
"build": {
"arduino":{
"ldscript": "esp32s2_out.ld",
"memory_type": "dio_qspi"
},
"core": "esp32",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DESP32_8M -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",
"mcu": "esp32s2",
"variant": "esp32s2",
"filesystem": "littlefs",
"partitions": "boards/partitions/esp32_partition_app3520k_spiffs1088k.csv"
},
"connectivity": [
"wifi"
],
"debug": {
"openocd_target": "esp32s2.cfg"
},
"frameworks": [
"espidf",
"arduino"
],
"name": "Espressif Generic ESP32-S2 USB CDC 8M Flash ESPEasy 3520k Code/OTA 1088k FS",
"upload": {
"flash_size": "8MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"before_reset": "usb_reset",
"after_reset": "hard_reset",
"use_1200bps_touch": true,
"wait_for_upload_port": true,
"require_upload_port": true,
"speed": 460800
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/hw-reference/esp32s2/user-guide-saola-1-v1.2.html",
"vendor": "Espressif"
}
-51
View File
@@ -1,51 +0,0 @@
{
"build": {
"arduino":{
"ldscript": "esp32s3_out.ld",
"memory_type": "qio_opi"
},
"core": "esp32",
"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=0",
"hwids": [
[
"0x303A",
"0x1001"
]
],
"mcu": "esp32s3",
"variant": "esp32s3",
"filesystem": "littlefs",
"partitions": "boards/partitions/esp32_partition_app4096k_spiffs8124k.csv"
},
"connectivity": [
"wifi",
"bluetooth",
"ethernet"
],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": [
"esp-builtin"
],
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
"espidf",
"arduino"
],
"name": "Espressif Generic ESP32-S3 USB CDC 16M Flash OPI PSRAM, ESPEasy 4096k Code/OTA 8124k FS",
"upload": {
"flash_size": "16MB",
"maximum_ram_size": 327680,
"maximum_size": 16777216,
"require_upload_port": true,
"before_reset": "usb_reset",
"speed": 460800
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"
}
-50
View File
@@ -1,50 +0,0 @@
{
"build": {
"arduino":{
"ldscript": "esp32s3_out.ld",
"memory_type": "qio_opi"
},
"core": "esp32",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_8M -DESP32S3 -DARDUINO_USB_CDC_ON_BOOT=0",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "qio",
"hwids": [
[
"0x303A",
"0x1001"
]
],
"mcu": "esp32s3",
"variant": "esp32s3",
"filesystem": "littlefs",
"partitions": "boards/partitions/esp32_partition_app3520k_spiffs1088k.csv"
},
"connectivity": [
"wifi",
"bluetooth",
"ethernet"
],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": [
"esp-builtin"
],
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
"espidf",
"arduino"
],
"name": "Espressif Generic ESP32-S3 USB CDC 8M Flash OPI PSRAM, ESPEasy 3520k Code/OTA 1088k FS",
"upload": {
"flash_size": "8MB",
"maximum_ram_size": 327680,
"maximum_size": 8388608,
"require_upload_port": true,
"before_reset": "usb_reset",
"speed": 460800
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"
}
-49
View File
@@ -1,49 +0,0 @@
{
"build": {
"arduino":{
"ldscript": "esp32s3_out.ld",
"memory_type": "qio_opi"
},
"core": "esp32",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S3 -DARDUINO_USB_CDC_ON_BOOT=0",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "qio",
"hwids": [
[
"0x303A",
"0x1001"
]
],
"mcu": "esp32s3",
"variant": "esp32s3",
"partitions": "boards/partitions/esp32_partition_app1810k_spiffs316k.csv"
},
"connectivity": [
"wifi",
"bluetooth",
"ethernet"
],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": [
"esp-builtin"
],
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
"espidf",
"arduino"
],
"name": "Espressif Generic ESP32-S3 USB CDC >= 4M Flash OPI PSRAM, ESPEasy 1810k Code/OTA 316k FS",
"upload": {
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
"before_reset": "usb_reset",
"speed": 460800
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"
}
-50
View File
@@ -1,50 +0,0 @@
{
"build": {
"arduino":{
"ldscript": "esp32s3_out.ld",
"memory_type": "qio_qspi"
},
"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=0",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "qio",
"hwids": [
[
"0x303A",
"0x1001"
]
],
"mcu": "esp32s3",
"variant": "esp32s3",
"filesystem": "littlefs",
"partitions": "boards/partitions/esp32_partition_app4096k_spiffs8124k.csv"
},
"connectivity": [
"wifi",
"bluetooth",
"ethernet"
],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": [
"esp-builtin"
],
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
"espidf",
"arduino"
],
"name": "Espressif Generic ESP32-S3 USB CDC 16M Flash QSPI PSRAM, ESPEasy 4096k Code/OTA 8124k FS",
"upload": {
"flash_size": "16MB",
"maximum_ram_size": 327680,
"maximum_size": 16777216,
"require_upload_port": true,
"before_reset": "usb_reset",
"speed": 460800
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"
}
-50
View File
@@ -1,50 +0,0 @@
{
"build": {
"arduino":{
"ldscript": "esp32s3_out.ld",
"memory_type": "qio_qspi"
},
"core": "esp32",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_8M -DESP32S3 -DARDUINO_USB_CDC_ON_BOOT=0",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "qio",
"hwids": [
[
"0x303A",
"0x1001"
]
],
"mcu": "esp32s3",
"variant": "esp32s3",
"filesystem": "littlefs",
"partitions": "boards/partitions/esp32_partition_app3520k_spiffs1088k.csv"
},
"connectivity": [
"wifi",
"bluetooth",
"ethernet"
],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": [
"esp-builtin"
],
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
"espidf",
"arduino"
],
"name": "Espressif Generic ESP32-S3 USB CDC 8M Flash QSPI PSRAM, ESPEasy 3520k Code/OTA 1088k FS",
"upload": {
"flash_size": "8MB",
"maximum_ram_size": 327680,
"maximum_size": 8388608,
"require_upload_port": true,
"before_reset": "usb_reset",
"speed": 460800
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"
}
-49
View File
@@ -1,49 +0,0 @@
{
"build": {
"arduino":{
"ldscript": "esp32s3_out.ld",
"memory_type": "qio_qspi"
},
"core": "esp32",
"extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S3 -DARDUINO_USB_CDC_ON_BOOT=0",
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "qio",
"hwids": [
[
"0x303A",
"0x1001"
]
],
"mcu": "esp32s3",
"variant": "esp32s3",
"partitions": "boards/partitions/esp32_partition_app1810k_spiffs316k.csv"
},
"connectivity": [
"wifi",
"bluetooth",
"ethernet"
],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": [
"esp-builtin"
],
"openocd_target": "esp32s3.cfg"
},
"frameworks": [
"espidf",
"arduino"
],
"name": "Espressif Generic ESP32-S3 USB CDC >= 4M Flash QSPI PSRAM, ESPEasy 1810k Code/OTA 316k FS",
"upload": {
"flash_size": "4MB",
"maximum_ram_size": 327680,
"maximum_size": 4194304,
"require_upload_port": true,
"before_reset": "usb_reset",
"speed": 460800
},
"url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/",
"vendor": "Espressif"
}
-31
View File
@@ -1,31 +0,0 @@
{
"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"
}
-30
View File
@@ -1,30 +0,0 @@
{
"build": {
"arduino": {
"ldscript": "eagle.flash.16m14m.ld"
},
"core": "esp8266",
"extra_flags": "-DARDUINO_TASMOTA -DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_4M -DESP8266_16M14M",
"f_cpu": "80000000L",
"f_flash": "40000000L",
"flash_mode": "dout",
"mcu": "esp8266",
"variant": "generic"
},
"connectivity": [
"wifi"
],
"frameworks": [
"arduino"
],
"name": "Espressif Generic ESP8266 ESPEasy 16M Flash 14M 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"
}
-30
View File
@@ -1,30 +0,0 @@
{
"build": {
"arduino": {
"ldscript": "eagle.flash.1m128.ld"
},
"core": "esp8266",
"extra_flags": "-DARDUINO_TASMOTA -DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_1M",
"f_cpu": "80000000L",
"f_flash": "40000000L",
"flash_mode": "dout",
"mcu": "esp8266",
"variant": "generic"
},
"connectivity": [
"wifi"
],
"frameworks": [
"arduino"
],
"name": "Espressif Generic ESP8266 ESPEasy 1M Flash 128k FS",
"upload": {
"maximum_ram_size": 81920,
"maximum_size": 892912,
"require_upload_port": true,
"resetmethod": "nodemcu",
"speed": 115200
},
"url": "http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family",
"vendor": "Espressif"
}
-30
View File
@@ -1,30 +0,0 @@
{
"build": {
"arduino": {
"ldscript": "eagle.flash.1m128.ld"
},
"core": "esp8266",
"extra_flags": "-DARDUINO_TASMOTA -DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_1M",
"f_cpu": "80000000L",
"f_flash": "40000000L",
"flash_mode": "dout",
"mcu": "esp8266",
"variant": "generic"
},
"connectivity": [
"wifi"
],
"frameworks": [
"arduino"
],
"name": "Espressif Generic ESP8266 ESPEasy 1M Flash 128k FS",
"upload": {
"maximum_ram_size": 81920,
"maximum_size": 616448,
"require_upload_port": true,
"resetmethod": "nodemcu",
"speed": 115200
},
"url": "http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family",
"vendor": "Espressif"
}
-30
View File
@@ -1,30 +0,0 @@
{
"build": {
"arduino": {
"ldscript": "eagle.flash.2m1m.ld"
},
"core": "esp8266",
"extra_flags": "-DARDUINO_TASMOTA -DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_2M -DESP8266_2M1M",
"f_cpu": "80000000L",
"f_flash": "40000000L",
"flash_mode": "dout",
"mcu": "esp8266",
"variant": "generic"
},
"connectivity": [
"wifi"
],
"frameworks": [
"arduino"
],
"name": "Espressif Generic ESP8266 ESPEasy 1M sketch 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"
}
-30
View File
@@ -1,30 +0,0 @@
{
"build": {
"arduino": {
"ldscript": "eagle.flash.2m256.ld"
},
"core": "esp8266",
"extra_flags": "-DARDUINO_TASMOTA -DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_2M -DESP8266_2M256",
"f_cpu": "80000000L",
"f_flash": "40000000L",
"flash_mode": "dout",
"mcu": "esp8266",
"variant": "generic"
},
"connectivity": [
"wifi"
],
"frameworks": [
"arduino"
],
"name": "Espressif Generic ESP8266 ESPEasy 2M Flash 256k FS",
"upload": {
"maximum_ram_size": 81920,
"maximum_size": 1044464,
"require_upload_port": true,
"resetmethod": "nodemcu",
"speed": 115200
},
"url": "http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family",
"vendor": "Espressif"
}
-30
View File
@@ -1,30 +0,0 @@
{
"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": "80000000L",
"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"
}
-30
View File
@@ -1,30 +0,0 @@
{
"build": {
"arduino": {
"ldscript": "eagle.flash.4m2m.ld"
},
"core": "esp8266",
"extra_flags": "-DARDUINO_TASMOTA -DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_4M -DESP8266_4M2M",
"f_cpu": "80000000L",
"f_flash": "40000000L",
"flash_mode": "dout",
"mcu": "esp8266",
"variant": "generic"
},
"connectivity": [
"wifi"
],
"frameworks": [
"arduino"
],
"name": "Espressif Generic ESP8266 ESPEasy 4M Flash 2M 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"
}
-30
View File
@@ -1,30 +0,0 @@
{
"build": {
"arduino": {
"ldscript": "eagle.flash.4m3m.ld"
},
"core": "esp8266",
"extra_flags": "-DARDUINO_TASMOTA -DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_4M -DESP8266_4M3M",
"f_cpu": "80000000L",
"f_flash": "40000000L",
"flash_mode": "dout",
"mcu": "esp8266",
"variant": "generic"
},
"connectivity": [
"wifi"
],
"frameworks": [
"arduino"
],
"name": "Espressif Generic ESP8266 ESPEasy 4M Flash 3M 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"
}
-30
View File
@@ -1,30 +0,0 @@
{
"build": {
"arduino": {
"ldscript": "eagle.flash.2m256.ld"
},
"core": "esp8266",
"extra_flags": "-DARDUINO_TASMOTA -DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_2M -DESP8266_2M256",
"f_cpu": "160000000L",
"f_flash": "40000000L",
"flash_mode": "dout",
"mcu": "esp8266",
"variant": "generic"
},
"connectivity": [
"wifi"
],
"frameworks": [
"arduino"
],
"name": "Sonoff ZbBridge ESPEasy 2M Flash 256k FS",
"upload": {
"maximum_ram_size": 81920,
"maximum_size": 1040316,
"require_upload_port": true,
"resetmethod": "nodemcu",
"speed": 115200
},
"url": "https://templates.blakadder.com/sonoff_ZBBridge.html",
"vendor": "Espressif"
}
-30
View File
@@ -1,30 +0,0 @@
{
"build": {
"arduino": {
"ldscript": "eagle.flash.1m128.ld"
},
"core": "esp8266",
"extra_flags": "-DARDUINO_TASMOTA -DESP8266 -DESP8285 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_1M",
"f_cpu": "80000000L",
"f_flash": "40000000L",
"flash_mode": "dout",
"mcu": "esp8266",
"variant": "generic"
},
"connectivity": [
"wifi"
],
"frameworks": [
"arduino"
],
"name": "Espressif Generic ESP8285 ESPEasy 1M Flash 128k FS",
"upload": {
"maximum_ram_size": 81920,
"maximum_size": 892912,
"require_upload_port": true,
"resetmethod": "nodemcu",
"speed": 115200
},
"url": "http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family",
"vendor": "Espressif"
}
-30
View File
@@ -1,30 +0,0 @@
{
"build": {
"arduino": {
"ldscript": "eagle.flash.1m128.ld"
},
"core": "esp8266",
"extra_flags": "-DARDUINO_TASMOTA -DESP8266 -DESP8285 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_ESP01 -DESP8266_1M",
"f_cpu": "80000000L",
"f_flash": "40000000L",
"flash_mode": "dout",
"mcu": "esp8266",
"variant": "generic"
},
"connectivity": [
"wifi"
],
"frameworks": [
"arduino"
],
"name": "Espressif Generic ESP8285 ESPEasy 1M Flash 128k FS",
"upload": {
"maximum_ram_size": 81920,
"maximum_size": 616448,
"require_upload_port": true,
"resetmethod": "nodemcu",
"speed": 115200
},
"url": "http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family",
"vendor": "Espressif"
}
@@ -1,7 +0,0 @@
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, 0x10000, 0x140000,
app1, app, ota_1, 0x150000,0x140000,
eeprom, data, 0x99, 0x290000,0x1000,
spiffs, data, spiffs, 0x291000,0x16F000,
1 # Name Type SubType Offset Size Flags
2 nvs data nvs 0x9000 0x5000
3 otadata data ota 0xe000 0x2000
4 app0 app ota_0 0x10000 0x140000
5 app1 app ota_1 0x150000 0x140000
6 eeprom data 0x99 0x290000 0x1000
7 spiffs data spiffs 0x291000 0x16F000
@@ -1,6 +0,0 @@
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, 0x10000, 0x180000,
app1, app, ota_1, 0x190000, 0x180000,
spiffs, data, spiffs, 0x310000,0x0F0000,
1 # Name Type SubType Offset Size Flags
2 nvs data nvs 0x9000 0x5000
3 otadata data ota 0xe000 0x2000
4 app0 app ota_0 0x10000 0x180000
5 app1 app ota_1 0x190000 0x180000
6 spiffs data spiffs 0x310000 0x0F0000
@@ -1,5 +0,0 @@
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, 0x10000, 0x1A0000,
spiffs, data, spiffs, 0x1B0000,0x50000,
1 # Name Type SubType Offset Size Flags
2 nvs data nvs 0x9000 0x5000
3 otadata data ota 0xe000 0x2000
4 app0 app ota_0 0x10000 0x1A0000
5 spiffs data spiffs 0x1B0000 0x50000
@@ -1,7 +0,0 @@
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
# otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, 0x10000, 0x1D0000,
# app1, app, ota_1, 0x1E0000,0x1000,
eeprom, data, 0x99, ,0x1000,
spiffs, data, spiffs, ,0x21F000,
1 # Name Type SubType Offset Size Flags
2 nvs data nvs 0x9000 0x5000
3 # otadata data ota 0xe000 0x2000
4 app0 app ota_0 0x10000 0x1D0000
5 # app1 app ota_1 0x1E0000 0x1000
6 eeprom data 0x99 0x1000
7 spiffs data spiffs 0x21F000
@@ -1,7 +0,0 @@
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, 0x10000, 0x1D0000,
app1, app, ota_1, 0x1E0000,0x1D0000,
eeprom, data, 0x99, 0x3B0000,0x1000,
spiffs, data, spiffs, 0x3B1000,0x4F000,
1 # Name Type SubType Offset Size Flags
2 nvs data nvs 0x9000 0x5000
3 otadata data ota 0xe000 0x2000
4 app0 app ota_0 0x10000 0x1D0000
5 app1 app ota_1 0x1E0000 0x1D0000
6 eeprom data 0x99 0x3B0000 0x1000
7 spiffs data spiffs 0x3B1000 0x4F000
@@ -1,6 +0,0 @@
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, 0x10000, 0x1D0000,
app1, app, ota_1, 0x1E0000, 0x1D0000,
spiffs, data, spiffs, 0x3B0000,0x50000,
1 # Name Type SubType Offset Size Flags
2 nvs data nvs 0x9000 0x5000
3 otadata data ota 0xe000 0x2000
4 app0 app ota_0 0x10000 0x1D0000
5 app1 app ota_1 0x1E0000 0x1D0000
6 spiffs data spiffs 0x3B0000 0x50000
@@ -1,6 +0,0 @@
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, 0x10000, 0x2F0000,
app1, app, ota_1, 0x300000, 0x2F0000,
spiffs, data, spiffs, 0x5F0000,0xA10000,
1 # Name Type SubType Offset Size Flags
2 nvs data nvs 0x9000 0x5000
3 otadata data ota 0xe000 0x2000
4 app0 app ota_0 0x10000 0x2F0000
5 app1 app ota_1 0x300000 0x2F0000
6 spiffs data spiffs 0x5F0000 0xA10000
@@ -1,6 +0,0 @@
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, 0x10000, 0x370000,
app1, app, ota_1, 0x380000, 0x370000,
spiffs, data, spiffs, 0x6F0000, 0x110000,
1 # Name Type SubType Offset Size Flags
2 nvs data nvs 0x9000 0x5000
3 otadata data ota 0xe000 0x2000
4 app0 app ota_0 0x10000 0x370000
5 app1 app ota_1 0x380000 0x370000
6 spiffs data spiffs 0x6F0000 0x110000
@@ -1,7 +0,0 @@
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, 0x10000, 0x400000,
app1, app, ota_1, 0x410000,0x400000,
eeprom, data, 0x99, 0x810000,0x1000,
spiffs, data, spiffs, 0xf00000,0x100000,
1 # Name Type SubType Offset Size Flags
2 nvs data nvs 0x9000 0x5000
3 otadata data ota 0xe000 0x2000
4 app0 app ota_0 0x10000 0x400000
5 app1 app ota_1 0x410000 0x400000
6 eeprom data 0x99 0x810000 0x1000
7 spiffs data spiffs 0xf00000 0x100000
@@ -1,7 +0,0 @@
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, 0x10000, 0x400000,
app1, app, ota_1, 0x410000,0x400000,
eeprom, data, 0x99, 0x810000,0x1000,
spiffs, data, spiffs, 0xe00000,0x200000,
1 # Name Type SubType Offset Size Flags
2 nvs data nvs 0x9000 0x5000
3 otadata data ota 0xe000 0x2000
4 app0 app ota_0 0x10000 0x400000
5 app1 app ota_1 0x410000 0x400000
6 eeprom data 0x99 0x810000 0x1000
7 spiffs data spiffs 0xe00000 0x200000
@@ -1,7 +0,0 @@
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, 0x10000, 0x400000,
app1, app, ota_1, 0x410000,0x400000,
eeprom, data, 0x99, 0x810000,0x1000,
spiffs, data, spiffs, 0x811000,0x7eF000,
1 # Name Type SubType Offset Size Flags
2 nvs data nvs 0x9000 0x5000
3 otadata data ota 0xe000 0x2000
4 app0 app ota_0 0x10000 0x400000
5 app1 app ota_1 0x410000 0x400000
6 eeprom data 0x99 0x810000 0x1000
7 spiffs data spiffs 0x811000 0x7eF000
@@ -1,7 +0,0 @@
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, 0x10000, 0x600000,
app1, app, ota_1, 0x610000,0x600000,
eeprom, data, 0x99, 0xC10000,0x1000,
spiffs, data, spiffs, 0xC11000,0x13EF000,
1 # Name Type SubType Offset Size Flags
2 nvs data nvs 0x9000 0x5000
3 otadata data ota 0xe000 0x2000
4 app0 app ota_0 0x10000 0x600000
5 app1 app ota_1 0x610000 0x600000
6 eeprom data 0x99 0xC10000 0x1000
7 spiffs data spiffs 0xC11000 0x13EF000
@@ -1,6 +0,0 @@
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
safeboot, app, factory, 0x10000, 0xD0000,
app0, app, ota_0, 0xE0000, 0x2D0000,
spiffs, data, spiffs, 0x3B0000,0x50000,
1 # Name Type SubType Offset Size Flags
2 nvs data nvs 0x9000 0x5000
3 otadata data ota 0xe000 0x2000
4 safeboot app factory 0x10000 0xD0000
5 app0 app ota_0 0xE0000 0x2D0000
6 spiffs data spiffs 0x3B0000 0x50000
-126
View File
@@ -1,126 +0,0 @@
import sys
import binascii
import struct
from hashlib import md5
import os
MD5DUMMY = "MD5_MD5_MD5_MD5_BoundariesOfTheSegmentsGoHere..." #48 chars
FILENAMEDUMMY = "ThisIsTheDummyPlaceHolderForTheBinaryFilename64ByteLongFilenames" #64 chars
MemorySegmentStart,MemorySegmentEnd,MemoryContent=[],[],[]
##################################################################
# this subroutine shows the segments of a part
##################################################################
def showSegments (fileContent,offset):
global MemorySegmentStart, MemorySegmentEnd, MemoryContent
header = struct.unpack("ii", fileContent[offset:offset+8])
herestr =""
herestr2 =""
MemorySegmentStart.append(struct.pack("I",header[0]))
MemorySegmentEnd.append(struct.pack("I",header[0]+header[1]))
MemoryContent.append(fileContent[offset+8:offset+8+header[1]])
if fileContent.find( MD5DUMMY, offset+8, offset+8+header[1]) >0 :
herestr= " <-- CRC is here."
if fileContent.find( FILENAMEDUMMY, offset+8, offset+8+header[1]) >0 :
herestr2= " <-- filename is here."
print ("SEGMENT "+ str(len(MemorySegmentStart)-1)+ ": memory position: " + hex(header[0])+" to " + hex(header[0]+header[1]) + " length: " + hex(header[1])+herestr+herestr2)
#print ("first byte positoin in file: " + hex( offset+8))
#print ("last byte postion in file: " + hex(offset+8+header[1]-1))
return (8+offset+ header[1]); # return start of next segment
##################################################################
# this subroutine shows the parts of a binary file
##################################################################
def showParts(fileContent, offset):
header = struct.unpack("BBBBi", fileContent[offset:offset+8])
print ('\n\nBINARY PART\nSegments: ') + (hex(header[1]))
nextpos =offset+8
for x in range (0,header[1]):
nextpos = showSegments(fileContent,nextpos)
nextSegmentOffset = (fileContent.find("\xe9", nextpos))
return nextSegmentOffset
##################################################################
# MAIN
##################################################################
#if len(sys.argv) !=2 :
# print ("please give a filename")
# k=input("press close to exit")
# sys.exit(1)
FileName = sys.argv[1]
#FileName = "C:/ArduinoPortable/sketchbooks/build/sketch_jan15a.ino.bin"
print( "\n\nReplacing dummy MD5 checksum in .bin file")
with open(FileName, mode='rb') as file: # b is important -> binary
fileContent = file.read()
firmware_esp8266 = fileContent.find("ID_EASY_ESP8266") >= 0
firmware_esp32 = fileContent.find("ID_EASY_ESP32") >= 0
if firmware_esp8266:
print("ESP8266 build")
if firmware_esp32:
print("ESP32 build")
# TODO: showParts does not work for esp32
if firmware_esp8266:
nextpos =0;
while nextpos >=0:
nextpos = showParts(fileContent,nextpos)
startArray,endArray,hashString = "","",""
includeStr = "hash includes segments:"
# memory sections:
# 0: bootloader (not readable)
# 1: program memory (SPI flash)
# 2: unknown but stable
# 3: RAM (initialized by bin file. Can be read but changes as you go :-( )
# 4: RAM
if firmware_esp8266:
for i in (1,2 ): # use only stable segments, must be 4 in total. We use 2.
startArray =startArray + MemorySegmentStart[i]
endArray = endArray + MemorySegmentEnd[i]
hashString =hashString + MemoryContent[i]
with open(FileName+str(i), mode='wb') as file: # b is important -> binary
file.write(MemoryContent[i])
includeStr = includeStr +" "+ str(i)
print (includeStr)
# IMPORTANT: pad array with zeros if you use only 3 segments (see above)
while len(startArray) < 16 :
startArray =startArray + struct.pack("I",0)
endArray = endArray + struct.pack("I",0)
# debug print (binascii.hexlify(startArray))
# debug print (binascii.hexlify(endArray))
if (len(endArray) + len (startArray)) != 32 :
print("ERROR: please make sure you add / remove padding if you change the semgents.")
if fileContent.find( FILENAMEDUMMY) < 0:
print("ERROR: FILENAMEDUMMY dummy not found in binary")
else:
BinaryFileName=os.path.basename(FileName) +"\0"
if len(BinaryFileName) >64: # check that filename is <48 chars
BinaryFileName=BinaryFileName[0:64] # truncate if necessary. 49th char in ESP is zero already
else:
BinaryFileName= BinaryFileName.ljust(64,'\0'); # pad with zeros.
fileContent=fileContent.replace(FILENAMEDUMMY,BinaryFileName)
if firmware_esp8266:
if fileContent.find( MD5DUMMY) < 0:
print("ERROR: MD5 dummy not found in binary")
else:
hashString=hashString.replace (MD5DUMMY,"",1)
m = md5(hashString) #use segment 1
md5hash = m.digest()
print("MD5 hash: "+ m.hexdigest())
fileContent=fileContent.replace(MD5DUMMY,md5hash+startArray+endArray)
print("\nwriting output file:\n" + FileName)
with open(FileName, mode='wb') as file: # b is important -> binary
file.write(fileContent)
#k=input("press close to exit")
BIN
View File
Binary file not shown.
+63
View File
@@ -0,0 +1,63 @@
plugin |cache IRAM |init RAM |r.o. RAM |uninit RAM |Flash ROM
src/_C001.ino |0 |0 |272 |0 |3520
src/_C002.ino |0 |4 |528 |32 |6064
src/_C003.ino |0 |0 |64 |0 |1072
src/_C004.ino |0 |0 |56 |8 |1280
src/_C005.ino |0 |4 |56 |8 |1424
src/_C006.ino |0 |0 |64 |0 |1296
src/_C007.ino |0 |4 |32 |0 |1664
src/_C008.ino |0 |0 |80 |0 |2272
src/_C009.ino |0 |4 |352 |16 |4896
src/_C010.ino |0 |0 |48 |0 |1136
src/_C011.ino |0 |0 |152 |8 |5248
src/_N001_Email.ino |0 |0 |72 |8 |1808
src/_N002_Buzzer.ino |288 |12 |8 |264 |1184
src/_P001_Switch.ino |1028 |8 |104 |280 |7248
src/_P002_ADC.ino |0 |0 |16 |0 |336
src/_P003_Pulse.ino |167 |0 |144 |192 |2544
src/_P004_Dallas.ino |0 |0 |64 |16 |2496
src/_P005_DHT.ino |0 |0 |56 |8 |1520
src/_P006_BMP085.ino |0 |4 |48 |8 |2112
src/_P007_PCF8591.ino |0 |0 |8 |8 |400
src/_P008_RFID.ino |101 |0 |56 |8 |624
src/_P009_MCP.ino |0 |0 |104 |24 |3232
src/_P010_BH1750.ino |0 |0 |56 |8 |2688
src/_P011_PME.ino |0 |4 |96 |0 |3040
src/_P012_LCD.ino |0 |4 |120 |8 |3520
src/_P013_HCSR04.ino |90 |0 |64 |16 |1552
src/_P014_SI7021.ino |0 |4 |48 |0 |1824
src/_P015_TSL2561.ino |0 |0 |56 |8 |3488
src/_P016_IR.ino |288 |0 |72 |480 |3600
src/_P017_PN532.ino |0 |0 |88 |72 |2016
src/_P018_Dust.ino |0 |0 |56 |8 |512
src/_P019_PCF8574.ino |0 |0 |104 |24 |2848
src/_P020_Ser2Net.ino |0 |0 |88 |40 |3456
src/_P021_Level.ino |0 |4 |136 |24 |1872
src/_P022_PCA9685.ino |0 |4 |32 |0 |1216
src/_P023_OLED.ino |0 |4 |80 |0 |4448
src/_P024_MLX90614.ino |0 |4 |56 |8 |992
src/_P025_ADS1115.ino |0 |0 |72 |8 |1184
src/_P026_Sysinfo.ino |0 |0 |72 |8 |864
src/_P027_INA219.ino |0 |0 |56 |24 |1840
src/_P028_BME280.ino |128 |0 |48 |80 |3488
src/_P029_Output.ino |0 |4 |8 |8 |256
src/_P030_BMP280.ino |128 |0 |48 |48 |3024
src/_P031_SHT1X.ino |0 |0 |100 |0 |2176
src/_P032_MS5611.ino |0 |4 |88 |56 |2592
src/_P033_Dummy.ino |0 |4 |48 |0 |1168
src/_P034_DHT12.ino |0 |0 |16 |0 |656
src/_P035_IRTX.ino |0 |4 |64 |-8 |3840
src/_P036_FrameOLED.ino |0 |4 |96 |0 |33600
src/_P037_MQTTImport.ino |0 |0 |24 |40 |3536
src/_P038_NeoPixel.ino |128 |0 |56 |8 |1712
src/_P039_Thermocouple.ino |0 |0 |104 |8 |1536
src/_P040_ID12.ino |0 |4 |72 |8 |640
src/_P041_NeoClock.ino |128 |4 |128 |0 |3344
src/_P042_Candle.ino |128 |8 |160 |32 |8048
src/_P043_ClkOutput.ino |0 |0 |80 |0 |1456
src/_P044_P1WifiGateway.ino |0 |0 |80 |64 |4032
src/_P045_MPU6050.ino |0 |4 |216 |72 |4496
src/_P046_VentusW266.ino |325 |4 |184 |88 |3920
src/_P047_i2c-soil-moisture-so|0 |4 |216 |8 |2144
src/_P048_Motorshield_v2.ino |0 |32 |208 |0 |5952
src/_P049_MHZ19.ino |380 |80 |184 |88 |3792
-112
View File
@@ -1,112 +0,0 @@
_____ ____ ____
| ____/ ___|| _ \ ___ __ _ ___ _ _
| _| \___ \| |_) / _ \/ _` / __| | | |
| |___ ___) | __/ __/ (_| \__ \ |_| |
|_____|____/|_| \___|\__,_|___/\__, |
|___/
This is the distribution folder for ESPeasy.
In here you will find a flash tool to program the ESP module.
Also a number of binary images is included.
The filename is quite descriptive:
ESP_Easy_mega-<date>_<buildType>_<chip>_<memorySize>.bin
Build type can be: (differ in included plugins)
- normal => Only Stable plugins and controllers
- test => Stable + Testing, divided in various build sets to fit max. build size.
- max => Only for ESP32 boards with large flash size, includes all plugins.
There is also a number of special builds:
- normal_IR => "Normal" + IR receiver/transmitter plugins and library
- hard_xxxxx => Special builds for some off-the-shelf hardware.
- minimal_ESP82xx_1M_OTA => Minimum number of plugins and a limited set of controllers included to be able to perform a 2-step OTA on 1 MB flash nodes.
- normal_core_xxx => "Normal" using core xxx (e.g. 2.4.1)
- normal_beta => "Normal" using the staged (beta) branch of the esp8266/Arduino repository.
Chip can be:
- ESP8266 => Most likely option (use also for ESP8285 chips)
- ESP32 => Showing up in commercial products, but mainly seen on NodeMCU like boards.
- ESP32-S2 => Newer version of ESP32, with more GPIO pins, but lacking some features of ESP32.
- ESP32-S3 => Not yet supported in ESPEasy. (hardly available to buy)
- ESP32-C3 => Support in ESPEasy will be added soon.
MemorySize can be:
- 1M => 1 MB flash modules (e.g. almost all Sonoff modules)
- 2M => 2 MB flash modules (e.g. Shelly1/WROOM02)
- 4M => 4 MB flash modules (e.g. NodeMCU/ESP32)
- 16M => 16 MB flash modules (e.g. Wemos D1 mini pro or some of the modern ESP32 boards)
Please note that the performance of 14MB SPIFFS (16M flash modules) is really slow.
All file access takes a lot longer and since the settings are also read from flash, the entire node will perform slower.
See [Arduino issue - SPIFFS file access slow on 16/14M flash config](https://github.com/esp8266/Arduino/issues/5932)
If these speed issues will be fixed, it is very likely the SPIFFS must then be re-partitioned, thus loosing all data in the SPIFFS.
As alternative for SPIFFS, one can chose for LittleFS.
This currently is very fast when using it, but extremely slow when storing settings as updating a part of a file is not suitable for LittleFS.
However this will be dealt with in the future.
N.B. SPIFFS and LittleFS are not compatible. Switching from one to the other will delete all existing settings and configuration stored on the file system.
Special memory partitioning:
- 2M256 => 2 MB flash modules (e.g. Shelly1/WROOM02) with 256k SPIFFS (only core 2.5.0 or newer)
- 4M316k => For ESP32 with 4MB flash, sketch size is set to 1.8 MByte (default: 1.4 MByte)
- 4M1M => 4MB flash, 1 MB SPIFFS. Default layout for 4MB flash.
- 4M2M => 4MB flash, 2 MB SPIFFS. Introduced in October 2019. Only possible with core 2.5.2 or newer.
Difference between .bin and .bin.gz
Starting on esp8266/Arduino core 2.7.0, it is possible to flash images that have been compressed using GZip.
Please note that this only can be used on installs already running a very recent build.
This also means we still need to update the 2-step updater to support .bin.gz files.
ESP32 now has a number of builds:
- custom_ESP32_4M316k Build template using either the plugin set defined in ``Custom.h`` or ``tools/pio/pre_custom_esp32.py``
- test_ESP32_4M316k Build using the "testing" set of plugins for ESP32
- test_ESP32-wrover-kit_4M316k A build for ESP32 including build flags for the official WRover test kit.
- max_ESP32_16M8M A build for ESP32 with larger flash size including all plugins.
ESP32 also supports Ethernet.
Ethernet support is included in nearly all ESP32 builds, only ESP32-C2 doesn't have support for Ethernet.
Since ESP32 does have its flash partitioned in several blocks, we have 2 bin files of each ESP32 build:
- test_ESP32_4M316k.bin
- test_ESP32_4M316k.factory.bin
The binary with ".factory" in the name must be flashed on a new node, via the serial interface of the board.
This flash must be started at address 0.
The binary without ".factory" can be used for OTA updates. (OTA for ESP32 is added in May 2020)
Please note that changing between those versions will destroy the settings!
The SPIFFS partition will be lost and that contains all settings.
To help recover from a bad flash, there are also blank images included.
- blank_1MB.bin
- blank_2MB.bin
- blank_4MB.bin
- blank_16MB.bin
When the wrong image is flashed, or the module behaves unstable, or is in a reboot loop,
flash these images first and then the right image for the module.
Sometimes an update performed via OTA (Over The Air) is not performing as stable as one might expect.
It is yet unclear why this happens or what may cause it.
The remedy is often to flash the same build another time via serial.
There does seem to be some correlation to bad OTA flashes and flash chips made by XMC, but it is not exclusive to this brand of flash chips.
For flashing it is advised to use Espressif's own Flash Download Tools.
A recent version is included in the .zip file.
The latest version can be downloaded from: https://www.espressif.com/en/support/download/other-tools
Further reading:
For more information, see: https://github.com/letscontrolit/ESPEasy
Or our forum: https://www.letscontrolit.com/forum/
+269 -14845
View File
File diff suppressed because it is too large Load Diff
Binary file not shown.
-1
View File
File diff suppressed because one or more lines are too long
-1
View File
File diff suppressed because one or more lines are too long
-1
View File
File diff suppressed because one or more lines are too long
-1
View File
File diff suppressed because one or more lines are too long
-1
View File
File diff suppressed because one or more lines are too long
BIN
View File
Binary file not shown.
Binary file not shown.
-19
View File
@@ -1,19 +0,0 @@
# Minimal makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
SOURCEDIR = source
BUILDDIR = build
# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
.PHONY: help Makefile
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
-34
View File
@@ -1,34 +0,0 @@
{"ESP_Easy_info":[
{
"MessageTitle":"Please support us",
"MessageBody":"We are in need for support. Currently we need to do a whole lot of consulting to keep us floating. If we could get funding for at least 50% of our time we could make a lot more than with our current 10-15%. Ideal would be 100% funding but we're realistic :) <br><br>We will add extra goodies for those who support us through monthly payments using Patreon.<br><br><br>Thanks for your support (from TD-er and Grovkillen)!",
"MessagePicture":"",
"MessageWriter":"Grovkillen",
"MessageColorBG":"",
"MessageColorFont":"",
"MessageDate":"2019-01-07",
"MessageType":"general",
"MessageLink1text":"Patreon",
"MessageLink1":"",
"MessageLink2text":"Ko-Fi",
"MessageLink2":"",
"MessageLink3text":"Paypal",
"MessageLink3":""
},{
"MessageTitle":"First announcement test",
"MessageBody":"We're planning on using the ESP Easy Flasher to push announcements to the users. Hopefully this will work out good and make more people aware of how things are evolving. This will be used as a channel for pretty much anything regarding the prject. Thanks for your support!",
"MessagePicture":"",
"MessageWriter":"Grovkillen",
"MessageColorBG":"",
"MessageColorFont":"",
"MessageDate":"2019-01-06",
"MessageType":"mega",
"MessageLink1text":"",
"MessageLink1":"",
"MessageLink2text":"",
"MessageLink2":"",
"MessageLink3text":"",
"MessageLink3":""
}
]
}
-210
View File
@@ -1,210 +0,0 @@
#!/usr/bin/env python
# builds_overview.py
#
#############################################################################################################
# This script parses all documentation substitution files to determine in what builds a plugin is available
# Collection A..H, Display A..B, Climate A..B, Energy and Neopixel, IR and IRext get Normal plugins injected
# Collection, Notify and Network plugins are also injected into Collection A..H
# 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:
# 2026-03-12 tonhuisman: Separate status for ESP32 and ESP8266 (_lb suffix)
# 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
import os
import re
import json
# Must be a subfolder of source, as the included filenames have a ../ prefix!
basePath = "source/_templates/"
# Gather data
allBuilds = {}
allBuilds_lb = {}
# Not mentioned as a build in documentation, implicit
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', '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
excludeBuilds = {'DEVELOPMENT', 'RETIRED'}
# Plugins not included
excludePlugins = {
'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': {'P012', 'P023', 'P038', 'P041', 'P042', 'P057', 'P070', 'P075', 'P104'},
# 'MAX': {''},
# 'NEOPIXEL': {''},
# 'ENERGY': {''},
'NORMAL': {'P016', 'P035'},
}
# This list determines the order and color of the build sets to include in the generated output
buildColors = {
'NORMAL': 'green',
'COLLECTION A': 'yellow',
'COLLECTION B': 'yellow',
'COLLECTION C': 'yellow',
'COLLECTION D': 'yellow',
'COLLECTION E': 'yellow',
'COLLECTION F': 'yellow',
'COLLECTION G': 'yellow',
'COLLECTION H': 'yellow',
'CLIMATE A': 'yellow',
'CLIMATE B': 'yellow',
'DISPLAY A': 'yellow',
'DISPLAY B': 'yellow',
'ENERGY': 'yellow',
'IR': 'yellow',
'IRext': 'yellow',
'NEOPIXEL': 'yellow',
'MAX': 'yellow',
}
# Add/update a single plugin in the list
def addOnePlugin(build, plugin, pluginName, with_lb = False):
if not build in allBuilds:
allBuilds[build] = {}
allBuilds[build].update({plugin: pluginName})
if not build in allBuilds_lb:
allBuilds_lb[build] = {}
if with_lb:
allBuilds_lb[build].update({plugin: pluginName})
# Add a plugin to all builds it should go in
def addToAllBuilds(plugin, pluginName, builds:dict, builds_lb:dict):
for b in appendBuilds:
if not b in builds:
builds += {b}
for b in builds:
if b:
includeIt = True
# builds to ignore
if b in excludeBuilds:
includeIt = False
# plugins per build to ignore
if includeIt and b in excludePlugins:
if plugin in excludePlugins[b]:
includeIt = False
if includeIt:
addOnePlugin(b, plugin, pluginName, b in builds_lb)
# Add in other builds too?
if b in appendAlso:
for n in appendAlso[b]:
if includeIt and n in excludePlugins:
if plugin in excludePlugins[n]:
includeIt = False
# Except when not to be included
if includeIt:
addOnePlugin(n, plugin, pluginName, b in builds_lb)
# 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
plugin = ""
pluginName = ""
builds = []
builds_lb = []
while True:
line = pfile.readline()
if not line:
break
# Parse into label, plugin ID, description and up to 5 separate builds (current max.),
# append "(?:[^`]+`([^`]+)`)?" to regex for an extra build, if needed
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
addToAllBuilds(plugin, pluginName, builds, builds_lb)
plugin = m.group(1)
pluginName = m.group(4)
if m.group(3) == "_status":
builds = [m.group(4), m.group(5), m.group(6), m.group(7), m.group(8)]
if m.group(3) == "_status_lb":
builds_lb = [m.group(4), m.group(5), m.group(6), m.group(7), m.group(8)]
pfile.close()
if plugin != "": # Store last one too
addToAllBuilds(plugin, pluginName, builds, builds_lb)
# Parse all .. include :: files
def parseSubstitutionFiles(rootFile):
rfile = open(basePath + rootFile, "r")
while True:
line = rfile.readline()
if not line:
break
m = re.search(r"[^:]+::(.*)", line)
fn = m.group(1).strip()
if fn and fn != "":
parseSingleSubstitutionFile(fn)
rfile.close()
# Sort Plugins on top, anything else below that
def sortPluginsBeforeControllers(pluginid):
if pluginid[0] != 'P':
return pluginid.lower()[0] # Lowercase sorts after uppercase, so P goes first
return pluginid[0]
# Generate the output
def generateBuildOverview(fileName):
filepath = os.path.relpath(os.path.join(basePath, fileName), '.')
print('Writing build sets overview to:', filepath)
output = open(filepath, "w")
output.write('Plugins per build set\n')
output.write('=====================\n')
output.write('\n')
for b in buildColors:
if b in allBuilds:
output.write('Build set: :' + buildColors[b] + ':`' + b + '`\n')
output.write('---------------------------------------------\n')
output.write('\n')
output.write('.. collapse:: Details...\n')
output.write('\n')
output.write(' .. csv-table::\n')
output.write(' :header: "Plugin name", "ESP32", "ESP8266", "Plugin number"\n')
output.write(' :widths: 10, 3, 3, 3\n')
output.write('\n')
for p in sorted(allBuilds[b], key=sortPluginsBeforeControllers):
output.write(' ":ref:`' + p + '_page`", "", "' + ('' if p in allBuilds_lb[b] else '') + '", "' + p + '"\n')
output.write('\n')
output.close()
# Main entrypoint
print('Parsing substitutions for build sets...')
# Parse all Plugin substitutions
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')
# print(json.dumps(allBuilds,indent=2,sort_keys=True)) # For debugging
-37
View File
@@ -1,37 +0,0 @@
@ECHO OFF
pushd %~dp0
REM Command file for Sphinx documentation
if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-build
)
set SOURCEDIR=source
set BUILDDIR=build
if "%1" == "" goto help
%SPHINXBUILD% >NUL 2>NUL
if errorlevel 9009 (
echo.
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
echo.installed, then set the SPHINXBUILD environment variable to point
echo.to the full path of the 'sphinx-build' executable. Alternatively you
echo.may add the Sphinx directory to PATH.
echo.
echo.If you don't have Sphinx installed, grab it from
echo.http://sphinx-doc.org/
exit /b 1
)
python builds_overview.py
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
goto end
:help
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
:end
popd
-7
View File
@@ -1,7 +0,0 @@
Sphinx==7.*
sphinx-autobuild==2021.3.14
sphinx-bootstrap-theme==0.8.1
recommonmark==0.7.1
sphinxcontrib-htmlhelp>=2.0.5
sphinxcontrib-applehelp>=1.0.8
sphinx-toolbox>=3.5.0
-22
View File
@@ -1,22 +0,0 @@
These scripts are used to render screenshots of the GUI.
We use phantomJS (available on Win/Mac/Linux http://phantomjs.org/quick-start.html)
and you control the script by passing arguments to the JavaScript files:
########## rasterize.js ##########
argument1: url (ampersand & need to be closed with "&")
argument2: output file name (you can use .png or .pdf as output format)
argument3: horisontalXvertical size (OPTIONAL)
argument4: zoom ("entire page" or "window" or <value> OPTIONAL)
....Example CLI....
phantomjs rasterize.js http://95.143.204.227/devices?index=1"&"page=1 P001_Setup_Switch_1.png
or
phantomjs rasterize.js http://95.143.204.227/devices?index=1"&"page=1 P001_Setup_Switch_1.png 1200px 2
WE USE THE SECOND EXAMPLE by default (you might need to change zoomFactor if the page is too big).
If the rendering is not working you can use this CLI (arg --debug=true):
phantomjs --debug=true rasterize.js http://95.143.204.227/devices?index=1"&"page=1 P001_Setup_Switch_1.png 1200px 2
-52
View File
@@ -1,52 +0,0 @@
//removed use strict GROVKILLEN
var page = require('webpage').create(),
system = require('system'),
address, output, size;
if (system.args.length < 3 || system.args.length > 5) {
console.log('Usage: rasterize.js URL filename [paperwidth*paperheight|paperformat] [zoom]');
console.log(' image (png/jpg output) examples: "1920px" entire page, window width 1920px');
console.log(' "800px*600px" window, clipped to 800x600');
phantom.exit(1);
} else {
address = system.args[1];
output = system.args[2];
page.viewportSize = { width: 600, height: 600 };
if (system.args.length > 3 && system.args[2].substr(-4) === ".pdf") {
size = system.args[3].split('*');
page.paperSize = size.length === 2 ? { width: size[0], height: size[1], margin: '0px' }
: { format: system.args[3], orientation: 'portrait', margin: '1cm' };
} else if (system.args.length > 3 && system.args[3].substr(-2) === "px") {
size = system.args[3].split('*');
if (size.length === 2) {
pageWidth = parseInt(size[0], 10);
pageHeight = parseInt(size[1], 10);
page.viewportSize = { width: pageWidth, height: pageHeight };
page.clipRect = { top: 0, left: 0, width: pageWidth, height: pageHeight };
} else {
console.log("size:", system.args[3]);
pageWidth = parseInt(system.args[3], 10);
pageHeight = parseInt(pageWidth * 3/4, 10); // it's as good an assumption as any
console.log ("pageHeight:",pageHeight);
page.viewportSize = { width: pageWidth, height: pageHeight };
}
}
if (system.args.length > 4) {
page.zoomFactor = system.args[4];
}
page.open(address, function (status) {
if (status !== 'success') {
console.log('Unable to load the address!');
phantom.exit(1);
} else {
window.setTimeout(function () {
//This is injected because of bug in phantomjs (rendering black background: http://phantomjs.org/tips-and-tricks.html) GROVKILLEN
page.evaluate(function() {
document.body.bgColor = 'white';
});
page.render(output);
phantom.exit();
}, 200);
}
});
}
-312
View File
@@ -1,312 +0,0 @@
Config page
***********
Main Settings
=============
Unit Name
---------
The name of this node.
This is mainly used when connecting to a MQTT broker or in p2p communications.
It is also used to generate a hostname in the local network, for example when using mDNS.
2023-01-27: Variables like ``%unit_0%``, ``%ip4%`` etc. can be used as (part of) the Name, and will be expanded anywhere the name is used. If the ``Append Unit Number to hostname`` setting is enabled, the name will **not** get the unit number appended, but the Hostname **will** have the unit number appended.
Unit Number
-----------
The number of this node.
It can be appended to the hostname.
The main use of the unit number is in ESPEasy p2p communications.
When used in p2p communications, make sure not to use unit number ``0`` or ``255`` as those are reserved.
Range: 0 ... 255
Append Unit Number to hostname
------------------------------
A flag to indicate how the hostname must be generated from *Unit Name* and *Unit Number*.
N.B. currently it is used in all occurences where a hostname is needed, but this appeared to be not working well for some MQTT brokers.
So expect it to be changed later to split this flag for every occasion where a hostname is needed.
Admin Password
--------------
A password to prevent altering settings in the web interface.
Default password is empty.
N.B. when asked for a login prompt, the user name is ``admin``
WiFi Settings
=============
A WiFi capable device can operate in two modes:
* Station mode (STA), device needs to connect to an access point.
* Access Point mode (AP), other STA devices can connect to this device.
An AP will broadcast an identifier string, called the SSID.
For an STA device to connect to an AP, two parameters are needed:
* SSID - The identifier string of an AP.
* WPA key - The password or pass phrase to make a connection.
N.B. when using the mentioned commands to set SSID/key, don't forget to call the ``save`` command.
SSID
----
The AP identifier string to connect to.
This is needed when running in STA mode.
Can also be set via the command ``wifissid``.
WPA Key
-------
The password or pass phrase to connect to the AP with given SSID.
Can also be set via the command ``wifikey``.
Fallback SSID / WPA Key
-----------------------
This is an alternate to the first configured SSID/key.
There are various use cases to have multiple AP configurations stored on a node.
For example to be able to move to anothe location where only another AP can be reached.
Or as a backup, for example to let the node connect to a local hotspot on your phone.
Can also be set via the commands:
* ``wifissid2``
* ``wifikey2``
WPA AP Mode Key
---------------
It is possible a node cannot connect to an AP:
* When there is no SSID configured
* The configured AP's are not in reach
* The configured AP's do not allow the node to connect
In these situations the ESP node will start its own local AP.
As SSID the Unit Name will be used, which is by default ``ESP_Easy_0``
The default WPA key to connect to this AP is ``configesp``, but can be changed here.
This is often used to perform the initial configuration like connecting to the local network.
Can also be set via the command ``WiFiAPKey``.
Don't force /setup in AP-Mode
-----------------------------
Allow optional usage of ESPEasy without WIFI avaiable.
When checked you can use ESPEasy in AP-Mode without beeing forced to ``/setup``.
Do Not Start AP
---------------
Usually the AP will be started when no WiFi is defined, or the defined one cannot be found.
This flag may prevent to start an AP.
Since this flag can lock out a user, there is a restricted command to uncheck this.
``WifiAllowAP`` will uncheck this flag in the settings until a reboot.
If the settings are saved, this flag will remain unchecked.
N.B. Restricted means, not accepted from a remote source, only local or via serial.
Custom Build WiFi credentials
-----------------------------
For custom builds, one can set default WiFi credentials by defining some default credentials at build.
See the examples in `Custom-sample.h`:
* ``#define DEFAULT_SSID "MyHomeSSID" // Enter your network SSID``
* ``#define DEFAULT_KEY "MySuperSecretPassword" // Enter your network WPA key``
* ``#define DEFAULT_SSID2 "" // Enter your fallback network SSID``
* ``#define DEFAULT_KEY2 "" // Enter your fallback network WPA key``
Custom builds can also be customized a bit more to allow for a deployment SSID configuration and an emergency fallback.
Deployment & Support SSID will be used only when the configured SSIDs are not reachable and/or no credentials are set.
This to make deployment or support of large number of nodes easier.
This configured set of credentials will be considered a "low priority" set, thus it will be tried as last resort.
Therefore it may take a while for a unit to connect to it if there are lots of 'hidden SSID' APs and connecting to hidden SSIDs is allowed.
* ``#define CUSTOM_DEPLOYMENT_SSID "" // Enter SSID not shown in UI, to be used on custom builds to ease deployment``
* ``#define CUSTOM_DEPLOYMENT_KEY "" // Enter key not shown in UI, to be used on custom builds to ease deployment``
* ``#define CUSTOM_SUPPORT_SSID "" // Enter SSID not shown in UI, to be used on custom builds to ease support``
* ``#define CUSTOM_SUPPORT_KEY "" // Enter key not shown in UI, to be used on custom builds to ease support``
Emergency fallback SSID will only be attempted in the first 10 minutes after reboot.
When found, the unit will connect to it and depending on the built in flag, it will either just connect to it, or clear set credentials.
Use case: User connects to a public AP which does need to agree on an agreement page for the rules of conduct (e.g. open APs)
This is seen as a valid connection, so the unit will not reconnect to another node and thus becomes inaccessible.
The AP configured with these fallback credentials will then act as a master key to regain access to a node.
These will never be set in nightly builds and only allowed for custom builds for obvious reasons.
* ``#define CUSTOM_EMERGENCY_FALLBACK_SSID "" // Enter SSID not shown in UI, to be used to regain access to the node``
* ``#define CUSTOM_EMERGENCY_FALLBACK_KEY "" // Enter key not shown in UI, to be used to regain access to the node``
* ``#define CUSTOM_EMERGENCY_FALLBACK_RESET_CREDENTIALS false``
* ``#define CUSTOM_EMERGENCY_FALLBACK_START_AP false``
* ``#define CUSTOM_EMERGENCY_FALLBACK_ALLOW_MINUTES_UPTIME 10``
Client IP filtering
===================
Sometimes it can be useful to only allow access to the web interface of a node from a specific range of IP-addresses.
For example if a node should only be configured from the local subnet.
Client IP block level
---------------------
* **Allow All** - No filtering applied, the web interface can be accessed from any IP able to reach the node. (default)
* **Allow Local Subnet** - Only allow access to the web interface from the local subnet.
* **Allow IP range** - Only allow access to the web interface from a specific IP range.
Access IP lower range
---------------------
When *Allow IP range* is set, this field defines the lower bound of the range.
Access IP upper range
---------------------
When *Allow IP range* is set, this field defines the upper bound of the range.
WiFi/Ethernet IP Settings
=========================
For both WiFi and Ethernet a node can be configured to receive an IP automatically via DHCP, or use a static IP.
If all fields for IP, GW, subnet mask and DNS are left empty, the configuration offered via DHCP will be used.
* **IP** The static IPv4 address to use for this node
* **Gateway** IPv4 address of the gateway to reach hosts outside this subnet. (typically the IP of the router)
* **Subnetmask** Mask applied to define the local subnet. (typically: ``255.255.255.0`` )
* **DNS** IPv4 address of a DNS server to use. (typically the IP of the router or some assigned by the ISP)
Sleep Mode
==========
Description
-----------
The ESP can be put into deep sleep for a set amount of time.
On an ESP8266, GPIO-16 must be connected to the RST pin to be able to wake up again.
As long as the node is in deep sleep mode, you can't connect to the web interface.
In fact, the ESP is turned off and only a dedicated timer circuit is still powered to wake up the main ESP core.
There are three ways to get out of sleep mode:
Cold boot
^^^^^^^^^
Power off the ESP and reconnect power.
You will have 30 seconds to connect to the Web interface and disable the Sleep Mode function.
(You will get feedback in the serial interface)
Temporary disable Deep Sleep via jumper setting
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
If 30 seconds is too short for you, you can use this method.
* Disconnect GPIO-16 from RST and connect it to GND. Restart your ESP if neccesary.
* Now deep sleep will be disabled and your ESP will function normally, until you connect GPIO-16 to RST again.
This requires ESPEasy v2.0.0-dev6 or newer.
Factory reset
^^^^^^^^^^^^^
If all else fails, just do a factory reset. **You will lose all your settings!**
* Connect the RX and TX pin together while you restart your ESP. (will clear all stored settings)
* Power off the device.
* Remove the connector across the RX and TX pins.
* Restart and then configure the ESPEasy firmware again. (at restart factory default settings will be loaded)
If this doesn't work:
* Try loading the blank image to match the size of the memory installed on the device.
* Reboot and wait 5 minutes.
* Then load on the firmware you are wanting to use.
* Reboot and wait 5 minutes.
Sleep awake time
----------------
This setting defines the minimum time in seconds a node should be awake from deep sleep.
If set to 0, the node will not go into deep sleep automatically.
At boot from deep sleep, a timer is started based on this setting.
If this timer expires, the node will enter deep sleep again.
As soon as the node has a successful WiFi connection, the timer will be restarted to allow to send out sensor data.
N.B. It is possible to put a node into deepsleep via the command ``deepsleep``, regardless this setting.
Sleep time
----------
The duration in seconds for a node to go into deep sleep.
Typical max. duration is 4294 seconds (Roughly 71 minutes)
N.B. the maximum possible duration depends on the used core library version and is mentioned at the configuration page.
Sleep on connection failure
---------------------------
CDN (Content delivery network)
------------------------------
The **Custom CDN URL** can be set to a server url (https preferred, they are downloaded by the browser, **not** by the ESPEasy unit) that hosts *all* files as listed on :ref:`ExternalHostedStaticFiles` (System variables can be used to customize the URL).
To reduce the build size where possible, some builds fetch the javascript (.js) and .css UI files from an external server, as this is used in the browser only. The default location for this data is the Content Delivery Network (CDN) of ``jsdelivr.net``, where these file are uploaded for specific releases.
For users that want to host these files in their local network, or if the files on jsdeliver.net have expired, an alternative location for these .js and .css file can be configured.
Setting this location will **override** the default CDN url, except for your Custom build that may already *have* the CDN url set, then this setting won't be available!
**Warning**: If an invalid location is set, the UI will be distorted, though should still be usable.
-41
View File
@@ -1,41 +0,0 @@
.. include:: _controller_substitutions.repl
.. _C001_page:
|C001_typename|
==================================================
|C001_shortinfo|
Controller details
------------------
Type: |C001_type|
Name: |C001_name|
Status ESP32: |C001_status|
Status ESP8266: |C001_status_lb|
GitHub: |C001_github|_
Maintainer: |C001_maintainer|
Change log
----------
.. versionchanged:: 2.0
...
|added|
Major overhaul for 2.0 release.
.. versionadded:: 1.0
...
|added|
Initial release version.
Description
-----------

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