Радиоэфир > SDR

Киевский Боливар

<< < (2/3) > >>

UR1229SWL:


Всем доброго здравия!  :smilie:

Замечательно, что этот форум. наконец, начал нормально работать, а то раньше, сколько не пытался, регистрация на нем была невозможной, и пришлось еще в прошлом году открыть одноименную тему здесь.

Итак, приглашаю всех радиоаматоров на Web-SDR-приемник под названием "Киевский Боливар", находящийся адресу: http://kiev.extmail.info

Проект существует около года и претерпел множество изменений в своем развитии.
На данный момент он принимает 6 диапазонов: радиолюбительские VHF, UHF и Avia.
В ближайшей перспективе число диапазонов с общей помощью планируется довести до 9 (а то и до 10) и снабдить диапазонными фильтрами.
Помощь может быть разнообразной, начиная с пожеланий по выбору диапазонов и т.д., которые можно изложить в опросе  в "телеграммной" группе

--- End quote ---

Ваши пожелания и замечания, которые можно публиковать также и в этой же теме, по возможности будут учтены.

73!  :wink:

UT3UDX:
проверка данных по репитеру в APRS


--- Код: ---def aprs_request(callsign):
    aprs_apikey="apikey"
    apiurl = "https://api.aprs.fi/api/get?name="+ str(callsign) + "&what=loc&apikey=" + str(aprs_apikey) + "&format=json"
    apireq = requests.get(apiurl)
    apidata = json.loads(apireq.text)
    print("-"*10 + "> | APRS  data" )
    if not apidata['entries']:
        print("Warning: No APRS data found")
    else:
        for i in apidata['entries']:
            print("| APRS Name: " + str(i['name']) + "\n" +
                  "| APRS Lat: " + str(i['lat']) + "\n" +
                  "| APRS Lng: " + str(i['lng']) + "\n" +
                  "| Lasttime seen: " + datetime.utcfromtimestamp(int(i['lasttime'])).strftime('%Y-%m-%d %H:%M:%S') + "\n" +
                  "| Comment: " + str(i['comment']))
            time.sleep(15)


--- End code ---

Не все репитеры есть в APRS.
Вывод примерно такой

--- Код: ---===============| UR0UUA |===================================
----------> | APRS  data
| APRS Name: UR0UUA
| APRS Lat: 50.42333
| APRS Lng: 30.46367
| Lasttime seen: 2021-03-26 17:27:39
| Comment: 439.375MHz -760 T067 R99

===============| UR0UUB |===================================
----------> | APRS  data
| APRS Name: UR0UUB
| APRS Lat: 50.391
| APRS Lng: 30.4805
| Lasttime seen: 2021-03-26 17:23:34
| Comment: 439.400MHz-760 DMR CC1 R100

===============| UR0UUD |===================================
----------> | APRS  data
| APRS Name: UR0UUD
| APRS Lat: 50.44533
| APRS Lng: 30.5045
| Lasttime seen: 2021-03-26 17:24:50
| Comment: 438.700MHz D023 -7.60 http://cb.org.ua

===============| UR0UUE |===================================
----------> | APRS  data
| APRS Name: UR0UUE
| APRS Lat: 50.44517
| APRS Lng: 30.50533
| Lasttime seen: 2021-03-26 17:25:51
| Comment: 438.775MHz -7.60 DMR CC1 http://cb.org.ua


--- End code ---

UR1229SWL:
Приветствую, UT3UDX!

Как я могу воспользоватся вашими данными для Боливара?
Или они предназначены не для него ?

UT3UDX:
Это простой скрипт на Python3, точнее просто функция - что она делает - на вход этой функции, в качестве аргумента передается позывной, любой позывной , данные по которому мы хотим получить в APRS

https://www.aprsdirect.com/center/50.39189,30.65014/zoom/11/time/60
https://aprs.fi/#!lat=50.4334&lng=30.5216

Далее, запрашиваем APRS API ( не чаще раз в 15-20 секунд, иначе сработает rate limit и api будет возвращать или пустую строку или какой-то http ответ , типа доступ запрещен )


--- Код: ---    apiurl = "https://api.aprs.fi/api/get?name="+ str(callsign) + "&what=loc&apikey=" + str(aprs_apikey) + "&format=json"
--- End code ---

URL формируется из нескольких частей - callsign, apikey и формат - в нашем случае json .

далее, нам нужен список репитеров для опроса - тут все очень просто - согласно регламенту радиосвязи, если отбросить всё лишнее - репитеров в каждой области ( в каждом диапазоне ) не может быть больше, чем букв в английском алфавите.

