diff --git a/config.yaml b/config.yaml new file mode 100644 index 0000000..fc55afa --- /dev/null +++ b/config.yaml @@ -0,0 +1,6 @@ +# Server address of the mqtt broker +mqtt_server: mqtt://192.168.178.48 + +sensors: + zigbee2mqtt/0x00158d00073a7ba8: + name: Test Sensor diff --git a/data.csv b/data.csv deleted file mode 100644 index 22de164..0000000 --- a/data.csv +++ /dev/null @@ -1 +0,0 @@ -2021-10-19 22:22:08 +0200,Test Sensor,62.97,26.99,972,100,3195,46 diff --git a/logger.rb b/logger.rb index 27efb89..07fb063 100644 --- a/logger.rb +++ b/logger.rb @@ -4,35 +4,32 @@ require 'rubygems' require 'mqtt' require 'json' require 'CSV' +require 'yaml' + +config = YAML.load_file('config.yaml') # MQTT Server configuration SERVER = '192.168.178.48' # Sensor configuration -sensors = { - 'zigbee2mqtt/0x00158d00073a7ba8': { - 'name': 'Test Sensor', - 'min_humidity': 61, - 'max_humidity': 64 - } -} +sensors_config = config['sensors'] # Connect to the MQTT broker -MQTT::Client.connect(SERVER) do |client| +MQTT::Client.connect(config['mqtt_server']) do |client| # For each sensor - sensors.each_key do |sensor_topic| - sensor = sensors[sensor_topic] + sensors_config.each_key do |sensor_topic| + sensor = sensors_config[sensor_topic] # Subscribe its topic client.get(sensor_topic.to_s) do |topic, message| # Log the output - puts "#{sensor[:name]}: #{message}" + puts "#{sensor["name"]}: #{message}" payload = JSON.parse(message) # Log payload in a csv file - CSV.open('data.csv', 'wb') do |csv| + CSV.open('data.csv', 'wb+') do |csv| csv << [Time.now, - sensor[:name], + sensor["name"], topic, payload['humidity'], payload['temperature'],