dji_mqtt_connect 0.1.22.2 → 0.1.23.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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