• SQ9LM | Polish amateur radio station
  • SN0DN | Klub Dragon-net.pl

Kategoria: HBLink

HBLink – opis pliku rules.py

Postanowiłem zrobić opis pliku hblinka – rules.py bo często dostaje zapytanie co to jest za zmienna i do czego ona służy.

Na przykładzie mojego mastera SQ9LMHBL – Kraków

.....
{'SYSTEM': 'SQ9LM','TS': 1, 'TGID': 778, 'ACTIVE': True, 'TIMEOUT': 25, 'TO_TYPE': 'OFF', 'ON': [778], 'OFF': [8,4], 'RESET': []},
...

i teraz kolejko opis poszczególnych zmiennych:

’SYSTEM’: 'SQ9LM, – nazwa mastera;
TS’: 1, – szczelina czasowa / slot
’TGID’: 778, – numer grupy rozmówców;
’ACTIVE’: True, – master podczas startowania systemu ma być włączony czy wyłączony # zmienna przyjmuje funkcje True oraz False ;
’TIMEOUT’: 25, – czas po jakim ma się włączyć lub wyłączyć;
’TO_TYPE’: 'OFF’, – zmienna co ma zostać wykonane: wartości OFF – automatyczne wyłączenie po czasie ustawionym w zmiennej TIMEOUT, ON – aktywacja na czas wybrany w zmiennej… NONE – aktywacja ręczna;
’ON’: [778], – zmienna załączająca podaje się to sama TG, na którym rozmawiamy;
’OFF’: [8,4,6,994], – zmienna wyłączająca // tu wpisujesz jakimi grupami chcesz deaktywować – w tym przypadku XLX778-A;
’RESET’: [778] – reset licznika /czasomierza – to służy do przedłużania deaktywacji grupy // czyli w praktyce ma to się tak. W przypadku bezczynności na XLX od Twojej strony po 25 min. zostanie wyłączona ta grupa, ale jeśli kliknie się na TG778 to zegar będzie resetowany przez cały czas, aż do nastania ciszy 25 min., wtedy zostanie ona wyłączona.

to tyle….

HBLink i ECHOLink

Opis powstał przy współpracy HF4ALL / M0IQF Marcin (dzięki) opisana instalacja działa na HBLinku w Luton

Zapraszam do zapoznania się:

Jak udostępnić użytkownikom analogowym dostęp poprzez echlonik do naszego lokalnego serwera HBlink.
Wykorzystujemy do tego celu mechanizm tzn. narzędzia DVSwitch Grup, które pozwolą nam udostępnić poprzez echolink aplikacje (PC/ Android).

Obecne zestawienie działa z powodzeniem na HBL Londyn i Kraków.
TG44 która podłączona jest z NODem HF4ALL-R oraz po stronie BM z TG2346497 – jes to prywatna grupo pod ID M0IQF
Jak widać admini z UK nie mają nic przeciwko łączeniu EchoLinka z BM – brawo Polska!

Jest to opis przykładowy użyta TG44 jest używana tylko u nas trzeba sobie samemu wybrać do jakiej grupy chcielibyśmy się podłączyć, nie proponuję łączenia EchoLinka z siecią BM bez ówczesnego poinformowania admina tej że sieci. Zawsze można testowo postawić na grupie własnego ID.

Allstar Network https://www.allstarlink.org/ to bardzo popularne rozwiązanie głównie w USA oraz stosowane w innych krajach. AllStarlink oprogramowanie bazuje na znanym oprogramowaniu do cyfrowych centrali Asterisk. Grupa radioamatorów dodała moduły do obsługi przemienników radiowych. Allstarlink posiada także moduł echolink nie tak rozbudowany w możliwości jak ma to svxlink ale dzięki temu można używając Allstarlink uruchomić hybrydę, która działa w sieci Allstar i EchoLink. Allstarlink posiada obsługę protokołu USRP (GNU Radio) dzięki temu może komunikować się z Analog_Bridge które pozwala nam zrobić most do sieci DV.

Możemy wykorzystać oprogramowanie Allstarlink do budowy mostu pomiędzy analogiem a DMR uruchamiając Allstarlink z modułem echolink i USRP. Nie musimy jeśli nie chcemy rejestrować się w sieci Allstar. Możemy uruchomić Allstarlink jako prywatne node z numerem „1999” który nie będzie łączył się z siecią Allstar.
Aby użyć modułu echolink w Allstarlink musisz mieć zarejestrowany znak na echolink.org oraz wygenerować hasło dla zarejestrowanego znaku (należy to zrobić przy pomoc programu na PC „Echolink” logując się pierwszy raz po zaakceptowaniu zarejestrowanego znaku)

Instalacja Allstarlink

