dji_mqtt_connect 0.1.22.2 → 0.1.23.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8648b1f1ab8a35bab447677cacc7e465716a7b30b31dc9cf26230d9e4f00000f
4
- data.tar.gz: 33fa2572acded95529962bc32703599c6750118c3238879584aad4a06db0bcf5
3
+ metadata.gz: 7028627089ac05f602059d2510546c8ea90f0715890e4808256d72617680d51d
4
+ data.tar.gz: 9e910c6aba0f54c1a8e0b7951ccc68a24b1769f3a11cbf5f03b7ad07dd67fe9d
5
5
  SHA512:
6
- metadata.gz: ce0796ec8ca31bf90482a16fb3e601e40d2dccc1cdf045ecbc149fc0838f294a7297af69aef3d8cebfdb7e9714e33b4c5464b3680acadf38a1e771d78f163f32
7
- data.tar.gz: b75eaafa64707ec784514792188fe3722bb17abbce767c4ea5843ddf61f8c3e4d170980301ec31606e50cac0f9f04ea1ea42ece7daa0e2c56c20c38fc4470ad7
6
+ metadata.gz: fc15169b6decbc8ffe25e8f1577f3a6817c87ebab65a9a0f3d41ce8dc58baec37bce7e70d9dc59dfdfbaa20a492b316926f27ffdf6cb6da3296604fc1363a70a
7
+ data.tar.gz: eb6cbfa4ff76d5578245b9c278ab70fc401b30e6b327d39fee99252a152e48f30559e74927070ecef628bf2c9be146d8f7c20d1136407ba48c65b127ba657a7e
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dji_mqtt_connect (0.1.22.2)
4
+ dji_mqtt_connect (0.1.23.1)
5
5
  activesupport (>= 6.0, <= 8)
6
6
  dry-struct (~> 1.6)
7
7
  dry-transformer (~> 1.0)
@@ -81,6 +81,11 @@ module DjiMqttConnect
81
81
  Thing::Product::StateTopicRepository.new(self)
82
82
  end
83
83
 
84
+ # Handles topic thing/product/#{pid}/state_reply
85
+ def thing_product_state_reply_topic
86
+ Thing::Product::StateReplyTopicRepository.new(self)
87
+ end
88
+
84
89
  attr_reader :mqtt_client
85
90
  end
86
91
  end
