// {type:class} // {direction:topDown} // {generate:true} [note: You can stick notes on diagrams too!{bg:cornsilk}] [IterRegistry||__iter__] [Mqtt;<>|ha_restarts;__client;__cb_MqttIsUp|publish();close()] [Inverter|cls.db_stat;cls.entity_prfx;cls.discovery_prfx;cls.proxy_node_id;cls.proxy_unique_id;cls.mqtt:Mqtt;;__ha_restarts|async_create_remote(inv_prot, conn_class)async_publ_mqtt()] [InverterBase||disc(shutdown_started);async_create_remote();healthy()] [Inverter]^[InverterBase] [InverterBase]^[InverterG3|addr;remote:StreamPtr;local:StreamPtr|async_create_remote();;close()] [InverterBase]^[InverterG3P|addr;remote:StreamPtr;local:StreamPtr|async_create_remote();;close()] [Inverter]++->[Mqtt;<>] [IterRegistry]^[Inverter|server_side:bool;header_valid:bool;header_len:unsigned;data_len:unsigned;unique_id;node_id;sug_area;_recv_buffer:bytearray;_send_buffer:bytearray;_forward_buffer:bytearray;db:Infos;new_data:list;state|_read():void;close():void;inc_counter():void;dec_counter():void] [<>] [InverterG3]-1..2>[<>] [InverterG3]-1..2>[<>] [InverterG3P]-1..2>[<>] [InverterG3P]-1..2>[<>] [<>]use-.->[<>] [ModbusConn|host;port;addr;stream:InverterG3P;|]has-1>[InverterG3P]