Przed instalacją Allstarlink musisz mieć uruchomiony link do swojego HBLink serwera z zestawem aplikacji MMDVM_Bridge, Analog_Bridge oraz md380-emu do zdefiniowanego mastera w hblink.cfg ECHOLINK oraz zdefiniować stosowną grupę rozmowną w Analog_Bridge.ini „txTg =44” na, której będzie przekazywany ruch z Echolink oraz stosowne reguły w rules.py. Pamiętaj o zależności portów w plikach dvswitch.ini oraz portach emulatora aby nie wygenerować konfliktów portów z innymi już działającymi aplikacjami MMDVM_Bridge/Ananlog_Bridge. Ja w swoim Analog_Bridge.ini poziomy audio ustawiłem:
usrpAudio = AUDIO_USE_GAIN,
usrpGain = 3.0,
tlvAudio = AUDIO_USE_GAIN,
tlvGain = 1.0
ale warto poeksperymentować z wartościami.

Zgodnie z opisem: https://wiki.allstarlink.org/wiki/ASL_FAQ

A teraz INSTALACJA

cd /tmp
apt update
apt upgrade
wget http://dvswitch.org/install-allstarlink-repository
chmod +x install-allstarlink-repository
./install-allstarlink-repository

Jeśli miałeś już zainstalowane repozytorium może pojawić się komunikat

The Repository file already exists, exiting

Następnie należy zainstalować nagłówki dla kernela.

Jeśli masz Raspbian zrób polecenie:

apt-get install raspberrypi-kernel-headers -y

Jeśli nie używasz Raspbian tylko Debian:

apt-get install linux-headers-`uname -r` -y

Po zainstalowaniu linux-headers robimy instalacje allstarlink pakietu

apt-get update
apt-get install allstarlink -y

Następnie wykonać reboot komputera i przystąpić do konfiguracji.

Pobierz pliki z przykładową konfiguracją prywatnego noda Allstar oraz modułem echolink:

Pobrany plik rozpakować poleceniem

tar xvf allstar_conf.tar

archiwum zawiera pliki:

modules.conf
echolink.conf
extensions.conf
rpt.conf
savenode.conf

Rozpakowane pliki należy skopiować do katalogu /etc/asterisk.

*Warto wcześniej zrobić sobie kopie oryginalnych plików.

W pliku echolink.conf należy wpisać swoje dane:

call = N0CALL-L     # Wpisz zarejestrowany znak wywoławczy dodając na końcu -L lub -R dla przemiennika
pwd = pass         # Hasło jakie masz na dla zarejestrowanego znaku na echorlink.org
name = DMR Gate     # Nazwa jak pokazuje się w nagłówku 
qth = DMR Gate      # Nazwa jak pokazuje się po połączeniu z echolink node
email = echolink@twoj-domena      # Wpisz swój adres email

node = 123456       # Wpisz numer noda echolink jaki został przypisany do znaku z "call="

# astnode numer 1999 to prywatny node nie logujący sie do Allstar Network 
astnode = 1999          # Zmien to jesli masz zarejestrowany node w Allsatr network. Numer 1999 to prywatny node 

; Data for EchoLink Status Page
lat = 53.0000        # Szerokość geograficzna 
lon = 18.0000       # Długość geograficzna
freq = 438.175      # QRG MHz
tone = 0.0           # CTCSS Tone (0 for none)
power = 1             # 0=0W, 1=1W, 2=4W, 3=9W, 4=16W, 5=25W, 6=36W, 7=49W, 8=64W, 9=81W (Power in Watts) // ustawmy na 1 bo to jest i tak cyfrowo!
height = 10          # 0=10 1=20 2=40 3=80 4=160 5=320 6=640 7=1280 8=2560 9=5120 (AMSL in Feet)
gain = 3              # Gain in db (0-9)
dir = 0                # 0=omni 1=45deg 2=90deg 3=135deg 4=180deg 5=225deg 6=270deg 7=315deg 8=360deg (Direction)

maxstns = 10          # Max liczba stacji które mogą sie podłączyć

Następnie edycja pliku rpt.conf, w którym należy podać numery portów rxPort i txPort z Ananlog_Bridge.ini

# USRP do Analog_Bride, skladnia:  
# USRP/IP:rxPort:txPort, gdzie rxPort i txPort wartości z Ananlog_Bridge.ini w [USRP]

rxchannel = USRP/127.0.0.1:12345:12346  

Po zakończeniu konfiguracji możemy uruchomić nasz allstarlink

systemctl start asterisk

Możesz sprawdzić czy echolink node jest dostępny na wykazie http://echolink.org/logins.jsp (ten z opisu to HF4ALL-R)

Można użyć dostępnego narzędzia do konfiguracji allstarlink wykonując polecenie

asl-menu

Dokumentacja:

Diagnostyka HBLinka?

Jeśli podczas uruchamiania lub zmian w konfiguracji HBLink3 lub HBmonitor mamy problem z działaniem, w pierwszej kolejności należy ogarnąć informacje zawarte w logach, które są zapisywane pod nazwami podanym w plikach konfiguracyjnymi dla HBmonitor config.py oraz dla HBlink3 hblink.cfg.
Jeśli informacje zawarte w logach nie pomagają nam można interaktywnie uruchamiać programy.

