11import argparse
2- from jinja2 import Environment , FileSystemLoader , select_autoescape
32from pathlib import Path
3+
44import yaml
5+ from jinja2 import Environment , FileSystemLoader , select_autoescape
56
67env = Environment (
78 loader = FileSystemLoader ("helper_scripts/templates" ),
89 autoescape = select_autoescape (),
910 trim_blocks = True ,
10- lstrip_blocks = True
11+ lstrip_blocks = True ,
1112)
1213
1314if __name__ == "__main__" :
14- parser = argparse .ArgumentParser (description = "Create Zigbee2mqtt converter for tuya devices with ota" ,
15- epilog = "Generates a js file that adds ota support for given tuya models" )
16- parser .add_argument (
17- "db_file" , metavar = "INPUT" , type = str , help = "File with device db"
15+ parser = argparse .ArgumentParser (
16+ description = "Create Zigbee2mqtt converter for tuya devices with ota" ,
17+ epilog = "Generates a js file that adds ota support for given tuya models" ,
1818 )
1919 parser .add_argument (
20- "--z2m-v1 " , action = argparse . BooleanOptionalAction , help = "Use old z2m "
20+ "db_file " , metavar = "INPUT" , type = str , help = "File with device db "
2121 )
2222
23-
2423 args = parser .parse_args ()
2524
2625 db_str = Path (args .db_file ).read_text ()
2928 manufacturers = {
3029 "Tuya" : ["TS0001" , "TS0002" , "TS0003" , "TS0004" ],
3130 "Moes" : [],
32- "AVATTO" : []
31+ "AVATTO" : [],
3332 }
3433
3534 # Prepare containers for multiple pinout models
3635 multiple_pinouts = {key : [] for key in manufacturers }
3736
3837 for entry in db .values ():
39-
4038 # Skip if build == no. Defaults to yes
4139 if not entry .get ("build" , True ):
4240 continue
43-
41+
4442 model = entry .get ("stock_converter_model" )
4543 mfr = entry .get ("stock_converter_manufacturer" , "Tuya" )
4644 if model is None or mfr not in manufacturers :
6159
6260 template = env .get_template ("tuya_with_ota.js.jinja" )
6361
64- print (template .render (
65- tuyaModels = sorted (list (set (tuyaModels ))),
66- tuyaMultiplePinoutsModels = sorted (list (set (tuyaMultiplePinoutsModels ))),
67- moesModels = sorted (list (set (moesModels ))),
68- moesMultiplePinoutsModels = sorted (list (set (moesMultiplePinoutsModels ))),
69- avattoModels = sorted (list (set (avattoModels ))),
70- avattoMultiplePinoutsModels = sorted (list (set (avattoMultiplePinoutsModels ))),
71- z2m_v1 = args .z2m_v1 )
62+ print (
63+ template .render (
64+ tuyaModels = sorted (list (set (tuyaModels ))),
65+ tuyaMultiplePinoutsModels = sorted (list (set (tuyaMultiplePinoutsModels ))),
66+ moesModels = sorted (list (set (moesModels ))),
67+ moesMultiplePinoutsModels = sorted (list (set (moesMultiplePinoutsModels ))),
68+ avattoModels = sorted (list (set (avattoModels ))),
69+ avattoMultiplePinoutsModels = sorted (list (set (avattoMultiplePinoutsModels ))),
70+ )
7271 )
73-
74- exit (0 )
72+
73+ exit (0 )
0 commit comments