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
.ruby-version
config.yaml
+2
View File
@@ -4,3 +4,5 @@ mqtt_server: mqtt://192.168.178.48
sensors:
zigbee2mqtt/0x00158d00073a7ba8:
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
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|
# Subscribe topics
client.get('zigbee2mqtt/#') do |topic, message|
# Only observe configured sensors
next unless sensors_config.keys.include?(topic)
sensor = sensors_config[topic]
# 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', 'ab') do |csv|
csv << [Time.now,
sensor["name"],
sensor['name'],
topic,
payload['humidity'],
payload['temperature'],
@@ -37,4 +39,3 @@ MQTT::Client.connect(config['mqtt_server']) do |client|
end
end
end
end