HBmonitor

Zatrzymąć Hbmonitor:

systemctl stop hbmon
cd /opt/HBmonitor

Uruchomić HBmonitor dla wersji z python2:

python web_tables.py

dla wersji python3:

python3 monitor.py

i obserwować jakiego rodzaju błędy pojawiają się na konsoli.

W przypadku HBLink3 należy uruchamiać 2 etapowo.

Zatrzymać HBlink3

systemctl stop hblink

sprawdzanie problemów konfiguracji hblink.cfg:

cd /opt/HBlink3
python3 hblink.py

jeśli nie ma błędów zatrzymać proces i uruchomić etap 'bridges’ czyli sprawdzenie poprawności składni w rules.py

cd /opt/HBlink3
python3 bridge.py

W podobny sposób możemy weryfikować serwer echa playback.py, który ma swoją konfiguracje w ’palyback.py

Zatrzymać serwer echa

systemctl stop parrot

Uruchomić ręcznie serwer echa

cd /opt/HBlink3
python3 playback3 -c /opt/HBlink3/playback.cfg

Warto skorzystać z komendy unix, która pokazuje nam jakie porty UDP obecnie są używane. Komendę należy uruchomić jako 'root’ wtedy mamy w wykazie podane nazwy programów które używają dane porty.

netstat -unap 

lub porty TCP:

netstat -tnap 

Najczęściej popełniane są błędy w składni hblink.cfg oraz w zasadach rules.py

Opis TG na HBL-Kraków

Grupy Dynamiczne aktywacja są poprzez wciśnięcie PTT na okres 10 min.

HotSpot – Simplex
Wszystkie grupy dostępne są na Slocie 2

HotSpot – Duplex
Grupy Dynamiczne (aktywacja PTT 10 min):

TS1 TG1324 – Grupa do rozmów na XLX132-D / Multireflektor D-Star/DMR/YSF
TS1 TG7781 – Grupa do rozmów na XLX778-A /  Multireflektor: D-Star/C4FM/DMR 
TS2 TG15 – Grupa EmCom BM: 260015

NOWE GRUPY W SIECI Polska HBlink Network

TS1 TG260 – Grupa do rozmów na połączonych serwerach w sieci Polska HBLink Network. Grupa statyczna. W DMR GW ustawić: 
TGRewrite10=1,2260,1,260,1 aby nadawać na TG260 w sieci HBL
TS1 TG26000 – Grupa techniczna
TS1 TG26001-10 Grupy Regionalne

TS1 TG 260901 Tarnów
TS1 TG 260778 Kutno
TS1 TG 260401 Białystok
TS1 TG 260902 Kraków
TS1 TG 260201 Chojnice
TS1 TG 260301 Zielona-Gora
TS1 TG 260601 Wrocław
TS1 TG 260202 Chojnice2
TS1 TG 260701 Łódź
TS1 TG 260525 Kadzidło
TS1 TG 260911 Jastrzębie-Zdrój
TS1 TG 260203 Bydgoszcz
TS1 TG 260204 Bydgoszcz2
TS1 TG 260909 Silesia
TS1 TG 260928 Orzesze
TS1 TG 260501 Warszawa.KAB

TS2 TG7 – Grupa do rozmów lokalnych na HBLink Kraków oraz Zakopane i YSF Kraków 57061
TS1 TG8 – Grupa do rozmów na połączonych lokalnych serwerach HBLink.
TS2 TG94(z możliwością deaktywacji na 10 min.) Grupa regionalna połączona z BM: TG26094
TS2 TG9999 – eCHO PAPUGA / PAROTT Chyba nie trzeba tłumaczyc do czego służy.

Lokalny Serwis Informacyjny:
TS2 TG50/51/52/53/54/55
50 – Info,
51 – Kraków: Pogoda
52 – Kraków: Pogoda za 12 h
53 – Kraków: Meteo alerty
54 – Poziom rzek
55 – Lokalne info

71 – Zakopane: Pogoda
82 – Zakopane: Pogoda 12+h
81 – Jastrzębie Zdrój: Pogoda
82 – Jastrzębie Zdrój: Pogoda 12+h

Aktywacja PTT grup dynamicznych.

Najpierw podłączamy sie do grupy wybierając odpowiednie TG i naciskamy PTT na ok. 2-3s.

Później podłączamy się do systemu trzymając PTT ok. 3-5 sekund, zwalniamy PTT i słuchamy odpowiedzi wybranego przez nas komunikatu.

Krakowski lokalny reflektor XLX260-C YSF<->DMR

Krakowski XLX260-C zmienił nazwę na PL YSF-Krakow 57061 Jest to nod dostępowy a systemu DMR oraz YSF.
Więcej w innym atrykule…

