Support multiple sensors.
This commit is contained in:
@@ -1,2 +1,3 @@
|
|||||||
data.csv
|
data.csv
|
||||||
.ruby-version
|
.ruby-version
|
||||||
|
config.yaml
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -13,28 +13,29 @@ 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|
|
|
||||||
# Log the output
|
|
||||||
puts "#{sensor["name"]}: #{message}"
|
|
||||||
|
|
||||||
payload = JSON.parse(message)
|
sensor = sensors_config[topic]
|
||||||
|
|
||||||
# Log payload in a csv file
|
# Log the output
|
||||||
CSV.open('data.csv', 'ab') do |csv|
|
puts "#{sensor['name']}: #{message}"
|
||||||
csv << [Time.now,
|
|
||||||
sensor["name"],
|
payload = JSON.parse(message)
|
||||||
topic,
|
|
||||||
payload['humidity'],
|
# Log payload in a csv file
|
||||||
payload['temperature'],
|
CSV.open('data.csv', 'ab') do |csv|
|
||||||
payload['pressure'],
|
csv << [Time.now,
|
||||||
payload['battery'],
|
sensor['name'],
|
||||||
payload['voltage'],
|
topic,
|
||||||
payload['linkquality']]
|
payload['humidity'],
|
||||||
end
|
payload['temperature'],
|
||||||
|
payload['pressure'],
|
||||||
|
payload['battery'],
|
||||||
|
payload['voltage'],
|
||||||
|
payload['linkquality']]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user