# BATCAVE **B**atman / **A**lfred **T**ransmission **C**ollection, **A**ggregation & **V**alue **E**ngine Dieser Daemon läuft auf einem Rechner der im Freifunk-Mesh hängt und fragt periodisch (Default = 15s) die Batman- und Alfred-Daten ab. Die Daten werden aggregiert und können anschließend an mehrere Datensenken weitergegeben werden: * Knoten-Management (allgemeine Meta-Daten zu eigenen Knoten) * Graphite (Knoten-Graphen und Detail-Statistiken) Zusätzlich besteht die Möglichkeit der Datenabfrage über eine HTTP-JSON-Schnittstelle. ## Voraussetzungen * der Rechner ist in ein BATMAN-ADV Mesh eingebunden und batadv_vis ist installiert * auf dem Rechner läuft ein (ALFRED-Daemon)[http://www.open-mesh.org/projects/open-mesh/wiki/Alfred] ## Installation ``` sudo apt-get install python-daemon python-redis python-requests sudo ln -s "`pwd`/contrib/init-script.sh" /etc/init.d/ffstatus echo "DAEMON_DIR=`pwd`" | sudo tee -a /etc/default/ffstatus sudo update-rc.d ffstatus defaults sudo update-rc.d ffstatus enable ``` ## Aufruf Ohne Paramter startet die BATCAVE mit einem lokalen Storage (storage.dat im aktuellen Verzeichnis). **Empfohlen wird jedoch die Verwendung von Redis als Storage-Backend.** Hierzu ist dem Parameter `-S` mindestens der String "redis:" anzugeben. Optional folgen können - jeweils mit Doppelpunkt getrennt - der Redis-Hostname, -Port und -Kennwort; z.B. `-S redis:localhost:6379:geheim`. ``` usage: batcave.py [-h] [--logfile LOGFILE] [--interval INTERVAL] [-v] [-d] [-n] [-A ALFRED_JSON] [-B BATADV_VIS] [-G GRAPHITE_HOST] [--graphite-port GRAPHITE_PORT] [--dashing-url DASHING_URL] [--dashing-token DASHING_TOKEN] [--api-bind-host API_BIND_HOST] [--api-bind-port API_BIND_PORT] [-S STORAGE] Batman/Alfred Transmission Collection, Aggregation & Value Engine optional arguments: -h, --help show this help message and exit --logfile LOGFILE path for log file --interval INTERVAL data poll interval -v, --verbose increase output verbosity -d, --no-detach Don't detach (daemonize) ourself -n, --no-send Fetch data but don't send it -A ALFRED_JSON, --alfred-json ALFRED_JSON executable path for alfred-json -B BATADV_VIS, --batadv-vis BATADV_VIS executable path for batadv-vis -G GRAPHITE_HOST, --graphite-host GRAPHITE_HOST Graphite host --graphite-port GRAPHITE_PORT Graphite port --dashing-url DASHING_URL Dashing URL --dashing-token DASHING_TOKEN Dashing's secret update token --api-bind-host API_BIND_HOST API-Server Hostname --api-bind-port API_BIND_PORT API-Server Port -S STORAGE, --storage STORAGE Path where to store data or "redis:[[:[:]]]" ``` ## Lokaler Betrieb (nur sinnvoll für Entwickler) Im `contrib/` liegen mehrere Skripte für den lokalen Betrieb: * **fetch-current-data.sh** lädt aktuelle Rohdaten der Tools alfred-json, batctl und batadv-vis und speichert sie lokal ab. * **run-local.sh** startet die BATCAVE und leitet die Aufrufe statt zu den richtigen Tools in Helfer-Skripte im Verzeichnis um.