36 lines
982 B
Ruby
36 lines
982 B
Ruby
require 'mqtt'
|
|
require 'uri'
|
|
require 'json'
|
|
|
|
mypath = File.expand_path(File.dirname(__FILE__))
|
|
|
|
File.readlines("/etc/default/mqtttemp").each do |line|
|
|
values = line.split("=")
|
|
ENV[values[0]] = values[1]
|
|
end
|
|
|
|
# Create a hash with the connection parameters from the URL
|
|
uri = URI.parse ENV['CLOUDMQTT_URL']
|
|
conn_opts = {
|
|
remote_host: uri.host,
|
|
remote_port: uri.port,
|
|
username: uri.user,
|
|
password: uri.password
|
|
}
|
|
topic = uri.path[1, uri.path.length] || 'tele/enklave/SENSOR'
|
|
|
|
Thread.new do
|
|
MQTT::Client.connect(conn_opts) do |c|
|
|
c.get(topic) do |t, message|
|
|
puts "#{t}: #{message}"
|
|
my_hash = JSON.parse(message)
|
|
temperature = my_hash["SI7021"]["Temperature"]
|
|
humidity = my_hash["SI7021"]["Humidity"]
|
|
rrddata = "N:#{temperature}:U:U:U:U:U:U:U:U:#{humidity}:U:U:U:U:U:U:U:U"
|
|
puts rrddata
|
|
system("rrdtool update #{mypath}/mqtttemp.rrd #{rrddata}")
|
|
end
|
|
end
|
|
end
|
|
|
|
sleep
|