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.
Download
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.
Installation
- Im Verzeichnis /opt/install das Zip entpacken, darin befindet sich die Datei tellusagent_xxxxxxxx-xxxxxx_armhf.deb
- 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
Konfiguration
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