Difference between revisions of "Getting Started with AWS IoT Core"

From Wiki Knowledge Base | Teltonika GPS
m (Kaminskas.Andrius moved page MQTT AWS start guide to Teltonika GPS Wiki:Getting Started with AWS IoT Core: Requirement of page name change)
(Replaced content with "{{Template:AWSinstructions}}")
Tag: Replaced
 
(7 intermediate revisions by one other user not shown)
Line 1: Line 1:
Note: This page is in development and will be updated.
+
{{Template:AWSinstructions}}
 
 
For quick start guide how to use Teltonika Telematics devices with AWS IoT Core can be downloaded [https://wiki.teltonika-gps.com/images/c/c5/MQTT_AWS_IoT_Custom_Configuration_Guide_V1.pdf here]
 
 
 
Getting Started Guide for AWS IoT can be downloaded [https://wiki.teltonika-gps.com/images/c/cf/AWS_GSG_v1.4.pdf here]
 
 
 
== '''Document Information''' ==
 
=== ''Naming Conventions'' ===
 
* Version - v1.3
 
* Date - 2022.11.29
 
=== ''Glossary'' ===
 
* FMM130 (tracker) – GNSS tracking device manufactured by Teltonika Telematics.
 
* Wiki – Teltonika IoT knowledge base - https://wiki.teltonika-iot-group.com/.
 
* FOTA – Firmware Over The Air.
 
* Configurator – Tool to configure Teltonika Telematics devices.
 
* Crowd support forum – knowledge base dedicated for Troubleshooting.
 
=== ''Revision History (Version, Date, Description of change)'' ===
 
Changes in firmware versions and update information can be found in device wiki page: [[FMM130_firmware_errata|FMM130 firmware errata]]
 
 
 
'''Currently for MQTT solution evaluation firmware is required to be used - 03.27.10.Rev.521.''' For firmware supporting MQTT please contact your sales manager or contact directly via Teltonika Helpdesk.
 
 
 
== '''Overview''' ==
 
FMM130 is small and professional real-time tracking terminal with GNSS and LTE CAT-M1/NB-IoT/GSM connectivity and backup battery. Device equipped with GNSS/Bluetooth and LTE CAT-M1/NB-IoT modules with fallback to 2G network, internal GNSS and LTE antennas, configurable digital, analogue inputs and digital outputs, negative input, impulse inputs. It is perfectly suitable for applications where location acquirement of remote objects is needed: fleet management, car rental companies, taxi companies, public transport, logistics companies, personal cars and so on.
 
 
 
== '''Hardware Description''' ==
 
=== ''DataSheet'' ===
 
FMM130 device data sheet can be downloaded here: [https://teltonika-gps.com/downloads/en/fmm130/Datasheet-FMM130-2.1-web-Telematics.pdf DataSheet]
 
=== ''Standard Kit Contents'' ===
 
STANDARD PACKAGE CONTAINS
 
* 10 pcs. of FMM130 trackers
 
* 10 pcs. of Input/output power supply cables (0.9 m)
 
* Packaging box with Teltonika branding
 
 
 
More ordering information at: [https://teltonika-gps.com/product/fmm130/#ordering Ordering]
 
=== ''User Provided Items'' ===
 
* FMM130 tracker
 
* Input/output power supply cable (0.9 m)
 
* Packaging box with Teltonika branding
 
 
 
Teltonika suggest standard order codes for the device purchase, by contacting us, we can create special order code which would fulfill user needs.
 
 
 
=== ''Additional Hardware References'' ===
 
If device was bought without Micro USB included in 1SPQ (Single packet quantity), any other Micro-USB cable is required to configure the device by wire.
 
 
 
== '''Set up your Development Environment''' ==
 
=== ''Tools Installation (IDEs, Toolchains, SDKs)'' ===
 
FMM130 comes with our created firmware, therefore no additional development or scripting is required for this unit to support AWS IoT. Only by using Teltonika Configurator [[FM_Configurator_versions|FM Configurator versions]], connection point of AWS IoT server is required.
 
=== ''Other software required to develop and debug applications for the device'' ===
 
For debugging situations, device internal logs can be downloaded OTA by using our [https://fm.teltonika.lt/ FotaWEB] platform or by using Teltonika Configurator.
 
== '''Set up your hardware''' ==
 
All details about FMM130 can be located in our dedicated wiki page [[FMM130|FMM130 Wiki]]
 
* Basic device startup instructions provided in [[FMM130_First_Start|FMM130 First Start]].
 
* Device characteristics, power supply information: [[FMM130_General_description|FMM130 General description]]
 
* FMM130 firmware change can be performed via [[FOTA_WEB|FotaWEB]] (direct buyer gets access to this platform) or via device [[Teltonika_Configurator_versions|Configurator]]
 
* Device LED information: [[FMM130_LED_status|FMM130 LED Status]]
 
* USB driver download, datasheet and quick start guide downloads: [https://teltonika-gps.com/product/fmm130/#downloads FMM130 Downloads]
 
 
 
== '''Setup your AWS account and Permissions''' ==
 
Refer to the online AWS documentation at Set up your AWS Account.  Follow the steps outlined in the sections below to create your account and a user and get started:<br>
 
 
 
* [https://docs.aws.amazon.com/iot/latest/developerguide/setting-up.html#aws-registration Sign up for an AWS account and]
 
* [https://docs.aws.amazon.com/iot/latest/developerguide/setting-up.html#create-iam-user Create a user and grant permissions]
 
* [https://docs.aws.amazon.com/iot/latest/developerguide/setting-up.html#iot-console-signin Open the AWS IoT console]
 
<br>
 
Pay special attention to the Notes.
 
<br>
 
== '''Create Resources in AWS IoT''' ==
 
Refer to the online AWS documentation at Create AWS IoT Resources.  Follow the steps outlined in these sections to provision resources for your device:
 
<br>
 
* [https://docs.aws.amazon.com/iot/latest/developerguide/create-iot-resources.html#create-iot-policy Create an AWS IoT Policy]
 
* [https://docs.aws.amazon.com/iot/latest/developerguide/create-iot-resources.html#create-aws-thing Create a thing object]
 
<br>
 
Pay special attention to the Notes.
 
<br>
 
== '''Provision the Device with credentials''' ==
 
Whole device, AWS IoT and testing information can be downloaded in PDF format [https://wiki.teltonika-gps.com/images/c/c5/MQTT_AWS_IoT_Custom_Configuration_Guide_V1.pdf here.]
 
=== ''AWS IoT Core Configuration'' ===
 
==== ''Setting up AWS IoT Core'' ====
 
When logged in the AWS console, click on Services on the top left hand side screen, to access IoT core.
 
<br>
 
[[File:AWS_MQTT_1.png|frameless|alt=|center|934x425px]]
 
<div style="text-align: center;">Figure 1. Accessing AWS IoT core from AWS console</div>
 
 
 
After accessing AWS IoT core, select Manage on the sidebar on the left side, then select Things (Manage- >Things). And click on Create things.
 
<br>
 
[[File:AWS_MQTT_2.png|frameless|alt=|center|934x425px]]
 
<div style="text-align: center;">Figure 2. Accessing Things</div>
 
Afterwards for select Create single thing and click Next.
 
<br>
 
[[File:AWS_MQTT_3.png|frameless|alt=|center|934x425px]]
 
<div style="text-align: center;">Figure 3. Creating single thing</div>
 
After creating single thing, enter Thing’s name and in the Device Shadow tab select Unnamed shadow (classic). Then click Next.
 
[[File:AWS_MQTT_4.png|frameless|alt=|center|934x425px]]
 
<div style="text-align: center;">Figure 4. Specifying thing properties</div>
 
Then when selecting Device certificate, select Auto-generate a new certificate and click Next
 
[[File:AWS_MQTT_5.png|frameless|alt=|center|934x425px]]
 
<div style="text-align: center;">Figure 5. Selecting Certificate</div>
 
After this select Create policy to create it and attach it to Certificate. In the Create Policy window, enter Policy name. In the Policy document (1) tab for Policy Action (2) select * and for Policy resource enter * .
 
[[File:AWS_MQTT_6.png|frameless|alt=|center|934x425px]]
 
<div style="text-align: center;">Figure 6. Creating policy for Certificate</div>
 
After creating policy, return to Certificate tab (Seperate tab after pressing Create policy should‘ve popped out). Then select the created policy to attach it to the certificate and thing. After that click Create thing
 
[[File:AWS_MQTT_7.png|frameless|alt=|center|934x425px]]
 
<div style="text-align: center;">Figure 7. Attaching created certificate and creating thing</div>
 
Then window with Certificate files and key files download options should pop out. It‘s recommended to download all files, because later some of them will not be available for download. The files that are required for usage with FMX devices are: Device certificate (1), private key(2), and Amazon Root CA 1 file(3), but it‘s recommended to download them all and store them in secured place.
 
[[File:AWS_MQTT_8.png|frameless|alt=|center|934x425px]]
 
<div style="text-align: center;">Figure 8. Certificate files download window</div>
 
 
 
==== ''Finding device data endpoint (server domain)'' ====
 
To receive server domain (in AWS endpoint) click on the side bar on the left Settings.
 
Or click on the side bar on left side Things, select the created thing, after it click Interact->View Settings. Whole path - (Things->*YourThingName*->Interact->ViewSettings). Page containing endpoint will open. Copy the whole endpoint address.
 
Port for accessing this endpoint is 8883.
 
[[File:AWS_MQTT_9.png|frameless|alt=|center|934x425px]]
 
<div style="text-align: center;">Figure 9. Device data endpoint</div>
 
 
 
=== ''Configuring the device'' ===
 
 
 
==== ''Security and certificates'' ====
 
Find Certificate file ending with extension pem.crt Private key file and AmazoonRootCA1 file (no need to change filenames). These file should have been downloaded when creating Thing in AWS IoT Core.
 
[[File:AWS_MQTT_10.png|frameless|alt=|center|934x425px]]
 
<div style="text-align: center;">Figure 10. Certificate files</div>
 
 
 
Upload the mentioned files in the Security tab in the Teltonika Configurator.
 
[[File:AWS_MQTT_11.png|frameless|alt=|center|934x425px]]
 
<div style="text-align: center;">Figure 11. Uploading certificates</div>
 
After uploading certificates, go to System tab and in Data protocol section select - Codec JSON.
 
 
 
[[File:AWS_MQTT_12.png|frameless|alt=|center|934x425px]]
 
<div style="text-align: center;">Figure 12. Selecting Data Protocol</div>
 
 
 
==== ''Device GPRS configuration for AWS IoT Custom MQTT settings'' ====
 
In the GPRS tab, under Server Settings select:
 
# Domain – Endpoint from the AWS, Port: 8883
 
# Protocol – MQTT
 
# TLS Encryption – TLS/DTLS
 
<br>
 
In the MQTT Settings section select:
 
# MQTT Client Type – AWS IoT Custom
 
# Device ID – enter device IMEI (optional)
 
# Leave Data and Command Topics unchanged.
 
<br>
 
Save the configuration to the device.
 
 
 
[[File:AWS_MQTT_13.png|frameless|alt=|center|934x425px]]
 
<div style="text-align: center;">Figure 13. GPRS Settings for MQTT AWS IoT Custom</div>
 
 
 
== '''Run the demo'''==
 
The data received from the device can be found in the MQTT test client, which can be found in the bottom of sidebar on the left.
 
To see incoming data, subscribe to topic - *DeviceImei*/data . Or subscribe to # to see all incoming outgoing data in the Topics.
 
[[File:AWS_MQTT_14.png|frameless|alt=|center|934x425px]]
 
<div style="text-align: center;">Figure 14. Subscribing to data topic</div>
 
Incoming data is received in JSON format, for e.g.:
 
 
 
[[File:AWS_MQTT_15.png|frameless|alt=|center|934x425px]]
 
<div style="text-align: center;">Figure 15. Received data format</div>
 
To send SMS/GPRS commands to the device, in the same MQTT test client window select Publish to a topic. Enter topic name - *DeviceIMEI*/commands . In the Message payload enter wanted GPRS/SMS command in following format and press Publish:
 
 
 
[[File:AWS_MQTT_16.png|frameless|alt=|center|934x425px]]
 
<div style="text-align: center;">Figure 16. Sending Command in AWS IoT Core</div>
 
The response to the command will be shown in the Data topic:
 
 
 
[[File:AWS_MQTT_17.png|frameless|alt=|center|934x425px]]
 
<div style="text-align: center;">Figure 17. Response to a command in the data topic, the command was published in command topic</div>
 
 
 
== '''Debugging''' ==
 
In the situation when the issue with information upload appears, device internal logs can be taken directly from device configuration software ([[FMM130_Status_info#Maintenance|instructions]]), via Terminal.exe by connecting selecting device USB connection port, or by receiving internal logs via FotaWEB in [[FOTA_WEB_Devices#Create_Task|task section]].
 
 
 
== '''Troubleshooting''' ==
 
 
 
The information can be submitted to Teltonika HelpDesk and Teltonika engineers will assist with troubleshooting. For a more detailed information regarding what information should be collected for debugging, please visit the dedicated page on [[What_debug_information_should_be_collected?|Teltonika Wiki]].
 
<br>
 
Alternatively, Teltonika has a [https://community.teltonika-gps.com/ Crowd Support Forum] dedicated for troubleshooting, where engineers are actively solving problems.
 

Latest revision as of 13:12, 15 September 2023


Document Information

Glossary

  • Wiki – Teltonika IoT knowledge base - https://wiki.teltonika-iot-group.com/.
  • FOTA – Firmware Over The Air.
  • Configurator – Tool to configure Teltonika Telematics devices.
  • Crowd support forum – knowledge base dedicated for Troubleshooting.


For firmware supporting MQTT please contact your sales manager or contact directly via Teltonika Helpdesk.

Other software required to develop and debug applications for the device

For debugging situations, device internal logs can be downloaded OTA by using our FotaWEB platform or by using Teltonika Configurator.

Setup your AWS account and Permissions

Refer to the online AWS documentation at Set up your AWS Account. Follow the steps outlined in the sections below to create your account and a user and get started:


Pay special attention to the Notes.

Create Resources in AWS IoT

Refer to the online AWS documentation at Create AWS IoT Resources. Follow the steps outlined in these sections to provision resources for your device:


Pay special attention to the Notes.

Provide Device with credentials

Whole device, AWS IoT and testing information can be downloaded in PDF format here.

NOTE: MQTT will not work without uploaded TLS certificates.

AWS IoT Core Configuration

Setting up AWS IoT Core


When logged in the AWS console, click on Services on the top left hand side screen, to access IoT core.


Accessing IoT Core.jpg

Figure 1. Accessing AWS IoT core from AWS console

NOTE: If you can't see "Services" in the top left, click on "My account" in the top right and "AWS Management Console"


Select Manage, Security, Policies (Manage > Security > Policies) and press Create policy or Create buttons. Accessing policy creation.png

Figure 2. Accessing policy creation


In the Create Policy window, enter Policy name. In the Policy document tab for Policy Action (1) select “*” and for Policy resource (2) enter “*” and press create. Creating policy.png

Figure 3. Creating a policy


Now, that you have created a policy, select Manage on the sidebar on the left side, then select All devices, Things (Manage>All devices>Things). And click on Create things.
Go to create things.bmp

Figure 4. Accessing Things


Afterwards select Create single thing and click Next.
Creating thing.jpg

Figure 5. Creating single thing


After creating a single thing, enter Thing’s name and in the Device Shadow tab select Unnamed shadow (classic). Then click Next. Thing's properties.jpg

Figure 6. Thing's properties


Then when selecting Device certificate, select Auto-generate a new certificate and click Next. Certificate configuration.jpg

Figure 7. Certificate configuration


Now, select the policy you have created before to attach it to the certificate and thing. After that click Create thing. Attaching policy to certificate.jpg

Figure 8. Attaching policy to certificate


Then window with Certificate files and key files download options should pop out. It‘s recommended to download all files, because later some of them will not be available for download. The files that are required for usage with FMX devices are: Device certificate (1), private key(2), and Amazon Root CA 1 file(3), but it‘s recommended to download them all and store them in secured place.
Certificate and key download.jpg

Figure 9. Certificate and key download


Finding device data endpoint (server domain)

To receive server domain (in AWS endpoint) click on the side bar on the left Settings (AWS IoT->Settings). Or click on the side bar on left side Things, select the created thing, after it click Interact->View Settings. Whole path - (Things->*YourThingName*->Interact->ViewSettings). Page containing endpoint will open. Copy the whole endpoint address. Port for accessing this endpoint is 8883.
Device data endpoint.jpg

Figure 10. Device data endpoint

Configuring the device

Security and certificates


Using certificate, private key and root certificate. (Via Cable)

Find Certificate file ending with extension pem.crt (ending may be just .pem) Private key file and AmazoonRootCA1 file (no need to change filenames). These files should have been downloaded when creating Thing in AWS IoT Core.
Certificate and key download.jpg

Figure 17. Certificate, private key and root certificate

Upload the mentioned files in the Security tab in the Teltonika Configurator.
Uploading certificates to configurator.png

Figure 18. Uploading certificates and keys


After uploading certificates, go to System tab and in Data protocol section select - Codec JSON.
Choosing data protocol.jpg

Figure 19. Choosing data protocol

Device GPRS configuration for AWS IoT Custom MQTT settings

In the GPRS tab, under Server Settings select:

  1. Domain – Endpoint from the AWS, Port: 8883
  2. Protocol – MQTT
  3. TLS Encryption – TLS/DTLS



In the MQTT Settings section select:

  1. MQTT Client Type – AWS IoT Custom
  2. Device ID – enter device IMEI (optional)
  3. Leave Data and Command Topics unchanged.



Save the configuration to the device.

AWS GPRS settings.png

Figure 27. GPRS Settings for MQTT AWS IoT

Checking received data and sending commands in the AWS IoT core

The data received from the device can be found in the MQTT test client, which can be found above “Manage” in the sidebar on the left. MQTT test client location.png

Figure 28. MQTT test client location


To see incoming data, subscribe to topic - *DeviceImei*/data . Or subscribe to # to see all incoming outgoing data in the Topics. MQTT test client.jpg

Figure 29. MQTT test client


Incoming data is received in JSON format, for e.g.:
Received data format.png

Figure 30. Received data format


To send SMS/GPRS commands to the device subscribe to a topic name - *DeviceIMEI*/commands, and, in the same MQTT test client window select Publish to a topic. Enter topic name - *DeviceIMEI*/commands. In the Message payload enter wanted GPRS/SMS command in following format and press Publish:

{“CMD”: “<Command>”}
Sending a command.jpg

Figure 31. Sending Command in AWS IoT Core


The response to the command will be shown in the Data topic: Response to command.jpg

Figure 32. Response to a command in the data topic, the command was published in command topic

Debugging

In the situation when the issue with information upload appears, device internal logs can be taken directly from device configuration software (instructions), via Terminal.exe by connecting selecting device USB connection port, or by receiving internal logs via FotaWEB in task section.

Troubleshooting

The information can be submitted to Teltonika HelpDesk and Teltonika engineers will assist with troubleshooting. For a more detailed information regarding what information should be collected for debugging, please visit the dedicated page on Teltonika Wiki.
Alternatively, Teltonika has a Crowd Support Forum dedicated for troubleshooting, where engineers are actively solving problems.