|
|
@@ -48,24 +48,25 @@ class MqttClient
|
|
|
end
|
|
|
|
|
|
def on_id_message(path, id_params, timeout, &block)
|
|
|
- sub_topic = "#{@topic_prefix}#{path}/#{id_topic_suffix(id_params)}"
|
|
|
+ sub_topic = "#{@topic_prefix}#{path}/#{id_topic_suffix(nil)}"
|
|
|
|
|
|
on_message(sub_topic, timeout) do |topic, message|
|
|
|
topic_parts = topic.split('/')
|
|
|
+ topic_id_params = {
|
|
|
+ id: topic_parts[2].to_i(16),
|
|
|
+ type: topic_parts[3],
|
|
|
+ group_id: topic_parts[4].to_i,
|
|
|
+ unparsed_id: topic_parts[2]
|
|
|
+ }
|
|
|
+
|
|
|
+ if !id_params || %w(id type group_id).all? { |k| k=k.to_sym; topic_id_params[k] == id_params[k] }
|
|
|
+ begin
|
|
|
+ message = JSON.parse(message)
|
|
|
+ rescue JSON::ParserError => e
|
|
|
+ end
|
|
|
|
|
|
- begin
|
|
|
- message = JSON.parse(message)
|
|
|
- rescue JSON::ParserError => e
|
|
|
+ yield( topic_id_params, message )
|
|
|
end
|
|
|
-
|
|
|
- yield(
|
|
|
- {
|
|
|
- id: topic_parts[2].to_i(16),
|
|
|
- type: topic_parts[3],
|
|
|
- group_id: topic_parts[4].to_i
|
|
|
- },
|
|
|
- message
|
|
|
- )
|
|
|
end
|
|
|
end
|
|
|
|