Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 1 addition & 118 deletions .github/workflows/workflow.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -333,123 +333,6 @@ jobs:
output/${{ needs.refs.outputs.version }}${{ matrix.variant != 'default' && '_' || '' }}${{ matrix.variant != 'default' && matrix.variant || '' }}/${{ matrix.platform }}_${{ needs.refs.outputs.version }}${{ matrix.variant != 'default' && '_' || '' }}${{ matrix.variant != 'default' && matrix.variant || '' }}_OTA.bin.xz.ota
if-no-files-found: warn

build_idf:
name: Build IDF
needs: refs
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
include:
- platform: OpenESP32C2
variant: 2M
version: v5.5.2
sdk: esp-idf
- platform: OpenESP32C3
variant: 2M
version: v5.5.2
sdk: esp-idf

- platform: OpenESP32
variant: 4M
version: v5.5.2
sdk: esp-idf
- platform: OpenESP32C2
variant: 4M
version: v5.5.2
sdk: esp-idf
- platform: OpenESP32C3
variant: 4M
version: v5.5.2
sdk: esp-idf
- platform: OpenESP32C6
variant: 4M
version: v5.5.2
sdk: esp-idf
- platform: OpenESP32S3
variant: 4M
version: v5.5.2
sdk: esp-idf
- platform: OpenESP32S2
variant: 4M
version: v5.5.2
sdk: esp-idf
- platform: OpenESP32C5
variant: 4M
version: v5.5.2
sdk: esp-idf
- platform: OpenESP32C61
variant: 4M
version: v5.5.2
sdk: esp-idf

- platform: OpenESP8266
variant: default
version: v3.4
sdk: OpenESP8266
steps:
- name: Source checkout
uses: actions/checkout@v4
- name: ESP-IDF checkout
if: ${{ matrix.platform != 'OpenESP8266' }}
uses: actions/checkout@v4
with:
repository: espressif/esp-idf
path: sdk/esp-idf
ref: ${{ matrix.version }}
submodules: recursive

- name: OpenESP8266 checkout
if: ${{ matrix.platform == 'OpenESP8266' }}
uses: actions/checkout@v4
with:
repository: NonPIayerCharacter/OpenESP8266
path: sdk/OpenESP8266
ref: obk
fetch-tags: true
fetch-depth: '10'
submodules: recursive

- uses: actions/setup-python@v5
id: pysetup
with:
python-version: '3.10'
architecture: 'x64'
cache: 'pip'
- name: Install dependencies
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: cmake
version: 1.0
- name: Cache toolchain
id: cache-toolchain
uses: actions/cache@v4
with:
path: ~/.espressif # cache whole folder, not just dist
key: ${{ matrix.sdk }}_toolchain_${{ matrix.version }}_${{ steps.pysetup.outputs.python-version }}
- name: Get toolchain
if: steps.cache-toolchain.outputs.cache-hit != 'true'
run: |
cd sdk/${{ matrix.sdk }}
./install.sh
- name: Run make
run: |
cd sdk/${{ matrix.sdk }}
. ./export.sh
. ./add_path.sh
cd ../..
make APP_VERSION=${{ needs.refs.outputs.version }}${{ matrix.variant != 'default' && '_' || '' }}${{ matrix.variant != 'default' && matrix.variant || '' }} APP_NAME=${{ matrix.platform }} VARIANT="${{ matrix.variant }}" ${{ matrix.platform }}
- name: Save build assets
uses: actions/upload-artifact@v4
with:
name: ${{ env.APP_NAME }}_${{ needs.refs.outputs.version }}_${{ matrix.platform }}${{ matrix.variant != 'default' && '_' || '' }}${{ matrix.variant != 'default' && matrix.variant || '' }}
path: |
output/${{ needs.refs.outputs.version }}${{ matrix.variant != 'default' && '_' || '' }}${{ matrix.variant != 'default' && matrix.variant || '' }}/${{ matrix.platform }}_${{ needs.refs.outputs.version }}${{ matrix.variant != 'default' && '_' || '' }}${{ matrix.variant != 'default' && matrix.variant || '' }}.img
output/${{ needs.refs.outputs.version }}${{ matrix.variant != 'default' && '_' || '' }}${{ matrix.variant != 'default' && matrix.variant || '' }}/${{ matrix.platform }}_${{ needs.refs.outputs.version }}${{ matrix.variant != 'default' && '_' || '' }}${{ matrix.variant != 'default' && matrix.variant || '' }}.factory.bin
output/${{ needs.refs.outputs.version }}${{ matrix.variant != 'default' && '_' || '' }}${{ matrix.variant != 'default' && matrix.variant || '' }}/${{ matrix.platform }}_2MB_${{ needs.refs.outputs.version }}${{ matrix.variant != 'default' && '_' || '' }}${{ matrix.variant != 'default' && matrix.variant || '' }}.factory.bin
output/${{ needs.refs.outputs.version }}${{ matrix.variant != 'default' && '_' || '' }}${{ matrix.variant != 'default' && matrix.variant || '' }}/${{ matrix.platform }}_1MB_${{ needs.refs.outputs.version }}${{ matrix.variant != 'default' && '_' || '' }}${{ matrix.variant != 'default' && matrix.variant || '' }}.factory.bin
if-no-files-found: warn

