Support multiple sensors.

This commit is contained in:
2021-10-21 22:06:19 +02:00
parent fed2e22d64
commit 51409be6e8
3 changed files with 24 additions and 20 deletions
+21 -20
View File
@@ -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