add freifunk_node

This commit is contained in:
Astro 2020-04-14 21:22:29 +02:00
parent aa05ec171d
commit 1e77ecffa9
2 changed files with 61 additions and 1 deletions

View File

@ -18,7 +18,7 @@ let
buildInputs = [ gems.wrappedRuby ];
buildCommand = ''
install -D -m755 $script $out/bin/${name}
install -D -m755 ${script} $out/bin/${name}
patchShebangs $out/bin/${name}
'';
};
@ -27,4 +27,5 @@ in {
luftdaten = wrapScript "luftdaten" ./luftdaten/scrape.rb;
fhem = wrapScript "fhem" ./fhem/scrape.rb;
matemat = wrapScript "matemat" ./matemat/scrape.rb;
freifunk_node = wrapScript "freifunk_node" ./freifunk_node/scrape.rb;
}

59
freifunk_node/scrape.rb Normal file
View File

@ -0,0 +1,59 @@
#!/usr/bin/env ruby
require 'open-uri'
require 'json'
require 'influxdb'
HOST = ARGV[0]
data = JSON.parse open("http://#{HOST}/sysinfo-json.cgi").read()
values = {}
def recurse(data, values, prefix='')
new_prefix = proc do |name|
if prefix == ""
name
else
"#{prefix}.#{name}"
end
end
if data.kind_of? Hash
data.each do |k, v|
recurse v, values, new_prefix.call(k)
end
elsif data.kind_of? Array
data.zip(0..).each do |(v, i)|
recurse v, values, new_prefix.call(i)
end
elsif data.kind_of? String and data != ""
data.strip!
data = data.split(/,/)
if data.length > 1
data.zip(0..).each do |(v, i)|
recurse v, values, new_prefix.call(i)
end
else
data = data[0].split(/ +/)
if data.length > 1
data.zip(0..).each do |(v, i)|
recurse v, values, new_prefix.call(i)
end
else
if data[0] =~ /^\d+$/
values[prefix] = data[0].to_i
end
end
end
elsif data.kind_of? Integer or data.kind_of? Float
values[prefix] = data
end
end
node_id = data['data']['common']['node']
recurse data['data'], values
db = InfluxDB::Client.new(url: "http://grafana.hq.c3d2.de:8086/freifunk")
db.write_point 'node', { values: values, tags: { node_id: node_id } }