diff --git a/.github/workflows/CI_github_ESP32.yml b/.github/workflows/CI_github_ESP32.yml index 0c2b75709..e3d26ef19 100644 --- a/.github/workflows/CI_github_ESP32.yml +++ b/.github/workflows/CI_github_ESP32.yml @@ -84,6 +84,26 @@ jobs: name: firmware path: ./build_output + tasmota32-bluetooth: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - name: Set up Python + uses: actions/setup-python@v1 + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -U platformio + platformio upgrade --dev + platformio update + - name: Run PlatformIO + run: | + platformio run -e tasmota32-bluetooth + - uses: actions/upload-artifact@v2 + with: + name: firmware + path: ./build_output + tasmota32-minimal: runs-on: ubuntu-latest steps: diff --git a/.github/workflows/Tasmota_build.yml b/.github/workflows/Tasmota_build.yml index f1647d203..a01f26253 100644 --- a/.github/workflows/Tasmota_build.yml +++ b/.github/workflows/Tasmota_build.yml @@ -824,6 +824,26 @@ jobs: path: ./build_output + tasmota32-bluetooth: + needs: tasmota_pull + runs-on: ubuntu-latest + continue-on-error: true + steps: + - uses: actions/checkout@v1 + - 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-knx: needs: tasmota_pull runs-on: ubuntu-latest @@ -1442,6 +1462,7 @@ jobs: [ ! -f ./mv_firmware/firmware/tasmota32-web*.* ] || mv ./mv_firmware/firmware/tasmota32-web*.* ./firmware/tasmota32/ [ ! -f ./mv_firmware/firmware/tasmota32-odroidgo.* ] || mv ./mv_firmware/firmware/tasmota32-odroidgo.* ./firmware/tasmota32/ [ ! -f ./mv_firmware/firmware/tasmota32-core2.* ] || mv ./mv_firmware/firmware/tasmota32-core2.* ./firmware/tasmota32/ + [ ! -f ./mv_firmware/firmware/tasmota32-bluetooth.* ] || mv ./mv_firmware/firmware/tasmota32-bluetooth.* ./firmware/tasmota32/ [ ! -f ./mv_firmware/firmware/tasmota32-knx.* ] || mv ./mv_firmware/firmware/tasmota32-knx.* ./firmware/tasmota32/ [ ! -f ./mv_firmware/firmware/tasmota32* ] || mv ./mv_firmware/firmware/tasmota32* ./firmware/tasmota32/languages/ [ ! -f ./mv_firmware/firmware/* ] || mv ./mv_firmware/firmware/* ./firmware/tasmota/languages/ diff --git a/.github/workflows/Tasmota_build_master.yml b/.github/workflows/Tasmota_build_master.yml index 87e48168f..7102cd5eb 100644 --- a/.github/workflows/Tasmota_build_master.yml +++ b/.github/workflows/Tasmota_build_master.yml @@ -824,6 +824,26 @@ jobs: path: ./build_output + tasmota32-bluetooth: + needs: tasmota_pull + runs-on: ubuntu-latest + continue-on-error: true + steps: + - uses: actions/checkout@v1 + - 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-knx: needs: tasmota_pull runs-on: ubuntu-latest @@ -1442,6 +1462,7 @@ jobs: [ ! -f ./mv_firmware/firmware/tasmota32-web*.* ] || mv ./mv_firmware/firmware/tasmota32-web*.* ./firmware/tasmota32/ [ ! -f ./mv_firmware/firmware/tasmota32-odroidgo.* ] || mv ./mv_firmware/firmware/tasmota32-odroidgo.* ./firmware/tasmota32/ [ ! -f ./mv_firmware/firmware/tasmota32-core2.* ] || mv ./mv_firmware/firmware/tasmota32-core2.* ./firmware/tasmota32/ + [ ! -f ./mv_firmware/firmware/tasmota32-bluetooth.* ] || mv ./mv_firmware/firmware/tasmota32-bluetooth.* ./firmware/tasmota32/ [ ! -f ./mv_firmware/firmware/tasmota32-knx.* ] || mv ./mv_firmware/firmware/tasmota32-knx.* ./firmware/tasmota32/ [ ! -f ./mv_firmware/firmware/tasmota32* ] || mv ./mv_firmware/firmware/tasmota32* ./firmware/tasmota32/languages/ [ ! -f ./mv_firmware/firmware/* ] || mv ./mv_firmware/firmware/* ./firmware/tasmota/languages/ diff --git a/lib/lib_display/Display_Renderer-gemu-1.0/src/font24_7seg.c b/lib/lib_display/Display_Renderer-gemu-1.0/src/font24_7seg.c new file mode 100644 index 000000000..1844fc6cf --- /dev/null +++ b/lib/lib_display/Display_Renderer-gemu-1.0/src/font24_7seg.c @@ -0,0 +1,754 @@ +/** + ****************************************************************************** + * @file font24.c + * @author MCD Application Team + * @version V1.0.0 + * @date 18-February-2014 + * @brief This file provides text font24 for STM32xx-EVAL's LCD driver. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2014 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "fonts.h" +#include + +const uint8_t Font24_Table_7seg [] PROGMEM = +{ + // @0 ' ' (17 pixels wide) + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + + // @72 '!' (17 pixels wide) + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x03,0x80,0x00, // ### + 0x03,0x80,0x00, // ### + 0x03,0x80,0x00, // ### + 0x03,0x80,0x00, // ### + 0x03,0x80,0x00, // ### + 0x03,0x80,0x00, // ### + 0x03,0x80,0x00, // ### + 0x03,0x80,0x00, // ### + 0x03,0x80,0x00, // ### + 0x01,0x00,0x00, // # + 0x01,0x00,0x00, // # + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x03,0x80,0x00, // ### + 0x03,0x80,0x00, // ### + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + + // @144 '"' (17 pixels wide) + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x0e,0x70,0x00, // ### ### + 0x0e,0x70,0x00, // ### ### + 0x0e,0x70,0x00, // ### ### + 0x04,0x20,0x00, // # # + 0x04,0x20,0x00, // # # + 0x04,0x20,0x00, // # # + 0x04,0x20,0x00, // # # + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + + // @216 '#' (17 pixels wide) + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x06,0x60,0x00, // ## ## + 0x06,0x60,0x00, // ## ## + 0x06,0x60,0x00, // ## ## + 0x06,0x60,0x00, // ## ## + 0x06,0x60,0x00, // ## ## + 0x3f,0xf8,0x00, // ########### + 0x3f,0xf8,0x00, // ########### + 0x06,0x60,0x00, // ## ## + 0x0c,0xc0,0x00, // ## ## + 0x3f,0xf8,0x00, // ########### + 0x3f,0xf8,0x00, // ########### + 0x0c,0xc0,0x00, // ## ## + 0x0c,0xc0,0x00, // ## ## + 0x0c,0xc0,0x00, // ## ## + 0x0c,0xc0,0x00, // ## ## + 0x0c,0xc0,0x00, // ## ## + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + + // @288 '$' (17 pixels wide) + 0x00,0x00,0x00, // + 0x01,0x80,0x00, // ## + 0x01,0x80,0x00, // ## + 0x07,0xb0,0x00, // #### ## + 0x0f,0xf0,0x00, // ######## + 0x18,0x70,0x00, // ## ### + 0x18,0x70,0x00, // ## ### + 0x1c,0x00,0x00, // ### + 0x0f,0x80,0x00, // ##### + 0x07,0xe0,0x00, // ###### + 0x00,0xf0,0x00, // #### + 0x18,0x30,0x00, // ## ## + 0x1c,0x30,0x00, // ### ## + 0x1c,0x70,0x00, // ### ### + 0x1f,0xe0,0x00, // ######## + 0x1b,0xc0,0x00, // ## #### + 0x01,0x80,0x00, // ## + 0x01,0x80,0x00, // ## + 0x01,0x80,0x00, // ## + 0x01,0x80,0x00, // ## + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + + // @360 '%' (17 pixels wide) + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x07,0x80,0x00, // #### + 0x0f,0xc0,0x00, // ###### + 0x1c,0xe0,0x00, // ### ### + 0x18,0x60,0x00, // ## ## + 0x18,0x60,0x00, // ## ## + 0x1c,0xe0,0x00, // ### ### + 0x0f,0xf8,0x00, // ######### + 0x07,0xe0,0x00, // ###### + 0x1f,0xf0,0x00, // ######### + 0x07,0x38,0x00, // ### ### + 0x06,0x18,0x00, // ## ## + 0x06,0x18,0x00, // ## ## + 0x07,0x38,0x00, // ### ### + 0x03,0xf0,0x00, // ###### + 0x01,0xe0,0x00, // #### + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + + // @432 '&' (17 pixels wide) + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x03,0xf0,0x00, // ###### + 0x07,0xf0,0x00, // ####### + 0x0c,0x60,0x00, // ## ## + 0x0c,0x00,0x00, // ## + 0x0c,0x00,0x00, // ## + 0x06,0x00,0x00, // ## + 0x07,0x00,0x00, // ### + 0x0f,0x9c,0x00, // ##### ### + 0x1d,0xfc,0x00, // ### ####### + 0x18,0xf0,0x00, // ## #### + 0x18,0x70,0x00, // ## ### + 0x0f,0xfc,0x00, // ########## + 0x07,0xdc,0x00, // ##### ### + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + + // @504 ''' (17 pixels wide) + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x03,0x80,0x00, // ### + 0x03,0x80,0x00, // ### + 0x03,0x80,0x00, // ### + 0x01,0x00,0x00, // # + 0x01,0x00,0x00, // # + 0x01,0x00,0x00, // # + 0x01,0x00,0x00, // # + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + + // @576 '(' (17 pixels wide) + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x18,0x00, // ## + 0x00,0x38,0x00, // ### + 0x00,0x70,0x00, // ### + 0x00,0xf0,0x00, // #### + 0x00,0xe0,0x00, // ### + 0x00,0xe0,0x00, // ### + 0x01,0xc0,0x00, // ### + 0x01,0xc0,0x00, // ### + 0x01,0xc0,0x00, // ### + 0x01,0xc0,0x00, // ### + 0x01,0xc0,0x00, // ### + 0x01,0xc0,0x00, // ### + 0x00,0xe0,0x00, // ### + 0x00,0xe0,0x00, // ### + 0x00,0x70,0x00, // ### + 0x00,0x70,0x00, // ### + 0x00,0x38,0x00, // ### + 0x00,0x18,0x00, // ## + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + + // @648 ')' (17 pixels wide) + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x18,0x00,0x00, // ## + 0x1c,0x00,0x00, // ### + 0x0e,0x00,0x00, // ### + 0x0e,0x00,0x00, // ### + 0x07,0x00,0x00, // ### + 0x07,0x00,0x00, // ### + 0x03,0x80,0x00, // ### + 0x03,0x80,0x00, // ### + 0x03,0x80,0x00, // ### + 0x03,0x80,0x00, // ### + 0x03,0x80,0x00, // ### + 0x03,0x80,0x00, // ### + 0x07,0x00,0x00, // ### + 0x07,0x00,0x00, // ### + 0x0f,0x00,0x00, // #### + 0x0e,0x00,0x00, // ### + 0x1c,0x00,0x00, // ### + 0x18,0x00,0x00, // ## + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + + // @720 '*' (17 pixels wide) + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x01,0x80,0x00, // ## + 0x01,0x80,0x00, // ## + 0x01,0x80,0x00, // ## + 0x1d,0xb8,0x00, // ### ## ### + 0x1f,0xf8,0x00, // ########## + 0x07,0xe0,0x00, // ###### + 0x03,0xc0,0x00, // #### + 0x03,0xc0,0x00, // #### + 0x06,0x60,0x00, // ## ## + 0x06,0x60,0x00, // ## ## + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + + // @792 '+' (17 pixels wide) + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x01,0x80,0x00, // ## + 0x01,0x80,0x00, // ## + 0x01,0x80,0x00, // ## + 0x01,0x80,0x00, // ## + 0x01,0x80,0x00, // ## + 0x3f,0xfc,0x00, // ############ + 0x3f,0xfc,0x00, // ############ + 0x01,0x80,0x00, // ## + 0x01,0x80,0x00, // ## + 0x01,0x80,0x00, // ## + 0x01,0x80,0x00, // ## + 0x01,0x80,0x00, // ## + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + + // @864 ',' (17 pixels wide) + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0xe0,0x00, // ### + 0x00,0xc0,0x00, // ## + 0x01,0xc0,0x00, // ### + 0x01,0x80,0x00, // ## + 0x01,0x80,0x00, // ## + 0x03,0x00,0x00, // ## + 0x03,0x00,0x00, // ## + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + + // @936 '-' (17 pixels wide) + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x1f,0xf8,0x00, // ########## + 0x1f,0xf8,0x00, // ########## + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + + // @1008 '.' (17 pixels wide) + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x03,0xc0,0x00, // #### + 0x03,0xc0,0x00, // #### + 0x03,0xc0,0x00, // #### + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + + // @1080 '/' (17 pixels wide) + 0x00,0x18,0x00, // ## + 0x00,0x18,0x00, // ## + 0x00,0x38,0x00, // ### + 0x00,0x30,0x00, // ## + 0x00,0x70,0x00, // ### + 0x00,0x60,0x00, // ## + 0x00,0x60,0x00, // ## + 0x00,0xc0,0x00, // ## + 0x00,0xc0,0x00, // ## + 0x01,0x80,0x00, // ## + 0x01,0x80,0x00, // ## + 0x03,0x00,0x00, // ## + 0x03,0x00,0x00, // ## + 0x06,0x00,0x00, // ## + 0x06,0x00,0x00, // ## + 0x0e,0x00,0x00, // ### + 0x0c,0x00,0x00, // ## + 0x1c,0x00,0x00, // ### + 0x18,0x00,0x00, // ## + 0x18,0x00,0x00, // ## + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + + // @0 ' ' (17 pixels wide) + 0x00,0x00,0x00, // + 0x07,0xfc,0x00, // ######### + 0x07,0xfc,0x00, // ######### + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x07,0xfc,0x00, // ######### + 0x07,0xfc,0x00, // ######### + 0x00,0x00,0x00, // + + // @0 ' ' (17 pixels wide) + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + + // @0 ' ' (17 pixels wide) + 0x00,0x00,0x00, // + 0x07,0xfc,0x00, // ######### + 0x07,0xfc,0x00, // ######### + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x07,0xfc,0x00, // ######### + 0x07,0xfc,0x00, // ######### + 0x18,0x00,0x00, // ## + 0x18,0x00,0x00, // ## + 0x18,0x00,0x00, // ## + 0x18,0x00,0x00, // ## + 0x18,0x00,0x00, // ## + 0x18,0x00,0x00, // ## + 0x18,0x00,0x00, // ## + 0x18,0x00,0x00, // ## + 0x07,0xfc,0x00, // ######### + 0x07,0xfc,0x00, // ######### + 0x00,0x00,0x00, // + + // @0 ' ' (17 pixels wide) + 0x00,0x00,0x00, // + 0x07,0xfc,0x00, // ######### + 0x07,0xfc,0x00, // ######### + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x07,0xfc,0x00, // ######### + 0x07,0xfc,0x00, // ######### + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x07,0xfc,0x00, // ######### + 0x07,0xfc,0x00, // ######### + 0x00,0x00,0x00, // + + // @0 ' ' (17 pixels wide) + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x07,0xfc,0x00, // ######### + 0x07,0xfc,0x00, // ######### + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + + // @0 ' ' (17 pixels wide) + 0x00,0x00,0x00, // + 0x07,0xfc,0x00, // ######### + 0x07,0xfc,0x00, // ######### + 0x18,0x00,0x00, // ## + 0x18,0x00,0x00, // ## + 0x18,0x00,0x00, // ## + 0x18,0x00,0x00, // ## + 0x18,0x00,0x00, // ## + 0x18,0x00,0x00, // ## + 0x18,0x00,0x00, // ## + 0x18,0x00,0x00, // ## + 0x07,0xfc,0x00, // ######### + 0x07,0xfc,0x00, // ######### + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x07,0xfc,0x00, // ######### + 0x07,0xfc,0x00, // ######### + 0x00,0x00,0x00, // + + // @0 ' ' (17 pixels wide) + 0x00,0x00,0x00, // + 0x07,0xfc,0x00, // ######### + 0x07,0xfc,0x00, // ######### + 0x18,0x00,0x00, // ## + 0x18,0x00,0x00, // ## + 0x18,0x00,0x00, // ## + 0x18,0x00,0x00, // ## + 0x18,0x00,0x00, // ## + 0x18,0x00,0x00, // ## + 0x18,0x00,0x00, // ## + 0x18,0x00,0x00, // ## + 0x07,0xfc,0x00, // ######### + 0x07,0xfc,0x00, // ######### + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x0f,0xfc,0x00, // ########## + 0x0f,0xfc,0x00, // ########## + 0x00,0x00,0x00, // + + // @0 ' ' (17 pixels wide) + 0x00,0x00,0x00, // + 0x0f,0xfc,0x00, // ########## + 0x0f,0xfc,0x00, // ########## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + + // @0 ' ' (17 pixels wide) + 0x00,0x00,0x00, // + 0x07,0xfc,0x00, // ######### + 0x07,0xfc,0x00, // ######### + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x07,0xfc,0x00, // ######### + 0x07,0xfc,0x00, // ######### + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x07,0xfc,0x00, // ######### + 0x07,0xfc,0x00, // ######### + 0x00,0x00,0x00, // + + // @0 ' ' (17 pixels wide) + 0x00,0x00,0x00, // + 0x07,0xfc,0x00, // ######### + 0x07,0xfc,0x00, // ######### + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x18,0x03,0x00, // ## ## + 0x07,0xfc,0x00, // ######### + 0x07,0xfc,0x00, // ######### + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x03,0x00, // ## + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + + // @1872 ':' (17 pixels wide) + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0xf0,0x00, // #### + 0x00,0xf0,0x00, // #### + 0x00,0xf0,0x00, // #### + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0xf0,0x00, // #### + 0x00,0xf0,0x00, // #### + 0x00,0xf0,0x00, // #### + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00, // + 0x00,0x00,0x00 // +}; + +sFONT Font24_7seg = { + Font24_Table_7seg, + 17, /* Width */ + 24, /* Height */ +}; + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/lib/lib_display/Display_Renderer-gemu-1.0/src/fonts.h b/lib/lib_display/Display_Renderer-gemu-1.0/src/fonts.h index a19c1bedc..e7a709b74 100644 --- a/lib/lib_display/Display_Renderer-gemu-1.0/src/fonts.h +++ b/lib/lib_display/Display_Renderer-gemu-1.0/src/fonts.h @@ -51,8 +51,6 @@ /* Includes ------------------------------------------------------------------*/ #include -#define USE_TINY_FONT - typedef struct _tFont { const uint8_t *table; @@ -66,6 +64,7 @@ extern sFONT Font20; extern sFONT Font16; extern sFONT Font12; extern sFONT Font8; +extern sFONT Font24_7seg; #ifdef __cplusplus } diff --git a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp index 31b62f1e2..c05faee13 100644 --- a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp +++ b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp @@ -31,10 +31,7 @@ //#define USE_ALL_EPD_FONTS //#define USE_GFX_FONTS #define USE_TINY_FONT - -#ifdef ESP32 -#define USE_ICON_FONT -#endif +#define USE_7SEG_FONT uint8_t wr_redir=0; @@ -247,6 +244,11 @@ void Renderer::setTextFont(uint8_t f) { selected_font = &Font24; #endif break; + case 4: +#ifdef USE_7SEG_FONT + selected_font = &Font24_7seg; + break; +#endif default: selected_font = &Font12; break; diff --git a/platformio_override_sample.ini b/platformio_override_sample.ini index 32a57fbdf..9b7ddfa53 100644 --- a/platformio_override_sample.ini +++ b/platformio_override_sample.ini @@ -27,6 +27,7 @@ default_envs = ; tasmota-zbbridge ; tasmota-ir ; tasmota32 +; tasmota32-bluetooth ; tasmota32-webcam ; tasmota32-minimal ; tasmota32-lite diff --git a/platformio_tasmota_env32.ini b/platformio_tasmota_env32.ini index 786b8c6cb..d0b4e97c3 100644 --- a/platformio_tasmota_env32.ini +++ b/platformio_tasmota_env32.ini @@ -58,6 +58,11 @@ board_build.partitions = esp32_partition_app1984k_spiffs12M.csv build_flags = ${common32.build_flags} -DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue -DFIRMWARE_M5STACK_CORE2 lib_extra_dirs = lib/libesp32, lib/lib_basic, lib/lib_i2c, lib/lib_rf, lib/lib_div, lib/lib_ssl, lib/lib_display, lib/lib_audio +[env:tasmota32-bluetooth] +extends = env:tasmota32 +build_flags = ${common32.build_flags} -DFIRMWARE_BLUETOOTH +lib_extra_dirs = lib/libesp32, lib/lib_basic, lib/lib_i2c, lib/lib_ssl + [env:tasmota32-minimal] extends = env:tasmota32 build_flags = ${common32.build_flags} -DFIRMWARE_MINIMAL diff --git a/tasmota/tasmota_configurations_ESP32.h b/tasmota/tasmota_configurations_ESP32.h index 431b3381f..951d63e41 100644 --- a/tasmota/tasmota_configurations_ESP32.h +++ b/tasmota/tasmota_configurations_ESP32.h @@ -117,6 +117,29 @@ #endif // USE_SCRIPT #endif // FIRMWARE_M5STACK_CORE2 +/*********************************************************************************************\ + * [tasmota32-bluetooth.bin] + * Provide an image with BLE support +\*********************************************************************************************/ + +#ifdef FIRMWARE_BLUETOOTH + +#undef CODE_IMAGE_STR +#define CODE_IMAGE_STR "bluetooth" + +#undef MODULE +#define MODULE WEMOS // [Module] Select default module from tasmota_template.h +#undef FALLBACK_MODULE +#define FALLBACK_MODULE WEMOS // [Module2] Select default module on fast reboot where USER_MODULE is user template + +#define USE_UFILESYS +#define USE_SDCARD + #define GUI_TRASH_FILE +#define USE_ADC +#define USE_BLE_ESP32 // Enable new BLE driver +#define USE_MI_ESP32 // (ESP32 only) Add support for ESP32 as a BLE-bridge (+9k2 mem, +292k flash) +#endif // FIRMWARE_BLUETOOTH + #endif // ESP32 #endif // _TASMOTA_CONFIGURATIONS_ESP32_H_ diff --git a/tasmota/tasmota_template.h b/tasmota/tasmota_template.h index 98567ca42..7b4fc3ae3 100644 --- a/tasmota/tasmota_template.h +++ b/tasmota/tasmota_template.h @@ -2379,6 +2379,7 @@ const uint8_t kModuleNiceList[] PROGMEM = { #endif // USE_M5STACK_CORE2 }; +// !!! Update this list in the same order as kModuleNiceList !!! const char kModuleNames[] PROGMEM = "ESP32-DevKit|" #ifdef USE_WEBCAM @@ -2401,6 +2402,7 @@ const char kModuleNames[] PROGMEM = #endif // USE_M5STACK_CORE2 ; +// !!! Update this list in the same order as SupportedModules !!! const mytmplt kModules[] PROGMEM = { { // WEMOS - Espressif ESP32-DevKitC - Any ESP32 device like WeMos and NodeMCU hardware (ESP32) AGPIO(GPIO_USER), // 0 (I)O GPIO0, ADC2_CH1, TOUCH1, RTC_GPIO11, CLK_OUT1, EMAC_TX_CLK diff --git a/tasmota/xdrv_04_light.ino b/tasmota/xdrv_04_light.ino index 2d8c2ec5b..395fae4b5 100644 --- a/tasmota/xdrv_04_light.ino +++ b/tasmota/xdrv_04_light.ino @@ -2828,58 +2828,62 @@ void CmndRgbwwTable(void) void CmndFade(void) { - // Fade - Show current Fade state - // Fade 0 - Turn Fade Off - // Fade On - Turn Fade On - // Fade Toggle - Toggle Fade state - switch (XdrvMailbox.payload) { - case 0: // Off - case 1: // On - Settings.light_fade = XdrvMailbox.payload; - break; - case 2: // Toggle - Settings.light_fade ^= 1; - break; + if (2 == XdrvMailbox.index) { + // Home Assistant backwards compatibility, can be removed mid 2021 + } else { + // Fade - Show current Fade state + // Fade 0 - Turn Fade Off + // Fade On - Turn Fade On + // Fade Toggle - Toggle Fade state + switch (XdrvMailbox.payload) { + case 0: // Off + case 1: // On + Settings.light_fade = XdrvMailbox.payload; + break; + case 2: // Toggle + Settings.light_fade ^= 1; + break; + } + #ifdef USE_DEVICE_GROUPS + if (XdrvMailbox.payload >= 0 && XdrvMailbox.payload <= 2) SendDeviceGroupMessage(Light.device, DGR_MSGTYP_UPDATE, DGR_ITEM_LIGHT_FADE, Settings.light_fade); + #endif // USE_DEVICE_GROUPS + if (!Settings.light_fade) { Light.fade_running = false; } } -#ifdef USE_DEVICE_GROUPS - if (XdrvMailbox.payload >= 0 && XdrvMailbox.payload <= 2) SendDeviceGroupMessage(Light.device, DGR_MSGTYP_UPDATE, DGR_ITEM_LIGHT_FADE, Settings.light_fade); -#endif // USE_DEVICE_GROUPS - if (!Settings.light_fade) { Light.fade_running = false; } ResponseCmndStateText(Settings.light_fade); } void CmndSpeed(void) { - if (XdrvMailbox.index == 2) { + if (2 == XdrvMailbox.index) { if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 40)) { Light.fade_once_enabled = true; - Light.fade_once_value = XdrvMailbox.payload > 0; + Light.fade_once_value = (XdrvMailbox.payload > 0); Light.speed_once_enabled = true; Light.speed_once_value = XdrvMailbox.payload; if (!Light.fade_once_value) { Light.fade_running = false; } } - return; - } - - // Speed 1 - Fast - // Speed 40 - Very slow - // Speed + - Increment Speed - // Speed - - Decrement Speed - if (1 == XdrvMailbox.data_len) { - if (('+' == XdrvMailbox.data[0]) && (Settings.light_speed > 1)) { - XdrvMailbox.payload = Settings.light_speed - 1; + ResponseCmndNumber(Light.speed_once_value); + } else { + // Speed 1 - Fast + // Speed 40 - Very slow + // Speed + - Increment Speed + // Speed - - Decrement Speed + if (1 == XdrvMailbox.data_len) { + if (('+' == XdrvMailbox.data[0]) && (Settings.light_speed > 1)) { + XdrvMailbox.payload = Settings.light_speed - 1; + } + else if (('-' == XdrvMailbox.data[0]) && (Settings.light_speed < 40)) { + XdrvMailbox.payload = Settings.light_speed + 1; + } } - else if (('-' == XdrvMailbox.data[0]) && (Settings.light_speed < 40)) { - XdrvMailbox.payload = Settings.light_speed + 1; - } - } - if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload <= 40)) { - Settings.light_speed = XdrvMailbox.payload; + if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload <= 40)) { + Settings.light_speed = XdrvMailbox.payload; #ifdef USE_DEVICE_GROUPS - SendDeviceGroupMessage(Light.device, DGR_MSGTYP_UPDATE, DGR_ITEM_LIGHT_SPEED, Settings.light_speed); + SendDeviceGroupMessage(Light.device, DGR_MSGTYP_UPDATE, DGR_ITEM_LIGHT_SPEED, Settings.light_speed); #endif // USE_DEVICE_GROUPS + } + ResponseCmndNumber(Settings.light_speed); } - ResponseCmndNumber(Settings.light_speed); } void CmndWakeupDuration(void) diff --git a/tasmota/xdrv_10_scripter.ino b/tasmota/xdrv_10_scripter.ino index dc5f74b50..3022bfb20 100755 --- a/tasmota/xdrv_10_scripter.ino +++ b/tasmota/xdrv_10_scripter.ino @@ -4317,6 +4317,23 @@ int16_t Run_script_sub(const char *type, int8_t tlen, struct GVARS *gv) { WSContentFlush(); goto next_line; } + else if (!strncmp(lp, "rapp", 3)) { + lp+=4; + // skip one space after cmd + char tmp[256]; + Replace_Cmd_Vars(lp ,1 , tmp, sizeof(tmp)); + ResponseAppend_P(PSTR("%s"), tmp); + goto next_line; + } +#ifdef USE_SENDMAIL + else if (!strncmp(lp, "sm", 2)) { + lp+=3; + char tmp[256]; + Replace_Cmd_Vars(lp ,1 , tmp, sizeof(tmp)); + SendMail(tmp); + goto next_line; + } +#endif else if (!strncmp(lp,"=>",2) || !strncmp(lp,"->",2) || !strncmp(lp,"+>",2) || !strncmp(lp,"print",5)) { // execute cmd uint8_t sflag = 0,pflg = 0,svmqtt,swll; @@ -7192,8 +7209,13 @@ void ScriptJsonAppend(void) { } if (*lp!=';') { // send this line to mqtt - Replace_Cmd_Vars(lp, 1, tmp, sizeof(tmp)); - ResponseAppend_P(PSTR("%s"), tmp); + if (!strncmp(lp, "%=#", 3)) { + // subroutine + lp = scripter_sub(lp + 1, 0); + } else { + Replace_Cmd_Vars(lp, 1, tmp, sizeof(tmp)); + ResponseAppend_P(PSTR("%s"), tmp); + } } if (*lp==SCRIPT_EOL) { lp++; diff --git a/tasmota/xdrv_16_tuyamcu.ino b/tasmota/xdrv_16_tuyamcu.ino index 5f94e576d..8f4d8e8d8 100644 --- a/tasmota/xdrv_16_tuyamcu.ino +++ b/tasmota/xdrv_16_tuyamcu.ino @@ -318,6 +318,24 @@ int StrCmpNoCase(char const *Str1, char const *Str2) // Compare case sensistive } } +float TuyaAdjustedTemperature(uint16_t packetValue, uint8_t res) +{ + switch (res) + { + case 1: + return (float)packetValue / 10.0; + break; + case 2: + return (float)packetValue / 100.0; + break; + case 3: + return (float)packetValue / 1000.0; + break; + default: + return (float)packetValue; + break; + } +} /*********************************************************************************************\ * Internal Functions \*********************************************************************************************/ @@ -732,7 +750,7 @@ void TuyaProcessStatePacket(void) { } else { res = Settings.flag2.temperature_resolution; } GetTextIndexed(sname, sizeof(sname), (fnId-71), kTuyaSensors); ResponseClear(); // Clear retained message - Response_P(PSTR("{\"TuyaSNS\":{\"%s\":%s}}"), sname, dtostrfd(packetValue, res, tempval)); // sensor update is just on change + Response_P(PSTR("{\"TuyaSNS\":{\"%s\":%s}}"), sname, dtostrfd(TuyaAdjustedTemperature(packetValue, res), res, tempval)); // sensor update is just on change MqttPublishPrefixTopicRulesProcess_P(TELE, PSTR(D_CMND_SENSOR)); } } @@ -1295,7 +1313,7 @@ void TuyaSensorsShow(bool json) GetTextIndexed(sname, sizeof(sname), (sensor-71), kTuyaSensors); ResponseAppend_P(PSTR("\"%s\":%s"), sname, - (Tuya.SensorsValid[sensor-71] ? dtostrfd(Tuya.Sensors[sensor-71], res, tempval) : PSTR("null"))); + (Tuya.SensorsValid[sensor-71] ? dtostrfd(TuyaAdjustedTemperature(Tuya.Sensors[sensor-71], res), res, tempval) : PSTR("null"))); added = true; } #ifdef USE_WEBSERVER @@ -1303,11 +1321,11 @@ void TuyaSensorsShow(bool json) if (TuyaGetDpId(sensor) != 0) { switch (sensor) { case 71: - WSContentSend_Temp("", Tuya.Sensors[0]); + WSContentSend_Temp("", TuyaAdjustedTemperature(Tuya.Sensors[0], Settings.flag2.temperature_resolution)); break; case 72: WSContentSend_PD(PSTR("{s}" D_TEMPERATURE " Set{m}%s " D_UNIT_DEGREE "%c{e}"), - dtostrfd(Tuya.Sensors[1], Settings.flag2.temperature_resolution, tempval), TempUnit()); + dtostrfd(TuyaAdjustedTemperature(Tuya.Sensors[1], Settings.flag2.temperature_resolution), Settings.flag2.temperature_resolution, tempval), TempUnit()); break; case 73: WSContentSend_PD(HTTP_SNS_HUM, "", dtostrfd(Tuya.Sensors[2], Settings.flag2.temperature_resolution, tempval)); diff --git a/tasmota/xsns_53_sml.ino b/tasmota/xsns_53_sml.ino index 84b7643fa..878001ed4 100755 --- a/tasmota/xsns_53_sml.ino +++ b/tasmota/xsns_53_sml.ino @@ -1419,9 +1419,8 @@ void SML_Decode(uint8_t index) { } } else { // compare value - uint8_t found=1, use_uval = 1; - uint32_t ebus_uval=99; - float ebus_dval; + uint8_t found=1; + double ebus_dval=99; float mbus_dval=99; while (*mp!='@') { if (meter_desc_p[mindex].type=='o' || meter_desc_p[mindex].type=='c') { @@ -1445,19 +1444,18 @@ void SML_Decode(uint8_t index) { cp++; } else if (!strncmp(mp,"UUuuUUuu",8)) { uint32_t val= (cp[0]<<24)|(cp[1]<<16)|(cp[2]<<8)|(cp[3]<<0); - ebus_uval=val; + ebus_dval=val; mbus_dval=val; mp+=8; cp+=4; } else if (*mp=='U' && *(mp+1)=='U' && *(mp+2)=='u' && *(mp+3)=='u'){ uint16_t val = cp[1]|(cp[0]<<8); mbus_dval=val; - ebus_uval=val; + ebus_dval=val; mp+=4; cp+=2; } else if (!strncmp(mp,"SSssSSss",8)) { int32_t val= (cp[0]<<24)|(cp[1]<<16)|(cp[2]<<8)|(cp[3]<<0); - use_uval = 0; ebus_dval=val; mbus_dval=val; mp+=8; @@ -1465,25 +1463,23 @@ void SML_Decode(uint8_t index) { } else if (*mp=='u' && *(mp+1)=='u' && *(mp+2)=='U' && *(mp+3)=='U'){ uint16_t val = cp[0]|(cp[1]<<8); mbus_dval=val; - ebus_uval=val; + ebus_dval=val; mp+=4; cp+=2; } else if (*mp=='u' && *(mp+1)=='u') { uint8_t val = *cp++; mbus_dval=val; - ebus_uval=val; + ebus_dval=val; mp+=2; } else if (*mp=='s' && *(mp+1)=='s' && *(mp+2)=='S' && *(mp+3)=='S') { int16_t val = *cp|(*(cp+1)<<8); mbus_dval=val; - use_uval = 0; ebus_dval=val; mp+=4; cp+=2; } else if (*mp=='S' && *(mp+1)=='S' && *(mp+2)=='s' && *(mp+3)=='s') { int16_t val = cp[1]|(cp[0]<<8); mbus_dval=val; - use_uval = 0; ebus_dval=val; mp+=4; cp+=2; @@ -1491,14 +1487,12 @@ void SML_Decode(uint8_t index) { else if (*mp=='s' && *(mp+1)=='s') { int8_t val = *cp++; mbus_dval=val; - use_uval = 0; ebus_dval=val; mp+=2; } else if (!strncmp(mp,"ffffffff",8)) { uint32_t val= (cp[0]<<24)|(cp[1]<<16)|(cp[2]<<8)|(cp[3]<<0); float *fp=(float*)&val; - use_uval = 0; ebus_dval=*fp; mbus_dval=*fp; mp+=8; @@ -1508,7 +1502,6 @@ void SML_Decode(uint8_t index) { // reverse word float uint32_t val= (cp[1]<<0)|(cp[0]<<8)|(cp[3]<<16)|(cp[2]<<24); float *fp=(float*)&val; - use_uval = 0; ebus_dval=*fp; mbus_dval=*fp; mp+=8; @@ -1588,9 +1581,9 @@ void SML_Decode(uint8_t index) { // ebus pzem or mbus or raw if (*mp=='b') { mp++; - uint8_t shift=*mp&7; - ebus_uval>>=shift; - ebus_uval&=1; + uint8_t shift = *mp&7; + ebus_dval = (uint32_t)ebus_dval>>shift; + ebus_dval = (uint32_t)ebus_dval&1; mp+=2; } if (*mp=='i') { @@ -1613,8 +1606,6 @@ void SML_Decode(uint8_t index) { uint8_t crc = SML_PzemCrc(&smltbuf[mindex][0],6); if (crc!=smltbuf[mindex][6]) goto nextsect; dval=mbus_dval; - } else if (use_uval) { - dval=ebus_uval; } else { dval=ebus_dval; } diff --git a/tasmota/xsns_78_ezo.ino b/tasmota/xsns_78_ezo.ino index a33ad9cdc..d1e27fc01 100644 --- a/tasmota/xsns_78_ezo.ino +++ b/tasmota/xsns_78_ezo.ino @@ -53,7 +53,7 @@ struct EZOStruct { { // Transmit our command verbatim Wire.beginTransmission(addr); - Wire.write(cmd, len); + Wire.write((uint8_t*)cmd, len); if (Wire.endTransmission() != 0) { return; }