====== Meshviewer / Knotenkarte ======
Die Karte läuft momentan auf dem Server, der auch ''gate03'' fährt.
Um die notwendigen Daten zu sammeln muß das Backend ''ffmap-backend''
auf die Programme ''alfred'' und ''batadv-vis'' zurückgreifen.
Folglich muß das Backendprogramm auf einem Rechner laufen, der Teil
des Meshs ist.
Das Backend schreibt die Daten in drei [[meshviewer_json|JSON-Dateien]], welche sinnvollerweise
in einem Datenverzeichnis abgelegt werden. In den Dateien ist beispielsweise
das erste Auftauchen eines Knotens vermerkt:
* ''nodelist.json'' - Kurze Knotenliste
* ''nodes.json'' - Detaildaten zu den einzelnen Knoten
* ''graph.json'' - Beschreibung der Verbindungen der Knoten untereinander
* ''blacklist.json'' - Korrekturmöglichkeit für Knoten, die die Karte "sprengen"
Werden die Dateien gelöscht, beginnt man ganz von vorne, d.h. alle
Knoten werden wieder als neu angesehen.
Hinter den Knoten werden ggf. verschiedene Symbole angezeigt:
^ Symbol ^ Bedeutung ^
| {{:icon-location.png?nolink|}} | Koordinaten sind vorhanden, Knoten wird auf der Karte angezeigt |
| {{:icon-car.png?nolink|}} | Mobiler Knoten (role=mobile) |
| {{:icon-clock.png?nolink|}} | Temporärer Knoten z.B. nur tagsüber verfügbar (role=temp) |
| {{:icon-planet.png?nolink|}} | VPN Offloader (role=offloader) |
| {{:icon-flask.png?nolink|}} | Testknoten (role=test) |
| {{:icon-earth.png?nolink|}} | Gateway |
| {{:icon-gear.png?nolink|}} | Knoten für Dienste (Server) |
===== Backend =====
Das Backend heißt ''ffmap-backend'', das Pinneberger Programm ist zu finden unter: [[https://git.pinneberg.freifunk.net/thooge/ffmap-backend]]
Abhängigkeiten von Programmen
* ''batctl''
* ''alfred-json''
* ''batadv-vis''
Voraussetzung für den Betrieb:
aptitude install python3 python3-networkx python-configparser rrdtool
Die Daten werden unter Debian am besten unter ''/var/lib'' gespeichert.
Wir verwenden:
* ''/var/lib/ffmap'' ist das Basisverzeichnis
* die JSON-Dateien speichern wir in das Verzeichnis ''/var/lib/ffmap/mapdata'', dieses wird über die Konfiguration des virtuellen Servers als Alias in den Webspace des Meshviewers eingebunden
* die RRD-Dateien speichern wir in das Verzeichnis ''/var/lib/ffmap/nodedb''
* Konfigurationsdateien gehören nach ''/etc'', wir verwenden ''/etc/ffmap'':
* ''aliases.json''
* ''ffmap.cfg''
Es wird eine Protokolldatei geschrieben. Als Standard wird ''/var/log/ffmap.log'' verwendet.
Der Umfang der Protokollierung kann über die Konfigurationsdatei mittels ''loglevel''
eingestellt werden. Die Protokollierung kann durch einen Loglevel von 0 ausgestellt werden.
Die Datenaktualisierung erfolgt jede Minute über einen Cron-job:
# Meshviewer backend
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
*/1 * * * * root /usr/local/bin/ffmap-pi/backend.py -d /var/lib/ffmap/mapdata --with-rrd
Beispiel für eine Konfigurationsdatei des Backends:
# configuration for freifunk map utilities
[global]
logfile = /var/log/ffmap.log
loglevel = 2
dest_dir = /var/lib/ffmap/mapdata
aliases = /etc/ffmap/aliases.json
prune = 180
[rrd]
enabled = yes
graphs = no
nodedb = /var/lib/ffmap/nodedb
Wenn protokolliert wird, kann das eine ganze Menge an Daten ergeben, weil
das Programm im Normalfall jede Minute ausgeführt wird.
Da ist es sinnvoll, die Rotation der Logdateien zu konfigurieren:
/var/log/ffmap.log {
daily
rotate 7
compress
delaycompress
notifempty
missingok
}
===== Frontend =====
Wir benutzen die Version 4 des Frontends mit einigen kleinen eigenen Änderungen.
Die Quellen befinden sich unter: https://github.com/ffnord/meshviewer
aptitude install nodejs nodejs-legacy npm ruby-sass
git clone https://github.com/ffnord/meshviewer.git
cd meshviewer
git checkout v4
npm install
npm install bower grunt-cli
node_modules/.bin/bower install
ln -s /var/lib/ffmap/mapdata data
Unter Wheezy muß die Datei ''scss/main.scss'' angepaßt werden.
/* @media screen and (max-width: $minscreenwidth) { */
@media screen and (max-width: 630pt) {
Nach einer Änderung in der Konfiguration muß der
folgende Befehl aufgerufen werden:
node_modules/.bin/grunt
cp config.json.example config.json
Config.json bearbeiten
TODO RESTORE
TODO Wenn es keinen Knoten mit Koordinaten gibt, dann wird die Leaflet-Karte nicht angezeigt
Wenn die JSON-Dateien von einem anderen Server geladen werden, so
muß dieser einen zusätzlichen Antwortheader einbauen. Für Lighttpd ist das
z.B.: ''setenv.add-response-header = ( "Access-Control-Allow-Origin" => "*" )''
==== Alternativinstallation ====
Ohne den ganzen NodeJS-Plunder.
Es werden soweit es geht Pakete des Betriebssystems verwendet,
Siehe dazu auch den Helgoländer Meshviewer.
apt-get install libjs-moment libjs-d3 libjs-requirejs libjs-es6-shim
==== Statistik ====
aptitude install php-gd php-rrd
Die Statistiken sind im Unterverzeichnis ''stats'' zu finden.