ffmap-backend/ffmap/inputs/alfred.py

34 lines
1.1 KiB
Python

import subprocess
import json
class Input:
def __init__(self,request_data_type = 158):
self.request_data_type = request_data_type
def get_data(self, nodedb):
"""Add data from alfred to the supplied nodedb"""
# get nodeinfo
output = subprocess.check_output([
"alfred-json",
"-r", str(self.request_data_type),
"-f", "json",
])
nodeinfo = json.loads(output.decode("utf-8"))
# get statistics
output = subprocess.check_output([
"alfred-json",
"-r", str(self.request_data_type+1),
"-f", "json",
])
statistics = json.loads(output.decode("utf-8"))
# merge statistics into nodeinfo to be compatible with earlier versions
for mac, node in statistics.items():
if mac in nodeinfo:
nodeinfo[mac]['statistics'] = statistics[mac]
for mac, node in nodeinfo.items():
aliases = [mac] + node.get('network', {}).get('mesh_interfaces', [])
nodedb.add_or_update(aliases, node)