Lora2TCP для базовых станций
-
- Мимо проходил
- Сообщения: 6
- Зарегистрирован: Пт, 21 фев 2020 17:43
Lora2TCP для базовых станций
Здравствуйте, никто случайно не делал аналог Lora2TCP, только для базовых станций? В Lora2TCP порт выделяется для конкретного абонента, а хотелось бы получить аналогичный функционал для базовых станций (то есть отдельный TCP порт для данных, получаемых разными БС). У нас в системе, допустим, 2 БС по 30 абонентов и данные с них должны идти на один обработчик, который в дальнейшем формирует из них массив. Считывать этим обработчиком данные с 60 портов не удобно. Буду рад любым примерам или мыслям на этот счет.
Re: Lora2TCP для базовых станций
Базовая станция отправляет данные от всех устройств на один адрес и один порт. Какие еще 60 портов?IgorMaevskiy писал(а): ↑Пн, 30 мар 2020 12:34У нас в системе, допустим, 2 БС по 30 абонентов и данные с них должны идти на один обработчик, который в дальнейшем формирует из них массив. Считывать этим обработчиком данные с 60 портов не удобно.
Re: Lora2TCP для базовых станций
К тому же по протоколу UDP, в зашифрованном виде. Есть версия сервера (для Linux-ARM, [url]https://iotvega.com/content/ru/soft/ser ... 1.5.tar.gz[/url, она устанавливается на базовую станцию. Понятно, что во-первых там все урезано по ресурсам (не знаю, потянет ли 60 устройств), Во вторых "все яйца в одной корзине"
Re: Lora2TCP для базовых станций
А можно подробнее про шифрование?
В свежепоставленных Вега БС стоит Semtech Packet Forwarder версии 4.0.1, где
Код: Выделить всё
The protocol between the gateway and the server is purposefully very basic and
for demonstration purpose only, or for use on private and reliable networks.
There is no authentication of the gateway or the server, and the acknowledges
are only used for network quality assessment, not to correct UDP datagrams
losses (no retries).
-
- Мимо проходил
- Сообщения: 6
- Зарегистрирован: Пт, 21 фев 2020 17:43
Re: Lora2TCP для базовых станций
Имеется ввиду 60 портов для данных каждого абонента, которые можно открыть с помощью Lora2TCP на машине с сервером.senswet писал(а): ↑Пн, 30 мар 2020 14:23Базовая станция отправляет данные от всех устройств на один адрес и один порт. Какие еще 60 портов?IgorMaevskiy писал(а): ↑Пн, 30 мар 2020 12:34У нас в системе, допустим, 2 БС по 30 абонентов и данные с них должны идти на один обработчик, который в дальнейшем формирует из них массив. Считывать этим обработчиком данные с 60 портов не удобно.
Re: Lora2TCP для базовых станций
Протокол и шифрование подробно описаны в спецификации на LoraWAN. Честно, не разбирался, не вижу для себя пока в этом надобности.
Re: Lora2TCP для базовых станций
Зачем вам открывать отдельный порт для для каждого устройства? Информация об устройстве, отправившем данные, содержится в пакете от базовой станции.IgorMaevskiy писал(а): ↑Вт, 31 мар 2020 10:48Имеется ввиду 60 портов для данных каждого абонента, которые можно открыть с помощью Lora2TCP на машине с сервером.senswet писал(а): ↑Пн, 30 мар 2020 14:23Базовая станция отправляет данные от всех устройств на один адрес и один порт. Какие еще 60 портов?IgorMaevskiy писал(а): ↑Пн, 30 мар 2020 12:34У нас в системе, допустим, 2 БС по 30 абонентов и данные с них должны идти на один обработчик, который в дальнейшем формирует из них массив. Считывать этим обработчиком данные с 60 портов не удобно.
-
- Мимо проходил
- Сообщения: 6
- Зарегистрирован: Пт, 21 фев 2020 17:43
Re: Lora2TCP для базовых станций
Хорошо, а каким образом можно считать этот пакет? Если считывать данные напрямую через UDP порт, на который БС отправляет пакет, то данные там в зашифрованном виде и необходимо реализовывать дешифратор. Та же Lora2TCP позволяет удобно получить расшифрованные данные, но в моем случае она не подходит. Если есть какой-то другой способ, то буду благодарен.senswet писал(а): ↑Вт, 31 мар 2020 15:19Зачем вам открывать отдельный порт для для каждого устройства? Информация об устройстве, отправившем данные, содержится в пакете от базовой станции.IgorMaevskiy писал(а): ↑Вт, 31 мар 2020 10:48Имеется ввиду 60 портов для данных каждого абонента, которые можно открыть с помощью Lora2TCP на машине с сервером.
Re: Lora2TCP для базовых станций
Уверены, что там используется шифрование? Протокол, как написали выше, is purposefully very basic.IgorMaevskiy писал(а): ↑Ср, 01 апр 2020 10:29Хорошо, а каким образом можно считать этот пакет? Если считывать данные напрямую через UDP порт, на который БС отправляет пакет, то данные там в зашифрованном виде и необходимо реализовывать дешифратор. Та же Lora2TCP позволяет удобно получить расшифрованные данные, но в моем случае она не подходит. Если есть какой-то другой способ, то буду благодарен.senswet писал(а): ↑Вт, 31 мар 2020 15:19Зачем вам открывать отдельный порт для для каждого устройства? Информация об устройстве, отправившем данные, содержится в пакете от базовой станции.IgorMaevskiy писал(а): ↑Вт, 31 мар 2020 10:48
Имеется ввиду 60 портов для данных каждого абонента, которые можно открыть с помощью Lora2TCP на машине с сервером.
Описание здесь: https://github.com/Lora-net/packet_forw ... OTOCOL.TXT
Re: Lora2TCP для базовых станций
Если я правильно понял задачу - то надо прямо на самой БС получить payload пакета от оконечного устройства и далее обрабатывать (отдавать куда-либо) его по своему усмотрению.
Решение возможно такое:
Поставьте прямо на БС версию Vega Server для архитектуры ARM и сконфигурируйте БС так, чтобы она слала данные на этот сервер на свой localhost. Напишите приложение (хоть нативное под Linux ARM, хоть nodejs) и запустите его на этой же БС, чтобы оно коннектилось через WebSocket к этому Vega Server на localhost, если к серверу подключиться суперпользователем описанным в конфиге сервера, то сервер через ws постоянно посылает кучу информации, в том числе и приходящие от оконечных устройств дешифрование пакеты. Далее делайте с ними все, что угодно, включая поднятие на БС в вашем приложении какого нужно сервера и протокола наружу через сетевой интерфейс.
Да, а Веговский Lora2TCP в этом случае вам не поможет - он имеется только в виде уже скомпилированных бинарников под интел 64 бит Linux, на ARM базовой станции не запустится.
Только вот насколько справится со всеми этими задачами процессор и память БС - эксперимент покажет
Решение возможно такое:
Поставьте прямо на БС версию Vega Server для архитектуры ARM и сконфигурируйте БС так, чтобы она слала данные на этот сервер на свой localhost. Напишите приложение (хоть нативное под Linux ARM, хоть nodejs) и запустите его на этой же БС, чтобы оно коннектилось через WebSocket к этому Vega Server на localhost, если к серверу подключиться суперпользователем описанным в конфиге сервера, то сервер через ws постоянно посылает кучу информации, в том числе и приходящие от оконечных устройств дешифрование пакеты. Далее делайте с ними все, что угодно, включая поднятие на БС в вашем приложении какого нужно сервера и протокола наружу через сетевой интерфейс.
Да, а Веговский Lora2TCP в этом случае вам не поможет - он имеется только в виде уже скомпилированных бинарников под интел 64 бит Linux, на ARM базовой станции не запустится.
Только вот насколько справится со всеми этими задачами процессор и память БС - эксперимент покажет