Цитирую регламент -  " 4. Для  ретрансляторів  аматорського   радіозв'язку   позивні  сигнали призначаються із серії UR0 в алфавітному порядку суфіксів.
Перша літера суфікса обов'язково повинна відповідати літері-ознаці  області  згідно  з  таблицею  1,  а друга літера суфікса позивного
сигнала  визначає  смугу  частот,  у  якій   працює   ретранслятор  (V-діапазон 145 МГц; U-діапазон 435 МГц)."

https://zakon.rada.gov.ua/laws/show/z0205-11#Text

UR0 + U( Киев ) + U ( 70 cм ) или V (2 м) , тоесть что мы имеем -

UR0UUA-UR0UUZ для 70 сантиметрового диапазона и
UR0UVA-UR0UVZ для 2-х метрового диапазона , вобщем не так и много.

Далее, вам нужно получить APRS API key ( https://aprs.fi/account/ ) - это ключ, при помощи которого вы будете делать запросы к APRS api.
Я не помню, нужен ли валидный позывной для этого или нет - это вы уже проверите сами.

Итак файлы, их два - сам скрипт и конфиг

openwebrx_aprs.py


--- Код: ---#!/bin/python3
import re, requests, sys, string,json,time,datetime
import configparser
from datetime import datetime # for convert APRS time

letters = list(string.ascii_uppercase)
digits = list(string.digits)
config = configparser.ConfigParser()
config.read('config.ini')

dict_callsigns = {'Крим':'J', 'Вінницька':'N',  'Волинська':'P', 'Дніпропетровська':'E',
                  'Житомирська':'X','Закарпатська':'D', 'Запорізька':'Q','Івано - Франківська':'S',
                  'Київ':'U','Кіровоградська':'V','Львівська':'W', 'Миколаївська':'Z','Одеська':'F',
                  'Полтавська':'H','Рівненська':'K','Сумська':'A','Тернопільська':'B','Харківська':'L',
                  'Херсонська':'G','Хмельницька':'T','Черкаська':'C','Чернівецька':'Y','Чернігівська':'R'}

def repeaters_2m_callsign_generator(region):
    list = []
    for third_letter in dict_callsigns[region]:
        for four_letter in letters[21:22]:
            for five_letter in letters:
                list.append(str("UR0" + third_letter + four_letter + five_letter))
    return list

def repeaters_70cm_callsign_generator(region):
    list = []
    for third_letter in dict_callsigns[region]:
        for four_letter in letters[20:21]:
            for five_letter in letters:
                list.append(str("UR0" + third_letter + four_letter + five_letter))
    return list


def aprs_request(callsign):
    aprs_apikey=config['APRS']['token']
    apiurl = "https://api.aprs.fi/api/get?name="+ str(callsign) + "&what=loc&apikey=" + str(aprs_apikey) + "&format=json"
    apireq = requests.get(apiurl)
    apidata = json.loads(apireq.text)
    print("-"*10 + "> | APRS  data" )
    if not apidata['entries']:
        print("Warning: No APRS data found")
        time.sleep(15)
    else:
        for i in apidata['entries']:
            print("| APRS Name: " + str(i['name']) + "\n" +
                  "| APRS Lat: " + str(i['lat']) + "\n" +
                  "| APRS Lng: " + str(i['lng']) + "\n" +
                  "| Lasttime seen: " + datetime.utcfromtimestamp(int(i['lasttime'])).strftime('%Y-%m-%d %H:%M:%S') + "\n" +
                  "| Comment: " + str(i['comment']))
            time.sleep(15)


if __name__ == '__main__':
    print("APRS 70cm repeaters data")
    for callsign in repeaters_70cm_callsign_generator("Київ"):
        aprs_request(callsign)
    for callsign in repeaters_2m_callsign_generator("Київ"):
        aprs_request(callsign)


--- End code ---

и конфиг - config.ini


--- Код: ---[APRS]
token = validAPRStokenhere

--- End code ---

в конфигурационный файл нужно поместить валидный aprs api key - иначе работать не будет.

Известные проблемы - APRS имеет свои жесткие rate limits - и поэтому тут нужно или играть с time.sleep или каким-то образом обходить ограниичение на частоту запросов. Я не копал глубоко :)




UT3UDX:
И если все будет хорошо, на выходе мы получаем такой список ( 70 cм)