pozdrawiam i życzę miłej lektury.

Krakowski lokalny reflektor jest częścią reflektora XLX260 utworzonego dla sieci HBLink. Poszczególne moduły tego reflektora przypisane są do:
Moduł A – YSF-HBLink Polska
Moduł B – YSF Kutno
Moduł C – YSF Kraków

Poniżej pokazuję dwa sposoby połączenia się z reflektorem XLX260-C. Dokonać tego można poprzez konfigurację HS bądź bezpośrednio poprzez przemiennik sieci Fusion (C4FM), pod warunkiem, że jest on podłączony do sieci i umożliwia podłączenie do wybranego reflektora i modułu, ale skupmy się na HotSpocie.

Sposób_1:

Konfigurację HS rozpoczynamy od uruchomienia obsługi sieci YSF. W tym celu w panelu głównym hotspota wybieramy Configuration. Włączamy obsługę sieci YSF i zatwierdzamy klawiszem Apply Changes.

Po odświeżeniu się okna przechodzimy do sekcji Yeasu System Fusion Configuration. Z rozwijanej listy wybieramy bramkę startową FCS00290 i zatwierdzamy ten wybór klawiszem Apply Changes.

Po odświeżeniu ekranu przechodzimy do sekcji Expert > MMDVMHost.
Wypełniamy poszczególne:
Enable: 1
LocalAddres: 127.0.0.1
LocalPort: 3200
GatewayAddress: 80.211.208.227
GarewayPort: 42000
Debug: 0
ModeHang: 5

Zatwierdzamy klawiszem Apply Changes.

Po powrocie do głównego okna HS zauważymy w lewym dolnym rogu informację, że jesteśmy połączeni z siecią YSF i zlinkowani z branką Room: PL YSF-HBL.

Na koniec w kocfiguracji w sekcji DMR Configuration zmieniamy
moduł XLX zgodnie ze zdjęciem poniżej.

Zatwierdzamy ApplyChanges

Sposób_2:

w przygotowaniu…

Papuga w HBlink3

Moduł eCHO z serwera HBLink2, przepisany na HBlink3. Udostępniona wersja jest w fazie BETA – działa – można ją zainstalować i używać.
Poco nam ta usługa? Usługa dla lokalnych użytkowników, którzy chcą sprawdzić jak (czy) ich słychać na lokalnym serwerze HBlink.

Instalacja!

Pobieramy moduł playback.py z github’a:

cd /opt/HBlink3
wget https://raw.githubusercontent.com/n0mjs710/hblink3/master/playback.py
chmod +x palyback.py

Tworzymy plik konfiguracyjny dla serwera echa na bazie np.: hblink.cfg lub wkleić poniższą wersje w plik nowy plik /opt/HBlink3/playback.cfg

[GLOBAL]
PATH: ./
PING_TIME: 10
MAX_MISSED: 5
USE_ACL: True
REG_ACL: PERMIT:ALL
SUB_ACL: DENY:1
TGID_TS1_ACL: PERMIT:ALL
TGID_TS2_ACL: PERMIT:9999

[REPORTS]
REPORT: False
REPORT_INTERVAL: 60
REPORT_PORT: 4322
REPORT_CLIENTS: 127.0.0.1

[LOGGER]
LOG_FILE: /var/log/hblink/parrot.log
LOG_HANDLERS: file-timed
LOG_LEVEL: INFO
LOG_NAME: Parrot

[ALIASES]
TRY_DOWNLOAD: False
PATH: ./
PEER_FILE: peer_ids.json
SUBSCRIBER_FILE: subscriber_ids.json
TGID_FILE: talkgroup_ids.json
PEER_URL: https://www.radioid.net/static/rptrs.json
SUBSCRIBER_URL: https://www.radioid.net/api/dmr/user/?country=Poland
STALE_DAYS: 7

[ECHO]
MODE: MASTER
ENABLED: True
REPEAT: True
MAX_PEERS: 10
EXPORT_AMBE: False
IP: 
PORT: 54100   #jeśli jest wolny
PASSPHRASE: password
GROUP_HANGTIME: 5
USE_ACL: True
REG_ACL: PERMIT:9999
SUB_ACL: DENY:1
TGID_TS1_ACL: DENY:ALL
TGID_TS2_ACL: PERMIT:9999

aby uruchomić serwer w autostarcie należy
użyć pliku /lib/systemd/system/parrot.service z zawartością:

[Unit]
Description=HB bridge all Service

After=network-online.target syslog.target
Wants=network-online.target

[Service]
StandardOutput=null
WorkingDirectory=/opt/HBlink3
RestartSec=3
ExecStart=/usr/bin/python3 /opt/HBlink3/playback.py -c /opt/HBlink3/playback.cfg
Restart=on-abort

[Install]
WantedBy=multi-user.target

Utworzyć katalog dla logów jeśli nie ma /var/log/hblink

