dji_mqtt_connect 0.1.5 → 0.1.7

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: b81ef7e12ef07f8f3d42d5bae091f2f5d3e99c4afe3bea10cf1b5bacf8592a83
4
- data.tar.gz: b374963480351bdbb3de7418d3fbcbd8bf6a6c8785b7e107051c3fcddf870676
3
+ metadata.gz: 582b7c6a4036b0190421f3d2fd80ab8f6428cfabb7c5b7eda8f2240e95e1788d
4
+ data.tar.gz: 3e831322588f0ef27d278b1463c8a87ee07f4eb3e982ec7367d61a7cfb4ed051
5
5
  SHA512:
6
- metadata.gz: e97c71486c48d8c475b212e804c1ad8e12e5e32dc9769dd2332465b34a86c9ff5429e37727000cc606704eba10916d62226f1ebc3ebbef2b23382292ab5274b5
7
- data.tar.gz: 6f35209caa9a35bbf8ca3e82fa24d103b6387d026334e7ecb4f3454c0327c03b598ed67b1e614f40742d26ff87f78c5391e9d8e1c947c58ff1d7a076f3d02588
6
+ metadata.gz: 423e217b569b6272a228a841afc88e34aede3f56407dd10a79277fa893386da326220c8233042d05a7810b28d1152b982777e0874f9003632c1d52f1f61fd872
7
+ data.tar.gz: c8a5308a2da2825d196efe9d34a7f67a1d1df6482f4a3d3a9a755b276dbe65f0eb70d2634eeaeba2c8c56e5928c105f377d9bb6a49e9bfd8e52e266019b0162f
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dji_mqtt_connect (0.1.5)
4
+ dji_mqtt_connect (0.1.7)
5
5
  activesupport (>= 6.0, <= 8)
6
6
  dry-struct (~> 1.6)
7
7
  dry-transformer (~> 1.0)
@@ -115,6 +115,50 @@ module DjiMqttConnect
115
115
  )
116
116
  end
117
117
 
118
+ def build_thing_product_airport_organization_bind_requests_message
119
+ message_data = {
120
+ bind_devices: [
121
+ {
122
+ device_binding_code: "",
123
+ organization_id: "curo",
124
+ device_callsign: "",
125
+ sn: "DOCK01",
126
+ device_secret: "DEVICE_SECRET",
127
+ device_nonce: "DEVICE_NONCE",
128
+ device_model_key: "3-1-0"
129
+ },
130
+ {
131
+ device_binding_code: "",
132
+ organization_id: "curo",
133
+ device_callsign: "",
134
+ sn: "M30DRONE01",
135
+ device_secret: "DEVICE_SECRET",
136
+ device_nonce: "DEVICE_NONCE",
137
+ device_model_key: "0-67-0"
138
+ }
139
+ ]
140
+ }
141
+
142
+ Thing::Product::AirportOrganizationBindRequestsMessage.new(
143
+ _method: "airport_organization_bind",
144
+ _data: message_data,
145
+ tid: "3093aad5-bb98-5026-685a-cea540eb9267",
146
+ bid: "479533e0-cb01-933c-3758-22f2a82abeb8",
147
+ timestamp: 1679380233000,
148
+ data: message_data,
149
+ gateway: "DOCK01"
150
+ )
151
+ end
152
+
153
+ def build_thing_product_airport_organization_bind_requests_reply_message
154
+ airport_organization_bind_request = build_thing_product_airport_organization_bind_requests_message
155
+
156
+ Thing::Product::AirportOrganizationBindRequestsReplyMessage.build_for(
157
+ airport_organization_bind_request,
158
+ result: 0
159
+ )
160
+ end
161
+
118
162
  def build_thing_product_airport_organization_get_requests_message
