Files
cure_logger/logger.rb
T

41 lines
996 B
Ruby
Raw Normal View History

2021-10-19 22:27:31 +02:00
# frozen_string_literal: true
require 'rubygems'
require 'mqtt'
require 'json'
2021-10-21 21:10:05 +02:00
require 'csv'
2021-10-20 10:09:16 +02:00
require 'yaml'
config = YAML.load_file('config.yaml')
2021-10-19 22:27:31 +02:00
# Sensor configuration
2021-10-20 10:09:16 +02:00
sensors_config = config['sensors']
2021-10-19 22:27:31 +02:00
# Connect to the MQTT broker
2021-10-20 10:09:16 +02:00
MQTT::Client.connect(config['mqtt_server']) do |client|
2021-10-19 22:27:31 +02:00
# For each sensor
2021-10-20 10:09:16 +02:00
sensors_config.each_key do |sensor_topic|
sensor = sensors_config[sensor_topic]
2021-10-19 22:27:31 +02:00
# Subscribe its topic
client.get(sensor_topic.to_s) do |topic, message|
# Log the output
2021-10-20 10:09:16 +02:00
puts "#{sensor["name"]}: #{message}"
2021-10-19 22:27:31 +02:00
payload = JSON.parse(message)
# Log payload in a csv file
2021-10-21 21:10:46 +02:00
CSV.open('data.csv', 'ab') do |csv|
2021-10-19 22:27:31 +02:00
csv << [Time.now,
2021-10-20 10:09:16 +02:00
sensor["name"],
2021-10-19 22:27:31 +02:00
topic,
payload['humidity'],
payload['temperature'],
payload['pressure'],
payload['battery'],
payload['voltage'],
payload['linkquality']]
end
end
end
end