forked from swissglider/zeptrionAirApi
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsequence-diagram.wsd
215 lines (193 loc) · 9.13 KB
/
sequence-diagram.wsd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
@startuml
actor async_server
== init ==
hnote over async_server #336600 : __main__
async_server -[#336600]> async_server: main()
activate async_server#main #336600
async_server -[#336600]> async_server: read_config_yaml_file(config)
activate async_server#read_config_yaml_file #336600
deactivate async_server#read_config_yaml_file
create hub
async_server -[#336600]> hub: init(loop, found_new_panels)
activate hub#init #336600
create control loop
async_server --> loop: run_forever
activate loop#run_forever
deactivate async_server#main
create button_action_listener_handler
hub -[#336600]> button_action_listener_handler: init(loop)
activate button_action_listener_handler#init #336600
create control loop__button_action_listener_task
button_action_listener_handler -[#9900CC]-> loop__button_action_listener_task: create_task(button_action_listener_handler.init())
activate loop__button_action_listener_task#create_task #9900CC
hnote over loop__button_action_listener_task #9900CC : Main Task for handling button changes
deactivate button_action_listener_handler#init
loop__button_action_listener_task -[#9900CC]-> button_action_listener_handler: init()
activate button_action_listener_handler#init #9900CC
create _zero_conf_listener
hub -[#336600]> _zero_conf_listener: init(found_new_devices)
hub -[#336600]> hub: start_searching_new_devices()
activate hub#start_searching_new_devices #336600
hub -[#336600]> _zero_conf_listener: start_searching()
activate _zero_conf_listener#start_searching #336600
create control zeroConf_Service_Browser
_zero_conf_listener --> zeroConf_Service_Browser: ServiceBrowser(zeroconf, service_type, self)
deactivate _zero_conf_listener#start_searching
deactivate hub#start_searching_new_devices
deactivate hub#init
== ZeroConf Service Browse (find new Services) ==
activate zeroConf_Service_Browser#ServiceBrowser #FF6600
hnote over zeroConf_Service_Browser #FF6600 : Search Task (New Device found)
zeroConf_Service_Browser -[#FF6600]> _zero_conf_listener: add_service(zeroconf, _type, name)
activate _zero_conf_listener#add_service #FF6600
_zero_conf_listener -[#FF6600]> hub:found_new_devices(name, _ip, port)
activate hub#found_new_devices #FF6600
hub -[#FF6600]> hub:get_new_panel(name, _ip, port)
activate hub#get_new_panel #FF6600
create collections panel
hub -[#FF6600]> panel:init(name, ip, port, loop, button_action_listener_handler)
activate panel#init #FF6600
note over panel #FF6600: create all buttons (ex. smart, light, blind)
panel -[#FF6600]> panel: _read_smart_panel_info()
activate panel#_read_smart_panel_info #FF6600
create collections smartButton
panel -[#FF6600]> smartButton:init(storage)
activate smartButton#init #FF6600
smartButton -[#FF6600]> smartButton:_get_stored_info(panel)
activate smartButton#_get_stored_info #FF6600
hnote over smartButton : if info not set
smartButton -[#FF6600]> smartButton:reset_btn_configuration(panel)
activate smartButton#reset_btn_configuration #FF6600
smartButton -[#FF6600]> smartButton:change_info_configuration(name, group)
activate smartButton#change_info_configuration #FF6600
deactivate smartButton#change_info_configuration
deactivate smartButton#reset_btn_configuration
deactivate smartButton#_get_stored_info
smartButton -[#FF6600]> smartButton:super_init(panel, info, is_smart_button=True)
activate smartButton#super_init #FF6600
deactivate smartButton#super_init
deactivate smartButton#init
deactivate panel#_read_smart_panel_info
panel -[#FF6600]> panel:_read_button()
activate panel#_read_button #FF6600
create collections lightButton
panel -[#FF6600]> lightButton:init(channel_info)
activate lightButton#init #FF6600
lightButton -[#FF6600]> lightButton:super_init(panel, info, is_smart_button=False)
activate lightButton#super_init #FF6600
deactivate lightButton#super_init
deactivate lightButton#init
panel -[#FF6600]> panel:_set_new_button(channel_id, button)
activate panel#_set_new_button #FF6600
deactivate panel#_set_new_button
create collections blindButton
panel -[#FF6600]> blindButton:init(channel_info)
activate blindButton#init #FF6600
blindButton -[#FF6600]> blindButton:super_init(panel, info, is_smart_button=False)
activate blindButton#super_init #FF6600
deactivate blindButton#super_init
deactivate blindButton#init
panel -[#FF6600]> panel:_set_new_button(channel_id, button)
activate panel#_set_new_button #FF6600
deactivate panel#_set_new_button
deactivate panel#_read_button
note over panel #FF6600: register the panel to listen for button pressed events
panel -[#FF6600]> panel:_start_listen_to_button_pressed()
activate panel#listen_to #FF6600
panel -[#FF6600]> button_action_listener_handler:register_new_listener(self, self.button_pressed_listener)
activate button_action_listener_handler#register_new_listener #FF6600
create button_action_listener
button_action_listener_handler -> button_action_listener:init(panel)
create control btn_task
button_action_listener_handler -[#66CC00]-> btn_task:create_task(button_action_listener.message_hanlder(button_pressed_listener))
activate btn_task#create_task #66CC00
deactivate button_action_listener_handler#register_new_listener
deactivate panel#listen_to
deactivate panel#init
deactivate hub#get_new_panel
hub -[#FF6600]> async_server:found_new_panels(new_panel)
activate async_server#found_new_panels #FF6600
async_server -[#FF6600]> async_server:generate_config(new_panel)
activate async_server#generate_config #FF6600
note over async_server #FF6600: register all Buttons with callback (press_info_handler)
async_server -[#FF6600]> smartButton:listen_to(press_info_handler)
activate smartButton#listen_to #FF6600
deactivate smartButton#listen_to
async_server -[#FF6600]> lightButton:listen_to(press_info_handler)
activate lightButton#listen_to #FF6600
deactivate lightButton#listen_to
async_server -[#FF6600]> blindButton:listen_to(press_info_handler)
activate blindButton#listen_to #FF6600
deactivate blindButton#listen_to
deactivate async_server#generate_config
deactivate async_server#found_new_panels
deactivate hub#found_new_devices
deactivate _zero_conf_listener#add_service
== Run ==
...till button pressed...
btn_task -[#66CC00]-> button_action_listener:message_hanlder(button_pressed_handler)
activate button_action_listener#message_hanlder #66CC00
button_action_listener -[#66CC00]-> button_action_listener:get_press_info(message, status_time)
activate button_action_listener#get_press_info #66CC00
create msg1
button_action_listener -[#66CC00]> msg1:init(new_message, _ip, port, status_time)
create pressInfo1
button_action_listener -[#66CC00]> pressInfo1:init(value_msg=msg1)
create msg2
button_action_listener -[#66CC00]> msg2:init(message2, _ip, port, status_time)
create pressInfo2
button_action_listener -[#66CC00]> pressInfo2:init(value_msg=msg2)
deactivate button_action_listener#get_press_info
button_action_listener -[#66CC00]> panel:button_pressed_listener(press_info)
activate panel#button_pressed_listener #66CC00
hnote over panel : for the selected btn eg. smartButton
panel -[#66CC00]> smartButton:status_update_listener(press_info)
activate smartButton#status_update_listener #66CC00
smartButton -[#66CC00]> async_server:press_info_handler(info)
activate async_server#press_info_handler #66CC00
deactivate async_server#press_info_handler
deactivate smartButton#status_update_listener
deactivate panel#button_pressed_listener
== Closing ==
...till Keyboard Interupt...
hnote over async_server #0000FF : Keyboard interupt
async_server -[#0000FF]> async_server: KeyboardInterupt
activate async_server#main #0000FF
async_server -[#0000FF]> loop: run_until_complete(do_close(hub))
activate loop#run_until_complete #0000FF
loop -[#0000FF]-> async_server:do_close(hub)
activate async_server#do_close #0000FF
async_server -[#0000FF]> async_server:write_config_to_yaml_file()
activate async_server#write_config_to_yaml_file #0000FF
deactivate async_server#write_config_to_yaml_file
async_server -[#0000FF]-> hub:close()
activate hub#close #0000FF
hub -[#0000FF]> hub:stop_searching_new_defices()
activate hub#stop_searching_new_devices #0000FF
hub -[#0000FF]> _zero_conf_listener:stop_searching()
activate _zero_conf_listener#stop_searching #0000FF
_zero_conf_listener -[#0000FF]x zeroConf_Service_Browser:cancel()
deactivate zeroConf_Service_Browser#add_service
deactivate _zero_conf_listener#stop_searching
deactivate hub#stop_searching_new_devices
hub -[#0000FF]-> button_action_listener_handler: close()
deactivate hub#close
activate button_action_listener_handler#close #0000FF
button_action_listener_handler -[#0000FF]-x button_action_listener_handler: ends with set to_finish==True
deactivate button_action_listener_handler#close
button_action_listener_handler -[#0000FF]-x loop__button_action_listener_task: ends with set to_finish==True
button_action_listener_handler -[#0000FF]> button_action_listener:close()
deactivate button_action_listener#message_hanlder
deactivate loop__button_action_listener_task#create_task
button_action_listener_handler -[#0000FF]> btn_task:close()
deactivate btn_task#create_task
deactivate button_action_listener_handler#init
deactivate async_server#do_close
deactivate loop#run_until_complete
async_server -[#0000FF]> loop:close()
activate loop#close #0000FF
loop -[#0000FF]-x loop: ends run_forever
deactivate loop#close
deactivate loop#run_forever
deactivate async_server#main
@enduml