Eigene Freifunk-Karte wieder online

Hallo Ortenau,

ich habe eben etwas Zeit gefunden unsere Hopglass-Karte wieder zu fixen. Unsere Karte filtert nun alle Knoten heraus, welche nicht zur Ortenau gehören.

Hier das angepasste Skript, um Hopglass-Daten zu filtern:

#!/usr/bin/env python3
import argparse
import json

def main(file,site):
    jsondata = {}
    jsondata=read_jsonfile(file)

    for node in list(jsondata['nodes']):
        try:
            if node['nodeinfo']['system']['site_code'] != site:
                jsondata['nodes'].remove(node) 
        except:
            pass
    print (json.dumps(jsondata))

def read_jsonfile(file):
    jsondata = {}
    try:
        with open(file, encoding='utf-8') as data_file:
            jsondata = json.load(data_file)
    except:
        print("Couldn't read json file")
        print(err)
    return jsondata

def parse_args():
    parser = argparse.ArgumentParser(
        description='export alfred data to influxdb')

    parser.add_argument('--file', type=str, required=True, default='',
                        help='file to pars (nodes.json)')
    parser.add_argument('--site', type=str, required=True, default='',
                        help='site of node to delete')
    return parser.parse_args()

if __name__ == '__main__':
    args = parse_args()
    main( file=args.file, site=args.site)

Aufruf wie folgt:
$ filterNodes.py --file /tmp/nodes.json --site ffog > /data/path/nodes.json

Unser Grafana bekommt nun auch wieder Daten.

Sehr schön - das freut mich.
Dann kann wieder mal ab und zu schauen was an meinem FF Router tagsüber ging :slight_smile:
Danke!
Eugen

Das ist mit jq nen Einzeiler :wink:

jq '{"version": .version, "timestamp": .timestamp, "nodes": .nodes | map(select(.nodeinfo.system.site_code == "ffog"))}' nodes.json
1 „Gefällt mir“

Das ist mit jq nen Einzeiler :wink:

Wow! Das ist sehr elegant, danke!