37 lines
982 B
Ruby
37 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
|