Mehrere Hytera-Repeater hinter einer IP-Adresse / TellusAgent

Aufgrund einiger Nachfragen dokumentieren wir hier die Funktion des TellusAgent
(Entwickelt von Artem, R3ABM)

Mit diesem kleinen stück Software (Proxy) ist es möglich, mehrere Hytera-Repeater hinter einer IP Adresse zu betreiben. Pro Hytera-Repeater wird eine Instanz der Software benötigt, die Installation und Konfiguration sind denkbar einfach.

Wir zeigen hier anhand der Installation auf einem Raspberry PI Schritt für Schritt, wie dies funktioniert.

https://code.brandmeister.network/r3abm/TellusAgent/tree/master
Auf der rechten Seite kann man für unterschiedliche Distributionen einen fertigen Client downloaden (siehe Bild). In unserem Fall (für den Raspberry PI II) nehmen wir einfach 'debian_armhf' und legen diese Datei (z.B. mit WinSCP) im zu erstellenden Verzeichniss /opt/install/ ab.

  1. Im Verzeichnis /opt/install das Zip entpacken, darin befindet sich die Datei tellusagent_xxxxxxxx-xxxxxx_armhf.deb
  2. Die Datei mit dpkg -i tellusagent_xxxxxxxx-xxxxxx_armhf.deb installieren

Ein kurzer Blick in die installierten Pakete mit:
dpkg -l|grep Tellus
gibt uns folgende Ausgabe:

| TeelusAgent
 ii  tellusagent    20170107-125643    armhf    TellusAgent for BrandMeister DMR Master Server 

Damit ist der TellusAgent installiert, die ausführbare Datei sowie die Konfigurationsdatei liegen unter /opt/TellusAgent

In diesem Abschnitt kümmern wir uns um die verschiedenen Konfigurationen und Dateien

Agent Konfigurationsdatei

Pro Agent (ein Agent pro Repeater) benötigen wir eine tellusagentX.conf. Haben wir also wie in unserem Beispiel zwei Repeater, benötigen wir also die tellusagent1.conf und die tellusagent2.conf. Diese Dateien legen wir unter /opt/TellusAgent ab. Als Beispieldatei zum kopieren können wir die tellusagent.conf nehmen.

| tellusagent1.conf
CONNECT_PORT=50000
CONTROL_PORT=50001
MEDIA_PORT=50002
SERVER_ADDRESS=master.up4dar.de
SERVICE_MODE=1
| tellusagent2.conf
CONNECT_PORT=50010
CONTROL_PORT=50011
MEDIA_PORT=50012
SERVER_ADDRESS=master.up4dar.de
SERVICE_MODE=1

Wie man sieht, ergibt es Sinn, die Ports in 10er Schritten hochzuzählen, der Übersicht halber.

Im Repeater muß man die Einstellungen dazu passend vornehmen, siehe die angehängten Bilder.


Agent Startdatei

Für jeden Agent wird auch eine Startupdatei benötigt, um die Agents einzeln starten und stoppen zu können. Hier wieder zwei Beispieldateien, dabei muß drauf geachtet werden, daß der Pfad am Anfang der Datei und der Name der Konfigurationsdatei angepasst werden.

tellusagent1.sh
#!/bin/sh
 
DIRECTORY=/opt/TellusAgent
CONFIGFILE=tellusagent1.conf
 
if [ -f $DIRECTORY/$CONFIGFILE ]
then
  # Read configuration from text file
  # Dot is equivalent of bash's source
  . $DIRECTORY/$CONFIGFILE
fi
 
if [ -f /etc/config/tellusagent ]
then
  # Read configuration from UCI/LuCI on OpenWRT
  CONNECT_PORT=$(uci get tellusagent.@tellusagent[0].connectPort)
  CONTROL_PORT=$(uci get tellusagent.@tellusagent[0].controlPort)
  MEDIA_PORT=$(uci get tellusagent.@tellusagent[0].mediaPort)
fi
 
if [ -n "$1" ]
then
  # 1 - print to standard output
  # 2 - print to system log
  # 6 - run as daemon and print to system log
  SERVICE_MODE=$1
fi
 
$DIRECTORY/tellusagent \
  --connect-port ${CONNECT_PORT} \
  --control-port ${CONTROL_PORT} \
  --media-port ${MEDIA_PORT} \
  --server-address ${SERVER_ADDRESS} \
  --service-mode ${SERVICE_MODE}
