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
+1
View File
@@ -1,2 +1,3 @@
data.csv data.csv
.ruby-version .ruby-version
config.yaml
+2
View File
@@ -4,3 +4,5 @@ mqtt_server: mqtt://192.168.178.48
sensors: sensors:
zigbee2mqtt/0x00158d00073a7ba8: zigbee2mqtt/0x00158d00073a7ba8:
name: Test Sensor name: Test Sensor
zigbee2mqtt/0x00158d0007110b9a:
name: Lorem ipsum
+9 -8
View File
@@ -13,20 +13,22 @@ sensors_config = config['sensors']
# Connect to the MQTT broker # Connect to the MQTT broker
MQTT::Client.connect(config['mqtt_server']) do |client| MQTT::Client.connect(config['mqtt_server']) do |client|
# For each sensor # Subscribe topics
sensors_config.each_key do |sensor_topic| client.get('zigbee2mqtt/#') do |topic, message|
sensor = sensors_config[sensor_topic] # Only observe configured sensors
# Subscribe its topic next unless sensors_config.keys.include?(topic)
client.get(sensor_topic.to_s) do |topic, message|
sensor = sensors_config[topic]
# Log the output # Log the output
puts "#{sensor["name"]}: #{message}" puts "#{sensor['name']}: #{message}"
payload = JSON.parse(message) payload = JSON.parse(message)
# Log payload in a csv file # Log payload in a csv file
CSV.open('data.csv', 'ab') do |csv| CSV.open('data.csv', 'ab') do |csv|
csv << [Time.now, csv << [Time.now,
sensor["name"], sensor['name'],
topic, topic,
payload['humidity'], payload['humidity'],
payload['temperature'], payload['temperature'],
@@ -37,4 +39,3 @@ MQTT::Client.connect(config['mqtt_server']) do |client|
end end
end end
end end
end