build_txw81x:
name: Build TXW81X
needs: refs
Expand Down Expand Up @@ -486,7 +369,7 @@ jobs:
merge:
name: Merge Artifacts
runs-on: ubuntu-22.04
needs: [refs, build, build2, build_idf, build_txw81x]
needs: [refs, build, build2, build_txw81x]
#if: always() && needs.refs.outputs.new_release == 'true' && (github.ref == 'refs/heads/main' || github.ref_name == 'alpha')
steps:
- name: Merge Artifacts
Expand Down
13 changes: 9 additions & 4 deletions src/driver/drv_tuyaMCU.c
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ TuyaMCU version 0, aka low power protocol, documented here:
#define TUYA_CMD_QUERY_STATE 0x08
#define TUYA_CMD_SET_TIME 0x1C
#define TUYA_CMD_WEATHERDATA 0x21
#define TUYA_CMD_C83_STATE 0x22
#define TUYA_CMD_SET_RSSI 0x24
#define TUYA_CMD_NETWORK_STATUS 0x2B
#define TUYA_CMD_REPORT_STATUS_RECORD_TYPE 0x34
Expand Down Expand Up @@ -131,6 +132,8 @@ const char* TuyaMCU_GetCommandTypeLabel(int t) {
return "SetTime";
if (t == TUYA_CMD_WEATHERDATA)
return "WeatherData";
if (t == TUYA_CMD_C83_STATE)
return "State";
if (t == TUYA_CMD_NETWORK_STATUS)
return "NetworkStatus";
if (t == TUYA_CMD_SET_RSSI)
Expand Down Expand Up @@ -2117,18 +2120,20 @@ void TuyaMCU_ProcessIncoming(const byte* data, int len) {
// added for https://www.elektroda.com/rtvforum/viewtopic.php?p=21095905#21095905
TuyaMCU_SendCommandWithData(0x04, 0, 0);
break;
case 0x22:
case TUYA_CMD_C83_STATE:
// 4.6.2026: in Wifi/Zigbee TH-sensors the state states are sent from tuyamcu via command 0x22
{
TuyaMCU_ParseStateMessage(data + 6, len - 6);

if (version >= 3) {
state_updated = true;
g_sendQueryStatePackets = 0;
}
byte data23[1] = { 1 };
addLogAdv(LOG_INFO, LOG_FEATURE_TUYAMCU, "ProcessIncoming: 0x22 replying");
// For example, the module returns 55 aa 00 23 00 01 01 24
TuyaMCU_SendCommandWithData(0x23, data23, 1);
}
break;


case TUYA_CMD_STATE:
TuyaMCU_ParseStateMessage(data + 6, len - 6);
state_updated = true;
Expand Down