Настройка LoraWan Gateway

10

Я пытаюсь построить сеть LoRaWan, используя датчик, программируемый с помощью Arduino и Dragino Lora Shield .

Я нашел много решений для создания шлюза, в том числе Raspberry Pi, связанный с другим Dragino Lora Shield или с iC880A , и полученные данные будут отправлены на сервер в облаке. Я очень запутался в программировании шлюза.

  • Нужно ли указывать это для подключения к узлу и к серверу? Или он получает данные автоматически?
  • И программирую ли я сервер для подключения к шлюзу или напрямую к узлам?
Мохамед Ахреф Дриди
источник
2
Добро пожаловать на сайт. Можете ли вы добавить немного информации о том, какие модели устройств вы используете, и добавить дополнительную информацию о вашем случае использования? Это поможет нам дать вам лучшие ответы.
Хельмар
Привет и спасибо! Я новичок в Iot-сетях, поэтому я создал узел, используя Arduino Uno, датчик температуры и Dragino Lora Shield. Я пытаюсь отправить дату на сервер, поэтому я попытался создать LoraWan Gateway с помощью Raspberry Pi. Я сделал Некоторое исследование о том, как преобразовать его в шлюз LoraWan, и я обнаружил, что могу использовать либо другой Dragino Lora Shield, либо с модулем iC880A, и я нашел исходный код, чтобы сделать это, но я все еще не понимаю, как подключить шлюз к узлу, а как отправить данные с узла на шлюз на сервер ?? заранее спасибо !!
Мохамед Ахреф Дриди

Ответы:

11

В типичной сети LoRaWAN шлюзы - это тупые устройства, как объясняет LoRa Alliance :

Архитектура сети LoRaWAN обычно строится в топологии «звезда», в которой шлюзы представляют собой прозрачный мост, передающий сообщения между конечными устройствами и сервером центральной сети в серверной части.

Таким образом, шлюз необходимо настроить только для подключения к какому-либо сетевому серверу, например, к открытой сети The Things Network . Это все.

Шлюзы часто называют «пересылками пакетов». Таким образом, шлюзы делают именно это: они пересылают все принятые пакеты LoRaWAN на некоторый сетевой сервер (независимо от того, какой узел отправил его), и они передают все команды сетевого сервера. Следовательно, узлы (конечные устройства) не подключаются к какому-либо шлюзу ; вместо этого они просто передают и надеются, что один или несколько шлюзов получат свою передачу и передают ее сетевому серверу, который знает узел. (Шлюзы не могут прочитать зашифрованные данные, которые они пересылают.)

Чтобы подключить узлы к сети, они «активируются» одним из двух способов :

  • Активация по воздуху (OTAA)

    Во-первых, используя какой-либо веб-сайт или API, каждый новый узел регистрируется на сетевом сервере, используя свое уникальное устройство EUI ( DevEUI). Затем он получает открытый идентификатор приложения ( AppEUI) и секретный ключ приложения ( AppKey). Эти три значения запрограммированы в узле.

    Затем, когда он готов к отправке в первый раз, значения используются узлом для создания и передачи запроса на присоединение LoRaWAN. Если такой запрос получен одним или несколькими шлюзами, он перенаправляется на сетевой сервер, который, если он будет утвержден, сообщит одному шлюзу о необходимости принять соединение. Если он получен узлом, то это дает узлу публичный адрес устройства ( DevAddr), секретный сетевой ключ сеанса ( NwkSKey) и секретный ключ сеанса приложения ( AppSKey).

    Значения, определенные из Join Accept, используются всякий раз, когда узлу требуется передать некоторые фактические данные (вместе со счетчиком безопасности, который начинается с нуля при присоединении). Активация действует до тех пор, пока узел хранит ее в памяти (а счетчики безопасности не были исчерпаны), как правило, в течение многих месяцев или даже лет. В случае потери узел может отправить новый запрос на присоединение и получить новые секреты.

  • Активация с помощью персонализации (ABP)

    Здесь, при регистрации с использованием некоторого веб-сайта или API, узлу сразу присваивается адрес устройства ( DevAddr), секретный сетевой ключ сеанса ( NwkSKey) и секретный ключ сеанса приложения ( AppSKey), которые запрограммированы в узле и никогда не изменяются. Узлу не нужно сначала отправлять запрос на соединение, прежде чем он сможет начать отправку каких-либо данных, но необходимо позаботиться о том, чтобы счетчики безопасности не были потеряны. Кроме того, ключи являются специфическими для данной сети; APB затрудняет (если не делает невозможным) перемещение узлов на другого сетевого провайдера.

