GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - EmOne/lorawan-server: Compact server for private LoRaWAN networks

BranchesTags
Open more actions menu
 
 

Latest commit

 

History

1,105 Commits
1,105 Commits

Folders and files

NameName
Last commit message
Last commit date
.github/workflows
.github/workflows
 
 
admin
admin
 
 
doc
doc
 
 
include
include
 
 
priv
priv
 
 
scripts
scripts
 
 
src
src
 
 
test
test
 
 
.gitignore
.gitignore
 
 
.travis.yml
.travis.yml
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
Dockerfile
Dockerfile
 
 
ISSUE_TEMPLATE.md
ISSUE_TEMPLATE.md
 
 
LICENSE
LICENSE
 
 
Makefile
Makefile
 
 
README.md
README.md
 
 
erlang-solutions_1.0_all.deb
erlang-solutions_1.0_all.deb
 
 
lorawan-forwarder.xml
lorawan-forwarder.xml
 
 
lorawan_server.config
lorawan_server.config
 
 
package.json
package.json
 
 
rebar.config
rebar.config
 
 

Repository files navigation

Compact server for private LoRaWAN networks

Open-source LoRaWAN Server that integrates both the network-server and the application-server. This is useful for application providers that operate their own LoRaWAN network, or for device and application developers.

Warning This is a development version 0.7.0. Use the stable 0.6.x instead, please. After a major version upgrade you are required to review and complete the configuration before connecting any gateway or device!

  • After migrating to 0.7.x you need to
    • Remove the /admin suffix from Server -> Admin URL.
    • Make sure all Gateways are assigned to an Area with a specified Region.
  • After migrating from version 0.5.x to 0.6.x you need to assign Profiles to Groups and Gateways to Areas.
  • Migrating from version 0.4.x to 0.5.x will preserve the Device/Node addresses and security keys, but will delete many ADR parameters, which got moved to the Profile settings.

The server:

  • Implements the LoRaWAN Specification v1.0.3
  • Communicates with (any number of) remote LoRaWAN gateways. It currently supports:
    • Gateways based on the Packet Forwarder, such as the Semtech LoRa demo kit, LoRa Lite Gateway, LORANK-8, MultiConnect Conduit, or Kerlink Wirnet Stations
    • Gateways using the Basic Station LNS Protocol
  • Performs all required encryption and integrity checks.
    • Supports relaxed frame-counter check for simple ABP devices.
  • Invokes internal modules with application logic. It provides examples for:
    • Semtech/IMST LoRaMote
    • Microchip LoRa(TM) Technology Mote (via an external plug-in)
  • Automatically parses well-known payload formats. It currently supports:
    • Cayenne Low Power Payload
    • Concise Binary Object Representation (CBOR)
  • Stores uplink data directly to a MongoDB collection.
  • Invokes external applications. It currently supports connections via:
    • WebSocket protocol RFC6455
    • HTTP/1.1 and HTTP/2 protocol (REST API)
    • MQTT v3.1/v3.1.1, including applications hosted in Amazon AWS IoT, IBM Watson IoT Platform, MathWorks ThingSpeak, Microsoft Azure IoT Hub, ThingsBoard Open-source IoT Platform, Adafruit IO, or Orange Live Objects
    • AMQP 0-9-1 to the RabbitMQ
  • Handles (any number of) Class A or Class C devices.
    • Supports both the node activation by personalization (ABP) and the over-the-air activation (OTAA).
    • Supports both unconfirmed and confirmed data uplink and downlink.
    • Supports multicast to user-defined groups.
    • Supports all regions standardized in LoRaWAN 1.0.3 Regional Parameters for Europe, US, China, Australia, Asia, South Korea, India and Russia.
  • Provides a network management interface.
    • Supports both manual and automatic configuration of data rate (ADR) and other parameters.
    • Monitors the server, gateways and node health status and displays device battery and connection quality indicators.
    • Can send health alerts via e-mail or Slack.
  • Runs on all major operating systems, including Windows, Linux, OS X and Solaris, even on embedded systems like Raspbian, mLinux and other Yocto/OpenEmbedded systems, OpenWrt or in a Docker container.
  • Can establish Clusters for high availability.
  • Does not crash as it's implemented in Erlang, which is designed for building fault-tolerant systems.
  • Is free, distributed under the MIT license.