tellusagent2.sh
#!/bin/sh
 
DIRECTORY=/opt/TellusAgent
CONFIGFILE=tellusagent2.conf
 
if [ -f $DIRECTORY/$CONFIGFILE ]
then
  # Read configuration from text file
  # Dot is equivalent of bash's source
  . $DIRECTORY/$CONFIGFILE
fi
 
if [ -f /etc/config/tellusagent ]
then
  # Read configuration from UCI/LuCI on OpenWRT
  CONNECT_PORT=$(uci get tellusagent.@tellusagent[0].connectPort)
  CONTROL_PORT=$(uci get tellusagent.@tellusagent[0].controlPort)
  MEDIA_PORT=$(uci get tellusagent.@tellusagent[0].mediaPort)
fi
 
if [ -n "$1" ]
then
  # 1 - print to standard output
  # 2 - print to system log
  # 6 - run as daemon and print to system log
  SERVICE_MODE=$1
fi
 
$DIRECTORY/tellusagent \
  --connect-port ${CONNECT_PORT} \
  --control-port ${CONTROL_PORT} \
  --media-port ${MEDIA_PORT} \
  --server-address ${SERVER_ADDRESS} \
  --service-mode ${SERVICE_MODE}

Systemd Autostart

Anlegen der Autostartdateien

Damit der TellusAgent beim Systemstart auch automatisch startet, müssen wir noch unter /etc/systemd/system/ zwei Dateien anlegen, nämlich tellusagent1.service und tellusagent2.service. Jeweils wieder eine pro Repeater.

Über den Inhalt der Datei wird definiert, welche Startdatei genutzt wird, hier bitte darauf achten, die jeweilige vorher angelegte .sh Datei pro Repeater anzulegen. Folgend wieder zwei Beispieldateien.

tellusagent1.conf
[Unit]
Description=Brandmeister TellusAgent Gateway1
After=network.target
 
[Service]
ExecStart=/opt/TellusAgent/tellusagent1.sh
Restart=on-abort
Restart=on-failure
 
 
[Install]
WantedBy=multi-user.target
tellusagent2.conf
[Unit]
Description=Brandmeister TellusAgent Gateway2
After=network.target
 
[Service]
ExecStart=/opt/TellusAgent/tellusagent2.sh
Restart=on-abort
Restart=on-failure
 
 
[Install]
WantedBy=multi-user.target

Neustart des Systemd

Nachdem die Dateien angelegt wurden, müssen wir noch den Systemd neu starten, dies geschieht mit:

TeelusAgent
systemctl daemon-reload

Autostart aktivieren

Danach können wir für jeden Dienst den Autostart aktivieren, dies geschieht wie folgt:

systemctl enable tellusagent1

TeelusAgent
Created symlink from /etc/systemd/system/multi-user.target.wants/tellusagent1.service to /etc/systemd/system/tellusagent1.service.

systemctl enable tellusagent2

TeelusAgent
Created symlink from /etc/systemd/system/multi-user.target.wants/tellusagent2.service to /etc/systemd/system/tellusagent2.service.

Dienste starten

Mit „systemctl start tellusagent1.service“ und mit „systemctl start tellusagent2.service“ werden die beiden Dienste gestartet.

Dienste stoppen

Mit „systemctl stop tellusagent1.service“ und mit „systemctl stop tellusagent2.service“ werden die beiden Dienste gestoppt.

Status der Dienste prüfen

Den Status der Dienste kann man wieder mit systemctl prüfen:

„systemctl status tellusagent1.service“ oder „systemctl status tellusagent2.service“

TeelusAgent
● tellusagent1.service - Brandmeister TellusAgent Gateway1
   Loaded: loaded (/etc/systemd/system/tellusagent1.service; enabled)
   Active: active (running) since Mo 2017-01-30 21:04:14 CET; 3s ago
Main PID: 1347 (tellusagent1.sh)
   CGroup: /system.slice/tellusagent1.service
           ├─1347 /bin/sh /opt/TellusAgent/tellusagent1.sh
           └─1348 /opt/TellusAgent/tellusagent --connect-port 50000 --control-port 50001 --media-port 50002 --server-address master.up4dar.de --...
 
Jan 30 21:04:14 bmgateway systemd[1]: Started Brandmeister TellusAgent Gateway1.

Das wars auch schon, viel Spaß mit dem TellusAgent! Robert DK5RTA