Notfunk Client für den mobilen Einsatz

Notfunk Telefonanlage

Dell Optiplex 3070

der DARC startete vor einiger Zeit eine Beta-Phase für eine Notfunkanlage, die auf Dockerbasis und einem kleinen Linux läuft. Nach der ersten Vorstellung habe ich diese bei mir auf einen DELL Optiplex 3070 installiert. Die Dokumentation ist super und die kleine Telefonanlage lief sehr schnell. (Link: https://www.darc.de/der-club/referate/notfunk/news/nachricht/news/notfunk-telefonanlage-geht-in-den-darc-internen-beta-test-1/)

OpenStreetMap Tile Server

Nach dem die pbx nun läuft, kam die nächste Idee, was würde man benötigen, wenn man irgendwo offline steht? Genau, eine Karte, weil in gedruckter Form hat man ja den Bereich, den man gerade braucht sowieso nicht. Auch den OpenStreetMap Server gibt es als Docker. Die Anleitung und Beispiele sind ausreichend für die Konfiguration. Der Import dauert aber einige Stunden, nach etwa 10h Import konnte ich dann die erste Map aufrufen. Dem Container sollte man etwas mehr Power geben und ich wollte, dass der sich die Map Daten selbst downloaded. Zudem noch ein paar Angeben, wann Tiles neu gerenderd werden und Updates aktiviert, geht aber nur solange, wie auch der Client online ist.

Die Dockerkonfig von mir habe ich mir mal dazu:

 

- name: Create docker volume
  become: true
  docker_volume:
    name: "{{ item }}"
  with_items:
    - osm-data
    - osm-tiles
  register: osmvolume

- name: Import Docker Container
  become: true
  docker_container:
    name: osm-server
    image: overv/openstreetmap-tile-server:{{ osm_tile_server_version }}
    state: started
    restart: none
    restart_policy: none
    interactive: false
    tty: yes
    ports:
      - "8080:80"
    env:
      DOWNLOAD_PBF:  "https://download.geofabrik.de/europe/germany-latest.osm.pbf"
      DOWNLOAD_POLY: "https://download.geofabrik.de/europe/germany.poly"
      OSM2PGSQL_EXTRA_ARGS: "-C 8096"
      THREADS: "16"
    volumes: 'osm-data:/data/database/'
    command: import
  when: osmvolume.changed

- name: Get Docker details
  docker_container_info:
    name: osm-server
  register: result

- name: Run Docker Container
  become: true
  docker_container:
    name: osm-server
    image: overv/openstreetmap-tile-server:{{ osm_tile_server_version }}
    shm_size: 8g
    state: started
    restart: no
    restart_policy: always
    interactive: true
    tty: yes
    ports:
      - "8080:80"
    env:
      OSM2PGSQL_EXTRA_ARGS: "-C 8096"
      THREADS: "16"
      EXPIRY_MINZOOM: "13"
      EXPIRY_TOUCHFROM: "13"
      EXPIRY_DELETEFROM: "19"
      EXPIRY_MAXZOOM: "20"
      UPDATES: "enabled"
      REPLICATION_URL: "https://planet.openstreetmap.org/replication/hour/"
      MAX_INTERVAL_SECONDS: "60"
    volumes:
      - 'osm-data:/data/database/'
      - 'osm-tiles:/data/tiles/'
    command: run
  register: osmrun
  when: not osmvolume.changed and (result.container['Config']['Cmd'] is search("import") and not result.container['State']['Running']) or result.container['Config']['Cmd'] is search("run")

Für das Pre-Rendering führt man im Container folgenden Befehl aus:

render_list -a -m default -z 0 -Z 13 &

In dem Container ist eine kleine Demo vorhanden, die die Karte anzeigt, in meinem Fall Deutschland. Marker und andere Elemente können nicht gesetzt werden. Dadurch kam der nächste Service gleich dazu.

HamNetDB

hamnetdb.net ist eine Datenbank mit allen hamnet Knoten, IPs und Links. Die Knoten und Links werden auch interaktiv auf einer Map angezeigt und es können Höhenprofile berechnet werden. Die ganze Seite Projekt gibt es auch als GitHub Repository: https://github.com/hamnetdb/hamnetdb. Die Installationsanleitung war jetzt nicht unbedingt die beste, aber es ist machbar. Folgende Pakete habe ich auf meinem Ubuntu installiert:

  • apache2
  • perl
  • libdbd-mysql-perl
  • mysql-server
  • mysql-client

Für die ausführung der .cgi Scripten musste der Apache noch etwas angepasst werden. Dazu muss das Modul CGI (a2enmod CGI) aktiviert werden und zusätzlich habe ich in der VirtualHost Config folgendes ergänzt:

<Directory /var/www/hamnet/>
    AddHandler cgi-script .cgi .pl
    AddDefaultCharset UTF-8
    Options FollowSymlinks ExecCGI
    DirectoryIndex index.cgi index.html
    AllowOverride All
    Require all granted
</Directory>

Die anderen Konfigurationen können wie im Github beschrieben übernommen werden. Damit ist die HamNetDB Seite lauffähig. Nun musste nur noch der Verweis her, damit ich auch die lokale OpenSteetMap benutzen kann. Dazu muss eine Datei bearbeitet werden: /var/www/hamnet/osm/hamnetdb-lf.js

Sucht am besten nach openstreetmap und ihr findet einen "if (soure == 3)//hamnet" Block. Nach dem if, fügt ihr den else if Block hier ein und speichert das ganze.

else if (source == "local") //local
{
  var mapnikUrl = 'http://' + window.location.hostname + ':8080/tile/{z}/{x}/{y}.png';
  var mapnikUrl1 = 'http://' + window.location.hostname + ':8080/tile/{z}/{x}/{y}.png';
  var landscapeUrl = 'http://' + window.location.hostname + ':8080/tiles_topo/{z}/{x}/{y}.png';
  var cycleUrl = 'http://' + window.location.hostname + ':8080/tiles_cyclemap/{z}/{x}/{y}.pn';
  var satUrl= 'http://' + window.location.hostname + ':8080/tiles_sat/{z}/{x}/{y}.jpg';
  var mapnikZoom = 16 ;
  var landscapeZoom =16;
  var cycleZoom = 16;
  var satZoom = 11;
}

Nun könnt ihr die source in der URL mit übergeben ==> http://hamnetdbserver/map.cgi?source=local. Damit holt die die Map die Tiles von eurem lokalen Tile Server und das funktioniert auch offline.