Wiki - Freifunk Pinneberg

Freies WLAN im Kreis Pinneberg

Benutzer-Werkzeuge

Webseiten-Werkzeuge


meshviewer

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 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
Koordinaten sind vorhanden, Knoten wird auf der Karte angezeigt
Mobiler Knoten (role=mobile)
Temporärer Knoten z.B. nur tagsüber verfügbar (role=temp)
VPN Offloader (role=offloader)
Testknoten (role=test)
Gateway
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:

/etc/cron.d/ffmap
# 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:

/etc/ffmap/ffmap.cfg
# 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:

/etc/logrotate.d/ffmap
/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.

meshviewer.txt · Zuletzt geändert: 14.12.2023 15:23 von havelock