mkdir /var/log/hblink

Serwer uruchamiamy komendą:

systemctl enable parrot.service %% systemctl start parrot.service
aby sprawdzić status usługi
systemctl status parrot.service

Jeśli status usługi 'parrtot’ jest OK możemy dodać do konfiguracji /opt/HBlink3/hblink.cfg połączenie do serwera ECHO:

[ECHO]
MODE: PEER
ENABLED: True
LOOSE: False
EXPORT_AMBE: False
IP: 
PORT: 54098
MASTER_IP: 127.0.0.1
MASTER_PORT: 54100     #jeśli jest wolny
PASSPHRASE: password
CALLSIGN: ECHO
RADIO_ID: 9999
RX_FREQ: 000
TX_FREQ: 000
TX_POWER: 5
COLORCODE: 1
SLOTS: 2
LATITUDE: 53.00000
LONGITUDE: -8.00000
HEIGHT: 0
LOCATION: Serwer Echo: TG 9999
DESCRIPTION: Papuga
URL: 
SOFTWARE_ID: DMRGateway-20190620
PACKAGE_ID: MMDVM_HBlink
GROUP_HANGTIME: 5
OPTIONS:
USE_ACL: False
SUB_ACL: DENY:1
TGID_TS1_ACL: PERMIT:ALL
TGID_TS2_ACL: PERMIT:ALL

oraz w regułach /opt/HBlink3/rules.py musimy ustawić odpowiednie wpisy do wszystkich naszych MASTERów

'ECHO': [
 {'SYSTEM': 'MASTER-H','TS':2,'TGID':9999,'ACTIVE':True,'TIMEOUT':1,'TO_TYPE': 'NONE','ON':[],'OFF':[],'RESET':[]},
 {'SYSTEM': 'MASTER-RPT','TS':2,'TGID':9999,'ACTIVE':True,'TIMEOUT':1,'TO_TYPE':'NONE','ON':[],'OFF':[],'RESET':[]},
 {'SYSTEM': 'PARROT','TS':2,'TGID':9999,'ACTIVE':True,'TIMEOUT':1,'TO_TYPE':'NONE','ON':[],'OFF':[] 'RESET':[]},
        ],

Powyższe reguły są regułami domyślnymi jeżeli masz inne, musisz je ustawić zgodnie ze swoim wzorem.

teraz musimy zrestartować server hblink:

systemctl restart hblink

Używając TG 9999 na TS2 sprawdzić działanie echo serwera.

Warto zaglądać na git hub autora: https://github.com/n0mjs710/hblink3 
oraz monitorować grupę dyskusyjną DVSwitch

Text po części zapożyczony ze strony sq2ong

Jak uruchomić własny lokalny HBLink?

Wszystkie poniżej komendy w opisie są wykonywane jako użytkownik ‘root‘ na Rapsberry Pi4, ale na RPi3b+ też działa.

Poniżej opis jak uruchomić podstawowy HBLink3 serwer do którego można będzie się podłączyć hotspotami. Można rozważyć instalacje HBLink serwera na wirtualnym komputerze VPS co zapewni nam stabilność i niezawodność naszego serwera na którym oprócz serwera HBLink możemy uruchomić inne usługi dla naszej lokalnej sieci. Poniższe opisane komendy są wykonywane jako użytkownik root lub komendy sudo -s aby mieć uprawnienia użytkownika root.

apt-get update
apt-get upgrade
apt-get install git python-pip python3-pip python-dev python3-dev libffi-dev libssl-dev

PS.
A dla leniwych proponuje zainstalowanie mc bedzie szybciej i nie bedzie trzeba klikać tyle kodów.

apt-get install mc
włączamy po prostu pisząc mc

Instalujemy HBLink3 który używa python3 i wg opinii autorów ma lepszą wydajność niż HBLink z python2. Obecnie kiedy pisałem ten opis Parrot nie jest jeszcze dostępny w wersji HBLink3.

cd /opt
git clone https://github.com/n0mjs710/HBlink3.git
cd /opt/HBlink3

Uruchamiamy instalacje niezbędnych bibliotek python3 dla HBlink3:

chmod 0755 install.sh
./install.sh

Konfiguracja HBLink3. Robimy kopie przykładowej konfiguracji dla HBLink:

cd /opt/HBlink3
cp hblink-SAMPLE.cfg hblink.cfg

Robimy edycje pliku:

nano hblink.cfg

Poniżej pokazuje fragmenty pliku które należy zmienić wg podanych niżej

[LOGGER]
LOG_FILE: /var/log/hblink.log
LOG_HANDLERS: file-timed
LOG_LEVEL: INFO
LOG_NAME: HBlink

Wyłączamy link OpenBridge który nie używamy na obecnym etapie konfiguracji serwera:

[OBP-1]
MODE: OPENBRIDGE
ENABLED: False