@@ -0,0 +1,251 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DjiMqttConnect
4
+ module Factories::EventsMessages
5
+ def build_device_exit_homing_notify_events_message
6
+ message_data = {
7
+ action: 1,
8
+ sn: "DOCK01",
9
+ reason: "0"
10
+ }
11
+ Thing::Product::DeviceExitHomingNotifyEventsMessage.new(
12
+ _method: "device_exit_homing_notify",
13
+ bid: Message.generate_bid,
14
+ tid: Message.generate_tid,
15
+ need_reply: 1,
16
+ gateway: "GATEWAYSN",
17
+ timestamp: Message.current_timestamp,
18
+ data: message_data,
19
+ _data: message_data
20
+ )
21
+ end
22
+
23
+ def build_thing_product_device_reboot_events_message
24
+ message_data = {
25
+ result: 0,
26
+ output: {
27
+ status: "ok",
28
+ progress: {
29
+ percent: 100
30
+ }
31
+ }
32
+ }
33
+
34
+ Thing::Product::DeviceRebootEventsMessage.new(
35
+ bid: Message.generate_bid,
36
+ tid: Message.generate_tid,
37
+ timestamp: Message.current_timestamp,
38
+ _method: "device_reboot",
39
+ need_reply: 1,
40
+ data: message_data,
41
+ _data: message_data
42
+ )
43
+ end
44
+
45
+ def build_file_upload_callback_events_message
46
+ message_data = {
47
+ file: {
48
+ object_key: "object_key",
49
+ path: "xxx",
50
+ name: "dog.jpeg",
51
+ ext: {
52
+ flight_id: "xxx",
53
+ drone_model_key: "0-67-0",
54
+ payload_model_key: "0-67-0",
55
+ is_original: true
56
+ },
57
+ metadata: {
58
+ shoot_position: {
59
+ lat: 22.1,
60
+ lng: 122.5
61
+ },
62
+ gimbal_yaw_degree: -91.4,
63
+ absolute_altitude: 56.311,
64
+ relative_altitude: 41.124,
65
+ created_time: "2021-05-10 16:04:20"
66
+ }
67
+ },
68
+ result: 0
69
+ }
70
+
71
+ Thing::Product::FileUploadCallbackEventsMessage.new(
72
+ _method: "file_upload_callback",
73
+ bid: Message.generate_bid,
74
+ tid: Message.generate_tid,
75
+ need_reply: 1,
76
+ gateway: "xxx",
77
+ timestamp: Message.current_timestamp,
78
+ data: message_data,
79
+ _data: message_data
80
+ )
81
+ end
82
+
83
+ def build_fileupload_progress_events_message
84
+ message_data = {
85
+ output: {
86
+ ext: {
87
+ files: [
88
+ {
89
+ module: "0",
90
+ size: 155232,
91
+ device_sn: "drone_sn",
92
+ key: "4bf0039f-6434-44a8-b891-8d7b6b7ff138/drone_sn/video_20220621_110830.log",
93
+ fingerprint: "4f65b891f3bc09bdb6d4c36a996b532d",
94
+ progress: {
95
+ current_step: 19,
96
+ progress: 100,
97
+ finish_time: 1655781395926,
98
+ upload_rate: 0,
99
+ result: 0,
100
+ status: "ok"
101
+ }
102
+ },
103
+ {
104
+ module: "3",
105
+ size: 155232,
106
+ device_sn: "dock_sn",
107
+ key: "4bf0039f-6434-44a8-b891-8d7b6b7ff138/dock_sn/video_20220621_110830.log",
108
+ fingerprint: "4f65b891f3bc09bdb6d4c36a996b532d",
109
+ progress: {
110
+ current_step: 19,
111
+ total_step: 30,
112
+ progress: 100,
113
+ finish_time: 1655781395926,
114
+ upload_rate: 0,
115
+ result: 0,
116
+ status: "ok"
117
+ }
118
+ }
119
+ ]
120
+ },
121
+ status: "ok"
122
+ }
123
+ }
124
+
125
+ Thing::Product::FileuploadProgressEventsMessage.new(
126
+ _method: "fileupload_progress",
127
+ need_reply: 0,
128
+ bid: Message.generate_bid,
129
+ tid: Message.generate_tid,
130
+ timestamp: Message.current_timestamp,
131
+ gateway: "dock_sn",
132
+ _data: message_data,
133
+ data: message_data
134
+ )
135
+ end
136
+
137
+ def build_flighttask_progress_events_message
138
+ message_data = {
139
+ output: {
140
+ ext: {
141
+ current_waypoint_index: 3,
142
+ media_count: 6,
143
+ track_id: "track_id",
144
+ flight_id: "flight_id",
145
+ break_point: {
146
+ index: 1,
147
+ state: 0,
148
+ progress: 0.34,
149
+ wayline_id: 0,
150
+ break_reason: 1,
151
+ latitude: 23.4,
152
+ longitude: 113.99,
153
+ height: 100.23,
154
+ attitude_head: 30
155
+ }
156
+ },
157
+ progress: {
158
+ current_step: 19,
159
+ percent: 100
160
+ },
161
+ status: "ok"
162
+ },
163
+ result: 0
164
+ }
165
+
166
+ Thing::Product::FlighttaskProgressEventsMessage.new(
167
+ bid: Message.generate_bid,
168
+ tid: Message.generate_tid,
169
+ data: message_data,
170
+ _data: message_data,
171
+ _method: "flighttask_progress",
172
+ timestamp: Message.current_timestamp
173
+ )
174
+ end
175
+
176
+ def build_flighttask_ready_events_message
177
+ message_data = {
178
+ flight_ids: [
179
+ SecureRandom.uuid,
180
+ SecureRandom.uuid
181
+ ]
182
+ }
183
+
184
+ Thing::Product::FlighttaskReadyEventsMessage.new(
185
+ bid: Message.generate_bid,
186
+ tid: Message.generate_tid,
187
+ data: message_data,
188
+ _data: message_data,
189
+ _method: "flighttask_ready",
190
+ timestamp: Message.current_timestamp
191
+ )
192
+ end
193
+
194
+ def build_highest_priority_upload_flighttask_media_events_message
195
+ message_data = {
196
+ flight_id: SecureRandom.uuid
197
+ }
198
+
199
+ Thing::Product::HighestPriorityUploadFlighttaskMediaEventsMessage.new(
200
+ bid: Message.generate_bid,
201
+ _data: message_data,
202
+ data: message_data,
203
+ _method: "highest_priority_upload_flighttask_media",
204
+ need_reply: 1,
205
+ tid: Message.generate_tid,
206
+ timestamp: Message.current_timestamp,
207
+ gateway: "DOCK01"
208
+ )
209
+ end
210
+
211
+ def build_offline_map_sync_progress_events_message
212
+ message_data = {
213
+ status: "failed",
214
+ reason: 0,
215
+ file: "geofence_xxx.json"
216
+ }
217
+
218
+ Thing::Product::OfflineMapSyncProgressEventsMessage.new(
219
+ bid: Message.generate_bid,
220
+ tid: Message.generate_tid,
221
+ timestamp: Message.current_timestamp,
222
+ _method: "offline_map_sync_progress",
223
+ need_reply: 1,
224
+ data: message_data,
225
+ _data: message_data
226
+ )
227
+ end
228
+
229
+ def build_takeoff_to_point_progress_events_message
230
+ message_data = {
231
+ flight_id: SecureRandom.uuid,
232
+ remaining_distance: 100,
233
+ remaining_time: 10,
234
+ result: 0,
235
+ status: "ok",
236
+ track_id: SecureRandom.uuid,
237
+ way_point_index: 3
238
+ }
239
+
240
+ Thing::Product::TakeoffToPointProgressEventsMessage.new(
241
+ bid: Message.generate_bid,
242
+ tid: Message.generate_tid,
243
+ timestamp: Message.current_timestamp,
244
+ _method: "takeoff_to_point_progress",
245
+ need_reply: 1,
246
+ data: message_data,
247
+ _data: message_data
248
+ )
249
+ end
250
+ end
251
+ end
@@ -0,0 +1,390 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DjiMqttConnect
4
+ module Factories::StateMessages
5
+ ### Gateway Messages ###
6
+
7
+ def build_thing_product_gateway_live_capacity_state_message
8
+ message_data = {
9
+ live_capacity: {
10
+ available_video_number: 3,
11
+ coexist_video_number_max: 2,
12
+ device_list: [
13
+ {
14
+ sn: "DOCK01",
15
+ available_video_number: 1,
16
+ coexist_video_number_max: 1,
17
+ camera_list: [
18
+ {
19
+ camera_index: "165-0-7",
20
+ available_video_number: 1,
21
+ coexist_video_number_max: 1,
22
+ video_list: [
23
+ {
24
+ video_index: "normal-0",
25
+ video_type: "normal",
26
+ switchable_video_types: [
27
+ "normal"
28
+ ]
29
+ }
30
+ ]
31
+ }
32
+ ]
33
+ },
34
+ {
35
+ sn: "DRONE01",
36
+ available_video_number: 2,
37
+ coexist_video_number_max: 2,
38
+ camera_list: [
39
+ {
40
+ camera_index: "39-0-7",
41
+ available_video_number: 1,
42
+ coexist_video_number_max: 1,
43
+ video_list: [
44
+ {
45
+ video_index: "normal-0",
46
+ video_type: "normal",
47
+ switchable_video_types: [
48
+ "normal"
49
+ ]
50
+ }
51
+ ]
52
+ },
53
+ {
54
+ camera_index: "52-0-0",
55
+ available_video_number: 1,
56
+ coexist_video_number_max: 1,
57
+ video_list: [
58
+ {
59
+ video_index: "normal-0",
60
+ video_type: "wide",
61
+ switchable_video_types: [
62
+ "wide",
63
+ "zoom",
64
+ "ir"
65
+ ]
66
+ }
67
+ ]
68
+ }
69
+ ]
70
+ }
71
+ ]
72
+ }
73
+ }
74
+
75
+ Thing::Product::StateMessage.new(
76
+ bid: Message.generate_bid,
77
+ tid: Message.generate_tid,
78
+ timestamp: Message.current_timestamp,
79
+ gateway: "GATEWAYSN",
80
+ _data: message_data,
81
+ data: message_data
82
+ )
83
+ end
84
+
85
+ def build_thing_product_gateway_live_status_state_message
86
+ message_data = {
87
+
88
+ live_status: [
89
+ {
90
+ video_id: "1581F6QAD242M00BD78G/80-0-0/normal-0",
91
+ video_type: "wide",
92
+ video_quality: 0,
93
+ status: 1,
94
+ error_status: 0
95
+ },
96
+ {
97
+ video_id: "7CTDM2100BQ58L/165-0-7/normal-0",
98
+ video_type: "normal",
99
+ video_quality: 0,
100
+ status: 1,
101
+ error_status: 0
102
+ }
103
+ ]
104
+ }
105
+
106
+ Thing::Product::StateMessage.new(
107
+ bid: Message.generate_bid,
108
+ tid: Message.generate_tid,
109
+ timestamp: Message.current_timestamp,
110
+ gateway: "GATEWAYSN",
111
+ _data: message_data,
112
+ data: message_data
113
+ )
114
+ end
115
+
116
+ def build_thing_product_gateway_rtcm_info_state_message
117
+ message_data = {
118
+ rtcm_info: {
119
+ host: "192.168.0.1",
120
+ mount_point: "RTCM3X",
121
+ port: "2101",
122
+ rtcm_device_type: 1,
123
+ source_type: 3
124
+ }
125
+ }
126
+
127
+ Thing::Product::StateMessage.new(
128
+ bid: Message.generate_bid,
129
+ tid: Message.generate_tid,
130
+ timestamp: Message.current_timestamp,
131
+ gateway: "GATEWAYSN",
132
+ _data: message_data,
133
+ data: message_data
134
+ )
135
+ end
136
+
137
+ ### Payload Messages ###
138
+
139
+ def build_thing_product_payload_ar_info_switch_state_message
140
+ message_data = {
141
+ ar_info_switch: 1
142
+ }
143
+
144
+ Thing::Product::StateMessage.new(
145
+ bid: Message.generate_bid,
146
+ tid: Message.generate_tid,
147
+ timestamp: Message.current_timestamp,
148
+ gateway: "GATEWAYSN",
149
+ _data: message_data,
150
+ data: message_data
151
+ )
152
+ end
153
+
154
+ def build_thing_product_payload_commander_flight_height_state_message
155
+ message_data = {
156
+ commander_flight_height: 50
157
+ }
158
+
159
+ Thing::Product::StateMessage.new(
160
+ bid: Message.generate_bid,
161
+ tid: Message.generate_tid,
162
+ timestamp: Message.current_timestamp,
163
+ gateway: "GATEWAYSN",
164
+ _data: message_data,
165
+ data: message_data
166
+ )
167
+ end
168
+
169
+ def build_thing_product_payload_commander_flight_mode_state_message
170
+ message_data = {
171
+ commander_flight_mode: 0
172
+ }
173
+
174
+ Thing::Product::StateMessage.new(
175
+ bid: Message.generate_bid,
176
+ tid: Message.generate_tid,
177
+ timestamp: Message.current_timestamp,
178
+ gateway: "GATEWAYSN",
179
+ _data: message_data,
180
+ data: message_data
181
+ )
182
+ end
183
+
184
+ def build_thing_product_payload_commander_mode_lost_action_state_message
185
+ message_data = {
186
+ commander_mode_lost_action: 1
187
+ }
188
+
189
+ Thing::Product::StateMessage.new(
190
+ bid: Message.generate_bid,
191
+ tid: Message.generate_tid,
192
+ timestamp: Message.current_timestamp,
193
+ gateway: "GATEWAYSN",
194
+ _data: message_data,
195
+ data: message_data
196
+ )
197
+ end
198
+
199
+ def build_thing_product_payload_current_commander_flight_mode_state_message
200
+ message_data = {
201
+ current_commander_flight_mode: 0
202
+ }
203
+
204
+ Thing::Product::StateMessage.new(
205
+ bid: Message.generate_bid,
206
+ tid: Message.generate_tid,
207
+ timestamp: Message.current_timestamp,
208
+ gateway: "GATEWAYSN",
209
+ _data: message_data,
210
+ data: message_data
211
+ )
212
+ end
213
+
214
+ def build_thing_proudct_current_rth_mode_state_message
215
+ message_data = {
216
+ current_rth_mode: 1
217
+ }
218
+
219
+ Thing::Product::StateMessage.new(
220
+ bid: Message.generate_bid,
221
+ tid: Message.generate_tid,
222
+ timestamp: Message.current_timestamp,
223
+ gateway: "GATEWAYSN",
224
+ _data: message_data,
225
+ data: message_data
226
+ )
227
+ end
228
+
229
+ def build_thing_product_payload_flysafe_database_version_state_message
230
+ message_data = {
231
+ flysafe_database_version: "01.00.01.35"
232
+ }
233
+
234
+ Thing::Product::StateMessage.new(
235
+ bid: Message.generate_bid,
236
+ tid: Message.generate_tid,
237
+ timestamp: Message.current_timestamp,
238
+ gateway: "GATEWAYSN",
239
+ _data: message_data,
240
+ data: message_data
241
+ )
242
+ end
243
+
244
+ def build_thing_product_payload_geo_caging_status_state_message
245
+ message_data = {
246
+ geo_caging_status: {
247
+ state: 0
248
+ }
249
+ }
250
+
251
+ Thing::Product::StateMessage.new(
252
+ bid: Message.generate_bid,
253
+ tid: Message.generate_tid,
254
+ timestamp: Message.current_timestamp,
255
+ gateway: "GATEWAYSN",
256
+ _data: message_data,
257
+ data: message_data
258
+ )
259
+ end
260
+
261
+ def build_thing_product_payload_mode_code_reason_state_message
262
+ message_data = {
263
+ mode_code_reason: 0
264
+ }
265
+
266
+ Thing::Product::StateMessage.new(
267
+ bid: Message.generate_bid,
268
+ tid: Message.generate_tid,
269
+ timestamp: Message.current_timestamp,
270
+ gateway: "GATEWAYSN",
271
+ _data: message_data,
272
+ data: message_data
273
+ )
274
+ end
275
+
276
+ def build_thing_product_payload_offline_map_enable_state_message
277
+ message_data = {
278
+ offline_map_enable: true
279
+ }
280
+
281
+ Thing::Product::StateMessage.new(
282
+ bid: Message.generate_bid,
283
+ tid: Message.generate_tid,
284
+ timestamp: Message.current_timestamp,
285
+ gateway: "GATEWAYSN",
286
+ _data: message_data,
287
+ data: message_data
288
+ )
289
+ end
290
+
291
+ def build_thing_product_payload_payloads_state_message
292
+ message_data = {
293
+ payloads: [
294
+ {
295
+ control_source: "A",
296
+ payload_index: "80-0-0"
297
+ }
298
+ ]
299
+ }
300
+
301
+ Thing::Product::StateMessage.new(
302
+ bid: Message.generate_bid,
303
+ tid: Message.generate_tid,
304
+ timestamp: Message.current_timestamp,
305
+ gateway: "GATEWAYSN",
306
+ _data: message_data,
307
+ data: message_data
308
+ )
309
+ end
310
+
311
+ def build_thing_proudct_rth_mode_state_message
312
+ message_data = {
313
+ rth_mode: 1
314
+ }
315
+
316
+ Thing::Product::StateMessage.new(
317
+ bid: Message.generate_bid,
318
+ tid: Message.generate_tid,
319
+ timestamp: Message.current_timestamp,
320
+ gateway: "GATEWAYSN",
321
+ _data: message_data,
322
+ data: message_data
323
+ )
324
+ end
325
+
326
+ def build_thing_product_payload_uom_real_name_state_state_message
327
+ message_data = {
328
+ uom_real_name_state: 11
329
+ }
330
+
331
+ Thing::Product::StateMessage.new(
332
+ bid: Message.generate_bid,
333
+ tid: Message.generate_tid,
334
+ timestamp: Message.current_timestamp,
335
+ gateway: "GATEWAYSN",
336
+ _data: message_data,
337
+ data: message_data
338
+ )
339
+ end
340
+
341
+ def build_thing_product_payload_wireless_link_topo_state_message
342
+ message_data = {
343
+ wireless_link_topo: {
344
+ center_node: {
345
+ sdr_id: 836770082,
346
+ sn: "WIRELESSLINK01"
347
+ },
348
+ leaf_nodes: [{
349
+ control_source_index: 1,
350
+ sdr_id: 961551644,
351
+ sn: "LEAFNODE01",
352
+
353
+ valid: true
354
+ }, {
355
+ control_source_index: 2,
356
+ sdr_id: 878711578,
357
+ sn: "LEAFNODE02",
358
+ valid: true
359
+ }],
360
+ secret_code: [0, 0, 0, 0, 1, 0, 0, 0, 126, 180, 137, 135, 192, 229, 237, 97, 34, 58, 71, 58, 139, 30, 218, 120, 160, 254, 117, 250]
361
+ }
362
+ }
363
+
364
+ Thing::Product::StateMessage.new(
365
+ bid: Message.generate_bid,
366
+ tid: Message.generate_tid,
367
+ timestamp: Message.current_timestamp,
368
+ gateway: "GATEWAYSN",
369
+ need_reply: 1,
370
+ _data: message_data,
371
+ data: message_data
372
+ )
373
+ end
374
+
375
+ def build_thing_product_payload_wpmz_version_state_message
376
+ message_data = {
377
+ wpmz_version: "1.0.6"
378
+ }
379
+
380
+ Thing::Product::StateMessage.new(
381
+ bid: Message.generate_bid,
382
+ tid: Message.generate_tid,
383
+ timestamp: Message.current_timestamp,
384
+ gateway: "GATEWAYSN",
385
+ _data: message_data,
386
+ data: message_data
387
+ )
388
+ end
389
+ end
390
+ end