add bundle:telegraf_airgradient
This commit is contained in:
parent
bb56f0fb9a
commit
5ffbe50b1e
4 changed files with 80 additions and 0 deletions
54
bundles/telegraf_airgradient/files/airgradient_telegraf
Normal file
54
bundles/telegraf_airgradient/files/airgradient_telegraf
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
from logging import basicConfig, getLogger
|
||||||
|
from sys import argv
|
||||||
|
|
||||||
|
from requests import get
|
||||||
|
|
||||||
|
basicConfig(level="INFO")
|
||||||
|
L = getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
def out(keys, values):
|
||||||
|
print(
|
||||||
|
"airgradient,{} {}".format(
|
||||||
|
",".join([f"{k}={v}" for k, v in keys.items()]),
|
||||||
|
",".join([f"{k}={v}" for k, v in values.items()]),
|
||||||
|
),
|
||||||
|
flush=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
r = get(
|
||||||
|
f"https://api.airgradient.com/public/api/v1/locations/measures/current?token={argv[2]}"
|
||||||
|
)
|
||||||
|
L.debug(r.status_code)
|
||||||
|
L.info(r.text)
|
||||||
|
r.raise_for_status()
|
||||||
|
for location in r.json():
|
||||||
|
L.debug(location)
|
||||||
|
out(
|
||||||
|
{
|
||||||
|
"place": argv[1],
|
||||||
|
"location": location["locationName"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
k: location[k]
|
||||||
|
for k in (
|
||||||
|
"atmp",
|
||||||
|
"noxIndex",
|
||||||
|
"pm003Count",
|
||||||
|
"pm01",
|
||||||
|
"pm02",
|
||||||
|
"pm10",
|
||||||
|
"rco2",
|
||||||
|
"rhum",
|
||||||
|
"tvoc",
|
||||||
|
"tvocIndex",
|
||||||
|
"wifi",
|
||||||
|
)
|
||||||
|
},
|
||||||
|
)
|
||||||
|
except Exception:
|
||||||
|
L.exception("fail!")
|
3
bundles/telegraf_airgradient/items.py
Normal file
3
bundles/telegraf_airgradient/items.py
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
files['/usr/local/bin/airgradient_telegraf'] = {
|
||||||
|
'mode': '0755',
|
||||||
|
}
|
19
bundles/telegraf_airgradient/metadata.py
Normal file
19
bundles/telegraf_airgradient/metadata.py
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
@metadata_reactor.provides(
|
||||||
|
'telegraf/input_plugins/exec',
|
||||||
|
)
|
||||||
|
def telegraf(metadata):
|
||||||
|
result = {}
|
||||||
|
for location, api_key in metadata.get('telegraf_airgradient', {}).items():
|
||||||
|
result[f'airgradient_{location}'] = {
|
||||||
|
'commands': [f'/usr/local/bin/airgradient_telegraf {location} {api_key}'],
|
||||||
|
'data_format': 'influx',
|
||||||
|
'timeout': '10s',
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
'telegraf': {
|
||||||
|
'input_plugins': {
|
||||||
|
'exec': result,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
|
@ -3,6 +3,7 @@ nodes['htz-cloud.influxdb'] = {
|
||||||
'bundles': {
|
'bundles': {
|
||||||
'grafana',
|
'grafana',
|
||||||
'influxdb2',
|
'influxdb2',
|
||||||
|
'telegraf_airgradient',
|
||||||
'telegraf-monitors-mikrotik',
|
'telegraf-monitors-mikrotik',
|
||||||
'zfs',
|
'zfs',
|
||||||
},
|
},
|
||||||
|
@ -66,6 +67,9 @@ nodes['htz-cloud.influxdb'] = {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
'telegraf_airgradient': {
|
||||||
|
'Home': vault.decrypt('encrypt$gAAAAABlr3KvHLSHLFwVr5hvJ1j676Flm5fVLumqpBcffjYWXjPjSovDXCyEcVqhxfsX-GNut2dXsenFQoFShaAugLV_zVQYaLnNQipbZqI0cXfsMht1iZPyOxlSzy3YoZ3voSaeiLll'),
|
||||||
|
},
|
||||||
'telegraf': {
|
'telegraf': {
|
||||||
'input_plugins': {
|
'input_plugins': {
|
||||||
'builtin': {
|
'builtin': {
|
||||||
|
|
Loading…
Reference in a new issue