diff --git a/.gitignore b/.gitignore index a1fb45b..84100ed 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ data.csv .ruby-version +config.yaml diff --git a/config.yaml.example b/config.yaml.example index fc55afa..ecfe9b7 100644 --- a/config.yaml.example +++ b/config.yaml.example @@ -4,3 +4,5 @@ mqtt_server: mqtt://192.168.178.48 sensors: zigbee2mqtt/0x00158d00073a7ba8: name: Test Sensor + zigbee2mqtt/0x00158d0007110b9a: + name: Lorem ipsum diff --git a/logger.rb b/logger.rb index 5ff1cc3..882a1f5 100644 --- a/logger.rb +++ b/logger.rb @@ -13,28 +13,29 @@ sensors_config = config['sensors'] # Connect to the MQTT broker MQTT::Client.connect(config['mqtt_server']) do |client| - # For each sensor - 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}" + # Subscribe topics + client.get('zigbee2mqtt/#') do |topic, message| + # Only observe configured sensors + next unless sensors_config.keys.include?(topic) - payload = JSON.parse(message) + sensor = sensors_config[topic] - # Log payload in a csv file - CSV.open('data.csv', 'ab') do |csv| - csv << [Time.now, - sensor["name"], - topic, - payload['humidity'], - payload['temperature'], - payload['pressure'], - payload['battery'], - payload['voltage'], - payload['linkquality']] - end + # Log the output + puts "#{sensor['name']}: #{message}" + + payload = JSON.parse(message) + + # Log payload in a csv file + CSV.open('data.csv', 'ab') do |csv| + csv << [Time.now, + sensor['name'], + topic, + payload['humidity'], + payload['temperature'], + payload['pressure'], + payload['battery'], + payload['voltage'], + payload['linkquality']] end end end