The server aims to be an all-in-one software package for small private LoRaWAN networks. However:

  • You still need to buy your LoRaWAN Gateway.
  • You will need to deploy and maintain it yourself. (With my support.)
  • It will probably never support the sophisticated management features of the commercial-grade network-servers.

The maximum amount of gateways, devices and nodes the server can support depends on the server load and hardware performance. There are no hard limits.

The API may change and some functions may not be implemented. To ask questions or request features please join the lorawan-server mailing list. We will gladly assist you. If you find a bug, you may also add an Issue.

Documentation

The lorawan-server includes all functions required to run a private LoRaWAN network. It integrates your LoRaWAN network directly with your backend IT systems. The server is provided as a comprehensive package with a single configuration file and a single administration tool. You only need to install the Erlang/OTP 21.0 or higher.

The main components of the lorawan-server are shown in the following figure:

alt tag

Usage

The server behaviour is described in the Introduction.

The Installation Instructions describe how to build, install and upgrade the server. You can use a Debian package, download the binary release and run it manually or build the server from source codes.

Follow the Configuration Instructions to correctly setup your server.

Run the lorawan-server release by:

cd lorawan-server
bin/lorawan-server

Don't forget to set the server address and port (by default 1680) in the LoRaWAN gateways you want to use with the server.

You can terminate the lorawan-server by:

bin/lorawanctl stop

You can administrate and manage the server via a set of web-pages or via a REST API as described in the Administration Guide. By default you can access the administration at http://server:8080, using "admin" as both username and password. After the installation you have to:

  • Change the default password to something more secure.
  • Set parameters of your Network and add LoRaWAN Gateways you want to use.
  • Define the device Profiles, one for each device type that you will have.
  • Configure each device you want to use, either as a personalized Node (ABP) or as an Commissioned and over-the-air activated (OTAA) device.

Integration

You can integrate lorawan-server with external applications using Backend Handlers and Connectors. Instructions on how to integrate with some major clouds such as AWS or Azure are provided in the Integration Guide.

You can also use the internal web server and develop internal applications, which may offer custom REST APIs. The lorawan-server is designed to be highly extensible. I encourage you to Learn You Some Erlang and develop your own modules.

To implement an internal application you need to create a new module implementing the lorawan_application behaviour as described in the Custom Application Guide and Development Guide.

Troubleshooting

Build Status

First of all, please read the documentation.

If the server doesn't do what you expect, please review the server logs and consult the Troubleshooting Instructions for the most common problems.

If the problem persists, please verify you have the latest version. I recommend to always use the latest release. If you use the latest sources, please verify the "build" icon above is green and then try upgrading by running:

cd lorawan-server
git pull
make upgrade
make release

If the "build" icon above is red, please wait few minutes (or hours) until it gets green again.

If nothing helps, please contact the lorawan-server mailing list or review the existing issues to verify the problem was not already reported and then create new issue.

Public References

The server is used (both commercially and non-commercially) by various companies and institutions. It was mentioned by the following blogs and articles:

  • Three reasons for creating an Open Source LoRaWan server
  • LoraWAN server running on OpenWrt/LEDE
  • Espruino RN2483 LoRa Modules
  • 1-Gate LoRaWAN Gateway COMPACT
  • LoRaWAN evaluation by Witekio
  • Сергей Гаевский: Построение корпоративной сети LoRaWAN, in Беспроводные технологии №3’17

Please let me know if you use the lorawan-server and want to be listed here.

Copyright and Licensing

The lorawan-server is distributed under the terms of the MIT License. See the LICENSE.

Copyright (c) 2016-2019 Petr Gotthard

About

Compact server for private LoRaWAN networks

gotthardp.github.io/lorawan-server

Topics

erlanglorawan-server

Resources

Readme
MIT license

Contributing

Contributing
Activity
Custom properties

Stars

4 stars

Watchers

1 watching

Forks

0 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.