{"id":8379,"date":"2024-12-15T15:12:16","date_gmt":"2024-12-15T15:12:16","guid":{"rendered":"https:\/\/lora.vsb.cz\/?page_id=8379"},"modified":"2025-07-21T11:57:49","modified_gmt":"2025-07-21T11:57:49","slug":"433-868-mhz-seeeduino-downlink-reception-and-cayenne-lpp-decoding","status":"publish","type":"page","link":"https:\/\/lora.vsb.cz\/index.php\/433-868-mhz-seeeduino-downlink-reception-and-cayenne-lpp-decoding\/","title":{"rendered":"433 &#038; 868 MHz Seeeduino &#8211; Downlink reception and Cayenne LPP decoding"},"content":{"rendered":"<table style=\"height: 66px;\" width=\"356\">\n<tbody>\n<tr>\n<td style=\"text-align: left; min-width: 100px;\" width=\"10%\"><strong>TTN version:<\/strong><\/td>\n<td><strong><span style=\"color: #008000;\">TTNv3 \/ TTS SANDBOX<\/span><\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left; min-width: 100px;\" width=\"10%\"><strong>Board:<\/strong><\/td>\n<td>Seeeduino LoRaWAN<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left; min-width: 100px;\" width=\"10%\"><strong>Frequency:<\/strong><\/td>\n<td>Europe 433 MHz (ITU region 1)<br \/>\nEurope 863-870 MHz (SF9 for RX2 \u2013 recommended)<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left; min-width: 100px;\" width=\"10%\"><strong>Activation:<\/strong><\/td>\n<td>OTAA \/ ABP<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left; min-width: 100px;\" width=\"10%\"><strong>Device Class:<\/strong><\/td>\n<td>Class A, B, C<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left; min-width: 100px;\" width=\"10%\"><strong>LoRaWAN:<\/strong><\/td>\n<td>1.0.3<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left; min-width: 100px;\" width=\"10%\"><strong>Last revision:<\/strong><\/td>\n<td>July 21, 2025<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>This article provides instructions for <strong>downlink reception<\/strong> and <strong>Cayenne LPP format decoding<\/strong> using <strong>Seeeduino LoRaWAN<\/strong>. If you haven\u2019t set up Seeduino LoRaWAN yet, check out our <strong><a href=\"https:\/\/lora.vsb.cz\/index.php\/868-mhz-seeeduino-lorawan\/\" target=\"_blank\" rel=\"noopener\">868 MHz Seeeduino LoRaWAN<\/a><\/strong> or <strong><a href=\"https:\/\/lora.vsb.cz\/index.php\/433-mhz-seeeduino-lorawan\/\" target=\"_blank\" rel=\"noopener\">433 MHz Seeeduino LoRaWAN<\/a><\/strong> tutorials.<\/p>\n<p>&nbsp;<\/p>\n<h2><span style=\"color: #189bd6;\"><strong>Prepare<\/strong><\/span><\/h2>\n<ul>\n<li>Seeeduino LoRaWAN<\/li>\n<li>PC + micro USB cable<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h2><span style=\"color: #800000;\"><strong>Activation<\/strong><\/span><\/h2>\n<p><strong>Over The Air Activation (OTAA) &#8211;<\/strong> the most secure and recommended activation method for end devices. Devices perform a join procedure with the network, during which a dynamic device address is assigned and security keys are negotiated with the device.<\/p>\n<p><strong>Activation By Personalization (ABP)<\/strong> &#8211; requires hardcoding the device address as well as the security keys in the device. ABP is <strong>less secure<\/strong>\u00a0than OTAA and also has the downside that devices can not switch network providers without manually changing keys in the device.<\/p>\n<p>See the\u00a0<a href=\"https:\/\/www.thethingsnetwork.org\/docs\/lorawan\/end-device-activation\/\" target=\"_blank\" rel=\"noopener\"><strong>documentation<\/strong><\/a> for more information on activation.<\/p>\n<p>&nbsp;<\/p>\n<h2><strong><span style=\"color: #800000;\">Device classes<\/span><\/strong><\/h2>\n<p>The LoRaWAN specification defines three device types: <strong>Class A<\/strong>, <strong>Class B<\/strong>, and <strong>Class C<\/strong>. All LoRaWAN devices must implement Class A, whereas Class B and Class C are extensions to the specification of Class A devices. All device classes support bi-directional communication (uplink and downlink).<\/p>\n<p>See the <a href=\"https:\/\/www.thethingsnetwork.org\/docs\/lorawan\/classes\/\" target=\"_blank\" rel=\"noopener\"><strong>documentation<\/strong><\/a> for more information on device classes.<\/p>\n<p>&nbsp;<\/p>\n<h2><strong><span style=\"color: #800000;\">Fair Use Policy<\/span><\/strong><\/h2>\n<h6><strong>The <a href=\"https:\/\/www.thethingsnetwork.org\/docs\/lorawan\/duty-cycle\/#fair-use-policy\" target=\"_blank\" rel=\"noopener\">TTN documentation<\/a> says about Fair Use Policy:<\/strong><\/h6>\n<p>On The Things Network\u2019s public community network a\u00a0<strong>Fair Use Policy<\/strong>\u00a0applies which limits the\u00a0uplink airtime\u00a0to\u00a030 seconds per day (24 hours) per node\u00a0and the\u00a0<strong>downlink messages<\/strong>\u00a0to\u00a0<strong>10 messages per day (24 hours) per node<\/strong>. If you use a private network, these limits do not apply, but you still have to be compliant with the governmental and LoRaWAN limits.<\/p>\n<p><span style=\"color: #ff0000;\">Note: Don&#8217;t send more than 10 downlinks per day per node.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h2><span style=\"color: #800000;\"><strong>Printing decoded downlinks to Serial Monitor and setting uplink sending time<\/strong><\/span><\/h2>\n<ol>\n<li>Copy and paste one of the programs bellow (based on your chosen <strong>frequency<\/strong> and <strong>device class<\/strong>) into your Arduino IDE.<\/li>\n<li>In the Arduino IDE\u00a0<strong>Library Manager<\/strong>\u00a0search\u00a0<strong>CayenneLPP<\/strong>\u00a0by Electronic Cats and install it.<\/li>\n<li>In <strong>TTS -&gt; Applications -&gt; YourAppName -&gt; YourEndDeviceName -&gt; Payload formatters -&gt; Uplink <\/strong>change <strong>Formatter type <\/strong>to <strong>Custom Javascript formatter<\/strong>.<\/li>\n<li>Follow the <a href=\"http:\/\/lora.vsb.cz\/index.php\/cayenne-lpp\/\" target=\"_blank\" rel=\"noopener\"><strong>Cayenne LPP tutorial<\/strong><\/a> tutorial in the <strong>Additional data types and Original LPPv1 data types<\/strong> section<strong>\u00a0<\/strong>and then continue with the following points below.<\/li>\n<\/ol>\n<p><span style=\"color: #189bd6;\"><strong>Class A<\/strong><\/span><\/p>\n<ol>\n<li>In the Arduino IDE<strong> File -&gt; Examples -&gt; SeeeduinoLoRaWan-x.x.x<\/strong><strong>\u00a0<\/strong>open one of these programs:\n<ul>\n<li><strong> 868_OTAA_Class_A_CLPP_Downlink<\/strong><\/li>\n<li><strong>433_OTAA_Class_A_CLPP_Downlink<\/strong><\/li>\n<\/ul>\n<\/li>\n<li>In program replace <strong>APP_EUI<\/strong>, <strong>DEV_EUI<\/strong> and <strong>APP_KEY<\/strong> with keys in TTS. Keys are in <strong>TTS -&gt; Applications -&gt; YourAppName -&gt; YourEndDeviceName -&gt; Activation information<\/strong>.<\/li>\n<li>Connect Seeeduino LoRaWAN using micro USB cable to your computer and choose the appropriate COM port which is used for communication with Seeeduino.<\/li>\n<li>In Arduino IDE click on <strong>Upload<\/strong> button to upload program to your Seeeduino LoRaWAN.<\/li>\n<\/ol>\n<p><span style=\"color: #189bd6;\"><strong>Class B<\/strong><\/span><\/p>\n<ol>\n<li>In the Arduino IDE<strong> File -&gt; Examples -&gt; SeeeduinoLoRaWan-x.x.x<\/strong><strong>\u00a0<\/strong>open one of these programs:\n<ul>\n<li><strong> 868_OTAA_Class_B_CLPP_Downlink<\/strong><\/li>\n<li><strong>433_OTAA_Class_B_CLPP_Downlink<\/strong><\/li>\n<\/ul>\n<\/li>\n<li>In program replace <strong>APP_EUI<\/strong>, <strong>DEV_EUI<\/strong> and <strong>APP_KEY<\/strong> with keys in TTS. Keys are in <strong>TTS -&gt; Applications -&gt; YourAppName -&gt; YourEndDeviceName -&gt; Activation information<\/strong>.<\/li>\n<li>Connect Seeeduino LoRaWAN using micro USB cable to your computer and choose the appropriate COM port which is used for communication with Seeeduino.<\/li>\n<li>In Arduino IDE click on <strong>Upload<\/strong> button to upload program to your Seeeduino LoRaWAN.<\/li>\n<\/ol>\n<p><span style=\"color: #189bd6;\"><strong>Class C<\/strong><\/span><\/p>\n<ol>\n<li>In the Arduino IDE<strong> File -&gt; Examples -&gt; SeeeduinoLoRaWan-x.x.x<\/strong><strong>\u00a0<\/strong>open one of these programs:\n<ul>\n<li><strong> 868_OTAA_Class_C_CLPP_Downlink<\/strong><\/li>\n<li><strong>433_OTAA_Class_C_CLPP_Downlink<\/strong><\/li>\n<\/ul>\n<\/li>\n<li>In program replace <strong>APP_EUI<\/strong>, <strong>DEV_EUI<\/strong> and <strong>APP_KEY<\/strong> with keys in TTS. Keys are in <strong>TTS -&gt; Applications -&gt; YourAppName -&gt; YourEndDeviceName -&gt; Activation information<\/strong>.<\/li>\n<li>Connect Seeeduino LoRaWAN using micro USB cable to your computer and choose the appropriate COM port which is used for communication with Seeeduino.<\/li>\n<li>In Arduino IDE click on <strong>Upload<\/strong> button to upload program to your Seeeduino LoRaWAN.<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<h2><span style=\"color: #800000;\"><strong>Sending downlink from TTS<\/strong><\/span><\/h2>\n<ol>\n<li>In <strong>TTS -&gt; Applications -&gt; YourAppName -&gt; YourEndDeviceName -&gt; Messaging -&gt; Schedule Downlink <\/strong>write<strong> 010001<\/strong> to<strong> Payload<\/strong> field (channel 01, type 00 (Digital Input), value 01).<\/li>\n<li>Click on button <strong>Schedule downlink<\/strong>.<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-8404 \" src=\"http:\/\/lora.vsb.cz\/wp-content\/uploads\/2024\/12\/TTS_Downlink_Schedule.png\" alt=\"\" width=\"650\" height=\"472\" srcset=\"https:\/\/lora.vsb.cz\/wp-content\/uploads\/2024\/12\/TTS_Downlink_Schedule.png 953w, https:\/\/lora.vsb.cz\/wp-content\/uploads\/2024\/12\/TTS_Downlink_Schedule-300x218.png 300w, https:\/\/lora.vsb.cz\/wp-content\/uploads\/2024\/12\/TTS_Downlink_Schedule-768x558.png 768w\" sizes=\"auto, (max-width: 650px) 100vw, 650px\" \/><\/li>\n<li>After sending the uplink and receiving the downlink by Seeeduino, you should see the following in <strong>Serial Monitor<\/strong>:<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-8408 \" src=\"http:\/\/lora.vsb.cz\/wp-content\/uploads\/2024\/12\/arduino_downlink_reception.png\" alt=\"\" width=\"650\" height=\"325\" srcset=\"https:\/\/lora.vsb.cz\/wp-content\/uploads\/2024\/12\/arduino_downlink_reception.png 706w, https:\/\/lora.vsb.cz\/wp-content\/uploads\/2024\/12\/arduino_downlink_reception-300x150.png 300w\" sizes=\"auto, (max-width: 650px) 100vw, 650px\" \/><\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<h2><span style=\"color: #800000;\"><strong>Sending downlinks via TTS using a Python script from TTS<\/strong><\/span><\/h2>\n<p>You can use a Python script to automatically encode and send the <strong>uplink sending period setting value<\/strong>.<\/p>\n<ol>\n<li>Follow the tutorial <strong><a href=\"https:\/\/lora.vsb.cz\/index.php\/sending-downlinks-via-tts-using-a-python-script\" target=\"_blank\" rel=\"noopener\">Sending downlinks via TTS using a Python script<\/a> <\/strong>and then continue with the following points below.<\/li>\n<li>Open the <strong>main.py<\/strong> file in your favorite code editor.<\/li>\n<li><strong>FPort<\/strong>, <strong>Confirmed downlink<\/strong>, <strong>Priority<\/strong> and <strong>Insert mode<\/strong> can be set in the <strong>Downlink Settings<\/strong> section.<\/li>\n<li>The uplink sending period setting value can be set on line 16 (for example, set 60 for 60 seconds).<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-8434\" src=\"http:\/\/lora.vsb.cz\/wp-content\/uploads\/2024\/12\/python_sending_downlink_ttss.png\" alt=\"\" width=\"649\" height=\"302\" srcset=\"https:\/\/lora.vsb.cz\/wp-content\/uploads\/2024\/12\/python_sending_downlink_ttss.png 855w, https:\/\/lora.vsb.cz\/wp-content\/uploads\/2024\/12\/python_sending_downlink_ttss-300x140.png 300w, https:\/\/lora.vsb.cz\/wp-content\/uploads\/2024\/12\/python_sending_downlink_ttss-768x358.png 768w\" sizes=\"auto, (max-width: 649px) 100vw, 649px\" \/><\/li>\n<li>Run <strong>main.py<\/strong> script. (In CMD\/Terminal navigate to directory with main.py file and type <code>python3 main.py<\/code>).<\/li>\n<li>In <strong>CMD\/Terminal<\/strong> you should see this:<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-8437\" src=\"http:\/\/lora.vsb.cz\/wp-content\/uploads\/2024\/12\/terminal_python.png\" alt=\"\" width=\"648\" height=\"79\" srcset=\"https:\/\/lora.vsb.cz\/wp-content\/uploads\/2024\/12\/terminal_python.png 1256w, https:\/\/lora.vsb.cz\/wp-content\/uploads\/2024\/12\/terminal_python-300x37.png 300w, https:\/\/lora.vsb.cz\/wp-content\/uploads\/2024\/12\/terminal_python-1024x126.png 1024w, https:\/\/lora.vsb.cz\/wp-content\/uploads\/2024\/12\/terminal_python-768x94.png 768w\" sizes=\"auto, (max-width: 648px) 100vw, 648px\" \/><\/li>\n<li>In\u00a0<strong>TTS -&gt; Applications -&gt; YourAppName -&gt; YourEndDeviceName -&gt; Live data<\/strong>\u00a0you should see this:<span style=\"color: #ff0000;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-8443\" src=\"http:\/\/lora.vsb.cz\/wp-content\/uploads\/2024\/12\/ttss_console.png\" alt=\"\" width=\"650\" height=\"474\" srcset=\"https:\/\/lora.vsb.cz\/wp-content\/uploads\/2024\/12\/ttss_console.png 954w, https:\/\/lora.vsb.cz\/wp-content\/uploads\/2024\/12\/ttss_console-300x219.png 300w, https:\/\/lora.vsb.cz\/wp-content\/uploads\/2024\/12\/ttss_console-768x559.png 768w\" sizes=\"auto, (max-width: 650px) 100vw, 650px\" \/><\/span><\/li>\n<li>You should see the following in Arduino IDE <strong>Serial Monitor<\/strong>:<span style=\"color: #ff0000;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-8444\" src=\"http:\/\/lora.vsb.cz\/wp-content\/uploads\/2024\/12\/ttss_console_arduino.png\" alt=\"\" width=\"351\" height=\"173\" srcset=\"https:\/\/lora.vsb.cz\/wp-content\/uploads\/2024\/12\/ttss_console_arduino.png 434w, https:\/\/lora.vsb.cz\/wp-content\/uploads\/2024\/12\/ttss_console_arduino-300x148.png 300w\" sizes=\"auto, (max-width: 351px) 100vw, 351px\" \/><\/span><\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<h2><span style=\"color: #800000;\"><strong>Sending downlinks via TTS using a Grafana panel plugin<\/strong><\/span><\/h2>\n<p>If you want to send downlinks in a different way, continue with the following tutorial:<\/p>\n<ul>\n<li><strong><a href=\"https:\/\/lora.vsb.cz\/index.php\/grafana-panel-plugin-for-sending-downlinks\/\" target=\"_blank\" rel=\"noopener\">Grafana panel plugin (for sending downlinks)<\/a><\/strong><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>TTN version: TTNv3 \/ TTS SANDBOX Board: Seeeduino LoRaWAN Frequency: Europe 433 MHz (ITU region 1) Europe 863-870 MHz (SF9 for RX2 \u2013 recommended) Activation: OTAA \/ ABP Device Class: Class A, B, C LoRaWAN: 1.0.3 Last revision: July 21, 2025 This article provides instructions for downlink reception and Cayenne LPP format decoding using Seeeduino [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-8379","page","type-page","status-publish","hentry","post"],"_links":{"self":[{"href":"https:\/\/lora.vsb.cz\/index.php\/wp-json\/wp\/v2\/pages\/8379","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lora.vsb.cz\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/lora.vsb.cz\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/lora.vsb.cz\/index.php\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/lora.vsb.cz\/index.php\/wp-json\/wp\/v2\/comments?post=8379"}],"version-history":[{"count":41,"href":"https:\/\/lora.vsb.cz\/index.php\/wp-json\/wp\/v2\/pages\/8379\/revisions"}],"predecessor-version":[{"id":8849,"href":"https:\/\/lora.vsb.cz\/index.php\/wp-json\/wp\/v2\/pages\/8379\/revisions\/8849"}],"wp:attachment":[{"href":"https:\/\/lora.vsb.cz\/index.php\/wp-json\/wp\/v2\/media?parent=8379"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}