-
Notifications
You must be signed in to change notification settings - Fork 0
/
personal-mqtt.rb
72 lines (58 loc) · 1.61 KB
/
personal-mqtt.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
=begin
Generale implementazione di PAHO in modo da visualizzare lo scambio di messaggi MQTT
=end
require 'paho-mqtt'
# abstract class
class MyMqtt < PahoMqtt::Client
attr_accessor :waiting_puback
attr_accessor :waiting_suback
def initialize
super
@waiting_puback = false
@waiting_suback = false
# INIT CALLBACK
# self.on_connack = proc { puts "#{self.class.name} successfully connected " }
self.on_connack = proc { puts "#{self.class.name} successfully connected" }
self.on_puback do
puts "#{self.class.name} publish ack received"
@waiting_puback = false
end
self.on_suback do
puts "#{self.class.name} subscribe ack received"
@waiting_suback = false
end
self.on_message do |message|
puts "Message topic #{message.topic}"
puts "Payload \t#{message.payload}"
# puts "Payload.size \t#{message.payload.size}"
end
# CONNECTING TO THE BROKER
# ip = 'iot.eclipse.org'
# port = 1883
###
# ip = 'broker.mqttdashboard.com'
# port = 1883
###
ip = 'localhost'
port = 1883
puts "Connecting #{ip} @ #{port}"
self.connect(ip, port)
end
def subscribe(*topics)
@waiting_suback = true
super(*topics)
while @waiting_suback do
sleep 0.001
end
puts "Subscribed on topic #{topics[0]}"
end
def publish(topic, payload = '')
puts "Publish '#{payload}' on topic '#{topic}'"
@waiting_puback = true
super(topic, payload, false, 1)
# should be removed to use callback in asynchronous mode
while @waiting_puback do
sleep 0.001
end
end
end