aws_iot_device 0.1.5 → 1.0.0
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 +4 -4
- data/.gitignore +2 -0
- data/README.md +155 -148
- data/aws_iot_device.gemspec +11 -11
- data/codeclimate.yml +6 -0
- data/lib/aws_iot_device.rb +2 -1
- data/lib/aws_iot_device/mqtt_adapter.rb +1 -2
- data/lib/aws_iot_device/mqtt_adapter/client.rb +74 -6
- data/lib/aws_iot_device/mqtt_adapter/paho_mqtt_adapter.rb +207 -0
- data/lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb +10 -4
- data/lib/aws_iot_device/mqtt_shadow_client.rb +1 -0
- data/lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb +133 -67
- data/lib/aws_iot_device/mqtt_shadow_client/shadow_action_manager.rb +229 -146
- data/lib/aws_iot_device/mqtt_shadow_client/shadow_client.rb +78 -20
- data/lib/aws_iot_device/mqtt_shadow_client/shadow_topic_manager.rb +51 -26
- data/lib/aws_iot_device/mqtt_shadow_client/topic_builder.rb +15 -30
- data/lib/aws_iot_device/version.rb +1 -1
- data/samples/config_shadow.rb +72 -0
- data/samples/mqtt_client_samples/mqtt_client_samples.rb +7 -59
- data/samples/shadow_action_samples/sample_shadow_action_update.rb +7 -61
- data/samples/shadow_client_samples/samples_shadow_client_block.rb +25 -0
- data/samples/shadow_client_samples/samples_shadow_client_delete.rb +9 -58
- data/samples/shadow_client_samples/samples_shadow_client_description.rb +64 -0
- data/samples/shadow_client_samples/samples_shadow_client_get.rb +11 -62
- data/samples/shadow_client_samples/samples_shadow_client_getting_started.rb +22 -0
- data/samples/shadow_client_samples/samples_shadow_client_update.rb +7 -58
- data/samples/shadow_topic_samples/sample_topic_manager.rb +10 -61
- metadata +71 -16
- data/lib/aws_iot_device/mqtt_adapter/mqtt_adapter.rb +0 -139
@@ -1,139 +0,0 @@
|
|
1
|
-
module AwsIotDevice
|
2
|
-
module MqttAdapter
|
3
|
-
class MqttAdapter
|
4
|
-
|
5
|
-
attr_reader :client_id
|
6
|
-
|
7
|
-
### @adapter contains the name of the adapter that should be module as a third party librairy
|
8
|
-
### The method call by the shared client are implemented by the third party or the adapter module itself.
|
9
|
-
### @adapter default value is MqttShareLib::Adapters::RubyMqttAdapter
|
10
|
-
attr_accessor :adapter
|
11
|
-
|
12
|
-
### @on_'event' contains the callback's [block, Proc, lambda] that should be called when 'event' is catched
|
13
|
-
### Callbacks should be customized in the higher level class (ex. MqttManger or upper)
|
14
|
-
### Callback should be called by some (private) handlers define in the third party librairy
|
15
|
-
|
16
|
-
### On a MqttAdapter's create, the client adapter is set as the previously define module adapter
|
17
|
-
### The client is then initialize with the client type of the third librairy of the adapter.
|
18
|
-
### @client default type is MQTT::Client
|
19
|
-
def initialize(*args)
|
20
|
-
@adapter = ::MqttAdapterLib.adapter.new(*args)
|
21
|
-
end
|
22
|
-
|
23
|
-
def client_id
|
24
|
-
@adapter.client_id
|
25
|
-
end
|
26
|
-
|
27
|
-
### The following method represent the basics common MQTT actions.
|
28
|
-
### As possible, they should be implemented in the third party librairy
|
29
|
-
### If not, the adpater should implement them or throw and excpetion
|
30
|
-
def connect(*args, &block)
|
31
|
-
@adapter.connect(*args, &block)
|
32
|
-
end
|
33
|
-
|
34
|
-
def publish(topic, payload='', retain=false, qos=0)
|
35
|
-
@adapter.publish(topic, payload, retain, qos)
|
36
|
-
end
|
37
|
-
|
38
|
-
def loop_start
|
39
|
-
@thread = @adapter.loop_start
|
40
|
-
end
|
41
|
-
|
42
|
-
def loop_stop
|
43
|
-
@adapter.loop_stop(@thread)
|
44
|
-
end
|
45
|
-
|
46
|
-
def loop_forever
|
47
|
-
@adapter.loop_forever
|
48
|
-
end
|
49
|
-
|
50
|
-
def mqtt_loop
|
51
|
-
@adapter.loop
|
52
|
-
end
|
53
|
-
|
54
|
-
def loop_read
|
55
|
-
@adapter.loop_read
|
56
|
-
end
|
57
|
-
|
58
|
-
def loop_write
|
59
|
-
@adapter.loop_write
|
60
|
-
end
|
61
|
-
|
62
|
-
def loop_misc
|
63
|
-
@adapter.loop_misc
|
64
|
-
end
|
65
|
-
|
66
|
-
def get(topic=nil, &block)
|
67
|
-
@adapter.get(topic, &block)
|
68
|
-
end
|
69
|
-
|
70
|
-
def get_packet(topic=nil, &block)
|
71
|
-
@adapter.get_packet(topic, &block)
|
72
|
-
end
|
73
|
-
|
74
|
-
def generate_client_id
|
75
|
-
@adapter.generate_client_id
|
76
|
-
end
|
77
|
-
|
78
|
-
def disconnect(send_msg=true)
|
79
|
-
@adapter.disconnect(send_msg)
|
80
|
-
end
|
81
|
-
|
82
|
-
def connected?
|
83
|
-
@adapter.connected?
|
84
|
-
end
|
85
|
-
|
86
|
-
def subscribe(topic)
|
87
|
-
@adapter.subscribe(topic)
|
88
|
-
end
|
89
|
-
|
90
|
-
def unsubscribe(topic)
|
91
|
-
@adapter.unsubscribe(topic)
|
92
|
-
end
|
93
|
-
|
94
|
-
def set_tls_ssl_context(ca_cert, cert=nil, key=nil)
|
95
|
-
@adapter.set_tls_ssl_context(ca_cert, cert, key)
|
96
|
-
end
|
97
|
-
|
98
|
-
def add_callback_filter_topic(topic, callback)
|
99
|
-
@adapter.add_callback_filter_topic(topic, callback)
|
100
|
-
end
|
101
|
-
|
102
|
-
def remove_callback_filter_topic(topic)
|
103
|
-
@adapter.remove_callback_filter_topic(topic)
|
104
|
-
end
|
105
|
-
|
106
|
-
def on_message=(callback)
|
107
|
-
@adapter.on_message = callback
|
108
|
-
end
|
109
|
-
|
110
|
-
### The following attributes should exists in every MQTT third party librairy.
|
111
|
-
### They are necessary (or really usefull and common) for the establishement of the connection and/or the basic Mqtt actions.
|
112
|
-
### The setter directely change the third party client value when the getter remote the actual SharedClient instance's attribute value
|
113
|
-
def host
|
114
|
-
@adapter.host
|
115
|
-
end
|
116
|
-
|
117
|
-
def host=(host)
|
118
|
-
@adapter.host = host
|
119
|
-
end
|
120
|
-
|
121
|
-
def port
|
122
|
-
@adapter.port
|
123
|
-
end
|
124
|
-
|
125
|
-
def port=(port)
|
126
|
-
@adapter.port = port
|
127
|
-
end
|
128
|
-
|
129
|
-
# Boolean for the encrypted mode (true = ssl/tls | false = no encryption)
|
130
|
-
def ssl
|
131
|
-
@adapter.ssl
|
132
|
-
end
|
133
|
-
|
134
|
-
def ssl=(ssl)
|
135
|
-
@adapter.ssl = ssl
|
136
|
-
end
|
137
|
-
end
|
138
|
-
end
|
139
|
-
end
|