@@ -135,6 +135,9 @@ def get_arguments() -> tuple[argparse.ArgumentParser, argparse.Namespace]:
135135 parser .add_argument (
136136 "--gen3" , "-g3" , action = "store_true" , help = "Force Gen 3 (RPC) device"
137137 )
138+ parser .add_argument (
139+ "--gen4" , "-g4" , action = "store_true" , help = "Force Gen 4 (RPC) device"
140+ )
138141 parser .add_argument (
139142 "--debug" , "-deb" , action = "store_true" , help = "Enable debug level for logging"
140143 )
@@ -145,7 +148,7 @@ def get_arguments() -> tuple[argparse.ArgumentParser, argparse.Namespace]:
145148 "--update_ws" ,
146149 "-uw" ,
147150 type = str ,
148- help = "Update outbound WebSocket (Gen2/3 ) and exit" ,
151+ help = "Update outbound WebSocket (for RPC device ) and exit" ,
149152 )
150153 parser .add_argument (
151154 "--listen_ip_address" ,
@@ -168,14 +171,14 @@ async def main() -> None:
168171 await coap_context .initialize (args .coap_port , args .listen_ip_address )
169172 await ws_context .initialize (args .ws_port , args .ws_api_url )
170173
171- if not args .init and not (args .gen1 or args .gen2 or args .gen3 ):
174+ if not args .init and not (args .gen1 or args .gen2 or args .gen3 or args . gen4 ):
172175 parser .error ("specify gen if no device init at startup" )
173- if args . gen1 and args . gen2 :
174- parser . error ( "-- gen1 and -- gen2 can't be used together" )
175- elif args . gen1 and args . gen3 :
176- parser .error ("--gen1 and --gen3 can't be used together" )
177- elif args . gen2 and args . gen3 :
178- parser . error ( "--gen2 and --gen3 can't be used together" )
176+
177+ gen_list = ( args . gen1 , args . gen2 , args . gen3 , args . gen4 )
178+ if len ([ gen for gen in gen_list if gen ]) > 1 :
179+ parser .error (
180+ "You can only use one of --gen1, --gen2, -- gen3 or --gen4 at a time"
181+ )
179182
180183 gen = None
181184 if args .gen1 :
@@ -184,13 +187,15 @@ async def main() -> None:
184187 gen = 2
185188 elif args .gen3 :
186189 gen = 3
190+ elif args .gen4 :
191+ gen = 4
187192
188193 if args .debug :
189194 logging .basicConfig (level = logging .DEBUG )
190195 # if gen is in args reduce logging for other gens
191196 if args .gen1 :
192197 logging .getLogger ("aioshelly.rpc_device" ).setLevel (logging .INFO )
193- elif args .gen2 or args .gen3 :
198+ elif args .gen2 or args .gen3 or args . gen4 :
194199 logging .getLogger ("aioshelly.block_device" ).setLevel (logging .INFO )
195200
196201 if args .devices :
0 commit comments