Skip to content

Commit 89b6f5a

Browse files
author
Norbert Richter
committed
Merge branch 'development'
2 parents d90dfa1 + 439c8a6 commit 89b6f5a

File tree

4 files changed

+48
-15
lines changed

4 files changed

+48
-15
lines changed

.github/workflows/build_assets.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ jobs:
5454
- name: Setup Python
5555
uses: actions/setup-python@v5
5656
with:
57-
python-version: '3.10'
57+
python-version: '3.12'
5858
# Install pip and pyinstaller
5959
- name: Install dependencies
6060
run: |

.github/workflows/publish.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ jobs:
2222
- name: Set up Python
2323
uses: actions/setup-python@v5
2424
with:
25-
python-version: '3.10'
25+
python-version: '3.12'
2626
- name: Install dependencies
2727
run: |
2828
python -m pip install --upgrade pip
29-
pip install build wheel
29+
pip install build wheel setuptools
3030
pip install -r requirements.txt
3131
- name: Package
3232
run: make build-pypi

README.md

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Convert, backup and restore configuration data of devices flashed with [Tasmota
66
<img src="https://github.com/tasmota/decode-config/blob/master/media/pic/decode-config.png" alt="Overview" title="decode-config Overview" width="600">
77

88
<!-- markdownlint-disable MD033 -->
9-
[![master](https://img.shields.io/badge/master-v14.4.1.0-blue.svg)](https://github.com/tasmota/decode-config/tree/master)
9+
[![master](https://img.shields.io/badge/master-v14.5.0.0-blue.svg)](https://github.com/tasmota/decode-config/tree/master)
1010
[![GitHub download](https://img.shields.io/github/downloads/tasmota/decode-config/total.svg)](https://github.com/tasmota/decode-config/releases/latest)
1111
[![PyPI version](https://badge.fury.io/py/decode-config.svg)](https://badge.fury.io/py/decode-config)
1212
![PyPI downloads](https://img.shields.io/pypi/dm/decode-config?label=pypi%20downloads)
@@ -43,7 +43,7 @@ Comparing backup files created by **decode-config** and [.dmp](#dmp-format) file
4343
Using the latest development version of decode-config is only necessary if you also use the latest development version of Tasmota.
4444

4545
<!-- markdownlint-disable MD033 -->
46-
[![development version](https://img.shields.io/badge/development-v14.4.1.0-blue.svg)](https://github.com/tasmota/decode-config/tree/development)
46+
[![development version](https://img.shields.io/badge/development-v14.5.0.0-blue.svg)](https://github.com/tasmota/decode-config/tree/development)
4747

4848
## Table of contents
4949
<details>
@@ -338,7 +338,7 @@ Example:
338338
decode-config -c my.conf -s tasmota-4281 --backup-file Config_@d_@v
339339
```
340340

341-
This will create a file like `Config_Tasmota_14.4.json` (the part `Tasmota` and `14.4` will choosen related to your device configuration).
341+
This will create a file like `Config_Tasmota_14.5.json` (the part `Tasmota` and `14.5` will choosen related to your device configuration).
342342

343343
#### Save multiple backup at once
344344

@@ -350,18 +350,18 @@ decode-config -c my.conf -s tasmota-4281 -o Config_@d_@v -o Backup_@H.json -o Ba
350350

351351
creates three backup files:
352352

353-
* `Config_Tasmota_14.4.json` using JSON format
353+
* `Config_Tasmota_14.5.json` using JSON format
354354
* `Backup_tasmota-4281.json` using JSON format
355355
* `Backup_tasmota-4281.dmp` using Tasmota configuration file format
356356

357357
### Restore backup
358358

359359
Reading back a previously saved backup file, use the `--restore-file <filename>` parameter.
360360

361-
To restore the previously save backup file `Config_Tasmota_14.4.json` to device `tasmota-4281` use:
361+
To restore the previously save backup file `Config_Tasmota_14.5.json` to device `tasmota-4281` use:
362362

363363
```bash
364-
decode-config -c my.conf -s tasmota-4281 --restore-file Config_Tasmota_14.4
364+
decode-config -c my.conf -s tasmota-4281 --restore-file Config_Tasmota_14.5
365365
```
366366

367367
Restore operation also allows placeholders **@v**, **@d**, **@f**, **@h** or **@H** like in backup filenames so we can use the same naming as for the backup process:
@@ -1145,8 +1145,9 @@ These Tasmota commands are unsupported and not implemented in **decode-config**
11451145
| | Fade | *HsbColor* | |
11461146
| | LedTable | *Led<x\>* | |
11471147
| | Pixels | *Palette* | |
1148-
| | PWMDimmerPWMs | *White* | |
1149-
| | RGBWWTable | *VirtualCT* | |
1148+
| | PixelType | *White* | |
1149+
| | PWMDimmerPWMs | *VirtualCT* | |
1150+
| | RGBWWTable | | |
11501151
| | Rotation | | |
11511152
| | Scheme | | |
11521153
| | ShdLeadingEdge | | |

decode-config.py

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# -*- coding: utf-8 -*-
33
from __future__ import print_function
44
METADATA = {
5-
'VERSION': '14.4.1.0',
5+
'VERSION': '14.5.0.0',
66
'DESCRIPTION': 'Backup/restore and decode configuration tool for Tasmota',
77
'CLASSIFIER': 'Development Status :: 5 - Production/Stable',
88
'URL': 'https://github.com/tasmota/decode-config',
@@ -2941,10 +2941,42 @@ def match(self, setting_hardware, config_version):
29412941
'no_export_energy_today': (HARDWARE.ESP, '<L', (0xF74,1,16), (None, None, ('SetOption', '"SO162 {}".format($)')) ),
29422942
})
29432943
# ======================================================================
2944-
SETTING_14_4_1_0 = copy.copy(SETTING_14_3_0_7)
2944+
SETTING_14_4_1_1 = copy.copy(SETTING_14_3_0_7)
2945+
SETTING_14_4_1_1['flag6'][1].update ({
2946+
'gui_device_name': (HARDWARE.ESP, '<L', (0xF74,1,17), (None, None, ('SetOption', '"SO163 {}".format($)')) ),
2947+
})
2948+
# ======================================================================
2949+
SETTING_14_4_1_2 = copy.copy(SETTING_14_4_1_1)
2950+
SETTING_14_4_1_2.update ({
2951+
'light_pixels': (HARDWARE.ESP, '<H', (0x496,15,0), (None, '1 <= $ <= 512', ('Light', '"Pixels {}".format($)')) ),
2952+
'light_pixels_reverse': (HARDWARE.ESP, '<H', (0x496,1,15), (None, None, ('Light', None)) ),
2953+
'light_pixels_height_1': (HARDWARE.ESP, '<H', (0xEC4,15,0), (None, None, ('Light', None)) ),
2954+
'light_pixels_alternate': (HARDWARE.ESP, '<H', (0xEC4,1,15), (None, None, ('Light', None)) ),
2955+
})
2956+
SETTING_14_4_1_2['mbflag2'][1].update({
2957+
'log_file_idx': (HARDWARE.ESP, '<L', (0xFD8,4,0), (None, None, ('System', None)) ),
2958+
})
2959+
# ======================================================================
2960+
SETTING_14_4_1_3 = copy.copy(SETTING_14_4_1_2)
2961+
SETTING_14_4_1_3['mbflag2'][1].update({
2962+
'light_pixels_order': (HARDWARE.ESP, '<L', (0xFD8,3,4), (None, None, ('Light', '"PixelType {}".format(($ & 0x7) | (@["mbflag2"]["light_pixels_w_first"] >> 3) | (@["mbflag2"]["light_pixels_rgbw"] >> 4) )')) ),
2963+
'light_pixels_rgbw': (HARDWARE.ESP, '<L', (0xFD8,1,7), (None, None, ('Light', None)) ),
2964+
'light_pixels_w_first': (HARDWARE.ESP, '<L', (0xFD8,1,8), (None, None, ('Light', None)) ),
2965+
})
2966+
# ======================================================================
2967+
SETTING_14_4_1_4 = copy.copy(SETTING_14_4_1_3)
2968+
SETTING_14_4_1_4['flag6'][1].update ({
2969+
'wizmote_enabled': (HARDWARE.ESP, '<L', (0xF74,1,18), (None, None, ('SetOption', '"SO164 {}".format($)')) ),
2970+
})
2971+
# ======================================================================
2972+
SETTING_14_5_0_0 = copy.copy(SETTING_14_4_1_4)
29452973
# ======================================================================
29462974
SETTINGS = [
2947-
(0x0E040100,0x1000, SETTING_14_4_1_0),
2975+
(0x0E050000,0x1000, SETTING_14_5_0_0),
2976+
(0x0E040104,0x1000, SETTING_14_4_1_4),
2977+
(0x0E040103,0x1000, SETTING_14_4_1_3),
2978+
(0x0E040102,0x1000, SETTING_14_4_1_2),
2979+
(0x0E040101,0x1000, SETTING_14_4_1_1),
29482980
(0x0E030007,0x1000, SETTING_14_3_0_7),
29492981
(0x0E030005,0x1000, SETTING_14_3_0_5),
29502982
(0x0E030004,0x1000, SETTING_14_3_0_4),
@@ -5439,7 +5471,7 @@ def set_fieldvalue(fielddef, dobj, addr, value):
54395471
format_ = get_fielddef(fielddef, fields='format_')
54405472
formatcnt = get_formatcount(format_)
54415473
singletype, bitsize = get_formattype(format_)
5442-
if not format_[-1:].lower() in ['s', 'p']:
5474+
if not format_[-1:].lower() in ['s', 'p', 'f']:
54435475
addr += (bitsize // 8) * formatcnt
54445476
for _ in range(0, formatcnt):
54455477
addr -= (bitsize // 8)

0 commit comments

Comments
 (0)