Package: rak811
RAK811 Python 3 library for Raspberry PiAboutRAK811 Python 3 library and command-line interface for use with the Raspberry Pi LoRa (p)HAT.The library exposes the RAK811 module AT commands as described in the following documents:RAK811 Lora AT Command User Guide V1.5for modules with the V2.0.x firmware.RAK811 AT Command Manual V1.0for modules with the V3.0.x firmware.The command-line interface exposes all API calls to the command line.RequirementsA Raspberry Pi!A RAK811 LoRa module (PiSupply IoT LoRa Node pHAT for Raspberry Pi/RAK811 WisNode - LoRa)On the Raspberry Pi the hardware serial port must be enabled and the serial console disabled (useraspi-config)The user running the application must be in thedialoutandgpiogroups (this is the default for thepiuser)Install the rak811 packageThe package is installed from PyPI:sudopip3installrak811Thepip3command is part of thepython3-pippackage. If it is missing on your system, run:sudoapt-getinstallpython3-pipPiSupplyprovidesdetailed instructionsfor configuring your Raspberry Pi.UsageQuick start with The Things NetworkIdentify your deviceIf you don't know the firmware level of you module run the following commands:rak811hard-reset
rak811versionFor V2.0.x firmware use therak811command and python module, for V3.0.X userak811v3command andrak811_v3python module.Register your deviceRegister you device onTheThingsNetworkusing the unique id of your RAK811 module (Device EUI).You can retrieve your Device EUI with the following command (V2.0.x):rak811hard-reset
rak811get-configdev_euiNote: therak811 hard-resetcommand is only needed once after (re)booting your Raspberry Pi to activate the module.or (V3.0.x):rak811v3set-configlora:join_mode:0
rak811v3get-configlora:status|grepDevEuiHello WorldSend your first LoRaWan message wit the following python code snippet:(The App EUI and App Key are copied verbatim from the TTN console)#!/usr/bin/env python3# V2.0.x firmwarefromrak811.rak811importMode,Rak811lora=Rak811()lora.hard_reset()lora.mode=Mode.LoRaWanlora.band='EU868'lora.set_config(app_eui='70B3D5xxxxxxxxxx',app_key='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')lora.join_otaa()lora.dr=5lora.send('Hello world')lora.close()#!/usr/bin/env python3# V3.0.x firmwarefromrak811.rak811_v3importRak811lora=Rak811()lora.set_config('lora:work_mode:0')lora.set_config('lora:join_mode:0')lora.set_config('lora:region:EU868')lora.set_config('lora:app_eui:70B3D5xxxxxxxxxx')lora.set_config('lora:app_key:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')lora.join()lora.set_config('lora:dr:5')lora.send('Hello world')lora.close()Your first message should appear on the TTN console!Next stepsSee theexample directory on GitHub:api_demo.py: demo most of the V2.0.x API callsotaa.py/otaa_v3.py: OTAA exampleotaa_v3_class_c.py: OTAA example with device in Class C modeabp.py/abp_v3.py: ABP examplep2p.py/p2p_v3.py: P2P examplep2p.sh/p2p_v3.sh: P2P example based on the command-line interface (see below)To run the examples, first copy thettn_secrets_template.pytottn_secrets.pyand enter your LoRaWanTheThingsNetworkkeys.Note: you do not need tohard_resetthe module each time you run a script.
However you must do it the first time after a (re)boot to activate the module.balenaCloudSample code to use the library withbalenaCloud:Basic RAK811 example with balenaCloud(V2.0.x firmware).Command-line interfaceV2.0.x firmwareTherak811command exposes all library calls to the command line:$rak811--helpUsage: rak811 [OPTIONS] COMMAND [ARGS]...Command line interface for the RAK811 module.Options:-v, --verbose  Verbose mode--help         Show this message and exit.Commands:abp-info            Get ABP info.band                Get/Set LoRaWan region.clear-radio-status  Clear radio statistics.dr                  Get/set next send data rate.get-config          Get LoraWan configuration.hard-reset          Hardware reset of the module.join-abp            Join the configured network in ABP mode.join-otaa           Join the configured network in OTAA mode.link-cnt            Get up & downlink counters.mode                Get/Set mode to LoRaWan or LoRaP2P.radio-status        Get radio statistics.recv-ex             RSSI & SNR report on receive.reload              Set LoRaWan or LoRaP2P configurations to default.reset               Reset Module or LoRaWan stack.send                Send LoRaWan message and check for downlink.set-config          Set LoraWAN configuration.signal              Get (RSSI,SNR) from latest received packet.sleep               Enter sleep mode.version             Get module version.wake-up             Wake up.Session example:$rak811-vresetloraLoRa reset complete.$rak811-vset-configapp_eui=70B3D5xxxxxxxxxxapp_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxLoRaWan parameters set$rak811-vjoin-otaaJoined in OTAA mode$rak811-vdr5$rak811-vdr4Data rate set to 4.$rak811-vsendHelloMessage sent.No downlink available.$rak811-vsend--port4--binary'01020211'Message sent.Downlink received:Port: 1RSSI: -56SNR: 31Data: 123456Note: for your first session after boot, you will need to do ahard-resetinstead of areset loracommand to activate the module.V3.0.x firmwareTherak811v3command exposes the following library calls to the command line:$rak811v3--helpUsage: rak811v3 [OPTIONS] COMMAND [ARGS]...Command line interface for the RAK811 module.Options:-v, --verbose  Verbose mode-d, --debug    Debug mode--version      Show the version and exit.--help         Show this message and exit.Commands:get-config   Execute get_config RAK811 command.hard-reset   Hardware reset of the module.help         Print module help.join         Join the configured network.receive-p2p  Get LoraP2P message.run          Exit boot mode and enter normal mode.send         Send LoRaWan message and check for downlink.send-p2p     Send LoRa P2P message.send-uart    Send data to UART.set-config   Execute set_config RAK811 command.version      Get module version.Session example:$rak811v3-vset-configlora:work_mode:0Configuration doneLoRa (R) is a registered trademark or service mark of Semtech Corporation or its affiliates. LoRaWAN (R) is a licensed mark.RAK811 Version:3.0.0.14.HUART1 work mode: RUI_UART_NORMAL, 115200, N81UART3 work mode: RUI_UART_NORMAL, 115200, N81LoRa work mode:LoRaWAN, join_mode:OTAA, MulticastEnable: false, Class: A$# The following is not necessary as in this case the module is already in OTAA mode!$rak811v3-vset-configlora:join_mode:0Configuration done$rak811v3-vset-configlora:app_eui:70B3D5xxxxxxxxxxConfiguration done$rak811v3-vset-configlora:app_key:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxConfiguration done$rak811v3-vjoinJoined!$rak811v3get-configlora:status|grep'Current Datarate'Current Datarate: 4$rak811v3-vset-configlora:dr:5Configuration done$rak811v3-vsend'Hello'Message sent.No downlink available.$rak811v3-vset-configlora:confirm:1Configuration done$rak811v3-vsend--port4--binary'01020211'Message sent.Send confirmed.RSSI: -66SNR: 6