Zmieniamy hasło dostępowe (PASSWORD) oraz numer portu (PORT) na jakim będzie dostępny nasz HBLink serwer, Pole IP pozostawiamy puste. Dane te (PORT, PASSWORD oraz zewnętrzny IP) będą później potrzebne dla użytkowników Pi-Star hotspotów którzy będą chcieli się podłączyć do Twojego Master serwera.

Definicja master serwera dla hotspotów

[MASTER-H]
MODE: MASTER
ENABLED: True
REPEAT: True
MAX_PEERS: 10
EXPORT_AMBE: False
IP:
PORT: 62000
PASSPHRASE: passw0rd
GROUP_HANGTIME: 5
USE_ACL: True
REG_ACL: DENY:1
SUB_ACL: DENY:1
TGID_TS1_ACL: PERMIT:ALL
TGID_TS2_ACL: PERMIT:ALL

Jeśli planujesz że do HBLink serwera będą podłączane hotspoty które tylko będą korzystać z sieci HBLink a nie będą używać innych sieci np Brandmeister itp i nie będą się łączyć przy pomocy “DMRGateway”, można uruchomić dwa master serwery MASTR-S dla hotspotów simplex na porcie 62000 i MASTER-D dla hotspotów duplex na porcie 62001. Dzięki temu będziesz mógł mapować grupy rozmowne dla TS1 i TS2 odpowiednio dla bezpośrednio połączonych hotspotów duplex do MASTER-D. Jeśli hotspoty będą się łączyć zawsze do HBLink jak do drugiej sieci poprzez DMRGateway wystarczy jeden MASTER-H na którym wszystkie grupy będą na TS2 a każdy użytkownik indywidualnie może sobie zmapować na odpowiednie szczeliny czasowe za pomocą TGRewrite w DMRGateway.

Definicja master serwera dla przemienników:

[MASTER-RPT]
MODE: MASTER
ENABLED: True
REPEAT: True
MAX_PEERS: 10
EXPORT_AMBE: False
IP:
PORT: 62002
PASSPHRASE: passw0rd
GROUP_HANGTIME: 5
USE_ACL: True
REG_ACL: DENY:1
SUB_ACL: DENY:1
TGID_TS1_ACL: PERMIT:ALL
TGID_TS2_ACL: PERMIT:ALL

Wyłączamy definicje dla REPEATER-1 i XLX-1 (nie będziemy używali tego)

[REPEATER-1]
MODE: PEER
ENABLED: False
.....

[XLX-1]
MODE: XLXPEER
ENABLED: False
.....

Zapisujemy konfiguracje.

Robimy kopie pliku z regułami mapowania grup:

cp rules_SAMPLE.py  rules.py

Zrobić edycje pliku rules.py

nano rules.py

I należy skasować przykładowe mapowania grup w BRIDGES i zostawić zawartość taką jak niżej:

BRIDGES = {
'TG7': [
   {'SYSTEM': 'MASTER-S',    'TS': 2, 'TGID': 7,    'ACTIVE': True, 'TIMEOUT': 2, 'TO_TYPE': 'NONE',  'ON': [], 'OFF': [], 'RESET': []},
   {'SYSTEM': 'MASTER-RPT',    'TS': 2, 'TGID': 7, 'ACTIVE': True, 'TIMEOUT': 2, 'TO_TYPE': 'NONE',  'ON': [], 'OFF': [], 'RESET': []},
        ]
 }

Więcej o funkcjach w pliku rules.py w opisie

Zapisać plik.

Tworzymy plik do uruchamiania automatycznie podczas startu systemu HBlink3

nano /lib/systemd/system/hblink.service

wklejamy zawartość do pliku:

[Unit]
Description=HB bridge all Service

After=network-online.target syslog.target
Wants=network-online.target

[Service]
StandardOutput=null
WorkingDirectory=/opt/HBlink3
RestartSec=3
ExecStart=/usr/bin/python3 /opt/HBlink3/bridge.py
Restart=on-abort

[Install]
WantedBy=multi-user.target

Zapisujemy plik i następnie aktywujemy HBLink:

systemctl enable hblink.service
systemctl start hblink.service

Sprawdzamy czy HBLink wystartował:

systemctl status hblink.service

Jeśli wszystko jest poprawnie, nasz serwer działa będziemy mieli wynik:

● hblink.service - HB bridge all Service
   Loaded: loaded (/lib/systemd/system/hblink.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2019-06-10 13:44:38 CEST; 2h 11min ago
 Main PID: 29582 (python3)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/hblink.service
           └─29582 /usr/bin/python3 /opt/HBlink3/bridge.py

cze 10 13:44:38 dmr-torun systemd[1]: Started HB bridge all Service.

Możemy zobaczyć do logu:

more /var/log/hblink.log

Instalujemy HBmonitor który służy do monitorowania na stronie internetowej ruchu na HBLink.

UWAGA! HBmonitor jest w wersji bardzo rozwojowej i niechętnie jest wsparcie do napotkanych problemów z tym narzędziem przez grupę DVSwitch. Dlatego jeśli będziesz miał problemy z HBmonitor raczej nie wysyłaj zapytań do DVSwitch bo możesz spotkać się uwagami że to narzędzie obecnie ma ma supportu. Będziesz musiał sam rozwiązać problem.

Poniżej instalacja mojej wersji HBmonitora która ma zmienioną kolorystykę, dołożona funkcja wyświetlania nazw grup z talkgroup_ids.json itp.

cd /opt
git clone https://github.com/sp2ong/HBmonitor.git
cd HBmonitor
chmod 0755 install.sh
./install.sh
cp config_SAMPLE.py config.py
nano config.py
REPORT_NAME     = 'Dashboard lokalnej sieci DMR'  # Name of the monitored HBlink system
CONFIG_INC      = True                # Include HBlink stats
LASTHERAD_INC   = True
HOMEBREW_INC    = True                  # Include HomeBrew Peers stats
BRIDGES_INC     = True                 # Include Bridge stats (confbrige.py)
HBLINK_IP       = '127.0.0.1'           # HBlink's IP Address
HBLINK_PORT     = 4321                  # HBlink's TCP reporting socket
FREQUENCY       = 10                    # Frequency to push updates to web clients
WEB_SERVER_PORT = 8888                 # Has to be above 1024 if you're not running as root
CLIENT_TIMEOUT  = 0                  # Clients are timed out after this many seconds, 0 to disable

# Files and stuff for loading alias files for mapping numbers to names
PATH            = './'                                                             # MUST END IN '/'
PEER_FILE       = 'peer_ids.json'                              # Will auto-download from DMR-MARC
SUBSCRIBER_FILE = 'subscriber_ids.json'          # Will auto-download from DMR-MARC
TGID_FILE       = 'talkgroup_ids.json'                          # User provided, should be in "integer TGID, TGID name" format
LOCAL_SUB_FILE  = 'local_subscriber_ids.json'    # User provided (optional, leave '' if you don't use it), follow the format of DMR-MARC
LOCAL_PEER_FILE = 'local_peer_ids.json'           # User provided (optional, leave '' if you don't use it), follow the format of DMR-MARC
FILE_RELOAD     = 7                                                   # Number of days before we reload DMR-MARC database files
PEER_URL        = 'https://www.radioid.net/static/rptrs.json'
SUBSCRIBER_URL  = 'https://www.radioid.net/api/dmr/user/?country=Poland'

# Settings for log files
LOG_PATH        = './log/'
LOG_NAME        = 'hbmon.log'

W pliku talkgroup_ids.json możesz dopisać nazwy grup rozmownych które masz zdefiniowane wg formatu który znajdziesz już w wpisanych grupach w tym pliku. Blędy składni w tym pliku mogą skutkować że HBMonitor nie uruchomi się. Podobnie możesz zrobić lokalne własne wpisy w plikach local_subscriber_ids.json (użytkownicy, OPB Linki itp) i local_peer_ids.json (przemienniki)

Zwróć uwagę na LOG_PATH, CLIENT_TIMEOUT, SUBSCRIBER_URL, FILE_RELOAD , WEB_SERVER_PORT (port na którym dostępny jest nasz monitor: http://ip_adres_hblink:8080

Warto mieć na uwadze że HBmonitor używa też portu 9000 do komunikacji (konsola logu), jeśli więc mamy serwer za firewall musimy też ten port zmapować aby był dostępny z zewnątrz.

Tworzymy plik do uruchamiania automatycznie podczas startu systemu HBmonitor

nano /lib/systemd/system/hbmon.service

wklejamy zawartość do pliku:

[Unit]
Description=HBmon Service

After=network-online.target syslog.target
Wants=network-online.target

[Service]
StandardOutput=null
WorkingDirectory=/opt/HBmonitor
RestartSec=3
ExecStart=/usr/bin/python3 /opt/HBmonitor/monitor.py
Restart=on-abort

[Install]
WantedBy=multi-user.target

Zapisać plik i następnie aktywujemy HBmonitor:

systemctl enable hbmon.service
systemctl start hbmon.service

Sprawdzamy czy HBLink wystartował:

systemctl status hbmon.service

Jeśli całość działa poprawnie wynik statusu będzie wyglądał:

● hbmon.service - HBmon
   Loaded: loaded (/lib/systemd/system/hbmon.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2019-06-10 13:42:06 CEST; 2h 18min ago
 Main PID: 29543 (python)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/hbmon.service
           └─29543 /usr/bin/python3 /opt/HBmonitor/monitor.py

cze 10 13:42:06 dmr-torun systemd[1]: Started HBmon Service.

Możemy teraz sprawdzić jak działa nasz monitor sieci HBLinkhttp://ip_adrres_hblink:8080

Używając HBLink Master serwera który nie jest podłączony do innej sieci DV możemy używać tych samych grup które używaliśmy w sieci BM.
Kiedy nasz Master serwer HBlink będzie miał połączenia do innych sieci np Brandmeister możemy w pliku /opt/HBlink3/rules.py zmapować nasze grupy do grup w sieci Brandmeister

to tyle…
Podziękowania dla SP2ONG za pomoc i poprawki oraz za cały wkład w projekt sieci HBLinków w Polsce

Opis parametrów TG w hotspocie

Jeśli nasze radio nada na TS2 i grupie 1008 i będziemy mieli taki zapis w jednej z definicji sieci to przekaże nasz głos do sieci, która ma ten zapis na TS1 i dla TG8. Jeśli ta sieć, w której mamy taką definicje będzie miała transmisje na TS1 TG8 to przekaże na radio na TS2 i na TG1008. Jeśli np na radio nadamy na TG1008 ale na TS1 to nasza rozmowa na TG1008 nie trafi do tej sieci gdyż nie pasuje do reguły. – Jasne ?!? może inaczej….

Istotnym elementem konfiguracji DMRGateway jest użycie składni TGRewrite

TGRewrite=fromSolt,fromTG,toSlot,toTG,range

TGRewrite pozwala nam mapować grupy rozmowne pomiędzy radiem a siecią cyfrową i odwrotnie. Opisze to na przykładach

TGRewrite=2,1008,1,8,1

Załóżmy, że chcemy aby używane grupy rozmowne na naszym radiu TG7 TG8 poszły do danej sieci na której są używane możemy zrobić to w postaci jednego zapisu:

TGRewrite=2,7,2,7,2

Jeśli chcesz mieć na swoim hotspocie simplex grupe TG 8 na szczelinie czasowej TS2 należy regułę TGrewrite napisać następująco:

TGRewriteX=2,8,1,8,1

Wprowadzenie numeracji w nazwie TGRewrite np TGRewrite0 pozwala nam na dostęp do reguł przepisywania w trybie 'Quck Edit’ w dasboard Pi-Star. Jeśli nie będzie numerów w TGRewrite to trybie 'Quick Edit’ będzie dostępna tylko pierwsza reguła wpisana.

Użyliśmy tu 'range’ ostatniego parametru w składni TGRewrite dzięki temu DMRGateway wie, że jeśli na radio pojawi się trafik na TG7 do TG8 na TS przekaże dane z tych grup na te siec w której są te zdefiniowane reguły na TS2 do TG7 lub TG* w zależności od numeru źródłowej grupy i na odwrót.

W naszych rozważaniach dotyczących połączenia z siecią lokalna HBLink zakładamy, że np.: sieć BrandMeister jest siecią podstawową a pozostałe definiowane w DMRGateway jako dodatkowe. Dlatego w tym przypadku w definicji sieci Brandmeister wpisujemy reguły:

PassAllTG=1
PassAllTG=2

co oznacza, że wszystko co nie pasuje do reguł wpisanych w innych sieciach w DMRGateway będzie przekazywane z radia TS1 na TS1 do BM i z radia TS2 na TS2 do BM i odwrotnie. Mapowanie grup robimy tylko w definicjach innych sieci w DMRGateway w sposób opisany powyżej przykładach.

Co to jest HBLink?

Krótko i na temat:

HBLink to rozproszone radioamatorskie lokalne serwery DMR które są uzupełnieniem istniejących sieci DMR w Polsce (Brandmeister, DMRPlus). Serwery HBLink są uruchamiane lokalnie do których podłączone mogą być: lokalny przemiennik DMR (na bazie MMDVM) lub Hytera (poprzez Hytera DMRGateway) lub Motorola (poprzez DMRLink) oraz hotspoty. HBLink daję możliwość stworzenia lokalnej sieci DMR. W sytuacjach awaryjnych kiedy wystąpią problemy z główną radioamatorską siecią DMR do której podłączony jest przemiennik, HBLink zapewnia nadal funkcjonalność pracy lokalnej oraz poprzez połączenie z innymi serwerami HBLink pozwala utrzymać łączność na poziomie regionalnym.

Lokalne serwery HBLink są zarządzane lokalnie i zasady obowiązujące na nich są ustalane lokalnie. Serwery HBLink mogą ale nie muszą mieć połączenia z innymi serwerami HBLink.

W ramach sieci HBLink są dostępne reflektory XLX260 ora YSF PL HBLink do których można podłączyć się z innych sieci.

Serwery HBLink możemy wykorzystać do budowy lokalnych radioamatorskich sieci DV EmCom i łączyć je z innymi sieciami EmCom. Serwery HBLink oferują nadawanie automatycznych alertów, wiadomości itp które są nagrane w plikach w formacie wav i będą odtwarzane na zdefiniowanej do tego celu grupie rozmownej o wskazanych godzinach.

Resztę informacji można doczytać na www.hblink.pl

Telegram Chat