--- Код: ---APRS 70cm repeaters data
----------> | UR0UUA APRS  data
| APRS Name: UR0UUA
| APRS Lat: 50.42333
| APRS Lng: 30.46367
| Lasttime seen: 2021-03-31 14:54:25
| Comment: 439.375MHz -760 T067 R99
----------> | UR0UUB APRS  data
| APRS Name: UR0UUB
| APRS Lat: 50.391
| APRS Lng: 30.4805
| Lasttime seen: 2021-03-31 14:45:20
| Comment: 439.400MHz-760 DMR CC1 R100
----------> | UR0UUC APRS  data
Warning: No APRS data found
----------> | UR0UUD APRS  data
| APRS Name: UR0UUD
| APRS Lat: 50.44533
| APRS Lng: 30.5045
| Lasttime seen: 2021-03-31 14:44:51
| Comment: 438.700MHz D023 -7.60 http://cb.org.ua
----------> | UR0UUE APRS  data
| APRS Name: UR0UUE
| APRS Lat: 50.44517
| APRS Lng: 30.50533
| Lasttime seen: 2021-03-31 14:45:51
| Comment: 438.775MHz -7.60 DMR CC1 http://cb.org.ua
----------> | UR0UUF APRS  data
Warning: No APRS data found
----------> | UR0UUG APRS  data
Warning: No APRS data found
----------> | UR0UUH APRS  data
Warning: No APRS data found
----------> | UR0UUI APRS  data
Warning: No APRS data found
----------> | UR0UUJ APRS  data
Warning: No APRS data found
----------> | UR0UUK APRS  data
| APRS Name: UR0UUK
| APRS Lat: 50.52733
| APRS Lng: 30.2285
| Lasttime seen: 2021-03-31 14:54:35
| Comment: 438.825MHz -760 DMR CC1 R77
----------> | UR0UUL APRS  data
| APRS Name: UR0UUL
| APRS Lat: 50.53417
| APRS Lng: 30.60467
| Lasttime seen: 2021-03-31 14:43:30
| Comment: 438.675MHz -760 DMR CC1 R71
----------> | UR0UUM APRS  data
Warning: No APRS data found
----------> | UR0UUN APRS  data
| APRS Name: UR0UUN
| APRS Lat: 50.51617
| APRS Lng: 30.77967
| Lasttime seen: 2021-03-31 14:46:40
| Comment: 438.800MHz -760 T088 R76
----------> | UR0UUO APRS  data
Warning: No APRS data found
----------> | UR0UUP APRS  data
Warning: No APRS data found
----------> | UR0UUQ APRS  data
| APRS Name: UR0UUQ
| APRS Lat: 50.45883
| APRS Lng: 30.35333
| Lasttime seen: 2021-03-31 15:06:16
| Comment: 439.275MHz -760 DMR CC1 R95
----------> | UR0UUR APRS  data
| APRS Name: UR0UUR
| APRS Lat: 50.55000
| APRS Lng: 30.19983
| Lasttime seen: 2020-04-19 10:31:26
| Comment: 438.900MHz -760 DMR CC1 R80
----------> | UR0UUS APRS  data
| APRS Name: UR0UUS
| APRS Lat: 50.469
| APRS Lng: 30.60317
| Lasttime seen: 2021-03-31 15:05:49
| Comment: 439.000MHz -760 DMR CC1
----------> | UR0UUT APRS  data
| APRS Name: UR0UUT
| APRS Lat: 50.15383
| APRS Lng: 30.74617
| Lasttime seen: 2021-03-31 15:03:04
| Comment: 438.975MHz -760 DMR CC1 R83
----------> | UR0UUU APRS  data
| APRS Name: UR0UUU
| APRS Lat: 50.51733
| APRS Lng: 30.237
| Lasttime seen: 2021-03-31 15:01:33
| Comment: R79 438.875(-7.600)MHz Irnen CTCSS 88.5
----------> | UR0UUV APRS  data
Warning: No APRS data found
----------> | UR0UUW APRS  data
Warning: No APRS data found
----------> | UR0UUX APRS  data
Warning: No APRS data found
----------> | UR0UUY APRS  data
Warning: No APRS data found
----------> | UR0UUZ APRS  data
Warning: No APRS data found

--- End code ---

на 144 вообще пусто, можно даже не проверять

UR1229SWL:
Что-то невероятно заманчивое, а главное, полезное!  :smilie:
Спасибо! Попробую разобраться.

Навігація

[0] Сторінка Повідомлень

[#] Наступна сторінка

[*] Попередня сторінка

Помилка під час натискання Дякую
Дякую...
Go to full version