1
1
#!/usr/bin/env python
2
2
# -*- coding: utf-8 -*-
3
- VER = '2.3.0034 '
3
+ VER = '2.3.0035 '
4
4
5
5
"""
6
6
decode-config.py - Backup/Restore Sonoff-Tasmota configuration data
43
43
[--cmnd-indent <indent>] [--cmnd-groups]
44
44
[--cmnd-nogroups] [--cmnd-sort] [--cmnd-unsort]
45
45
[-c <filename>] [-S] [-T json|cmnd|command]
46
- [-g {Control,Devices,Display,Domoticz,Internal,KNX ,Light,MQTT, Management,Power,Rules,Sensor,Serial,SetOption,SonoffRF, System,Timer,Wifi} [{Control,Devices,Display,Domoticz,Internal,KNX ,Light,MQTT, Management,Power,Rules,Sensor,Serial,SetOption,SonoffRF ,System,Timer,Wifi} ...]]
46
+ [-g {Control,Devices,Display,Domoticz,Internal,Knx ,Light,Management,Mqtt, Power,Rules,Sensor,Serial,Setoption,Shutter,Sonoffrf, System,Timer,Wifi} [{Control,Devices,Display,Domoticz,Internal,Knx ,Light,Management,Mqtt, Power,Rules,Sensor,Serial,Setoption,Shutter,Sonoffrf ,System,Timer,Wifi} ...]]
47
47
[--ignore-warnings] [-h] [-H] [-v] [-V]
48
48
49
49
Backup/Restore Sonoff-Tasmota configuration data. Args that start with '--'
123
123
(default do not output on backup or restore usage)
124
124
-T, --output-format json|cmnd|command
125
125
display output format (default: 'json')
126
- -g, --group {Control,Devices,Display,Domoticz,Internal,KNX ,Light,MQTT, Management,Power,Rules,Sensor,Serial,SetOption,SonoffRF ,System,Timer,Wifi}
126
+ -g, --group {Control,Devices,Display,Domoticz,Internal,Knx ,Light,Management,Mqtt, Power,Rules,Sensor,Serial,Setoption,Shutter,Sonoffrf ,System,Timer,Wifi}
127
127
limit data processing to command groups (default no
128
128
filter)
129
129
--ignore-warnings do not exit on warnings. Not recommended, used by your
@@ -832,6 +832,9 @@ def WebSensor(value, idx):
832
832
})
833
833
# ======================================================================
834
834
Setting_6_4_1_8 = copy .deepcopy (Setting_6_4_1_7 )
835
+ Setting_6_4_1_8 .update ({
836
+ 'my_gp' : ('B' , 0x484 , ([17 ], None , ('Management' , '"Gpio{} {}".format(#,$)' )) ),
837
+ })
835
838
Setting_6_4_1_8 ['flag3' ][0 ].update ({
836
839
'split_interlock' : ('<L' , (0x3A0 ,1 ,13 ), (None , None , ('SetOption' , '"SetOption63 {}".format($)' )) ),
837
840
})
@@ -908,7 +911,12 @@ def WebSensor(value, idx):
908
911
'no_power_feedback' : ('<L' , (0x3A0 ,1 ,13 ), (None , None , ('SetOption' , '"SetOption63 {}".format($)' )) ),
909
912
})
910
913
# ======================================================================
911
- Setting_6_5_0_11 = copy .deepcopy (Setting_6_5_0_9 )
914
+ Setting_6_5_0_10 = copy .deepcopy (Setting_6_5_0_9 )
915
+ Setting_6_5_0_10 .update ({
916
+ 'my_adc0' : ('B' , 0x495 , (None , None , ('Sensor' , '"Adc {}".format($)' )) ),
917
+ })
918
+ # ======================================================================
919
+ Setting_6_5_0_11 = copy .deepcopy (Setting_6_5_0_10 )
912
920
Setting_6_5_0_11 ['flag3' ][0 ].update ({
913
921
'use_underscore' : ('<L' , (0x3A0 ,1 ,14 ), (None , None , ('SetOption' , '"SetOption64 {}".format($)' )) ),
914
922
})
@@ -1015,7 +1023,48 @@ def WebSensor(value, idx):
1015
1023
'energy_weekend' : ('<L' , (0x3A0 ,1 ,20 ), (None , None , ('Power' , '"Tariff9 {}".format($)' )) ),
1016
1024
})
1017
1025
# ======================================================================
1026
+ Setting_6_6_0_13 = copy .deepcopy (Setting_6_6_0_12 )
1027
+ Setting_6_6_0_13 ['SensorBits1' ][0 ].update ({
1028
+ 'hx711_json_weight_change' : ('B' , (0x717 ,1 , 6 ), (None , None , ('Sensor' , '"Sensor34 8 {}".format($)' )) ),
1029
+ })
1030
+ # ======================================================================
1031
+ Setting_6_6_0_14 = copy .deepcopy (Setting_6_6_0_13 )
1032
+ Setting_6_6_0_14 .pop ('register8_ENERGY_TARIFF1_ST' ,None )
1033
+ Setting_6_6_0_14 .pop ('register8_ENERGY_TARIFF2_ST' ,None )
1034
+ Setting_6_6_0_14 .pop ('register8_ENERGY_TARIFF1_DS' ,None )
1035
+ Setting_6_6_0_14 .pop ('register8_ENERGY_TARIFF2_DS' ,None )
1036
+ Setting_6_6_0_14 .update ({
1037
+ 'register8' : ('B' , 0x1D6 , ([16 ], None , ('Power' , None )) ),
1038
+ 'tariff1_0' : ('<H' , 0xE30 , (None , None , ('Power' , '"Tariff1 {:02d}:{:02d},{:02d}:{:02d}".format(@["tariff1_0"]/60,@["tariff1_0"]%60,@["tariff1_1"]/60,@["tariff1_1"]%60)' )) ),
1039
+ 'tariff1_1' : ('<H' , 0xE32 , (None , None , ('Power' , None )) ),
1040
+ 'tariff2_0' : ('<H' , 0xE34 , (None , None , ('Power' , '"Tariff2 {:02d}:{:02d},{:02d}:{:02d}".format(@["tariff2_0"]/60,@["tariff2_0"]%60,@["tariff2_1"]/60,@["tariff2_1"]%60)' )) ),
1041
+ 'tariff2_1' : ('<H' , 0xE36 , (None , None , ('Power' , None )) ),
1042
+ 'mqttlog_level' : ('B' , 0x1E7 , (None , None , ('Management' , '"MqttLog {}".format($)' )) ),
1043
+ 'pcf8574_config' : ('B' , 0xE88 , ([8 ], None , ('Devices' , None )) ),
1044
+ 'shutter_accuracy' : ('B' , 0x1E6 , (None , None , ('Shutter' , None )) ),
1045
+ 'shutter_opentime' : ('<H' , 0xE40 , ([4 ], None , ('Shutter' , '"ShutterOpenDuration{} {:.1f}".format(#,$/10)' )) ),
1046
+ 'shutter_closetime' : ('<H' , 0xE48 , ([4 ], None , ('Shutter' , '"ShutterCloseDuration{} {:.1f}".format(#,$/10)' )) ),
1047
+ 'shuttercoeff' : ('<H' , 0xE50 , ([5 ,4 ],None , ('Shutter' , None )) ),
1048
+ 'shutter_invert' : ('B' , 0xE78 , ([4 ], None , ('Shutter' , '"ShutterInvert{} {}".format(#,$)' )) ),
1049
+ 'shutter_set50percent' : ('B' , 0xE7C , ([4 ], None , ('Shutter' , '"ShutterSetHalfway{} {}".format(#,$)' )) ),
1050
+ 'shutter_position' : ('B' , 0xE80 , ([4 ], None , ('Shutter' , '"ShutterPosition{} {}".format(#,$)' )) ),
1051
+ 'shutter_startrelay' : ('B' , 0xE84 , ([4 ], None , ('Shutter' , '"ShutterRelay{} {}".format(#,$)' )) ),
1052
+ })
1053
+ Setting_6_6_0_14 ['flag3' ][0 ].update ({
1054
+ 'dds2382_model' : ('<L' , (0x3A0 ,1 ,21 ), (None , None , ('SetOption' , '"SetOption71 {}".format($)' )) ),
1055
+ 'shutter_mode' : ('<L' , (0x3A0 ,1 ,30 ), (None , None , ('SetOption' , '"SetOption80 {}".format($)' )) ),
1056
+ 'pcf8574_ports_inverted' : ('<L' , (0x3A0 ,1 ,31 ), (None , None , ('SetOption' , '"SetOption81 {}".format($)' )) ),
1057
+ })
1058
+ # ======================================================================
1059
+ Setting_6_6_0_15 = copy .deepcopy (Setting_6_6_0_14 )
1060
+ Setting_6_6_0_15 ['flag3' ][0 ].update ({
1061
+ 'hardware_energy_total' : ('<L' , (0x3A0 ,1 ,22 ), (None , None , ('SetOption' , '"SetOption72 {}".format($)' )) ),
1062
+ })
1063
+ # ======================================================================
1018
1064
Settings = [
1065
+ (0x606000F ,0x1000 , Setting_6_6_0_15 ),
1066
+ (0x606000E ,0x1000 , Setting_6_6_0_14 ),
1067
+ (0x606000D ,0x1000 , Setting_6_6_0_13 ),
1019
1068
(0x606000C ,0x1000 , Setting_6_6_0_12 ),
1020
1069
(0x606000B ,0x1000 , Setting_6_6_0_11 ),
1021
1070
(0x606000A ,0x1000 , Setting_6_6_0_10 ),
@@ -1030,7 +1079,7 @@ def WebSensor(value, idx):
1030
1079
(0x605000F , 0xe00 , Setting_6_5_0_15 ),
1031
1080
(0x605000C , 0xe00 , Setting_6_5_0_12 ),
1032
1081
(0x605000B , 0xe00 , Setting_6_5_0_11 ),
1033
- (0x605000B , 0xe00 , Setting_6_5_0_11 ),
1082
+ (0x605000A , 0xe00 , Setting_6_5_0_10 ),
1034
1083
(0x6050009 , 0xe00 , Setting_6_5_0_9 ),
1035
1084
(0x6050007 , 0xe00 , Setting_6_5_0_7 ),
1036
1085
(0x6050006 , 0xe00 , Setting_6_5_0_6 ),
@@ -2162,7 +2211,7 @@ def IsFilterGroup(group):
2162
2211
if group is None :
2163
2212
return False
2164
2213
if group == '*' :
2165
- return False
2214
+ return True
2166
2215
if group .title () != INTERNAL .title () and group .title () not in (groupname .title () for groupname in args .filter ):
2167
2216
return False
2168
2217
return True
0 commit comments