From 3bb71f154d91f51487897c3dfaa120768253d080 Mon Sep 17 00:00:00 2001
From: Jeroen Vermeulen - MageHost
Date: Sat, 11 Dec 2021 19:34:17 +0100
Subject: [PATCH 01/38] Fix for #14006. Without USE_UFILESYS you can't draw
picture buttons.
---
.../Adafruit-GFX-Library-1.5.6-gemu-1.0/Adafruit_GFX.cpp | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/lib/lib_display/Adafruit-GFX-Library-1.5.6-gemu-1.0/Adafruit_GFX.cpp b/lib/lib_display/Adafruit-GFX-Library-1.5.6-gemu-1.0/Adafruit_GFX.cpp
index 5e88150cc..398dba0df 100644
--- a/lib/lib_display/Adafruit-GFX-Library-1.5.6-gemu-1.0/Adafruit_GFX.cpp
+++ b/lib/lib_display/Adafruit-GFX-Library-1.5.6-gemu-1.0/Adafruit_GFX.cpp
@@ -1610,10 +1610,12 @@ void Adafruit_GFX_Button::drawButton(boolean inverted) {
text = _fillcolor;
}
+ #if defined USE_UFILESYS
if (_label[0]=='/') {
draw_picture(_label, _x1, _y1, _w, _h, outline, inverted);
_gfx->drawRect(_x1, _y1, _w, _h, text);
} else {
+ #endif
uint8_t r = min(_w, _h) / 4; // Corner radius
_gfx->fillRoundRect(_x1, _y1, _w, _h, r, fill);
_gfx->drawRoundRect(_x1, _y1, _w, _h, r, outline);
@@ -1622,7 +1624,9 @@ void Adafruit_GFX_Button::drawButton(boolean inverted) {
_gfx->setTextColor(text);
_gfx->setTextSize(_textsize_x, _textsize_y);
_gfx->print(_label);
+ #if defined USE_UFILESYS
}
+ #endif
}
/**************************************************************************/
From 801c0cf90f892fd2fa5403ad2c55260b36431767 Mon Sep 17 00:00:00 2001
From: Jason2866 <24528715+Jason2866@users.noreply.github.com>
Date: Sun, 12 Dec 2021 17:09:20 +0100
Subject: [PATCH 02/38] Use matrix for compile
---
.github/workflows/Tasmota_build_devel.yml | 1370 +--------------------
1 file changed, 60 insertions(+), 1310 deletions(-)
diff --git a/.github/workflows/Tasmota_build_devel.yml b/.github/workflows/Tasmota_build_devel.yml
index fe3f995d1..bf22b6313 100644
--- a/.github/workflows/Tasmota_build_devel.yml
+++ b/.github/workflows/Tasmota_build_devel.yml
@@ -9,1318 +9,68 @@ on:
- '**.md' # Do no build if *.md files changes
jobs:
-
- tasmota:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-minimal:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-minimal
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-lite:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-lite
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-knx:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-knx
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-sensors:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-sensors
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-display:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-display
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-ir:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-ir
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-zbbridge:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-zbbridge
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-zigbee:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-zigbee
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-AF:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-AF
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-BG:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-BG
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-BR:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-BR
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-CN:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-CN
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-CZ:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-CZ
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-DE:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-DE
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-ES:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-ES
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-FR:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-FR
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-FY:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-FY
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-GR:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-GR
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-HE:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-HE
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-HU:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-HU
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-IT:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-IT
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-KO:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-KO
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-NL:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-NL
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-PL:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-PL
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-PT:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-PT
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-RO:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-RO
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-RU:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-RU
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-SE:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-SE
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-SK:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-SK
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-TR:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-TR
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-TW:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-TW
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-UK:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-UK
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-VN:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-VN
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32solo1:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32solo1
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-webcam:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-webcam
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-odroidgo:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-odroidgo
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-core2:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-core2
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-bluetooth:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-bluetooth
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-display:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-display
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-lvgl:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-lvgl
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-ir:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-ir
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
- tasmota32c3:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32c3
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
- tasmota32-AF:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-AF
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-BG:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-BG
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-BR:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-BR
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-CN:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-CN
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-CZ:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-CZ
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-DE:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-DE
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-ES:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-ES
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-FR:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-FR
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-FY:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-FY
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-GR:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-GR
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-HE:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-HE
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-HU:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-HU
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-IT:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-IT
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-KO:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-KO
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-NL:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-NL
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-PL:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-PL
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-PT:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-PT
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-RO:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-RO
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-RU:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-RU
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-SE:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-SE
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-SK:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-SK
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-TR:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-TR
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-TW:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-TW
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-UK:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-UK
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-VN:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-VN
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
+ base-images:
+ runs-on: ubuntu-latest
+ continue-on-error: true
+ strategy:
+ matrix:
+ variant:
+ - tasmota
+ - tasmota-minimal
+ - tasmota-display
+ - tasmota-ir
+ - tasmota-knx
+ - tasmota-lite
+ - tasmota-sensors
+ - tasmota-zbbridge
+ - tasmota-zigbee
+ - tasmota32
+ - tasmota32-webcam
+ - tasmota32-bluetooth
+ - tasmota32-core2
+ - tasmota32-display
+ - tasmota32-ir
+ - tasmota32-lvgl
+ - tasmota32-odroidgo
+ - tasmota32c3
+ - tasmota32solo1
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up Python
+ uses: actions/setup-python@v1
+ - name: Install dependencies
+ run: |
+ pip install -U platformio
+ - name: Run PlatformIO
+ run: platformio run -e ${{ matrix.variant }}
+ - uses: actions/upload-artifact@v2
+ with:
+ name: firmware
+ path: ./build_output
+
+ language-images:
+ runs-on: ubuntu-latest
+ continue-on-error: true
+ strategy:
+ matrix:
+ variant: [ tasmota, tasmota32 ]
+ language: [ AF, BG, BR, CN, CZ, DE, ES, FR, FY, GR, HE, HU, IT, KO, NL, PL, PT, RO, RU, SE, SK, TR, TW, UK, VN ]
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up Python
+ uses: actions/setup-python@v1
+ - name: Install dependencies
+ run: |
+ pip install -U platformio
+ - name: Run PlatformIO
+ run: platformio run -e ${{ matrix.variant }}-${{ matrix.language }}
+ - uses: actions/upload-artifact@v2
+ with:
+ name: firmware
+ path: ./build_output
Upload:
- needs: [tasmota-VN, tasmota32-VN, tasmota32-TW, tasmota32-TR]
+ needs: [base-images, language-images]
runs-on: ubuntu-latest
continue-on-error: true
steps:
From 9ff3755798be1372d19803ad48614d0cdae75085 Mon Sep 17 00:00:00 2001
From: Jason2866 <24528715+Jason2866@users.noreply.github.com>
Date: Sun, 12 Dec 2021 17:15:43 +0100
Subject: [PATCH 03/38] Use matrix to build
---
.github/workflows/Tasmota_build_master.yml | 1371 +-------------------
1 file changed, 61 insertions(+), 1310 deletions(-)
diff --git a/.github/workflows/Tasmota_build_master.yml b/.github/workflows/Tasmota_build_master.yml
index 4639fde5e..41661c136 100644
--- a/.github/workflows/Tasmota_build_master.yml
+++ b/.github/workflows/Tasmota_build_master.yml
@@ -5,1320 +5,71 @@ on:
branches: master
paths-ignore:
- '.github/**' # Ignore changes towards the .github directory
+ - '**.md' # Do no build if *.md files changes
jobs:
-
- tasmota:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-minimal:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-minimal
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-lite:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-lite
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-knx:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-knx
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-sensors:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-sensors
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-display:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-display
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-ir:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-ir
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-zbbridge:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-zbbridge
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-zigbee:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-zigbee
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-AF:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-AF
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-BG:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-BG
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-BR:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-BR
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-CN:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-CN
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-CZ:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-CZ
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-DE:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-DE
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-ES:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-ES
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-FR:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-FR
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-FY:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-FY
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-GR:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-GR
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-HE:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-HE
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-HU:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-HU
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-IT:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-IT
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-KO:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-KO
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-NL:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-NL
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-PL:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-PL
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-PT:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-PT
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-RO:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-RO
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-RU:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-RU
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-SE:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-SE
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-SK:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-SK
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-TR:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-TR
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-TW:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-TW
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-UK:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-UK
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota-VN:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota-VN
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32solo1:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32solo1
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-webcam:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-webcam
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-odroidgo:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-odroidgo
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-core2:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-core2
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-bluetooth:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-bluetooth
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-display:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-display
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-lvgl:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-lvgl
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-ir:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-ir
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
- tasmota32c3:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32c3
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
- tasmota32-AF:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-AF
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-BG:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-BG
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-BR:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-BR
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-CN:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-CN
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-CZ:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-CZ
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-DE:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-DE
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-ES:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-ES
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-FR:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-FR
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-FY:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-FY
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-GR:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-GR
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-HE:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-HE
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-HU:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-HU
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-IT:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-IT
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-KO:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-KO
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-NL:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-NL
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-PL:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-PL
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-PT:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-PT
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-RO:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-RO
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-RU:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-RU
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-SE:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-SE
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-SK:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-SK
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-TR:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-TR
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-TW:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-TW
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-UK:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-UK
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
-
- tasmota32-VN:
- runs-on: ubuntu-latest
- continue-on-error: true
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v1
- - name: Install dependencies
- run: |
- pip install -U platformio
- - name: Run PlatformIO
- run: |
- platformio run -e tasmota32-VN
- - uses: actions/upload-artifact@v2
- with:
- name: firmware
- path: ./build_output
-
+ base-images:
+ runs-on: ubuntu-latest
+ continue-on-error: true
+ strategy:
+ matrix:
+ variant:
+ - tasmota
+ - tasmota-minimal
+ - tasmota-display
+ - tasmota-ir
+ - tasmota-knx
+ - tasmota-lite
+ - tasmota-sensors
+ - tasmota-zbbridge
+ - tasmota-zigbee
+ - tasmota32
+ - tasmota32-webcam
+ - tasmota32-bluetooth
+ - tasmota32-core2
+ - tasmota32-display
+ - tasmota32-ir
+ - tasmota32-lvgl
+ - tasmota32-odroidgo
+ - tasmota32c3
+ - tasmota32solo1
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up Python
+ uses: actions/setup-python@v1
+ - name: Install dependencies
+ run: |
+ pip install -U platformio
+ - name: Run PlatformIO
+ run: platformio run -e ${{ matrix.variant }}
+ - uses: actions/upload-artifact@v2
+ with:
+ name: firmware
+ path: ./build_output
+
+ language-images:
+ runs-on: ubuntu-latest
+ continue-on-error: true
+ strategy:
+ matrix:
+ variant: [ tasmota, tasmota32 ]
+ language: [ AF, BG, BR, CN, CZ, DE, ES, FR, FY, GR, HE, HU, IT, KO, NL, PL, PT, RO, RU, SE, SK, TR, TW, UK, VN ]
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up Python
+ uses: actions/setup-python@v1
+ - name: Install dependencies
+ run: |
+ pip install -U platformio
+ - name: Run PlatformIO
+ run: platformio run -e ${{ matrix.variant }}-${{ matrix.language }}
+ - uses: actions/upload-artifact@v2
+ with:
+ name: firmware
+ path: ./build_output
Upload:
- needs: [tasmota-VN, tasmota32-VN, tasmota32-TW, tasmota32-TR]
+ needs: [base-images, language-images]
runs-on: ubuntu-latest
continue-on-error: true
steps:
From 806d87b3a9288cfa964905e117abdd50d7f18c20 Mon Sep 17 00:00:00 2001
From: Jason2866 <24528715+Jason2866@users.noreply.github.com>
Date: Sun, 12 Dec 2021 17:20:16 +0100
Subject: [PATCH 04/38] run github build only in repo arendst
---
.github/workflows/Tasmota_build_devel.yml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/.github/workflows/Tasmota_build_devel.yml b/.github/workflows/Tasmota_build_devel.yml
index bf22b6313..ac908be23 100644
--- a/.github/workflows/Tasmota_build_devel.yml
+++ b/.github/workflows/Tasmota_build_devel.yml
@@ -11,6 +11,7 @@ on:
jobs:
base-images:
runs-on: ubuntu-latest
+ if: github.repository == 'arendst/Tasmota'
continue-on-error: true
strategy:
matrix:
@@ -50,6 +51,7 @@ jobs:
language-images:
runs-on: ubuntu-latest
+ if: github.repository == 'arendst/Tasmota'
continue-on-error: true
strategy:
matrix:
From 58499b18dbd1ef30532c9d63fdb58d48416abd78 Mon Sep 17 00:00:00 2001
From: Jason2866 <24528715+Jason2866@users.noreply.github.com>
Date: Sun, 12 Dec 2021 17:21:31 +0100
Subject: [PATCH 05/38] build firmware only in repo arendst
---
.github/workflows/Tasmota_build_master.yml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/.github/workflows/Tasmota_build_master.yml b/.github/workflows/Tasmota_build_master.yml
index 41661c136..9ae940bef 100644
--- a/.github/workflows/Tasmota_build_master.yml
+++ b/.github/workflows/Tasmota_build_master.yml
@@ -10,6 +10,7 @@ on:
jobs:
base-images:
runs-on: ubuntu-latest
+ if: github.repository == 'arendst/Tasmota'
continue-on-error: true
strategy:
matrix:
@@ -49,6 +50,7 @@ jobs:
language-images:
runs-on: ubuntu-latest
+ if: github.repository == 'arendst/Tasmota'
continue-on-error: true
strategy:
matrix:
From 21cda658d66f255887787eba526eb39ad5216cf3 Mon Sep 17 00:00:00 2001
From: Jason2866 <24528715+Jason2866@users.noreply.github.com>
Date: Sun, 12 Dec 2021 17:22:37 +0100
Subject: [PATCH 06/38] CI only in arendst repo
---
.github/workflows/build_all_the_things.yml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/.github/workflows/build_all_the_things.yml b/.github/workflows/build_all_the_things.yml
index 2ffca53b7..cb41ae85e 100644
--- a/.github/workflows/build_all_the_things.yml
+++ b/.github/workflows/build_all_the_things.yml
@@ -18,6 +18,7 @@ on:
jobs:
base-images:
runs-on: ubuntu-latest
+ if: github.repository == 'arendst/Tasmota'
strategy:
matrix:
variant:
@@ -59,6 +60,7 @@ jobs:
language-images:
runs-on: ubuntu-latest
+ if: github.repository == 'arendst/Tasmota'
strategy:
matrix:
variant: [ tasmota ]
From fa7b0302a7c42fdf1e76bdfb39605f0071e02b78 Mon Sep 17 00:00:00 2001
From: Theo Arends <11044339+arendst@users.noreply.github.com>
Date: Sun, 12 Dec 2021 18:04:46 +0100
Subject: [PATCH 07/38] Trying to solve ESP32-webcam timeouts
Trying to solve ESP32-webcam timeouts on Settings save by adding delays in between file write chunks and diabling NVS writes when stream is active. (#13882)
---
tasmota/settings.ino | 2 +-
tasmota/support_esp.ino | 51 +++++++++++++++++++-------------
tasmota/xdrv_50_filesystem.ino | 18 ++++++++++-
tasmota/xdrv_81_esp32_webcam.ino | 4 +++
4 files changed, 53 insertions(+), 22 deletions(-)
diff --git a/tasmota/settings.ino b/tasmota/settings.ino
index 31dd8a87c..5dfc21424 100644
--- a/tasmota/settings.ino
+++ b/tasmota/settings.ino
@@ -694,7 +694,7 @@ void SettingsLoad(void) {
if (source) {
settings_location = 1;
if (Settings->cfg_holder == (uint16_t)CFG_HOLDER) {
- AddLog(LOG_LEVEL_NONE, PSTR(D_LOG_CONFIG "Loaded from %s, " D_COUNT " %lu"), (source)?"File":"Nvm", Settings->save_flag);
+ AddLog(LOG_LEVEL_NONE, PSTR(D_LOG_CONFIG "Loaded from %s, " D_COUNT " %lu"), (2 == source)?"File":"NVS", Settings->save_flag);
}
}
#endif // ESP32
diff --git a/tasmota/support_esp.ino b/tasmota/support_esp.ino
index 93abe9daa..81b6ee6f6 100644
--- a/tasmota/support_esp.ino
+++ b/tasmota/support_esp.ino
@@ -137,34 +137,43 @@ String GetDeviceHardware(void) {
#include
-void NvmLoad(const char *sNvsName, const char *sName, void *pSettings, unsigned nSettingsLen) {
- nvs_handle handle;
- noInterrupts();
- nvs_open(sNvsName, NVS_READONLY, &handle);
+bool NvmLoad(const char *sNvsName, const char *sName, void *pSettings, unsigned nSettingsLen) {
+ nvs_handle_t handle;
+// noInterrupts();
+ esp_err_t result = nvs_open(sNvsName, NVS_READONLY, &handle);
+ if (result != ESP_OK) {
+ AddLog(LOG_LEVEL_DEBUG, PSTR("NVS: Error %d"), result);
+ return false;
+ }
size_t size = nSettingsLen;
nvs_get_blob(handle, sName, pSettings, &size);
nvs_close(handle);
- interrupts();
+// interrupts();
+ return true;
}
void NvmSave(const char *sNvsName, const char *sName, const void *pSettings, unsigned nSettingsLen) {
- nvs_handle handle;
- noInterrupts();
- nvs_open(sNvsName, NVS_READWRITE, &handle);
+ nvs_handle_t handle;
+// noInterrupts();
+ esp_err_t result = nvs_open(sNvsName, NVS_READWRITE, &handle);
+ if (result != ESP_OK) {
+ AddLog(LOG_LEVEL_DEBUG, PSTR("NVS: Error %d"), result);
+ return;
+ }
nvs_set_blob(handle, sName, pSettings, nSettingsLen);
nvs_commit(handle);
nvs_close(handle);
- interrupts();
+// interrupts();
}
int32_t NvmErase(const char *sNvsName) {
- nvs_handle handle;
- noInterrupts();
+ nvs_handle_t handle;
+// noInterrupts();
int32_t result = nvs_open(sNvsName, NVS_READWRITE, &handle);
if (ESP_OK == result) { result = nvs_erase_all(handle); }
if (ESP_OK == result) { result = nvs_commit(handle); }
nvs_close(handle);
- interrupts();
+// interrupts();
return result;
}
@@ -208,23 +217,25 @@ void SettingsErase(uint8_t type) {
}
uint32_t SettingsRead(void *data, size_t size) {
- uint32_t source = 1;
-#ifdef USE_UFILESYS
- if (!TfsLoadFile(TASM_FILE_SETTINGS, (uint8_t*)data, size)) {
-#endif
- source = 0;
- NvmLoad("main", "Settings", data, size);
#ifdef USE_UFILESYS
+ if (TfsLoadFile(TASM_FILE_SETTINGS, (uint8_t*)data, size)) {
+ return 2;
}
#endif
- return source;
+ if (NvmLoad("main", "Settings", data, size)) {
+ return 1;
+ };
+ return 0;
}
void SettingsWrite(const void *pSettings, unsigned nSettingsLen) {
#ifdef USE_UFILESYS
TfsSaveFile(TASM_FILE_SETTINGS, (const uint8_t*)pSettings, nSettingsLen);
#endif
- NvmSave("main", "Settings", pSettings, nSettingsLen);
+#ifdef USE_WEBCAM
+ if (!WcStreamActive())
+#endif
+ NvmSave("main", "Settings", pSettings, nSettingsLen);
}
void QPCRead(void *pSettings, unsigned nSettingsLen) {
diff --git a/tasmota/xdrv_50_filesystem.ino b/tasmota/xdrv_50_filesystem.ino
index 8a0ed1d16..7150fbd85 100644
--- a/tasmota/xdrv_50_filesystem.ino
+++ b/tasmota/xdrv_50_filesystem.ino
@@ -294,7 +294,23 @@ bool TfsSaveFile(const char *fname, const uint8_t *buf, uint32_t len) {
return false;
}
- file.write(buf, len);
+// This will timeout on ESP32-webcam
+// file.write(buf, len);
+
+ uint32_t count = len / 512;
+ uint32_t chunk = len / count;
+ for (uint32_t i = 0; i < count; i++) {
+ file.write(buf + (i * chunk), chunk);
+ // do actually wait a little to allow ESP32 tasks to tick
+ // fixes task timeout in ESP32Solo1 style unicore code and webcam.
+ delay(10);
+ OsWatchLoop();
+ }
+ uint32_t left = len % count;
+ if (left) {
+ file.write(buf + (count * chunk), left);
+ }
+
file.close();
return true;
}
diff --git a/tasmota/xdrv_81_esp32_webcam.ino b/tasmota/xdrv_81_esp32_webcam.ino
index dca8ec936..273885049 100644
--- a/tasmota/xdrv_81_esp32_webcam.ino
+++ b/tasmota/xdrv_81_esp32_webcam.ino
@@ -876,6 +876,10 @@ void WcStreamControl() {
WcSetup(Settings->webcam_config.resolution);
}
+bool WcStreamActive(void) {
+ return (Wc.stream_active);
+}
+
/*********************************************************************************************/
From eb5d23131459aa3523dcc920a2e81be310323155 Mon Sep 17 00:00:00 2001
From: Barbudor
Date: Sun, 12 Dec 2021 18:46:52 +0100
Subject: [PATCH 08/38] remove topic must differ from mqttclient
---
tasmota/xdrv_02_9_mqtt.ino | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/tasmota/xdrv_02_9_mqtt.ino b/tasmota/xdrv_02_9_mqtt.ino
index a1a763b47..38f6bcd88 100644
--- a/tasmota/xdrv_02_9_mqtt.ino
+++ b/tasmota/xdrv_02_9_mqtt.ino
@@ -1405,7 +1405,6 @@ void CmndMqttClient(void) {
void CmndFullTopic(void) {
if (XdrvMailbox.data_len > 0) {
MakeValidMqtt(1, XdrvMailbox.data);
- if (!strcmp(XdrvMailbox.data, TasmotaGlobal.mqtt_client)) { SetShortcutDefault(); }
char stemp1[TOPSZ];
strlcpy(stemp1, (SC_DEFAULT == Shortcut()) ? MQTT_FULLTOPIC : XdrvMailbox.data, sizeof(stemp1));
if (strcmp(stemp1, SettingsText(SET_MQTT_FULLTOPIC))) {
@@ -1460,7 +1459,10 @@ void CmndGroupTopic(void) {
if (XdrvMailbox.data_len > 0) {
uint32_t settings_text_index = (1 == XdrvMailbox.index) ? SET_MQTT_GRP_TOPIC : SET_MQTT_GRP_TOPIC2 + XdrvMailbox.index - 2;
MakeValidMqtt(0, XdrvMailbox.data);
- if (!strcmp(XdrvMailbox.data, TasmotaGlobal.mqtt_client)) { SetShortcutDefault(); }
+ if (!strcmp(XdrvMailbox.data, TasmotaGlobal.mqtt_topic)) {
+ AddLog(LOG_LEVEL_INFO, PSTR("MQT: Error: GroupTopic must differ from Topic"));
+ SetShortcutDefault();
+ }
SettingsUpdateText(settings_text_index, (SC_CLEAR == Shortcut()) ? "" : (SC_DEFAULT == Shortcut()) ? PSTR(MQTT_GRPTOPIC) : XdrvMailbox.data);
// Eliminate duplicates, have at least one and fill from index 1
@@ -1507,7 +1509,6 @@ void CmndGroupTopic(void) {
void CmndTopic(void) {
if (!XdrvMailbox.grpflg && (XdrvMailbox.data_len > 0)) {
MakeValidMqtt(0, XdrvMailbox.data);
- if (!strcmp(XdrvMailbox.data, TasmotaGlobal.mqtt_client)) { SetShortcutDefault(); }
char stemp1[TOPSZ];
strlcpy(stemp1, (SC_DEFAULT == Shortcut()) ? MQTT_TOPIC : XdrvMailbox.data, sizeof(stemp1));
if (strcmp(stemp1, SettingsText(SET_MQTT_TOPIC))) {
@@ -1523,7 +1524,6 @@ void CmndTopic(void) {
void CmndButtonTopic(void) {
if (!XdrvMailbox.grpflg && (XdrvMailbox.data_len > 0)) {
MakeValidMqtt(0, XdrvMailbox.data);
- if (!strcmp(XdrvMailbox.data, TasmotaGlobal.mqtt_client)) { SetShortcutDefault(); }
switch (Shortcut()) {
case SC_CLEAR: SettingsUpdateText(SET_MQTT_BUTTON_TOPIC, ""); break;
case SC_DEFAULT: SettingsUpdateText(SET_MQTT_BUTTON_TOPIC, TasmotaGlobal.mqtt_topic); break;
@@ -1537,7 +1537,6 @@ void CmndButtonTopic(void) {
void CmndSwitchTopic(void) {
if (!XdrvMailbox.grpflg && (XdrvMailbox.data_len > 0)) {
MakeValidMqtt(0, XdrvMailbox.data);
- if (!strcmp(XdrvMailbox.data, TasmotaGlobal.mqtt_client)) { SetShortcutDefault(); }
switch (Shortcut()) {
case SC_CLEAR: SettingsUpdateText(SET_MQTT_SWITCH_TOPIC, ""); break;
case SC_DEFAULT: SettingsUpdateText(SET_MQTT_SWITCH_TOPIC, TasmotaGlobal.mqtt_topic); break;
From b4e9468bbbfd905e8539c0aca178d92002227c3f Mon Sep 17 00:00:00 2001
From: Stephan Hadinger
Date: Sun, 12 Dec 2021 18:56:11 +0100
Subject: [PATCH 09/38] Berry mapping step 1
---
lib/libesp32/Berry/default/be_modtab.c | 8 +
lib/libesp32/Berry/default/be_tasmotalib.c | 105 +-
lib/libesp32/Berry/default/berry_conf.h | 10 +-
.../Berry/default/embedded/Tasmota.be | 24 +-
lib/libesp32/Berry/gen.sh | 2 +
lib/libesp32/Berry/generate/be_const_strtab.h | 6 +-
.../Berry/generate/be_const_strtab_def.h | 1805 ++++++++---------
.../generate/be_fixed_be_class_tasmota.h | 155 +-
lib/libesp32/Berry/generate/be_fixed_cb.h | 18 +
lib/libesp32/Berry/src/be_exec.c | 5 +-
lib/libesp32/Berry/src/be_gc.c | 10 +-
lib/libesp32/Berry/src/be_vm.c | 6 +-
lib/libesp32/Berry/src/be_vm.h | 2 -
lib/libesp32/Berry/src/berry.h | 1 +
lib/libesp32/berry_mapping/library.json | 17 +
lib/libesp32/berry_mapping/src/be_cb_module.c | 171 ++
lib/libesp32/berry_mapping/src/be_mapping.h | 10 +
tasmota/xdrv_52_0_berry_struct.ino | 1 +
tasmota/xdrv_52_1_berry_native.ino | 114 +-
tasmota/xdrv_52_3_berry_tasmota.ino | 38 +-
tasmota/xdrv_52_9_berry.ino | 94 +-
21 files changed, 1267 insertions(+), 1335 deletions(-)
create mode 100755 lib/libesp32/Berry/gen.sh
create mode 100644 lib/libesp32/Berry/generate/be_fixed_cb.h
create mode 100644 lib/libesp32/berry_mapping/library.json
create mode 100644 lib/libesp32/berry_mapping/src/be_cb_module.c
create mode 100644 lib/libesp32/berry_mapping/src/be_mapping.h
diff --git a/lib/libesp32/Berry/default/be_modtab.c b/lib/libesp32/Berry/default/be_modtab.c
index 47db8b24e..934400bbb 100644
--- a/lib/libesp32/Berry/default/be_modtab.c
+++ b/lib/libesp32/Berry/default/be_modtab.c
@@ -23,6 +23,10 @@ be_extern_native_module(solidify);
be_extern_native_module(introspect);
be_extern_native_module(strict);
+/* Berry extensions */
+#include "be_mapping.h"
+be_extern_native_module(cb);
+
/* Tasmota specific */
be_extern_native_module(python_compat);
be_extern_native_module(re);
@@ -85,6 +89,10 @@ BERRY_LOCAL const bntvmodule* const be_module_table[] = {
#if BE_USE_STRICT_MODULE
&be_native_module(strict),
#endif
+
+ /* Berry extensions */
+ &be_native_module(cb),
+
/* user-defined modules register start */
&be_native_module(python_compat),
diff --git a/lib/libesp32/Berry/default/be_tasmotalib.c b/lib/libesp32/Berry/default/be_tasmotalib.c
index e117bae70..6539b0de3 100644
--- a/lib/libesp32/Berry/default/be_tasmotalib.c
+++ b/lib/libesp32/Berry/default/be_tasmotalib.c
@@ -16,7 +16,6 @@ extern int l_arch(bvm *vm);
extern int l_publish(bvm *vm);
extern int l_publish_result(bvm *vm);
extern int l_cmd(bvm *vm);
-extern int l_get_cb(bvm *vm);
extern int l_getoption(bvm *vm);
extern int l_millis(bvm *vm);
extern int l_timereached(bvm *vm);
@@ -384,7 +383,7 @@ be_local_closure(Tasmota_try_rule, /* name */
********************************************************************/
be_local_closure(Tasmota_gen_cb, /* name */
be_nested_proto(
- 7, /* nstack */
+ 6, /* nstack */
2, /* argc */
0, /* varg */
0, /* has upvals */
@@ -392,52 +391,18 @@ be_local_closure(Tasmota_gen_cb, /* name */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
- ( &(const bvalue[ 7]) { /* constants */
- /* K0 */ be_nested_str(_cb),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str(find),
- /* K3 */ be_nested_str(_get_cb),
- /* K4 */ be_nested_str(stop_iteration),
- /* K5 */ be_nested_str(internal_error),
- /* K6 */ be_nested_str(No_X20callback_X20available),
+ ( &(const bvalue[ 2]) { /* constants */
+ /* K0 */ be_nested_str(cb),
+ /* K1 */ be_nested_str(gen_cb),
}),
&be_const_str_gen_cb,
&be_const_str_solidified,
- ( &(const binstruction[34]) { /* code */
- 0x88080100, // 0000 GETMBR R2 R0 K0
- 0x4C0C0000, // 0001 LDNIL R3
- 0x1C080403, // 0002 EQ R2 R2 R3
- 0x780A0002, // 0003 JMPF R2 #0007
- 0x60080013, // 0004 GETGBL R2 G19
- 0x7C080000, // 0005 CALL R2 0
- 0x90020002, // 0006 SETMBR R0 K0 R2
- 0x60080010, // 0007 GETGBL R2 G16
- 0x540E0012, // 0008 LDINT R3 19
- 0x400E0203, // 0009 CONNECT R3 K1 R3
- 0x7C080200, // 000A CALL R2 1
- 0xA8020010, // 000B EXBLK 0 #001D
- 0x5C0C0400, // 000C MOVE R3 R2
- 0x7C0C0000, // 000D CALL R3 0
- 0x88100100, // 000E GETMBR R4 R0 K0
- 0x8C100902, // 000F GETMET R4 R4 K2
- 0x5C180600, // 0010 MOVE R6 R3
- 0x7C100400, // 0011 CALL R4 2
- 0x4C140000, // 0012 LDNIL R5
- 0x1C100805, // 0013 EQ R4 R4 R5
- 0x78120006, // 0014 JMPF R4 #001C
- 0x88100100, // 0015 GETMBR R4 R0 K0
- 0x98100601, // 0016 SETIDX R4 R3 R1
- 0x8C100103, // 0017 GETMET R4 R0 K3
- 0x5C180600, // 0018 MOVE R6 R3
- 0x7C100400, // 0019 CALL R4 2
- 0xA8040001, // 001A EXBLK 1 1
- 0x80040800, // 001B RET 1 R4
- 0x7001FFEE, // 001C JMP #000C
- 0x58080004, // 001D LDCONST R2 K4
- 0xAC080200, // 001E CATCH R2 1 0
- 0xB0080000, // 001F RAISE 2 R0 R0
- 0xB0060B06, // 0020 RAISE 1 K5 K6
- 0x80000000, // 0021 RET 0
+ ( &(const binstruction[ 5]) { /* code */
+ 0xA40A0000, // 0000 IMPORT R2 K0
+ 0x8C0C0501, // 0001 GETMET R3 R2 K1
+ 0x5C140200, // 0002 MOVE R5 R1
+ 0x7C0C0400, // 0003 CALL R3 2
+ 0x80040600, // 0004 RET 1 R3
})
)
);
@@ -1605,53 +1570,6 @@ be_local_closure(Tasmota_exec_rules, /* name */
/*******************************************************************/
-/********************************************************************
-** Solidified function: cb_dispatch
-********************************************************************/
-be_local_closure(Tasmota_cb_dispatch, /* name */
- be_nested_proto(
- 12, /* nstack */
- 6, /* argc */
- 0, /* varg */
- 0, /* has upvals */
- NULL, /* no upvals */
- 0, /* has sup protos */
- NULL, /* no sub protos */
- 1, /* has constants */
- ( &(const bvalue[ 3]) { /* constants */
- /* K0 */ be_nested_str(_cb),
- /* K1 */ be_const_int(0),
- /* K2 */ be_nested_str(find),
- }),
- &be_const_str_cb_dispatch,
- &be_const_str_solidified,
- ( &(const binstruction[20]) { /* code */
- 0x88180100, // 0000 GETMBR R6 R0 K0
- 0x4C1C0000, // 0001 LDNIL R7
- 0x1C180C07, // 0002 EQ R6 R6 R7
- 0x781A0000, // 0003 JMPF R6 #0005
- 0x80060200, // 0004 RET 1 K1
- 0x88180100, // 0005 GETMBR R6 R0 K0
- 0x8C180D02, // 0006 GETMET R6 R6 K2
- 0x5C200200, // 0007 MOVE R8 R1
- 0x7C180400, // 0008 CALL R6 2
- 0x4C1C0000, // 0009 LDNIL R7
- 0x201C0C07, // 000A NE R7 R6 R7
- 0x781E0006, // 000B JMPF R7 #0013
- 0x5C1C0C00, // 000C MOVE R7 R6
- 0x5C200400, // 000D MOVE R8 R2
- 0x5C240600, // 000E MOVE R9 R3
- 0x5C280800, // 000F MOVE R10 R4
- 0x5C2C0A00, // 0010 MOVE R11 R5
- 0x7C1C0800, // 0011 CALL R7 4
- 0x80040E00, // 0012 RET 1 R7
- 0x80060200, // 0013 RET 1 K1
- })
- )
-);
-/*******************************************************************/
-
-
/********************************************************************
** Solidified function: hs2rgb
********************************************************************/
@@ -2072,7 +1990,6 @@ class be_class_tasmota (scope: global, name: Tasmota) {
_timers, var
_ccmd, var
_drivers, var
- _cb, var
wire1, var
wire2, var
global, var
@@ -2094,7 +2011,6 @@ class be_class_tasmota (scope: global, name: Tasmota) {
publish, func(l_publish)
publish_result, func(l_publish_result)
_cmd, func(l_cmd)
- _get_cb, func(l_get_cb)
get_option, func(l_getoption)
millis, func(l_millis)
time_reached, func(l_timereached)
@@ -2155,7 +2071,6 @@ class be_class_tasmota (scope: global, name: Tasmota) {
hs2rgb, closure(Tasmota_hs2rgb_closure)
- cb_dispatch, closure(Tasmota_cb_dispatch_closure)
gen_cb, closure(Tasmota_gen_cb_closure)
get_light, closure(Tasmota_get_light_closure)
diff --git a/lib/libesp32/Berry/default/berry_conf.h b/lib/libesp32/Berry/default/berry_conf.h
index d2284ac31..607a9c612 100644
--- a/lib/libesp32/Berry/default/berry_conf.h
+++ b/lib/libesp32/Berry/default/berry_conf.h
@@ -65,20 +65,14 @@
**/
#define BE_DEBUG_VAR_INFO 0
-/* Macro: BE_USE_OBSERVABILITY_HOOK
- * Use the obshook function to report low-level actions.
- * Default: 0
- **/
-#define BE_USE_OBSERVABILITY_HOOK 1
-
-/* Macro: BE_USE_OBSERVABILITY_HOOK
+/* Macro: BE_USE_PERF_COUNTERS
* Use the obshook function to report low-level actions.
* Default: 0
**/
#define BE_USE_PERF_COUNTERS 1
/* Macro: BE_VM_OBSERVABILITY_SAMPLING
- * If BE_USE_OBSERVABILITY_HOOK == 1 and BE_USE_PERF_COUNTERS == 1
+ * If BE_USE_PERF_COUNTERS == 1
* then the observability hook is called regularly in the VM loop
* allowing to stop infinite loops or too-long running code.
* The value is a power of 2.
diff --git a/lib/libesp32/Berry/default/embedded/Tasmota.be b/lib/libesp32/Berry/default/embedded/Tasmota.be
index 3305d57ff..22752a47d 100644
--- a/lib/libesp32/Berry/default/embedded/Tasmota.be
+++ b/lib/libesp32/Berry/default/embedded/Tasmota.be
@@ -21,7 +21,6 @@ class Tasmota
var _timers
var _ccmd
var _drivers
- var _cb
var wire1
var wire2
var cmd_res # store the command result, nil if disables, true if capture enabled, contains return value
@@ -520,28 +519,11 @@ class Tasmota
end
end
-
- #- dispatch callback number n, with parameters v0,v1,v2,v3 -#
- def cb_dispatch(n,v0,v1,v2,v3)
- if self._cb == nil return 0 end
- var f = self._cb.find(n)
- if f != nil
- return f(v0,v1,v2,v3)
- end
- return 0
- end
-
#- generate a new C callback and record the associated Berry closure -#
def gen_cb(f)
- if self._cb == nil self._cb = {} end # create map if not already initialized
- for i:0..19
- if self._cb.find(i) == nil
- #- free slot -#
- self._cb[i] = f
- return self._get_cb(i)
- end
- end
- raise "internal_error", "No callback available"
+ # DEPRECATED
+ import cb
+ return cb.gen_cb(f)
end
#- convert hue/sat to rgb -#
diff --git a/lib/libesp32/Berry/gen.sh b/lib/libesp32/Berry/gen.sh
new file mode 100755
index 000000000..303a62c95
--- /dev/null
+++ b/lib/libesp32/Berry/gen.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+python3 tools/pycoc/main.py -o generate src default ../berry_mapping/src -c default/berry_conf.h
diff --git a/lib/libesp32/Berry/generate/be_const_strtab.h b/lib/libesp32/Berry/generate/be_const_strtab.h
index 9692c8508..50198eb8f 100644
--- a/lib/libesp32/Berry/generate/be_const_strtab.h
+++ b/lib/libesp32/Berry/generate/be_const_strtab.h
@@ -48,7 +48,6 @@ extern const bcstring be_const_str_I2C_X3A;
extern const bcstring be_const_str_LVG_X3A_X20call_X20to_X20unsupported_X20callback;
extern const bcstring be_const_str_Leds;
extern const bcstring be_const_str_MD5;
-extern const bcstring be_const_str_No_X20callback_X20available;
extern const bcstring be_const_str_None;
extern const bcstring be_const_str_OPTION_A;
extern const bcstring be_const_str_OneWire;
@@ -175,7 +174,6 @@ extern const bcstring be_const_str__archive;
extern const bcstring be_const_str__available;
extern const bcstring be_const_str__begin_transmission;
extern const bcstring be_const_str__buffer;
-extern const bcstring be_const_str__cb;
extern const bcstring be_const_str__ccmd;
extern const bcstring be_const_str__class;
extern const bcstring be_const_str__cmd;
@@ -187,7 +185,6 @@ extern const bcstring be_const_str__end_transmission;
extern const bcstring be_const_str__energy;
extern const bcstring be_const_str__error;
extern const bcstring be_const_str__filename;
-extern const bcstring be_const_str__get_cb;
extern const bcstring be_const_str__global_addr;
extern const bcstring be_const_str__global_def;
extern const bcstring be_const_str__lvgl;
@@ -250,7 +247,7 @@ extern const bcstring be_const_str_call;
extern const bcstring be_const_str_call_native;
extern const bcstring be_const_str_calldepth;
extern const bcstring be_const_str_can_show;
-extern const bcstring be_const_str_cb_dispatch;
+extern const bcstring be_const_str_cb;
extern const bcstring be_const_str_cb_do_nothing;
extern const bcstring be_const_str_cb_event_closure;
extern const bcstring be_const_str_cb_obj;
@@ -384,6 +381,7 @@ extern const bcstring be_const_str_get_bat_power;
extern const bcstring be_const_str_get_bat_voltage;
extern const bcstring be_const_str_get_battery_chargin_status;
extern const bcstring be_const_str_get_bri;
+extern const bcstring be_const_str_get_cb_list;
extern const bcstring be_const_str_get_coords;
extern const bcstring be_const_str_get_current_module_name;
extern const bcstring be_const_str_get_current_module_path;
diff --git a/lib/libesp32/Berry/generate/be_const_strtab_def.h b/lib/libesp32/Berry/generate/be_const_strtab_def.h
index 44676a35e..4c195c96b 100644
--- a/lib/libesp32/Berry/generate/be_const_strtab_def.h
+++ b/lib/libesp32/Berry/generate/be_const_strtab_def.h
@@ -1,636 +1,634 @@
-be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_True);
-be_define_const_str(_X0A, "\n", 252472541u, 0, 1, &be_const_str_i2c_enabled);
-be_define_const_str(_X20, " ", 621580159u, 0, 1, &be_const_str_add_cmd);
-be_define_const_str(_X21_X3D, "!=", 2428715011u, 0, 2, &be_const_str__X23autoexec_X2Ebe);
-be_define_const_str(_X21_X3D_X3D, "!==", 559817114u, 0, 3, &be_const_str__X2Ew);
-be_define_const_str(_X23, "#", 638357778u, 0, 1, &be_const_str_No_X20callback_X20available);
-be_define_const_str(_X23autoexec_X2Ebat, "#autoexec.bat", 3382890497u, 0, 13, NULL);
-be_define_const_str(_X23autoexec_X2Ebe, "#autoexec.be", 1181757091u, 0, 12, &be_const_str_assert);
-be_define_const_str(_X23display_X2Eini, "#display.ini", 182218220u, 0, 12, &be_const_str_code);
-be_define_const_str(_X23init_X2Ebat, "#init.bat", 3297595077u, 0, 9, &be_const_str__X2502d_X25s_X2502d);
-be_define_const_str(_X23preinit_X2Ebe, "#preinit.be", 687035716u, 0, 11, &be_const_str__timers);
-be_define_const_str(_X2502d_X25s_X2502d, "%02d%s%02d", 1587999717u, 0, 10, &be_const_str__X3D_X3C_X3E_X21);
-be_define_const_str(_X2504d_X2D_X2502d_X2D_X2502dT_X2502d_X3A_X2502d_X3A_X2502d, "%04d-%02d-%02dT%02d:%02d:%02d", 3425528601u, 0, 29, &be_const_str_get_object_from_ptr);
-be_define_const_str(_X25s_X2Eautoconf, "%s.autoconf", 3560383524u, 0, 11, &be_const_str_RES_OK);
-be_define_const_str(_X26lt_X3BError_X3A_X20apply_X20new_X20or_X20remove_X26gt_X3B, "<Error: apply new or remove>", 2855507949u, 0, 34, &be_const_str_hs2rgb);
-be_define_const_str(_X26lt_X3BNone_X26gt_X3B, "<None>", 2602165498u, 0, 12, &be_const_str__X2Fac);
-be_define_const_str(_X28_X29, "()", 685372826u, 0, 2, NULL);
-be_define_const_str(_X2B, "+", 772578730u, 0, 1, &be_const_str_lower);
-be_define_const_str(_X2C, ",", 688690635u, 0, 1, &be_const_str_SERIAL_7O1);
-be_define_const_str(_X2D_X2D_X3A_X2D_X2D, "--:--", 1370615441u, 0, 5, &be_const_str__X3Cp_X3ECurrent_X20configuration_X3A_X20_X3C_X2Fp_X3E_X3Cp_X3E_X3Cb_X3E_X25s_X3C_X2Fb_X3E_X3C_X2Fp_X3E);
-be_define_const_str(_X2E, ".", 722245873u, 0, 1, &be_const_str_search);
-be_define_const_str(_X2E_X2E, "..", 2748622605u, 0, 2, &be_const_str__debug_present);
-be_define_const_str(_X2Eautoconf, ".autoconf", 2524679088u, 0, 9, &be_const_str_false);
-be_define_const_str(_X2Ebe, ".be", 1325797348u, 0, 3, &be_const_str_Tasmota);
-be_define_const_str(_X2Ebec, ".bec", 3985273221u, 0, 4, &be_const_str_CFG_X3A_X20downloading_X20_X27_X25s_X27);
-be_define_const_str(_X2Elen, ".len", 850842136u, 0, 4, &be_const_str__X3Cselect_X20name_X3D_X27zip_X27_X3E);
-be_define_const_str(_X2Ep, ".p", 1171526419u, 0, 2, NULL);
-be_define_const_str(_X2Ep1, ".p1", 249175686u, 0, 3, &be_const_str__t);
-be_define_const_str(_X2Ep2, ".p2", 232398067u, 0, 3, &be_const_str_BRY_X3A_X20could_X20not_X20save_X20compiled_X20file_X20_X25s_X20_X28_X25s_X29);
-be_define_const_str(_X2Esize, ".size", 1965188224u, 0, 5, &be_const_str_is_first_time);
-be_define_const_str(_X2Etapp, ".tapp", 1363391594u, 0, 5, &be_const_str__X7B);
-be_define_const_str(_X2Ew, ".w", 1255414514u, 0, 2, &be_const_str_clear);
-be_define_const_str(_X2F, "/", 705468254u, 0, 1, &be_const_str_SERIAL_7O2);
-be_define_const_str(_X2F_X2Eautoconf, "/.autoconf", 2212074393u, 0, 10, &be_const_str_CFG_X3A_X20exception_X20_X27_X25s_X27_X20_X2D_X20_X27_X25s_X27);
-be_define_const_str(_X2F_X3Frst_X3D, "/?rst=", 580074707u, 0, 6, &be_const_str_SERIAL_7N2);
-be_define_const_str(_X2Fac, "/ac", 3904651978u, 0, 3, &be_const_str_WS2812);
-be_define_const_str(_X3A, ":", 1057798253u, 0, 1, &be_const_str_AudioFileSourceFS);
-be_define_const_str(_X3C, "<", 957132539u, 0, 1, &be_const_str_digital_write);
-be_define_const_str(_X3C_X2Fform_X3E_X3C_X2Fp_X3E, "
", 3546571739u, 0, 11, &be_const_str_LVG_X3A_X20call_X20to_X20unsupported_X20callback);
-be_define_const_str(_X3C_X2Fselect_X3E_X3Cp_X3E_X3C_X2Fp_X3E, "", 1863865923u, 0, 16, &be_const_str_rule);
-be_define_const_str(_X3C_X3D, "<=", 2499223986u, 0, 2, &be_const_str_set_chg_current);
-be_define_const_str(_X3Cbutton_X20name_X3D_X27reapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3ERe_X2Dapply_X20current_X20configuration_X3C_X2Fbutton_X3E, "", 3147934216u, 0, 82, &be_const_str_find_op);
-be_define_const_str(_X3Cbutton_X20name_X3D_X27zipapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3EApply_X20configuration_X3C_X2Fbutton_X3E, "", 1205771629u, 0, 72, NULL);
-be_define_const_str(_X3Cfieldset_X3E_X3Cstyle_X3E_X2Ebdis_X7Bbackground_X3A_X23888_X3B_X7D_X2Ebdis_X3Ahover_X7Bbackground_X3A_X23888_X3B_X7D_X3C_X2Fstyle_X3E, "", 2052843416u, 0, 25, &be_const_str_button_pressed);
+be_define_const_str(, "", 2166136261u, 0, 0, NULL);
+be_define_const_str(_X0A, "\n", 252472541u, 0, 1, &be_const_str_Unknown_X20command);
+be_define_const_str(_X20, " ", 621580159u, 0, 1, &be_const_str_geti);
+be_define_const_str(_X21_X3D, "!=", 2428715011u, 0, 2, &be_const_str_asstring);
+be_define_const_str(_X21_X3D_X3D, "!==", 559817114u, 0, 3, &be_const_str_type);
+be_define_const_str(_X23, "#", 638357778u, 0, 1, &be_const_str_CFG_X3A_X20no_X20_X27_X2A_X2Eautoconf_X27_X20file_X20found);
+be_define_const_str(_X23autoexec_X2Ebat, "#autoexec.bat", 3382890497u, 0, 13, &be_const_str_arg_size);
+be_define_const_str(_X23autoexec_X2Ebe, "#autoexec.be", 1181757091u, 0, 12, &be_const_str_file_X20extension_X20is_X20not_X20_X27_X2Ebe_X27_X20or_X20_X27_X2Ebec_X27);
+be_define_const_str(_X23display_X2Eini, "#display.ini", 182218220u, 0, 12, &be_const_str___lower__);
+be_define_const_str(_X23init_X2Ebat, "#init.bat", 3297595077u, 0, 9, &be_const_str_SERIAL_7O2);
+be_define_const_str(_X23preinit_X2Ebe, "#preinit.be", 687035716u, 0, 11, &be_const_str_SERIAL_8O2);
+be_define_const_str(_X2502d_X25s_X2502d, "%02d%s%02d", 1587999717u, 0, 10, &be_const_str_yield);
+be_define_const_str(_X2504d_X2D_X2502d_X2D_X2502dT_X2502d_X3A_X2502d_X3A_X2502d, "%04d-%02d-%02dT%02d:%02d:%02d", 3425528601u, 0, 29, &be_const_str__global_def);
+be_define_const_str(_X25s_X2Eautoconf, "%s.autoconf", 3560383524u, 0, 11, &be_const_str_every_second);
+be_define_const_str(_X26lt_X3BError_X3A_X20apply_X20new_X20or_X20remove_X26gt_X3B, "<Error: apply new or remove>", 2855507949u, 0, 34, &be_const_str_add_driver);
+be_define_const_str(_X26lt_X3BNone_X26gt_X3B, "<None>", 2602165498u, 0, 12, &be_const_str_rand);
+be_define_const_str(_X28_X29, "()", 685372826u, 0, 2, &be_const_str__X3Cinstance_X3A_X20_X25s_X28_X25s_X2C_X20_X25s_X2C_X20_X25s_X29);
+be_define_const_str(_X2B, "+", 772578730u, 0, 1, &be_const_str_gpio);
+be_define_const_str(_X2C, ",", 688690635u, 0, 1, &be_const_str_add_cmd);
+be_define_const_str(_X2D_X2D_X3A_X2D_X2D, "--:--", 1370615441u, 0, 5, &be_const_str_AudioOutputI2S);
+be_define_const_str(_X2E, ".", 722245873u, 0, 1, NULL);
+be_define_const_str(_X2E_X2E, "..", 2748622605u, 0, 2, &be_const_str__X2Ep2);
+be_define_const_str(_X2Eautoconf, ".autoconf", 2524679088u, 0, 9, NULL);
+be_define_const_str(_X2Ebe, ".be", 1325797348u, 0, 3, &be_const_str_sinh);
+be_define_const_str(_X2Ebec, ".bec", 3985273221u, 0, 4, &be_const_str__debug_present);
+be_define_const_str(_X2Elen, ".len", 850842136u, 0, 4, NULL);
+be_define_const_str(_X2Ep, ".p", 1171526419u, 0, 2, &be_const_str_COLOR_WHITE);
+be_define_const_str(_X2Ep1, ".p1", 249175686u, 0, 3, &be_const_str_sin);
+be_define_const_str(_X2Ep2, ".p2", 232398067u, 0, 3, &be_const_str_json_fdump_map);
+be_define_const_str(_X2Esize, ".size", 1965188224u, 0, 5, &be_const_str__X2Fac);
+be_define_const_str(_X2Etapp, ".tapp", 1363391594u, 0, 5, NULL);
+be_define_const_str(_X2Ew, ".w", 1255414514u, 0, 2, &be_const_str_member);
+be_define_const_str(_X2F, "/", 705468254u, 0, 1, &be_const_str_None);
+be_define_const_str(_X2F_X2Eautoconf, "/.autoconf", 2212074393u, 0, 10, &be_const_str_set_dc_voltage);
+be_define_const_str(_X2F_X3Frst_X3D, "/?rst=", 580074707u, 0, 6, &be_const_str_AES_GCM);
+be_define_const_str(_X2Fac, "/ac", 3904651978u, 0, 3, &be_const_str_get_current_module_path);
+be_define_const_str(_X3A, ":", 1057798253u, 0, 1, &be_const_str_json_fdump);
+be_define_const_str(_X3C, "<", 957132539u, 0, 1, NULL);
+be_define_const_str(_X3C_X2Fform_X3E_X3C_X2Fp_X3E, "", 3546571739u, 0, 11, &be_const_str_atan);
+be_define_const_str(_X3C_X2Fselect_X3E_X3Cp_X3E_X3C_X2Fp_X3E, "", 1863865923u, 0, 16, NULL);
+be_define_const_str(_X3C_X3D, "<=", 2499223986u, 0, 2, &be_const_str_HTTP_POST);
+be_define_const_str(_X3Cbutton_X20name_X3D_X27reapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3ERe_X2Dapply_X20current_X20configuration_X3C_X2Fbutton_X3E, "", 3147934216u, 0, 82, &be_const_str_Wire);
+be_define_const_str(_X3Cbutton_X20name_X3D_X27zipapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3EApply_X20configuration_X3C_X2Fbutton_X3E, "", 1205771629u, 0, 72, &be_const_str_color);
+be_define_const_str(_X3Cfieldset_X3E_X3Cstyle_X3E_X2Ebdis_X7Bbackground_X3A_X23888_X3B_X7D_X2Ebdis_X3Ahover_X7Bbackground_X3A_X23888_X3B_X7D_X3C_X2Fstyle_X3E, "", 2052843416u, 0, 25, &be_const_str_area);
be_define_const_str(_X3Cp_X3E_X3Cform_X20id_X3Dac_X20action_X3D_X27ac_X27_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20method_X3D_X27get_X27_X3E_X3Cbutton_X3E_X26_X23129668_X3B_X20Auto_X2Dconfiguration_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E, "", 452285201u, 0, 120, NULL);
-be_define_const_str(_X3Cp_X3E_X3Cform_X20id_X3Dreapply_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27_X2Fac_X27_X20method_X3D_X27post_X27_X20, "", 452285201u, 0, 120, NULL);
+be_define_const_str(_X3Cp_X3E_X3Cform_X20id_X3Dreapply_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27_X2Fac_X27_X20method_X3D_X27post_X27_X20, "", 3546571739u, 0, 11, &be_const_str_atan);
-be_define_const_str(_X3C_X2Fselect_X3E_X3Cp_X3E_X3C_X2Fp_X3E, "", 1863865923u, 0, 16, NULL);
-be_define_const_str(_X3C_X3D, "<=", 2499223986u, 0, 2, &be_const_str_HTTP_POST);
-be_define_const_str(_X3Cbutton_X20name_X3D_X27reapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3ERe_X2Dapply_X20current_X20configuration_X3C_X2Fbutton_X3E, "", 3147934216u, 0, 82, &be_const_str_Wire);
-be_define_const_str(_X3Cbutton_X20name_X3D_X27zipapply_X27_X20class_X3D_X27button_X20bgrn_X27_X3EApply_X20configuration_X3C_X2Fbutton_X3E, "", 1205771629u, 0, 72, &be_const_str_color);
-be_define_const_str(_X3Cfieldset_X3E_X3Cstyle_X3E_X2Ebdis_X7Bbackground_X3A_X23888_X3B_X7D_X2Ebdis_X3Ahover_X7Bbackground_X3A_X23888_X3B_X7D_X3C_X2Fstyle_X3E, "", 2052843416u, 0, 25, &be_const_str_area);
-be_define_const_str(_X3Cp_X3E_X3Cform_X20id_X3Dac_X20action_X3D_X27ac_X27_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20method_X3D_X27get_X27_X3E_X3Cbutton_X3E_X26_X23129668_X3B_X20Auto_X2Dconfiguration_X3C_X2Fbutton_X3E_X3C_X2Fform_X3E_X3C_X2Fp_X3E, "", 452285201u, 0, 120, NULL);
-be_define_const_str(_X3Cp_X3E_X3Cform_X20id_X3Dreapply_X20style_X3D_X27display_X3A_X20block_X3B_X27_X20action_X3D_X27_X2Fac_X27_X20method_X3D_X27post_X27_X20, " (This feature requires an internet connection)", 2719266486u, 0, 74, &be_const_str_register_obj);
-be_define_const_str(_X3Cp_X3ECurrent_X20configuration_X3A_X20_X3C_X2Fp_X3E_X3Cp_X3E_X3Cb_X3E_X25s_X3C_X2Fb_X3E_X3C_X2Fp_X3E, "Current configuration:
%s
", 4115655761u, 0, 46, &be_const_str_get_cb_list);
-be_define_const_str(_X3Cselect_X20name_X3D_X27zip_X27_X3E, "