Changes between Version 17 and Version 18 of iot


Ignore:
Timestamp:
12/10/2019 11:58:46 PM (4 years ago)
Author:
Ryan Erbstoesser
Comment:

add more data and move azure demo to another page

Legend:

Unmodified
Added
Removed
Modified
  • iot

    v17 v18  
    1515
    1616=== Long Range
    17  * LoRA
    18   * nFuse Mini-PCIe Card
    19   * RAK Mini-PCIe Card (see below Lora example)
     17
     18Typically for ranges of 300ft to several miles. Even though long range, some technologies use very low power.
     19
    2020 * Sub 1GHz 802.15.4
    2121  * [https://www.gateworks.com/products/mini-pcie-expansion-cards/gw16122-mini-pcie-expansion-card/ Gateworks GW16122]
     22 * LoRA
     23  * Sub-1GHz, Chirp Spread Spectrum
     24  * Concentrator Cards:
     25   * [https://www.n-fuse.co/devices/LoRaWAN-Concentrator-Card-mini-PCIe.html nFuse Mini-PCIe Card]
     26   * [https://www.rakwireless.com/en-int/products/rak2247/ RAK Mini-PCIe Card]
    2227 * Cellular
     28  * Utilizing cellular networks such as AT&T, Verizon, etc. A direct connection to the cloud.
     29  * LTE CATM1 is low bandwidth designed for small amounts of data such as IoT sensor readings.
    2330  * [https://www.gateworks.com/products/mini-pcie-expansion-cards/gw16126-mini-pcie-expansion-card/ Gateworks GW16126 LTE CATM1 Cellular Mini-PCIe Card]
    2431 * Satellite
     32  * Offering global coverage, relying on the Iridium satellite network.
    2533  * [https://www.gateworks.com/products/mini-pcie-expansion-cards/gw16130-mini-pcie-expansion-card/ Gateworks GW16130 Iridium Satellite Modem Mini-PCIe Card]
    2634 * Sigfox
     35  * Sub-1GHz, Low power, uplink only, low data rate. Limited availability.
    2736
    2837=== Medium Range
     38
     39
    2940 * !WiFi
     41  * 802.11a/b/g/n/ac
    3042  * [https://shop.gateworks.com/index.php?route=product/product&path=70_74&product_id=196 Gateworks GW17032]
    3143 * Bluetooth 5.0 (BLE)
     
    3345
    3446=== Short Range
     47
     48Short range is typically used for items under 10ft, typically used in asset tracking, etc.
     49
    3550 * RFID
     51  * [https://www.impinj.com/platform/connectivity/indy-rs2000/ Impinj RS2000]
     52  * [https://www.impinj.com/platform/connectivity/indy-rs1000/Impinj RS1000]
    3653
    3754== IoT Clouds
     
    4259
    4360== IoT Software Solutions
    44  * OmnIoT !SoftHub
     61 * [https://www.omniot.com/ OmnIoT !SoftHub]
     62  * The OmnIoT SoftHub Platform allows users to quickly and inexpensively build their IoT application Edge Infrastructure.
     63 * [https://www.losant.com Losant Enterprise IoT Platform]
     64 * Losant is an easy-to-use and powerful Enterprise IoT Platform designed to help teams quickly build real-time connected solutions.
    4565
    46 == !LoRa & Microsoft Azure Cloud Demo ==
     66== IoT Application Showcases and Demos
     67 * [wiki:iot/azurelorademo LoRa & Microsoft Azure Gateway Demo]
    4768
    48 [[Image(lora-azure-diagram.png,800px)]]
    49 
    50 [[Image(azure-dashboard.png,800px)]]
    51 
    52 This demo showcases how to connect a !LoRa sensor to a Gateworks SBC Gateway and then push the data up to the Microsoft Azure cloud using MQTT.
    53 
    54 === Requirements
    55 
    56 1. Node / Device
    57  1. [http://www.sparklan.com/p2-products-detail.php?PKey=1d706in8fkBM1aogttf0QPj2j2xnNC4Ud8OmmRXWAPM&WLRS-591EVB%20%20Series SparkLAN WLRS-591EVB]
    58  1. Make sure antenna is connected
    59  1. Connect to desktop/laptop via !CuteCom terminal program
    60  1. Set freq {{{ mac set ch_freq 0 902600000}}}
    61  1. Mac join abp {{{ mac join abp }}}
    62 1. Gateworks IoT Gateway
    63  1. Obtain a Gateworks Single Board Computer. This example uses the Ventana GW5220.
    64  1. Install Ubuntu Bionic (Ventana) [wiki:ventana/ubuntu Instructions]
    65  1. Insert [https://www.rakwireless.com/en-int/products/rak2247/ RAK2247 Mini-PCIe card (USB Version)] with antenna installed into adapter (Because the card by default does not support active low reset which is what the Gateworks SBC uses. Contact RAK to have a RAK2247 modified to use a active low reset)
    66   1. The SPI version will not work in the Gateworks Mini-PCIe slot
    67   1. Be sure to purchase proper antenna and cable with card
    68  1. Software pieces on the Gateworks SBC:
    69   1. Install !LoRa Packet Forwarder
    70    1. Github used is rak_common_for_gateway [https://github.com/RAKWireless/rak_common_for_gateway]
    71    1. {{{ apt-get update }}}
    72    1. {{{ apt-get install build-essential git}}}
    73    1. {{{ git clone https://github.com/RAKWireless/rak_common_for_gateway}}}
    74    1. {{{ cd rak_common_for_gateway/lora/rak2247 }}}
    75    1. {{{ ./install.sh }}}
    76    1. {{{ cd packet_forwarder/lora_pkt_fwd }}}
    77    1. {{{ vi global_conf.json }}}
    78     1. Adjust frequency, etc. Example config given in log and config file section below for USA.
    79     1. Adjust connecting port to 1700
    80    1. {{{ ./lora_pkt_fwd}}}
    81    1. This talks to the actual radio card.
    82    1. Careful to set config file global_conf.json for frequency, and gateway to local host (port 1700) for this example (or The Things Network (TTN) if not using Azure)
    83   1. Install Gateway Bridge
    84    1. .deb package lora-gateway-bridge (must be v3.3 or higher)(now called chirpstack because of licensing issues)
    85    1. The bridge is required because the packet forwarder cannot talk to Azure direct. It only speaks Lora Protocol. Azure needs something like MQTT, etc. So the bridge converts from Lora to MQTT.
    86    1. https://www.chirpstack.io
    87    1. .deb file here: https://artifacts.chirpstack.io/downloads/lora-gateway-bridge/
    88    1. Download using wget on Gateworks SBC: {{{ wget https://artifacts.chirpstack.io/downloads/lora-gateway-bridge/lora-gateway-bridge_3.3.0_linux_armv7.deb}}}
    89    1. Install: {{{ dpkg -i lora-gateway-bridge_3.3.0_linux_armv7.deb }}}
    90    1. Edit config: {{{ vi /etc/lora-gateway-bridge/lora-gateway-bridge.toml }}}
    91     1. Add in Azure details as in example config below, editing the key, etc
    92     1. Config file must specify the proper device ID thats set in Azure cloud, however, I felt the bridge was not listening to my config file and picked the eth0 MAC address as the device ID, so then I created a device in the cloud to match this MAC.
    93 1. Azure Cloud
    94  1. Must sign up for free account.
    95  1. It is recommended to use the pre-done remote monitoring solution accelerator ([https://docs.microsoft.com/en-us/azure/iot-accelerators/iot-accelerators-remote-monitoring-sample-walkthrough here])
    96    1. It is recommended to turn off simulated data in the accelerator to ensure the free trial lasts longer.
    97      1. Must create a device with a specific device ID. This device ID must be used by the MQTT lora-gateway-bridge
    98     1. Select real device, authentication type is symmetric
    99     1. Must get shared key device string like example:
    100      1.
    101 {{{
    102 HostName=gateworksremotemonitor-s2pc7.azurewebsites.net;DeviceId=GateworksTest1;SharedAccessKey=R9hjZNOvtfferesrsHzFGScSgc3EUxc004pjMg=
    103 }}}
    104 [[Image(azure-device-credentials.png,900px)]]
    105 
    106 === Step by Step
    107 
    108 1. Make sure node is up and running and connected to with terminal program on laptop/desktop
    109 1. Start SBC
    110 1. Start packet forward program and ensure it is running successfully as shown in the output in the Log file section below
    111 {{{
    112 ./lora_pkt_fwd
    113 }}}
    114 1. Start the gateway bridge and ensure it is running successfully as shown in the output in the Log file section below
    115 {{{
    116 lora-gateway-bridge -c /etc/lora-gateway-bridge/lora-gateway-bridge.toml
    117 }}}
    118 1. Login to Azure website and check for connected device on Azure (status packets are being sent up by the Gateway Bridge)
    119 1. Send actual data packet from node and view as it propagates from the packet forwarder to the bridge and then to Azure (as shown in the Log section below)
    120  1. In !CuteCom or terminal program connected to the node, send a packet with the following command
    121 {{{
    122 mac tx ucnf 0 1234
    123 }}}
    124 1. Observe in Azure Device Explorer
    125 
    126 === What's Next
    127 This is a demo of a simple setup, sending a simple MQTT Packet up to Azure
    128 
    129 There are many ways this demo can be expanded for each application.
    130 
    131  * Further integrate this into Azure as the application requires.
    132  * Explore the Azure IoT Libraries: [here https://github.com/Azure?utf8=%E2%9C%93&q=iot&type=&language=]
    133 === Sample Configuration Files and Logs
    134 [[CollapsibleStart(lora-gateway-bridge Configuration File)]]
    135 Lora-gateway-bridge
    136 {{{
    137 root@bionic-armhf:~# cat /etc/lora-gateway-bridge/lora-gateway-bridge.toml
    138 # This configuration provides a Semtech UDP packet-forwarder backend and
    139 # integrates with a MQTT broker. Many options and defaults have been omitted
    140 # for simplicity.
    141 #
    142 # See https://www.loraserver.io/lora-gateway-bridge/install/config/ for a full
    143 # configuration example and documentation.
    144 
    145 [general]
    146 # debug=5, info=4, warning=3, error=2, fatal=1, panic=0
    147 log_level = 5
    148 
    149 # Gateway backend configuration.
    150 [backend]
    151 # Backend type.
    152 type="semtech_udp"
    153 
    154   # Semtech UDP packet-forwarder backend.
    155   [backend.semtech_udp]
    156 
    157   # ip:port to bind the UDP listener to
    158   #
    159   # Example: 0.0.0.0:1700 to listen on port 1700 for all network interfaces.
    160   # This is the listeren to which the packet-forwarder forwards its data
    161   # so make sure the 'serv_port_up' and 'serv_port_down' from your
    162   # packet-forwarder matches this port.
    163   udp_bind = "0.0.0.0:1700"
    164 
    165 
    166 # Integration configuration.
    167 [integration]
    168 # Payload marshaler.
    169 #
    170 # This defines how the MQTT payloads are encoded. Valid options are:
    171 # * protobuf:  Protobuf encoding (this will become the LoRa Gateway Bridge v3 default)
    172 # * json:      JSON encoding (easier for debugging, but less compact than 'protobuf')
    173 marshaler="json"
    174 
    175   # MQTT integration configuration.
    176   [integration.mqtt]
    177   # Event topic template.
    178   event_topic_template="gateway/{{ .GatewayID }}/event/{{ .EventType }}"
    179 
    180   # Command topic template.
    181   command_topic_template="gateway/{{ .GatewayID }}/command/#"
    182 
    183   # MQTT authentication.
    184   [integration.mqtt.auth]
    185   # Type defines the MQTT authentication type to use.
    186   #
    187   # Set this to the name of one of the sections below.
    188   #type="generic"
    189   type="azure_iot_hub"
    190 
    191     # Generic MQTT authentication.
    192     [integration.mqtt.auth.generic]
    193     # MQTT server (e.g. scheme://host:port where scheme is tcp, ssl or ws)
    194     server="tcp://127.0.0.1:1883"
    195 
    196     # Connect with the given username (optional)
    197     username=""
    198 
    199     # Connect with the given password (optional)
    200     password=""
    201 
    202     # Azure IoT Hub
    203     #
    204     # This setting will preset uplink and downlink topics that will only
    205     # work with Azure IoT Hub service.
    206     [integration.mqtt.auth.azure_iot_hub]
    207 
    208     # Device connection string (symmetric key authentication).
    209     #
    210     # This connection string can be retrieved from the Azure IoT Hub device
    211     # details when using the symmetric key authentication type.
    212     device_connection_string="HostName=iothub-s2pc7.azure-devices.net;DeviceId=00d012fffee1f102;SharedAccessKey=hWY7XLZuFOYlgIzvSGEbvzDpJ5H2sVGWGq1M6cUoiNc="
    213 
    214     # Token expiration (symmetric key authentication).
    215     #
    216     # ChirpStack Gateway Bridge will generate a SAS token with the given expiration.
    217     # After the token has expired, it will generate a new one and trigger a
    218     # re-connect (only for symmetric key authentication).
    219     sas_token_expiration="24h0m0s"
    220 
    221     # Device ID (X.509 authentication).
    222     #
    223     # This will be automatically set when a device connection string is given.
    224     # It must be set for X.509 authentication.
    225     device_id=""
    226 
    227     # IoT Hub hostname (X.509 authentication).
    228     #
    229     # This will be automatically set when a device connection string is given.
    230     # It must be set for X.509 authentication.
    231     # Example: iot-hub-name.azure-devices.net
    232     hostname=""
    233 
    234     # Client certificates (X.509 authentication).
    235     #
    236     # Configure the tls_cert (certificate file) and tls_key (private-key file)
    237     # when the device is configured with X.509 authentication.
    238     tls_cert=""
    239     tls_key=""
    240 
    241 }}}
    242 
    243 [[CollapsibleEnd]]
    244 [[CollapsibleStart(lora packet forwarder configuration file)]]
    245 Packet forwarder config:
    246 {{{
    247 root@bionic-armhf:~/rak_common_for_gateway/lora/rak2247/packet_forwarder/lora_pkt_fwd# cat global_conf.json
    248 {
    249     "SX1301_conf": {
    250         "lorawan_public": true,
    251         "clksrc": 1,
    252         "antenna_gain": 0,
    253         "radio_0": {
    254             "enable": true,
    255             "type": "SX1257",
    256             "freq": 902600000,
    257             "rssi_offset": -166.0,
    258             "tx_enable": true,
    259             "tx_freq_min": 902000000,
    260             "tx_freq_max": 928000000
    261         },
    262         "radio_1": {
    263             "enable": true,
    264             "type": "SX1257",
    265             "freq": 903400000,
    266             "rssi_offset": -166.0,
    267             "tx_enable": false
    268         },
    269         "chan_multiSF_0": {
    270             "enable": true,
    271             "radio": 0,
    272             "if": -400000
    273         },
    274         "chan_multiSF_1": {
    275             "enable": true,
    276             "radio": 0,
    277             "if": -200000
    278         },
    279         "chan_multiSF_2": {
    280             "enable": true,
    281             "radio": 0,
    282             "if": 0
    283         },
    284         "chan_multiSF_3": {
    285             "enable": true,
    286             "radio": 0,
    287             "if": 200000
    288         },
    289         "chan_multiSF_4": {
    290             "enable": true,
    291             "radio": 1,
    292             "if": -300000
    293         },
    294         "chan_multiSF_5": {
    295             "enable": true,
    296             "radio": 1,
    297             "if": -100000
    298         },
    299         "chan_multiSF_6": {
    300             "enable": true,
    301             "radio": 1,
    302             "if": 100000
    303         },
    304         "chan_multiSF_7": {
    305             "enable": true,
    306             "radio": 1,
    307             "if": 300000
    308         },
    309         "chan_Lora_std": {
    310             "enable": true,
    311             "radio": 0,
    312             "if": 300000,
    313             "bandwidth": 500000,
    314             "spread_factor": 8
    315         },
    316         "chan_FSK": {
    317             "enable": false,
    318             "radio": 0,
    319             "if": 300000,
    320             "bandwidth": 250000,
    321             "datarate": 100000
    322         },
    323         "tx_lut_0": {
    324                 "desc": "TX gain table, index 0",
    325                 "pa_gain": 0,
    326                 "mix_gain": 8,
    327                 "rf_power": -6,
    328                 "dig_gain": 0
    329         },
    330         "tx_lut_1": {
    331                 "desc": "TX gain table, index 1",
    332                 "pa_gain": 0,
    333                 "mix_gain": 10,
    334                 "rf_power": -3,
    335                 "dig_gain": 0
    336         },
    337         "tx_lut_2": {
    338                 "desc": "TX gain table, index 2",
    339                 "pa_gain": 0,
    340                 "mix_gain": 12,
    341                 "rf_power": 0,
    342                 "dig_gain": 0
    343         },
    344         "tx_lut_3": {
    345                 "desc": "TX gain table, index 3",
    346                 "pa_gain": 1,
    347                 "mix_gain": 8,
    348                 "rf_power": 3,
    349                 "dig_gain": 0
    350         },
    351         "tx_lut_4": {
    352                 "desc": "TX gain table, index 4",
    353                 "pa_gain": 1,
    354                 "mix_gain": 10,
    355                 "rf_power": 6,
    356                 "dig_gain": 0
    357         },
    358         "tx_lut_5": {
    359                 "desc": "TX gain table, index 5",
    360                 "pa_gain": 1,
    361                 "mix_gain": 12,
    362                 "rf_power": 10,
    363                 "dig_gain": 0
    364         },
    365         "tx_lut_6": {
    366                 "desc": "TX gain table, index 6",
    367                 "pa_gain": 1,
    368                 "mix_gain": 13,
    369                 "rf_power": 11,
    370                 "dig_gain": 0
    371         },
    372         "tx_lut_7": {
    373                 "desc": "TX gain table, index 7",
    374                 "pa_gain": 2,
    375                 "mix_gain": 9,
    376                 "rf_power": 12,
    377                 "dig_gain": 0
    378         },
    379         "tx_lut_8": {
    380                 "desc": "TX gain table, index 8",
    381                 "pa_gain": 1,
    382                 "mix_gain": 15,
    383                 "rf_power": 13,
    384                 "dig_gain": 0
    385         },
    386         "tx_lut_9": {
    387                 "desc": "TX gain table, index 9",
    388                 "pa_gain": 2,
    389                 "mix_gain": 10,
    390                 "rf_power": 14,
    391                 "dig_gain": 0
    392         },
    393         "tx_lut_10": {
    394                 "desc": "TX gain table, index 10",
    395                 "pa_gain": 2,
    396                 "mix_gain": 11,
    397                 "rf_power": 16,
    398                 "dig_gain": 0
    399         },
    400         "tx_lut_11": {
    401                 "desc": "TX gain table, index 11",
    402                 "pa_gain": 3,
    403                 "mix_gain": 9,
    404                 "rf_power": 20,
    405                 "dig_gain": 0
    406         },
    407         "tx_lut_12": {
    408                 "desc": "TX gain table, index 12",
    409                 "pa_gain": 3,
    410                 "mix_gain": 10,
    411                 "rf_power": 23,
    412                 "dig_gain": 0
    413         },
    414         "tx_lut_13": {
    415                 "desc": "TX gain table, index 13",
    416                 "pa_gain": 3,
    417                 "mix_gain": 11,
    418                 "rf_power": 25,
    419                 "dig_gain": 0
    420         },
    421         "tx_lut_14": {
    422                 "desc": "TX gain table, index 14",
    423                 "pa_gain": 3,
    424                 "mix_gain": 12,
    425                 "rf_power": 26,
    426                 "dig_gain": 0
    427         },
    428         "tx_lut_15": {
    429                 "desc": "TX gain table, index 15",
    430                 "pa_gain": 3,
    431                 "mix_gain": 14,
    432                 "rf_power": 27,
    433                 "dig_gain": 0
    434         }
    435     },
    436     "gateway_conf": {
    437         "gateway_ID": "00D012FFFEE1F102",
    438         /* change with default server address/ports, or overwrite in local_conf.json */
    439         "server_address": "localhost",
    440         "serv_port_up": 1700,
    441         "serv_port_down": 1700,
    442         /* adjust the following parameters for your network */
    443         "keepalive_interval": 10,
    444         "stat_interval": 30,
    445         "push_timeout_ms": 100,
    446         /* forward only valid packets */
    447         "forward_crc_valid": true,
    448         "forward_crc_error": true,
    449         "forward_crc_disabled": false,
    450         "autoquit_threshold": 6
    451     }
    452 }
    453 }}}
    454 
    455 
    456 [[CollapsibleEnd]]
    457 [[CollapsibleStart(lora packet forwarder example output)]]
    458 
    459 Example packet forward application running output:
    460 {{{
    461 root@bionic-armhf:~/rak_common_for_gateway/lora/rak2247/packet_forwarder/lora_pkt_fwd# ./lora_pkt_fwd
    462 *** Beacon Packet Forwarder for Lora Gateway ***
    463 Version: 4.0.1
    464 *** Lora concentrator HAL library version info ***
    465 Version: 5.0.1;
    466 ***
    467 INFO: Little endian host
    468 INFO: found global configuration file global_conf.json, parsing it
    469 INFO: global_conf.json does contain a JSON object named SX1301_conf, parsing SX1301 parameters
    470 INFO: lorawan_public 1, clksrc 1
    471 INFO: no configuration for LBT
    472 INFO: antenna_gain 0 dBi
    473 INFO: Configuring TX LUT with 16 indexes
    474 INFO: radio 0 enabled (type SX1257), center frequency 902600000, RSSI offset -166.000000, tx enabled 1, tx_notch_freq 0
    475 INFO: radio 1 enabled (type SX1257), center frequency 903400000, RSSI offset -166.000000, tx enabled 0, tx_notch_freq 0
    476 INFO: Lora multi-SF channel 0>  radio 0, IF -400000 Hz, 125 kHz bw, SF 7 to 12
    477 INFO: Lora multi-SF channel 1>  radio 0, IF -200000 Hz, 125 kHz bw, SF 7 to 12
    478 INFO: Lora multi-SF channel 2>  radio 0, IF 0 Hz, 125 kHz bw, SF 7 to 12
    479 INFO: Lora multi-SF channel 3>  radio 0, IF 200000 Hz, 125 kHz bw, SF 7 to 12
    480 INFO: Lora multi-SF channel 4>  radio 1, IF -300000 Hz, 125 kHz bw, SF 7 to 12
    481 INFO: Lora multi-SF channel 5>  radio 1, IF -100000 Hz, 125 kHz bw, SF 7 to 12
    482 INFO: Lora multi-SF channel 6>  radio 1, IF 100000 Hz, 125 kHz bw, SF 7 to 12
    483 INFO: Lora multi-SF channel 7>  radio 1, IF 300000 Hz, 125 kHz bw, SF 7 to 12
    484 INFO: Lora std channel> radio 0, IF 300000 Hz, 500000 Hz bw, SF 8
    485 INFO: FSK channel 8 disabled
    486 INFO: global_conf.json does contain a JSON object named gateway_conf, parsing gateway parameters
    487 INFO: gateway MAC address is configured to 00D012FFFEE1F102
    488 INFO: server hostname or IP address is configured to "localhost"
    489 INFO: upstream port is configured to "1700"
    490 INFO: downstream port is configured to "1700"
    491 INFO: downstream keep-alive interval is configured to 10 seconds
    492 INFO: statistics display interval is configured to 30 seconds
    493 INFO: upstream PUSH_DATA time-out is configured to 100 ms
    494 INFO: packets received with a valid CRC will be forwarded
    495 INFO: packets received with a CRC error will be forwarded
    496 INFO: packets received with no CRC will NOT be forwarded
    497 INFO: Auto-quit after 6 non-acknowledged PULL_DATA
    498 INFO: found local configuration file local_conf.json, parsing it
    499 INFO: redefined parameters will overwrite global parameters
    500 INFO: local_conf.json does not contain a JSON object named SX1301_conf
    501 INFO: local_conf.json does contain a JSON object named gateway_conf, parsing gateway parameters
    502 INFO: gateway MAC address is configured to 00D012FFFEE1F102
    503 INFO: packets received with a valid CRC will be forwarded
    504 INFO: packets received with a CRC error will be forwarded
    505 INFO: packets received with no CRC will NOT be forwarded
    506 INFO: [main] concentrator started, packet can now be received
    507 
    508 INFO: Disabling GPS mode for concentrator's counter...
    509 INFO: host/sx1301 time offset=(1573244036s:715596µs) - drift=1811158092µs
    510 INFO: Enabling GPS mode for concentrator's counter.
    511 
    512 
    513 INFO: Received pkt from mote: 12345678 (fcnt=77)
    514 
    515 JSON up: {"rxpk":[{"tmst":12244828,"chan":6,"rfch":1,"freq":903.500000,"stat":1,"modu":"LORA","datr":"SF10BW125","codr":"4/5","lsnr":10.8,"rssi":-39,"size":17,"data":"QHhWNBKATQAPR52Q+oKvi8I="}]}
    516 INFO: [down] PULL_ACK received in 4 ms
    517 
    518 INFO: Received pkt from mote: 12345678 (fcnt=78)
    519 
    520 JSON up: {"rxpk":[{"tmst":27958804,"chan":4,"rfch":1,"freq":903.100000,"stat":1,"modu":"LORA","datr":"SF10BW125","codr":"4/5","lsnr":10.2,"rssi":-39,"size":17,"data":"QHhWNBKATgAPZnN8WUUi2U8="}]}
    521 INFO: [up] PUSH_ACK received in 7 ms
    522 
    523 ##### 2019-11-08 20:14:29 GMT #####
    524 ### [UPSTREAM] ###
    525 # RF packets received by concentrator: 2
    526 # CRC_OK: 100.00%, CRC_FAIL: 0.00%, NO_CRC: 0.00%
    527 # RF packets forwarded: 2 (34 bytes)
    528 # PUSH_DATA datagrams sent: 2 (396 bytes)
    529 # PUSH_DATA acknowledged: 50.00%
    530 ### [DOWNSTREAM] ###
    531 # PULL_DATA sent: 3 (33.33% acknowledged)
    532 # PULL_RESP(onse) datagrams received: 0 (0 bytes)
    533 # RF packets sent to concentrator: 0 (0 bytes)
    534 # TX errors: 0
    535 # BEACON queued: 0
    536 # BEACON sent so far: 0
    537 # BEACON rejected: 0
    538 ### [JIT] ###
    539 # SX1301 time (PPS): 2835751
    540 src/jitqueue.c:448:jit_print_queue(): INFO: [jit] queue is empty
    541 ### [GPS] ###
    542 # GPS sync is disabled
    543 ##### END #####
    544 
    545 JSON up: {"stat":{"time":"2019-11-08 20:14:29 GMT","rxnb":2,"rxok":2,"rxfw":2,"ackr":50.0,"dwnb":0,"txnb":0}}
    546 INFO: [up] PUSH_ACK received in 2 ms
    547 INFO: [down] PULL_ACK received in 2 ms
    548 INFO: [down] PULL_ACK received in 3 ms
    549 
    550 }}}
    551 
    552 [[CollapsibleEnd]]
    553 [[CollapsibleStart(lora-gateway-bridge example output)]]
    554 
    555 Example lora-gateway-bridge output
    556 {{{
    557 root@bionic-armhf:~# lora-gateway-bridge -c /etc/lora-gateway-bridge/lora-gateway-bridge.toml
    558 INFO[0000] starting LoRa Gateway Bridge                  docs="https://www.loraserver.io/lora-gateway-bridge/" version=3.3.0
    559 INFO[0000] backend/semtechudp: starting gateway udp listener  addr="0.0.0.0:1700"
    560 DEBU[0000] backend/semtechudp: cleanup gateway registry
    561 INFO[0000] integration/mqtt: connected to mqtt broker   
    562 DEBU[0001] backend/semtechudp: received udp packet from gateway  addr="127.0.0.1:53877" protocol_version=2 type=PullData
    563 DEBU[0001] backend/semtechudp: sending udp packet to gateway  addr="127.0.0.1:53877" protocol_version=2 type=PullACK
    564 INFO[0001] integration/mqtt: subscribing to topic        qos=0 topic="devices/00d012fffee1f102/messages/devicebound/#"
    565 DEBU[0006] backend/semtechudp: received udp packet from gateway  addr="127.0.0.1:50657" protocol_version=2 type=PushData
    566 DEBU[0006] backend/semtechudp: sending udp packet to gateway  addr="127.0.0.1:50657" protocol_version=2 type=PushACK
    567 INFO[0006] integration/mqtt: publishing event            event=up qos=0 topic=devices/00d012fffee1f102/messages/events/up uplink_id=d0e63fa3-ede2-4850-b981-e239820a8434
    568 DEBU[0011] backend/semtechudp: received udp packet from gateway  addr="127.0.0.1:50657" protocol_version=2 type=PushData
    569 DEBU[0011] backend/semtechudp: sending udp packet to gateway  addr="127.0.0.1:50657" protocol_version=2 type=PushACK
    570 INFO[0011] integration/mqtt: publishing event            event=stats qos=0 stats_id=1af685eb-3e6d-4a1f-bf18-103c7619c7d1 topic=devices/00d012fffee1f102/messages/events/stats
    571 DEBU[0011] backend/semtechudp: received udp packet from gateway  addr="127.0.0.1:53877" protocol_version=2 type=PullData
    572 DEBU[0011] backend/semtechudp: sending udp packet to gateway  addr="127.0.0.1:53877" protocol_version=2 type=PullACK
    573 DEBU[0021] backend/semtechudp: received udp packet from gateway  addr="127.0.0.1:53877" protocol_version=2 type=PullData
    574 DEBU[0021] backend/semtechudp: sending udp packet to gateway  addr="127.0.0.1:53877" protocol_version=2 type=PullACK
    575 DEBU[0032] backend/semtechudp: received udp packet from gateway  addr="127.0.0.1:53877" protocol_version=2 type=PullData
    576 DEBU[0032] backend/semtechudp: sending udp packet to gateway  addr="127.0.0.1:53877" protocol_version=2 type=PullACK
    577 DEBU[0041] backend/semtechudp: received udp packet from gateway  addr="127.0.0.1:50657" protocol_version=2 type=PushData
    578 DEBU[0041] backend/semtechudp: sending udp packet to gateway  addr="127.0.0.1:50657" protocol_version=2 type=PushACK
    579 INFO[0041] integration/mqtt: publishing event            event=stats qos=0 stats_id=9926a236-5ef0-41f5-968b-83eb80af1836 topic=devices/00d012fffee1f102/messages/events/stats
    580 DEBU[0042] backend/semtechudp: received udp packet from gateway  addr="127.0.0.1:53877" protocol_version=2 type=PullData
    581 DEBU[0042] backend/semtechudp: sending udp packet to gateway  addr="127.0.0.1:53877" protocol_version=2 type=PullACK
    582 
    583 }}}
    584 
    585 [[CollapsibleEnd]]
    586 [[CollapsibleStart(Status Packet Example Logs)]]
    587 Sample status on Azure platform for a sample packet:
    588 
    589 Bridge log:
    590 {{{
    591 INFO[5322] integration/mqtt: publishing event            event=stats qos=0 stats_id=5c6c1e4f-ae87-4bf9-a18d-8b2c27646dbb topic=devices/00d012fffee1f102/messages/events/stats
    592 
    593 }}}
    594 
    595 
    596 Azure receive:
    597 {{{
    598 {
    599   "data": {
    600     "gatewayId": "ANAS//7h8QI=",
    601     "ip": "172.24.24.194",
    602     "time": "2019-11-08T21:37:30Z",
    603     "location": null,
    604     "configVersion": null,
    605     "rxPacketsReceived": 0,
    606     "rxPacketsReceivedOk": 0,
    607     "txPacketsReceived": 0,
    608     "txPacketsEmitted": 0,
    609     "statsId": "Mf/IdLFxTe6ZVlUYcQvlZw==",
    610     "stats": null
    611   },
    612   "deviceId": "00d012fffee1f102",
    613   "time": "2019-11-08T21:37:30+00:00"
    614 }
    615 }}}
    616 
    617 [[CollapsibleEnd]]
    618 
    619 [[CollapsibleStart(Data / Up Packet Example Logs)]]
    620 Sample data up on Azure for sample up packet:
    621 
    622 Bridge log:
    623 {{{
    624 INFO[5193] integration/mqtt: publishing event            event=up qos=0 topic=devices/00d012fffee1f102/messages/events/up uplink_id=7a36347f-e7f5-4d9e-b75c-d54adf68e9d2
    625 
    626 }}}
    627 
    628 
    629 Azure packet log
    630 {{{
    631 {
    632   "data": {
    633     "phyPayload": "QHhWNBKAVwAPo+J5m001Lok=",
    634     "txInfoFrequency": 903100000,
    635     "txInfoModulation": "LORA",
    636     "txInfoLoRaModulationInfoBandwidth": 125,
    637     "txInfoLoRaModulationInfoSpreadingFactor": 10,
    638     "txInfoLoRaModulationInfoCodeRate": "4/5",
    639     "txInfoLoRaModulationInfoPolarizationInversion": false,
    640     "rxInfoGatewayId": "ANAS//7h8QI=",
    641     "rxInfoTime": null,
    642     "rxInfoTimeSinceGpsEpoch": null,
    643     "rxInfoRssi": -35,
    644     "rxInfoLoRaSnr": 11.5,
    645     "rxInfoChannel": 4,
    646     "rxInfoRfChain": 1,
    647     "rxInfoBoard": 0,
    648     "rxInfoAntenna": 0,
    649     "rxInfoLocation": null,
    650     "rxInfoFineTimestampType": "NONE",
    651     "rxInfoContext": "NtnEjA==",
    652     "rxInfoUplinkId": "ejY0f+f1TZ63XNVK32jp0g==",
    653     "up": null
    654   },
    655   "deviceId": "00d012fffee1f102",
    656   "time": "2019-11-08T21:40:52+00:00"
    657 }
    658 }}}
    659 [[CollapsibleEnd]]
    660 
    661 === Azure Links ===
    662  * https://github.com/Azure-Samples/IoTMQTTSample
    663  * https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-mqtt-support
    664  * https://www.chirpstack.io/guides/microsoft-azure/
    665  * https://www.chirpstack.io/gateway-bridge/overview/
    666  * https://artifacts.chirpstack.io/downloads/lora-gateway-bridge/
    667 
    668 == Troubleshooting
    669 [https://www.gateworks.com/contact/ Contact Gateworks Support Team]
    670