119
163
  message_data = {
120
164
  device_binding_code: "device_binding_code",
@@ -45,6 +45,15 @@ module DjiMqttConnect
45
45
  unwrap "data", ["method"]
46
46
  end
47
47
 
48
+ # Fix the legacy status code message
49
+ guard ->(message) { message.dig("data", "method") == "status_code" } do
50
+ map_value "data" do
51
+ unwrap "output", ["codes"]
52
+ end
53
+
54
+ unwrap "data", ["method"]
55
+ end
56
+
48
57
  rename_keys "method" => "_method"
49
58
  end
50
59
  end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DjiMqttConnect
4
+ module Thing::Product
5
+ # https://developer.dji.com/doc/cloud-api-tutorial/en/server-api-reference/mqtt/thing-model/gateway/dock/organization.html#device-bind-to-organization
6
+ class AirportOrganizationBindRequestsMessage < RequestsMessage
7
+ attribute :_method, Types::String.enum("airport_organization_bind")
8
+
9
+ attribute :data do
10
+ attribute :bind_devices, Types::Array do
11
+ attribute :device_binding_code, Types::String
12
+ attribute :organization_id, Types::String
13
+ attribute :device_callsign, Types::String
14
+ attribute :sn, Types::String
15
+ attribute :device_model_key, Types::String
16
+ attribute :device_nonce, Types::String
17
+ attribute :device_secret, Types::String
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DjiMqttConnect
4
+ module Thing::Product
5
+ # https://developer.dji.com/doc/cloud-api-tutorial/en/server-api-reference/mqtt/thing-model/gateway/dock/organization.html#device-bind-to-organization
6
+ class AirportOrganizationBindRequestsReplyMessage < Message
7
+ def self.build_for(airport_organization_bind_message, err_infos: [], result: 0)
8
+ new(
9
+ _method: airport_organization_bind_message._method,
10
+ tid: airport_organization_bind_message.tid,
11
+ bid: airport_organization_bind_message.bid,
12
+ timestamp: Time.now.strftime("%s%L").to_i,
13
+ data: {
14
+ result: result,
15
+ err_infos: err_infos
16
+ }
17
+ )
18
+ end
19
+
20
+ attribute :tid, Types::UUID
21
+ attribute :bid, Types::UUID
22
+ attribute :timestamp, Types::Timestamp
23
+
24
+ attribute :_method, Types::String.enum("airport_organization_bind")
25
+
26
+ attribute :data do
27
+ attribute :result, Types::Integer
28
+ attribute :err_infos, Types::Array do
29
+ attribute :sn, Types::String
30
+
31
+ # Custom field. Non-zero indicates that the bind was unsuccessful.
32
+ attribute :err_code, Types::Integer
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,56 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DjiMqttConnect
4
+ module Thing::Product
5
+ class FileUploadCallbackEventsMessage < EventsMessage
6
+ attribute :_method, Types::String.enum("file_upload_callback")
7
+
8
+ # NOTE: Not documented, but appears in examples
9
+ attribute? :need_reply, Types::Integer.enum(0, 1)
10
+
11
+ attribute :data do
12
+ attribute :file do
13
+ attribute :object_key, Types::String
14
+
15
+ attribute :path, Types::String
16
+
17
+ attribute :name, Types::String
18
+
19
+ attribute :ext do
20
+ attribute :flight_id, Types::String
21
+
22
+ attribute :drone_model_key, Types::String
23
+
24
+ attribute :payload_model_key, Types::String
25
+
26
+ # {"0":"No","1":"Yes"}
27
+ attribute :is_original, Types::Bool
28
+ end
29
+
30
+ attribute :metadata do
31
+ attribute :gimbal_yaw_degree, Types::JSON::Decimal
32
+
33
+ attribute :absolute_altitude, Types::JSON::Decimal
34
+
35
+ attribute :relative_altitude, Types::JSON::Decimal
36
+
37
+ attribute :created_time, Types::JSON::DateTime
38
+
39
+ attribute :shoot_position do
40
+ include Mixins::LatitudeConditional
41
+ include Mixins::LongitudeConditional
42
+
43
+ attribute :lat, Types::Latitude
44
+ attribute :lng, Types::Longitude
45
+
46
+ alias_method :latitude, :lat
47
+ alias_method :longitude, :lng
48
+ end
49
+ end
50
+ end
51
+
52
+ attribute :result, Types::Integer
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DjiMqttConnect
4
+ module Thing::Product
5
+ # NOTE: Message is not documented, but observed from M30 Drones
6
+ class StatusCodeEventsMessage < EventsMessage
7
+ attribute :_method, Types::String.enum("status_code")
8
+
9
+ attribute :data do
10
+ attribute :codes, Types::Array do
11
+ attribute :id, Types::Integer
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DjiMqttConnect
4
- VERSION = "0.1.5"
4
+ VERSION = "0.1.7"
5
5
  end
@@ -33,7 +33,9 @@ module DjiMqttConnect
33
33
  module Thing
34
34
  module Product
35
35
  # Messages
36
+ autoload :FileUploadCallbackEventsMessage, "dji_mqtt_connect/messages/thing/product/file_upload_callback_events_message"
36
37
  autoload :HmsEventsMessage, "dji_mqtt_connect/messages/thing/product/hms_events_message"
38
+ autoload :StatusCodeEventsMessage, "dji_mqtt_connect/messages/thing/product/status_code_events_message"
37
39
  autoload :EventsMessage, "dji_mqtt_connect/messages/thing/product/events_message"
38
40
 
39
41
  autoload :OsdMessage, "dji_mqtt_connect/messages/thing/product/osd_message"
@@ -42,12 +44,14 @@ module DjiMqttConnect
42
44
  autoload :RemoteOsdMessage, "dji_mqtt_connect/messages/thing/product/remote_osd_message"
43
45
 
44
46
  autoload :AirportBindStatusRequestsMessage, "dji_mqtt_connect/messages/thing/product/airport_bind_status_requests_message"
47
+ autoload :AirportOrganizationBindRequestsMessage, "dji_mqtt_connect/messages/thing/product/airport_organization_bind_requests_message"
45
48
  autoload :AirportOrganizationGetRequestsMessage, "dji_mqtt_connect/messages/thing/product/airport_organization_get_requests_message"
46
49
  autoload :ConfigRequestsMessage, "dji_mqtt_connect/messages/thing/product/config_requests_message"
47
50
  autoload :StorageConfigGetRequestsMessage, "dji_mqtt_connect/messages/thing/product/storage_config_get_requests_message"
48
51
  autoload :RequestsMessage, "dji_mqtt_connect/messages/thing/product/requests_message"
49
52
 
50
53
  autoload :AirportBindStatusRequestsReplyMessage, "dji_mqtt_connect/messages/thing/product/airport_bind_status_requests_reply_message"
54
+ autoload :AirportOrganizationBindRequestsReplyMessage, "dji_mqtt_connect/messages/thing/product/airport_organization_bind_requests_reply_message"
51
55
  autoload :AirportOrganizationGetRequestsReplyMessage, "dji_mqtt_connect/messages/thing/product/airport_organization_get_requests_reply_message"
52
56
  autoload :ConfigRequestsReplyMessage, "dji_mqtt_connect/messages/thing/product/config_requests_reply_message"
53
57
  autoload :StorageConfigGetRequestsReplyMessage, "dji_mqtt_connect/messages/thing/product/storage_config_get_requests_reply_message"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dji_mqtt_connect
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sphere Drones
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-05-16 00:00:00.000000000 Z
11
+ date: 2023-05-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -121,6 +121,8 @@ files:
121
121
  - lib/dji_mqtt_connect/messages/sys/product/update_topo_status_reply_message.rb
122
122
  - lib/dji_mqtt_connect/messages/thing/product/airport_bind_status_requests_message.rb
123
123
  - lib/dji_mqtt_connect/messages/thing/product/airport_bind_status_requests_reply_message.rb
124
+ - lib/dji_mqtt_connect/messages/thing/product/airport_organization_bind_requests_message.rb
125
+ - lib/dji_mqtt_connect/messages/thing/product/airport_organization_bind_requests_reply_message.rb
124
126
  - lib/dji_mqtt_connect/messages/thing/product/airport_organization_get_requests_message.rb
125
127
  - lib/dji_mqtt_connect/messages/thing/product/airport_organization_get_requests_reply_message.rb
126
128
  - lib/dji_mqtt_connect/messages/thing/product/config_requests_message.rb
@@ -128,10 +130,12 @@ files:
128
130
  - lib/dji_mqtt_connect/messages/thing/product/dock_osd_message.rb
129
131
  - lib/dji_mqtt_connect/messages/thing/product/drone_osd_message.rb
130
132
  - lib/dji_mqtt_connect/messages/thing/product/events_message.rb
133
+ - lib/dji_mqtt_connect/messages/thing/product/file_upload_callback_events_message.rb
131
134
  - lib/dji_mqtt_connect/messages/thing/product/hms_events_message.rb
132
135
  - lib/dji_mqtt_connect/messages/thing/product/osd_message.rb
133
136
  - lib/dji_mqtt_connect/messages/thing/product/remote_osd_message.rb
134
137
  - lib/dji_mqtt_connect/messages/thing/product/requests_message.rb
138
+ - lib/dji_mqtt_connect/messages/thing/product/status_code_events_message.rb
135
139
  - lib/dji_mqtt_connect/messages/thing/product/storage_config_get_requests_message.rb
136
140
  - lib/dji_mqtt_connect/messages/thing/product/storage_config_get_requests_reply_message.rb
137
141
  - lib/dji_mqtt_connect/mixins/latitude_conditional.rb