summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Robinson <joe@lc8n.com>2019-02-25 20:16:29 +0000
committerJoe Robinson <joe@lc8n.com>2019-02-25 20:16:29 +0000
commit5e0e922a7288e60a0482380a27a5c1ae53e6cd0e (patch)
tree22b737b9d2abddbfb3b610f8481932eb01152fc8
parent943f992dc370237509f0b73dd9ccc99b2fecdf2f (diff)
Switch to Paho MQTT library for automatic reconnects
-rw-r--r--Gemfile2
-rw-r--r--scarecrow.rb20
2 files changed, 9 insertions, 13 deletions
diff --git a/Gemfile b/Gemfile
index 3c6bf5e..7bd9e25 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,7 +1,7 @@
source 'https://rubygems.org'
gem 'sinatra'
gem 'thin'
-gem 'mqtt'
+gem 'paho-mqtt'
gem 'sqlite3'
gem 'data_mapper'
gem 'dm-migrations'
diff --git a/scarecrow.rb b/scarecrow.rb
index bd5509f..793f5de 100644
--- a/scarecrow.rb
+++ b/scarecrow.rb
@@ -1,5 +1,5 @@
require 'sinatra'
-require 'mqtt'
+require 'paho-mqtt'
require 'sqlite3'
require 'date'
require 'dm-core'
@@ -43,15 +43,11 @@ def init
DataMapper.auto_upgrade!
# sleep 10
Thread.new do
- MQTT::Client.connect('192.168.0.59') do |c|
- c.subscribe('+/temperature', '+/humidity', '+/moisture')
- loop do
- while !c.queue_empty? do
- topic, message = c.get
- handle_msg(topic, message)
- end
- sleep 1
- end
+ mqtt_client = PahoMqtt::Client.new
+ mqtt_client.connect('192.168.0.59', 1883, mqtt_client.keep_alive, true, mqtt_client.blocking)
+ mqtt_client.subscribe('+/temperature', '+/humidity', '+/moisture')
+ mqtt_client.on_message do |m|
+ handle_msg(m.topic, m.payload)
end
end
end
@@ -106,7 +102,7 @@ def get_value(type, device_id)
value = entry[:value]
end
- return value
+ return value
end
def get_time(type, device_id)
@@ -124,7 +120,7 @@ def get_time(type, device_id)
value = entry[:timestamp]
end
- return value
+ return value
end
get '/' do