====== 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.