68 lines
3.5 KiB
Plaintext
68 lines
3.5 KiB
Plaintext
// {type:class}
|
|
// {direction:topDown}
|
|
// {generate:true}
|
|
|
|
[note: You can stick notes on diagrams too!{bg:cornsilk}]
|
|
|
|
[Mqtt;<<Singleton>>|<static>ha_restarts;<static>__client;<static>__cb_MqttIsUp|<async>publish();<async>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()]
|
|
[Inverter]^[InverterG3|addr;remote:StreamPtr;local:StreamPtr|async_create_remote();;close()]
|
|
[Inverter]^[InverterG3P|addr;remote:StreamPtr;local:StreamPtr|async_create_remote();;close()]
|
|
[Mqtt;<<Singleton>>]<-++[Inverter]
|
|
|
|
[IterRegistry||__iter__]^[Message|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<abstract>;close():void;inc_counter():void;dec_counter():void]
|
|
|
|
[<<AsyncIfc>>||set_node_id();get_conn_no();;tx_add();tx_flush();tx_get();tx_peek();tx_log();tx_clear();tx_len();;fwd_add();fwd_flush();fwd_log();fwd_clear();rx_get();rx_peek();rx_log();rx_clear();rx_len();rx_set_cb();;prot_set_timeout_cb()]
|
|
[AsyncIfcImpl|fwd_fifo:ByteFifo;tx_fifo:ByteFifo;rx_fifo:ByteFifo;conn_no:Count;node_id;timeout_cb]
|
|
[AsyncStream|reader;writer;addr;r_addr;l_addr|;<async>loop;disc();close();healthy();;__async_read();__async_write();__async_forward()]
|
|
[AsyncStreamServer|async_create_remote|<async>server_loop();<async>_async_forward();<async>publish_outstanding_mqtt();close()]
|
|
[AsyncStreamClient||<async>client_loop();<async>_async_forward())]
|
|
[<<AsyncIfc>>]^-.-[AsyncIfcImpl]
|
|
[AsyncIfcImpl]<-[AsyncStream]
|
|
[AsyncStream]<-[AsyncStreamServer]
|
|
[AsyncStream]<-[AsyncStreamClient]
|
|
|
|
|
|
[ConnectionG3|remote.stream:ConnectionG3|healthy()]
|
|
[ConnectionG3Client|_ifc:AsyncStreamClient;conn_no;addr|close()]
|
|
[ConnectionG3Server|_ifc:AsyncStreamServer;conn_no;addr|;close()]
|
|
[ConnectionG3]^[ConnectionG3Client]
|
|
[ConnectionG3]^[ConnectionG3Server]
|
|
[ConnectionG3Client]-[InverterG3]
|
|
[ConnectionG3Client]++-1>[AsyncStreamClient]
|
|
[ConnectionG3Server]-[InverterG3]
|
|
[ConnectionG3Server]++-1>[AsyncStreamServer]
|
|
|
|
[ConnectionG3P|remote.stream:ConnectionG3P|healthy();close()]
|
|
[ConnectionG3PClient|_ifc:AsyncStreamClient;conn_no;addr|close()]
|
|
[ConnectionG3PServer|_ifc:AsyncStreamServer;conn_no;addr|;close()]
|
|
[ConnectionG3P]^[ConnectionG3PClient]
|
|
[ConnectionG3P]^[ConnectionG3PServer]
|
|
[ConnectionG3PClient]-[InverterG3P]
|
|
[ConnectionG3PClient]++-1>[AsyncStreamClient]
|
|
[ConnectionG3PServer]-[InverterG3P]
|
|
[ConnectionG3PServer]++-1>[AsyncStreamServer]
|
|
|
|
[Infos|stat;new_stat_data;info_dev|static_init();dev_value();inc_counter();dec_counter();ha_proxy_conf;ha_conf;ha_remove;update_db;set_db_def_value;get_db_value;ignore_this_device]
|
|
[Infos]^[InfosG3||ha_confs();parse()]
|
|
[Infos]^[InfosG3P||ha_confs();parse()]
|
|
|
|
[Talent|await_conn_resp_cnt;id_str;contact_name;contact_mail;db:InfosG3;mb:Modbus;switch|msg_contact_info();msg_ota_update();msg_get_time();msg_collector_data();msg_inverter_data();msg_unknown();;close()]
|
|
[Talent]^[ConnectionG3]
|
|
[Talent]use->[<<AsyncIfc>>]
|
|
[Talent]->[InfosG3]
|
|
[SolarmanV5|control;serial;snr;db:InfosG3P;mb:Modbus;switch|msg_unknown();;close()]
|
|
[SolarmanV5]^[ConnectionG3P]
|
|
[SolarmanV5]use->[<<AsyncIfc>>]
|
|
[SolarmanV5]->[InfosG3P]
|
|
|
|
[Message]^[Talent]
|
|
[Message]^[SolarmanV5]
|
|
|
|
[Modbus|que;;snd_handler;rsp_handler;timeout;max_retires;last_xxx;err;retry_cnt;req_pend;tim|build_msg();recv_req();recv_resp();close()]
|
|
[Modbus]<1-has[SolarmanV5]
|
|
[Modbus]<1-has[Talent]
|
|
|
|
[ModbusConn|host;port;addr;stream:InverterG3P;|]has-1>[InverterG3P]
|
|
|