{"id":11983,"date":"2016-04-01T09:02:05","date_gmt":"2016-04-01T14:02:05","guid":{"rendered":"http:\/\/www.multitech.net\/developer\/?page_id=11983"},"modified":"2022-03-18T13:35:05","modified_gmt":"2022-03-18T18:35:05","slug":"mqtt-messages","status":"publish","type":"page","link":"https:\/\/www.multitech.net\/developer\/software\/lora\/lora-network-server\/mqtt-messages\/","title":{"rendered":"MQTT Messages"},"content":{"rendered":"<p>An MQTT broker is provided on the device to handle messaging between the network server and applications. This provides an easy interface for an application to subscribe to relevant topics. Applications can be written in any language supported by the image installed on the device, MQTT libraries are available for most languages.<\/p>\n<p>&nbsp;<\/p>\n<h2>Input Topics<\/h2>\n<ul>\n<li>down &#8211; submit a packet to be queue for a device\n<ul>\n<li>topic: lora\/&lt;DEV-EUI&gt;\/down<\/li>\n<li>message &#8211; JSON packet info<\/li>\n<li>JSON fields\n<ul>\n<li>deveui &#8211; DevEUI of destination end device<\/li>\n<li>data &#8211; base64 encoded data to be sent in downlink packet payload.<\/li>\n<li>port &#8211; AppPort, 8-bit integer value to send packet, use 0 to send MAC commands.<\/li>\n<li>ack &#8211; optional, request ACK of receipt of packet by end device. If enabled the end device should send an ACK in its next uplink packet after receiving the downlink. If the ACK is not seen in the uplink the same downlink packet may be sent again, depending on retry settings. In Class C the ACK will be expected soon after the downlink is transmitted, i.e. five seconds, otherwise a retry will be sent.<\/li>\n<li>ack_retries &#8211; optional, number of re-transmissions to perform in sending the downlink. If network server is unable to schedule the downlink it will not be counted against the retries.<\/li>\n<li>rx_wnd &#8211; optional, specify Rx window downlink should be scheduled for values (0, 1 or 2). If provided, and not 0, the network server will wait until the packet can be scheduled for the specified window before sending the packet to the radio for transmission. The packet will remain in the queue until scheduled. Set to 0 for Class C devices.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>clear &#8211; clear the downlink queue for an end device\n<ul>\n<li>topic: lora\/&lt;DEV-EUI&gt;\/clear<\/li>\n<li>message &#8211; none or empty string<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h2>Output Topics<\/h2>\n<h3>Device Specific Messages<\/h3>\n<p>Events for specific DevEUI values can be subscribed to, useful for filtering. Messages published by the network server use QOS level 1.<\/p>\n<p>Match all topics: lora\/+\/+<\/p>\n<p>Fields: lora\/&lt;DEV-EUI&gt;\/&lt;EVENT&gt;<\/p>\n<p style=\"padding-left: 30px;\"><strong>Event Topics<\/strong><\/p>\n<ul>\n<ul>\n<ul>\n<ul>\n<li>up &#8211; occurs when a packet is received and authenticated. Will be sent to application only once for each frame counter. Duplicate or retransmitted packets will be filtered by the network server. Payload has been decrypted with the Application Session Key.<\/li>\n<li>down &#8211; occurs when an application submits a packet for downlink using MQTT<\/li>\n<li>joined &#8211; occurs when an end-device join request is received, validated and join response is queued. If join request was serviced by remote join server &#8220;remote_js&#8221; in JSON will be set true.<\/li>\n<li>join_request &#8211; occurs when a join request is received.<\/li>\n<li>join_rejected &#8211; occurs when join request is denied due to a mismatched AppKey, UnknownDevEUI or Gateway Mismatch.<\/li>\n<li>join_accept &#8211; occurs when a join request is valid and a response is ready to be sent.<\/li>\n<li>down_queued &#8211; occurs when a downlink packet is successfully queued by an application.<\/li>\n<li>down_dropped &#8211; occurs when a packet cannot be queued<\/li>\n<li>mac_sent &#8211; occurs when a set of MAC commands are sent to the end device in a downlink packet<\/li>\n<li>mac_recv &#8211; occurs when a MAC command is received in an uplink packet<\/li>\n<li>packet_sent &#8211; occurs when a packet is sent to the radio for transmission<\/li>\n<li>packet_ack &#8211; occurs when the network server receives an uplink with acknowledgement of successful receipt of a downlink packet.<\/li>\n<li>packet_drop &#8211; occurs when a packet could not be scheduled for transmission in an Rx Window and cannot be resent later, i.e. join request cannot be rescheduled or ACK retries have been exhausted.<\/li>\n<li>packet_missed &#8211; occurs when gap is detected in the frame counter of received frames. A count of the detected missed packets will be provided in the message.<\/li>\n<li>packet_recv &#8211; occurs when a packet is received and authenticated. Duplicate packets will appear, data payload is encrypted.<\/li>\n<li>queue_full &#8211; occurs when space is not available to queue a downlink for the end device<\/li>\n<li>class &#8211; occurs when an end device operating class is updated.<\/li>\n<li>clear &#8211; command sent to clear an end device downlink queue<\/li>\n<li>cleared &#8211; occurs when an end device downlink queue is cleared.<\/li>\n<li>gw_rejected &#8211; occurs when a UDP packet is received from an unknown gateway and a new record could not be created due to currently installed license information<\/li>\n<\/ul>\n<\/ul>\n<\/ul>\n<\/ul>\n<h3>Fields in up messages<\/h3>\n<ul>\n<li>time &#8211; UTC time of pkt RX, us precision, ISO 8601 &#8216;compact&#8217; format<\/li>\n<li>tmst &#8211; Internal timestamp of &#8220;RX finished&#8221; event (32b unsigned)<\/li>\n<li>freq &#8211; RX central frequency in MHz (unsigned float, Hz precision)<\/li>\n<li>chan &#8211; Concentrator &#8220;IF&#8221; channel used for RX (unsigned integer)<\/li>\n<li>rfch &#8211; Concentrator &#8220;RF chain&#8221; used for RX (unsigned integer)<\/li>\n<li>stat &#8211; CRC status: 1 = OK, -1 = fail, 0 = no CRC<\/li>\n<li>modu &#8211; Modulation identifier &#8220;LORA&#8221; or &#8220;FSK&#8221;<\/li>\n<li>datr &#8211; LoRa datarate identifier (eg. SF12BW500)<\/li>\n<li>datr &#8211; FSK datarate (unsigned, in bits per second)<\/li>\n<li>codr &#8211; LoRa ECC coding rate identifier<\/li>\n<li>rssi &#8211; RSSI in dBm (signed integer, 1 dB precision)<\/li>\n<li>lsnr &#8211; Lora SNR ratio in dB (signed float, 0.1 dB precision)<\/li>\n<li>size &#8211; RF packet payload size in bytes (unsigned integer)<\/li>\n<li>data &#8211; Base64 encoded RF packet payload, padded<\/li>\n<li>ack &#8211; Set to true if uplink frame is acknowledging last received downlink<\/li>\n<li>adr &#8211; Set to true if end-device has ADR enabled bit set in uplink packet<\/li>\n<li>data &#8211; Decrypted payload (BASE64)<\/li>\n<li>mhdr &#8211; LoRaWAN packet header (HEX)<\/li>\n<li>opts &#8211; MAC commands (HEX)<\/li>\n<li>port &#8211; Application port<\/li>\n<li>fcnt &#8211; Packet sequence number 16-bit<\/li>\n<li>seqn &#8211; Packet sequence number 32-bit<\/li>\n<li>size &#8211; Size of &#8220;data&#8221; field<\/li>\n<li>time &#8211; time packet was received by network server or packet-forwarder<\/li>\n<li>cls &#8211; class bit in frame control byte<\/li>\n<li>deveui &#8211; device EUI<\/li>\n<li>appeui &#8211; application EUI<\/li>\n<li>gweui &#8211; gateway EUI<\/li>\n<li><strong>mPower 6.0.x will add the following fields if configured in the device record<\/strong>\n<ul>\n<li>name &#8211; device name<\/li>\n<li>product_id &#8211; device product ID<\/li>\n<li>serial_number &#8211; device serial number<\/li>\n<li>hardware_version &#8211; device hardware versionm<\/li>\n<li>firmware_version &#8211; device firmware version<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/ul>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3>Gateway Specific Messages<\/h3>\n<p>Events for specific Gateway EUI can be subscribed to, useful for filtering.<\/p>\n<p>Fields: lora\/&lt;GW-EUI&gt;\/&lt;DEV-EUI&gt;\/&lt;EVENT&gt;<\/p>\n<p>Events:<\/p>\n<ul>\n<ul>\n<ul>\n<li>packet_recv &#8211; occurs when a packet is received by the radio<\/li>\n<\/ul>\n<\/ul>\n<\/ul>\n<h3>Application Specific Messages<\/h3>\n<p>Events for specific Application EUI and Application Port values can be subscribed to, useful for filtering.<\/p>\n<p>Fields: lora\/&lt;APP-EUI&gt;\/&lt;DEV-EUI&gt;\/&lt;EVENT&gt;<\/p>\n<p>Fields: lora\/&lt;APP-EUI&gt;\/&lt;DEV-EUI&gt;\/&lt;APP-PORT&gt;\/up<\/p>\n<p>Events:<\/p>\n<ul>\n<ul>\n<ul>\n<li>up &#8211; occurs when a packet is received and authenticated. Will be sent to application only once for each frame counter. Duplicate or retransmitted packets will be filtered by the network server. Payload has been decrypted with the Application Session Key.<\/li>\n<li>packet_sent &#8211; occurs when a packet is sent to the radio for transmission<\/li>\n<\/ul>\n<\/ul>\n<\/ul>\n<h3>Subscribing to MQTT Messages<\/h3>\n<p>Below is an example of a device joining the network successfully. Then sending one uplink packet, receiving a confirmed downlink with MAC command requests and responding in a second uplink with MAC command answers and ACK set.<\/p>\n<p><code># mosquitto_sub -v -t lora\/+\/+<\/code><\/p>\n<p><code>lora\/00-80-00-00-00-00-e1-9c\/join_request {\"tmst\":4167060148,\"chan\":7,...,\"nonce\":42137}<br \/>\nlora\/00-80-00-00-00-00-e1-9c\/class C<br \/>\nlora\/00-80-00-00-00-00-e1-9c\/joined {\"remote_js\":true}<br \/>\nlora\/00-80-00-00-00-00-e1-9c\/packet_sent {\"appeui\":\"16-ea-76-...-3d-80\",\"codr\":\"4\/5\",...,\"powe\":11,}<br \/>\nlora\/00-80-00-00-00-00-e1-9c\/packet_recv {\"tmst\":4237072364,...\"data\":\"QFWKg1i...emStPVPg=\"}<br \/>\nlora\/00-80-00-00-00-00-e1-9c\/up {\"tmst\":4237072364,...\"seqn\":0,\"appeui\":\"16-ea-76-...-3d-80\"}<br \/>\nlora\/00-80-00-00-00-00-e1-9c\/packet_sent {\"appeui\":\"16-ea-76...-80\",...,\"tmst\":4238072364,\"twnd\":1}<br \/>\nlora\/00-80-00-00-00-00-e1-9c\/mac_sent {\"deveui\":\"00-80-...-ee\",\"opts\":\"0708f87d84...18477\"}<br \/>\nlora\/00-80-00-00-00-00-e1-9c\/packet_recv {\"tmst\":4248407972,...,\"data\":\"QFWKg1ikA...dgONV\"}<br \/>\nlora\/00-80-00-00-00-00-e1-9c\/packet_ack {\"seqn\":0}<br \/>\nlora\/00-80-00-00-00-00-e1-9c\/mac_recv {\"appeui\":\"1\",\"data\":\"03\",\"deveui\":\"2\",\"gweui\":\"3\",\"id\":7}<br \/>\nlora\/00-80-00-00-00-00-e1-9c\/mac_recv {\"appeui\":\"1\",\"data\":\"03\",\"deveui\":\"2\",\"gweui\":\"3\",\"id\":7}<br \/>\nlora\/00-80-00-00-00-00-e1-9c\/up {\"tmst\":4248407972,...,\"seqn\":1,\"appeui\":\"16-ea-76-...-3d-80\"}<br \/>\nlora\/00-80-00-00-00-00-e1-9c\/packet_missed {\"count\":3}<br \/>\nlora\/00-80-00-00-00-00-e1-9c\/up {\"tmst\":4543408762,...,\"seqn\":5,\"appeui\":\"16-ea-76-...-3d-80\"}<\/code><\/p>\n<h3>Publishing MQTT Messages<\/h3>\n<p><code># mosquitto_pub -t lora\/&lt;DEV-EUI&gt;\/down -m '{&lt;JSON fields&gt;}'<\/code><br \/>\n<code># mosquitto_pub -t lora\/00-80-00-00-00-00-9d-b2\/down -m '{\"data\":\"dGVzdA==\"}'<\/code><\/p>\n<p>The &#8220;data&#8221; field of the message must be base64 encoded.<br \/>\nCommands can be issued through UDP on port 6677 or using the lora-query utility<\/p>\n<h3>Additional commands<\/h3>\n<p>Example returning the configuration settings of the Network Server:<\/p>\n<p><code><b># nc -u localhost 6677<\/b><\/code><\/p>\n<p><code><br \/>\nconfig<br \/>\n{<br \/>\n\"__v\" : 3,<br \/>\n\"addressRange\" : {<br \/>\n\"end\" : \"FF:FF:FF:FE\",<br \/>\n\"start\" : \"00:00:00:01\"<\/code><\/p>\n<p><code><b># lora-query -x config<\/b><\/code><\/p>\n<p><code><br \/>\n{<br \/>\n\"__v\" : 3,<br \/>\n\"addressRange\" : {<br \/>\n\"end\" : \"FF:FF:FF:FE\",<br \/>\n\"start\" : \"00:00:00:01\"<\/code><\/p>\n<p><strong>To list all commands<\/strong><\/p>\n<p><code>$ lora-query -x help<\/code><\/p>\n<p>MTS Lora Server Command Help<\/p>\n<p><strong>Commands:<\/strong><\/p>\n<p>stats &#8211; list current stats<\/p>\n<p style=\"padding-left: 30px;\">reset &#8211; reset stats for network, gateways and end-devices<\/p>\n<p>gateway &#8211; gateway commands<\/p>\n<p style=\"padding-left: 30px;\">list &#8211; list connected gateways<\/p>\n<p style=\"padding-left: 60px;\">format: gateway list [json]<\/p>\n<p style=\"padding-left: 30px;\">delete &#8211; remove a gateway from the list<\/p>\n<p style=\"padding-left: 60px;\">format: device gateway &lt;GW-EUI&gt;<\/p>\n<p>device &#8211; end-device commands<\/p>\n<p style=\"padding-left: 30px;\">add &#8211; add a new end-device record<\/p>\n<p style=\"padding-left: 60px;\">format: device add &lt;DEV-JSON&gt;<\/p>\n<p style=\"padding-left: 60px;\">example: <code>device add '{\"deveui\":\"00-80-00-00-00-00-e1-9c\",\"class\":\"C\"}'<\/code><\/p>\n<p style=\"padding-left: 30px;\">stats &#8211; show end-device statistics<\/p>\n<p style=\"padding-left: 30px;\">update &#8211; update end-device configuration or session info<\/p>\n<p style=\"padding-left: 60px;\">format: device update &lt;DEV-EUI&gt; &lt;FIELD&gt; &lt;VALUE&gt;<\/p>\n<p style=\"padding-left: 60px;\">example: <code>device update 00-80-00-00-00-00-e1-9c class C<\/code><\/p>\n<p style=\"padding-left: 60px;\">fields: class, nskey, dskey, ulc, dlc<\/p>\n<p style=\"padding-left: 60px;\">format: device update &lt;DEV-JSON&gt;<\/p>\n<p style=\"padding-left: 60px;\">example: <code>device update '{\"deveui\":\"00-80-00-00-00-00-e1-9c\",\"class\":\"C\"}'<\/code><\/p>\n<p style=\"padding-left: 60px;\">fields: deveui, class, name, serial_number, product_id, hardware_version, firmware_version, lorawan_version<\/p>\n<p style=\"padding-left: 30px;\">delete &#8211; delete an end-device configuration, session and packet records<\/p>\n<p style=\"padding-left: 60px;\">format: device delete &lt;DEV-EUI&gt;<\/p>\n<p style=\"padding-left: 30px;\">config &#8211; show configuration for a specific device<\/p>\n<p style=\"padding-left: 30px;\">reset &#8211; reset end-device session counters<\/p>\n<p style=\"padding-left: 60px;\">format: device reset &lt;DEV-EUI&gt;<\/p>\n<p style=\"padding-left: 30px;\">list &#8211; list end-devices configured in the network server<\/p>\n<p style=\"padding-left: 60px;\">format: device list [json]<\/p>\n<p style=\"padding-left: 30px;\">keygen &#8211; generate a unique end-device key using zero-touch settings<\/p>\n<p style=\"padding-left: 60px;\">format: device keygen &lt;DEV-EUI&gt; [APP-EUI]<\/p>\n<p>session &#8211; session commands<\/p>\n<p style=\"padding-left: 30px;\">add &#8211; add a session for a device<\/p>\n<p style=\"padding-left: 60px;\">format: session add &lt;DEV-JSON&gt;<\/p>\n<p style=\"padding-left: 60px;\">example: <code>session add '{\"deveui\":\"008000000000e19c\",...,\"fnwk_sint_key\":\"531bd..ebe6\"}'<\/code><\/p>\n<p style=\"padding-left: 30px;\">JSON prettified:<br \/>\n<code><br \/>\n{<br \/>\n\"deveui\":\"00-80-00-00-00-00-e1-9c\",<br \/>\n\"dev_addr\":\"00112233\",<br \/>\n\"appeui\":\"00-88-88-88-00-00-e1-9c\",<br \/>\n\"joineui\":\"00-99-99-99-00-00-e1-9c\",<br \/>\n\"net_id\":\"000017\",<br \/>\n\"app_senc_key\":\"531bd9c5ec5d8ba5ef3b262cebfb3e66\",<br \/>\n\"fnwk_sint_key\":\"531bd9c5ec5d8ba5ef3b262cebfb3e66\"<br \/>\n}<\/code><\/p>\n<p style=\"padding-left: 60px;\">fields: deveui, appeui, joineui, dev_addr, net_id, app_senc_key, fnwk_sint_key<\/p>\n<p style=\"padding-left: 30px;\">delete &#8211; remove a device session<\/p>\n<p style=\"padding-left: 60px;\">format: session delete &lt;DEV-EUI&gt;<\/p>\n<p style=\"padding-left: 30px;\">reset &#8211; reset session counters<\/p>\n<p style=\"padding-left: 60px;\">format: session reset &lt;DEV-EUI&gt;<\/p>\n<p style=\"padding-left: 30px;\">list &#8211; show current device sessions<\/p>\n<p style=\"padding-left: 60px;\">format: session list [json]<\/p>\n<p>packet &#8211; packet commands<\/p>\n<p style=\"padding-left: 30px;\">join &#8211; list all validated join packets<\/p>\n<p style=\"padding-left: 60px;\">format: packet join [json]<\/p>\n<p style=\"padding-left: 30px;\">up &#8211; list all validated uplink packets<\/p>\n<p style=\"padding-left: 60px;\">format: packet up [json]<\/p>\n<p style=\"padding-left: 30px;\">down &#8211; list all downlink packets<\/p>\n<p style=\"padding-left: 60px;\">format: packet down [json]<\/p>\n<p style=\"padding-left: 30px;\">list &#8211; list all packets: join, up and down<\/p>\n<p style=\"padding-left: 60px;\">format: packet list [json]<\/p>\n<p style=\"padding-left: 30px;\">queue &#8211; list downlink queue packets to be sent to end-device<\/p>\n<p style=\"padding-left: 60px;\">format: packet queue [json]<\/p>\n<p style=\"padding-left: 30px;\">add &#8211; add a packet to the downlink queue<\/p>\n<p style=\"padding-left: 60px;\">format: packet queue add &lt;PACKET-JSON&gt;<\/p>\n<p style=\"padding-left: 60px;\">fields: deveui, data, ack, ack_retries, rx_wndMQ T T<\/p>\n<p style=\"padding-left: 30px;\">delete &#8211; delete all downlinks for a specific device<\/p>\n<p style=\"padding-left: 60px;\">format: packet queue delete &lt;DEV-EUI&gt;<\/p>\n<p style=\"padding-left: 30px;\">delete &#8211; delete one downlink for a specific device<\/p>\n<p style=\"padding-left: 60px;\">format: packet queue delete &lt;DEV-EUI&gt; &lt;ID&gt;<\/p>\n<p>database &#8211; database commands<\/p>\n<p style=\"padding-left: 30px;\">backup &#8211; backup database to flash memory<\/p>\n<p style=\"padding-left: 30px;\">config &#8211; show network server configuration<\/p>\n<p style=\"padding-left: 30px;\">debug &#8211; change debug level<\/p>\n<p style=\"padding-left: 30px;\">ping &#8211; ping the network server command port<\/p>\n<p style=\"padding-left: 30px;\">help &#8211; display this help<\/p>\n<p style=\"padding-left: 30px;\">quit &#8211; command network server process to stop<\/p>\n<p style=\"padding-left: 30px;\">&#8211; add &#8216;json&#8217; modifier to request output in json<\/p>\n<p>&nbsp;<\/p>\n<h3>Message Format<\/h3>\n<p><a title=\"Semtech Packet Forwarder Protocol\" href=\"https:\/\/github.com\/Lora-net\/packet_forwarder\/blob\/master\/PROTOCOL.TXT\">Semtech Packet Forwarder Protocol<\/a><br \/>\n<a title=\"LoRaWAN 1.1\" href=\"https:\/\/www.lora-alliance.org\/resource-hub\/lorawantm-specification-v11\">LoRaWAN 1.1<\/a><\/p>\n<p>Packet forwarder message format for <strong>packet_recv<\/strong> and <strong>up<\/strong> topics<br \/>\n<code><br \/>\nName | Type | Function<br \/>\n:----:|:------:|--------------------------------------------------------------<br \/>\ntime | string | UTC time of pkt RX, us precision, ISO 8601 'compact' format<br \/>\ntmst | number | Internal timestamp of \"RX finished\" event (32b unsigned)<br \/>\nfreq | number | RX central frequency in MHz (unsigned float, Hz precision)<br \/>\nchan | number | Concentrator \"IF\" channel used for RX (unsigned integer)<br \/>\nrfch | number | Concentrator \"RF chain\" used for RX (unsigned integer)<br \/>\nstat | number | CRC status: 1 = OK, -1 = fail, 0 = no CRC<br \/>\nmodu | string | Modulation identifier \"LORA\" or \"FSK\"<br \/>\ndatr | string | LoRa datarate identifier (eg. SF12BW500)<br \/>\ndatr | number | FSK datarate (unsigned, in bits per second)<br \/>\ncodr | string | LoRa ECC coding rate identifier<br \/>\nrssi | number | RSSI in dBm (signed integer, 1 dB precision)<br \/>\nlsnr | number | Lora SNR ratio in dB (signed float, 0.1 dB precision)<br \/>\nsize | number | RF packet payload size in bytes (unsigned integer)<br \/>\ndata | string | Base64 encoded RF packet payload, padded<br \/>\n<\/code><\/p>\n<p>Additional info added by network server to <b>up<\/b> packets<br \/>\n<code><br \/>\n{ ...<br \/>\n\"ack\": true,<br \/>\n\"adr\": false,<br \/>\n\"data\": \"YWxzZGtqZg==\",<br \/>\n\"mhdr\": \"4006000000000100\",<br \/>\n\"opts\": \"\",<br \/>\n\"port\": 1,<br \/>\n\"seqn\": 1,<br \/>\n\"size\": 12,<br \/>\n\"timestamp\": \"2016-10-10T15:17:21.190132Z\",<br \/>\n... }<br \/>\n<\/code><\/p>\n<ul>\n<ul>\n<ul>\n<li>ack &#8211; Set to true if uplink frame is acknowledging last received downlink<\/li>\n<li>adr &#8211; Set to true if end-device has ADR enabled bit set in uplink packet<\/li>\n<li>data &#8211; Decrypted payload (BASE64)<\/li>\n<li>mhdr &#8211; LoRaWAN packet header (HEX)<\/li>\n<li>opts &#8211; MAC commands (HEX)<\/li>\n<li>port &#8211; Application port<\/li>\n<li>fcnt &#8211; Packet sequence number 16-bit<\/li>\n<li>seqn &#8211; Packet sequence number 32-bit<\/li>\n<li>size &#8211; Size of &#8220;data&#8221; field<\/li>\n<li>time &#8211; time packet was received by network server or packet-forwarder<\/li>\n<li>cls &#8211; class bit in frame control byte<\/li>\n<li>deveui &#8211; device EUI<\/li>\n<li>appeui &#8211; application EUI<\/li>\n<li>gweui &#8211; gateway EUI<\/li>\n<\/ul>\n<\/ul>\n<\/ul>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>An MQTT broker is provided on the device to handle messaging between the network server and applications. This provides an easy interface for an application to subscribe to relevant topics. Applications can be written in any language supported by the image installed on the device, MQTT libraries are available for most languages. &nbsp; Input Topics [&hellip;]<\/p>\n","protected":false},"author":1337,"featured_media":0,"parent":11786,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"footnotes":""},"class_list":["post-11983","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.multitech.net\/developer\/wp-json\/wp\/v2\/pages\/11983","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.multitech.net\/developer\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.multitech.net\/developer\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.multitech.net\/developer\/wp-json\/wp\/v2\/users\/1337"}],"replies":[{"embeddable":true,"href":"https:\/\/www.multitech.net\/developer\/wp-json\/wp\/v2\/comments?post=11983"}],"version-history":[{"count":71,"href":"https:\/\/www.multitech.net\/developer\/wp-json\/wp\/v2\/pages\/11983\/revisions"}],"predecessor-version":[{"id":14739,"href":"https:\/\/www.multitech.net\/developer\/wp-json\/wp\/v2\/pages\/11983\/revisions\/14739"}],"up":[{"embeddable":true,"href":"https:\/\/www.multitech.net\/developer\/wp-json\/wp\/v2\/pages\/11786"}],"wp:attachment":[{"href":"https:\/\/www.multitech.net\/developer\/wp-json\/wp\/v2\/media?parent=11983"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}