Арьян
источник
1
Некоторые специальные шлюзы включают в себя сетевой сервер LoRaWAN и могут выступать в качестве автономных сетей. Но большинство должно быть подключено к внешнему сетевому серверу. Я удалил свой ответ, который не был достаточно ясен по этому вопросу.
Сильвен
0

Ответ Арджана хорош. Технический. Я хотел дать другой вариант ответа, чтобы помочь тем, кто новичок и изо всех сил пытается соединить картину в отношении шлюзов и того, как пакеты перемещаются назад и вперед.

Аналогия ...

You > Letter > Mailbox > Mailman > Post Office Dist > Recipient

|----------------- TX -------------------|

Node > Packet > Transmission > Gateway > Network Server > Application

|----------------- RX -------------------|

Node < Packet < Transmission < Gateway < Network Server < Application

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

Собираетесь ли вы использовать The Things Network или пытаетесь создать свой собственный частный сервер, используя что-то вроде LoRaServer, вам понадобится шлюз в пределах досягаемости вашего узла / мотива / конечного устройства для пересылки сообщений туда и обратно. Думайте о различных ключах в коде узла как об адресах на букве в аналогии.

Вы можете определить, есть ли уже шлюз TTN в вашем регионе на их странице карты, и если он находится в пределах досягаемости вашего узла, ваши сообщения должны достигнуть вашего TTN (при условии, что вы зарегистрировали и применили ключи к своему узлу). Если в пределах досягаемости нет ворот, вы можете построить свой собственный. Есть много вариантов сделать это.

Что касается настройки шлюза, в зависимости от того, какую библиотеку вы выбираете, вам обычно просто нужно настроить некоторые параметры либо в исходном коде, либо в файле global_conf.json или local_conf.json.

Вот пример из возни с RFM9X (на основе SX1276) и RPI3 B + с использованием single_chan_pkt_fwdКоторый, кстати, не даст ответов ... имейте в виду, что это только для возиться / тестирования. И примеры пересылки, и приведенные ниже примеры global_conf.json не являются plug-n-play и не должны использоваться для правильной работы LoRaWan. Совместимый шлюз имеет 3 радиомодуля и может обрабатывать несколько каналов и отправлять / получать одновременно. Этот пример только получает от узла на единственном канале и не очень надежен, но представляет конфигурацию. Каждое из значений зависит от используемого вами оборудования и местоположения ... или расположения шлюза, такого как США, ЕС и т. Д. ... Также стоит отметить, что такой global_conf.json не является единым размером подходит всем. Разные библиотеки обычно имеют больше параметров конфигурации для нескольких радиостанций, каналов и т. Д. - только для справки.

{
  "SX127x_conf": // depending on your hardware/radio this could be something like sx1301..., sx127x...., etc.. 
  {
    "freq": 903000000, // depending on whether US (900 range), EU (800 range) or other...
    "spread_factor": 7, // look this up
    "pin_nss": 10, // wiringpi value = physical pin #24
    "pin_dio0": 5, // wiringpi value = physical pin #18
    "pin_rst": 21 // wiringpi value = physical pin #29
  },
  "gateway_conf":
  {
    "ref_latitude": 0.0, 
    "ref_longitude": 0.0,
    "ref_altitude": 2,

    "name": "WHATEVER NAME",
    "email": "WHATEVER@EMAIL.TLD",
    "desc": "WHATEVER DESC",

    "servers":
    [
      {
        "address": "localhost", // this one is private so localhost, but TTN lookup address
        "port": 1700, // this one is private so localhost, but TTN lookup port
        "enabled": true
      } // you could add more... say you have a private one and TTN 
    ]
  }
}

Допустим, вы создаете узел с устройством и кодом Arduino. И вы используете что-то вроде библиотеки LMIC-Arduino и пример скетча. Сначала вы должны определить, на основе аппаратного обеспечения устройства, как настроить раскладку для устройства, чтобы оно даже работало. Затем, если вы собираетесь использовать TTN, вы должны выполнить любое из многих руководств, чтобы зарегистрироваться и получить необходимые ключи, которые вы вставили в код эскиза. Вы также должны убедиться, что вы передаете на соответствующей частоте и т. Д., Чтобы выровняться со шлюзом в вашем регионе.

Крис
источник