Difference between revisions of "Azure IoT Hub cloud connection"

From Teltonika Networks Wiki
Line 4: Line 4:
 
==Introduction==
 
==Introduction==
  
This article contains instructions on how to configure a RUT router in order to connect to the Azure IoT Hub.
+
This article contains instructions on how to configure a RUT router in order to connect to the Azure IoT Hub.<br>
 
+
{{Template:Networking_rutxxx_manual_fw_disclosure
 +
| fw_version = RUT9XX_R_00.06.05.3
 +
}}
 
==Prerequisites==
 
==Prerequisites==
  
Line 22: Line 24:
 
     <li>First you will want to create a Resource group for easier management of resources that you will add later. In Microsoft Azure home page.</li>
 
     <li>First you will want to create a Resource group for easier management of resources that you will add later. In Microsoft Azure home page.</li>
 
     <ul>Select '''Resource groups''' <br>If it is not in very first page, click '''More services''' and locate it there. </ul>  
 
     <ul>Select '''Resource groups''' <br>If it is not in very first page, click '''More services''' and locate it there. </ul>  
     <div>[[File:Azure01.png|thumb|1130x1130px]]</div>
+
     <div>[[File:Azure01.png|border|class=tlt-border|800px]]</div>
 
     <li>In new window, select '''Add'''</li>
 
     <li>In new window, select '''Add'''</li>
{|
+
[[File:Azure02.png|border|class=tlt-border]]
|-
 
| [[File:Azure02.png|thumb|4000x4000px]]
 
|}
 
  
 
<li>And then finish creating yours Resource group </li>
 
<li>And then finish creating yours Resource group </li>
  
 
<li>Select your subscription, we are using '''Free Trial''' for this test.  
 
<li>Select your subscription, we are using '''Free Trial''' for this test.  
# Name your group
+
#Name your group
# Finally, choose server location for meta data. We will choose '''''(South America) Brazil South''''' and will use it during test where available.</li>
+
#Finally, choose server location for meta data. We will choose '''''(South America) Brazil South''''' and will use it during test where available.</li>
 +
[[File:Azure03.png|border|class=tlt-border]]
  
{|
+
<li>At this moment we will skip adding Tags since we will be able to do that later if needed, so simply press Review + create at the bottom of screen and then click Create to finish setup.</li>
|-
+
[[File:Azure04.png|border|class=tlt-border]]
| [[File:Azure03.png|thumb|775x775px]]
+
<br>
|}
+
[[File:Azure05.png|border|class=tlt-border]]
  
<li>At this moment we will skip adding Tags since we will be able to do that later if needed, so simply press Review + create at the bottom of screen and then click Create to finish setup.</li>
 
{|
 
|-
 
| [[File:Azure04.png|thumb|523x523px]]
 
|}
 
{|
 
|-
 
| [[File:Azure05.png|thumb|800x800px]]
 
|}
 
 
<li>You will be redirected to Homepage, then click on Resource groups. You should see yours newly created group, select it, and press Add.</li>
 
<li>You will be redirected to Homepage, then click on Resource groups. You should see yours newly created group, select it, and press Add.</li>
{|
+
 
|-
+
[[File:Azure06.png|border|class=tlt-border|800px]]
| [[File:Azure06.png|thumb|800x800px]]
+
 
|}
 
 
<li>Select Internet of Things or simply search IoT Hub and press '''Create'''.</li>
 
<li>Select Internet of Things or simply search IoT Hub and press '''Create'''.</li>
{|
+
 
|-
+
 
| [[File:Azure07.png|thumb|800x800px]]
+
[[File:Azure07.png|border|class=tlt-border|800px]]
|}
+
 
 
<li>We leave default subscription and resource group and choose:  
 
<li>We leave default subscription and resource group and choose:  
 
     <div>1. Region – (South America) Brazil South as before</div>  
 
     <div>1. Region – (South America) Brazil South as before</div>  
Line 64: Line 54:
 
     <div>3. Then go to '''Size and scale tab''' </div>
 
     <div>3. Then go to '''Size and scale tab''' </div>
 
</li>
 
</li>
{|
+
[[File:Azure08.png|border|class=tlt-border|800px]]
|-
 
|
 
[[File:Azure08.png|thumb|800x800px]]
 
|}
 
 
 
 
<li>For testing purposes, we are using '''F1: Free tier''' </li>
 
<li>For testing purposes, we are using '''F1: Free tier''' </li>
 
   <div>At the bottom of the screen '''Review + create'''</div>
 
   <div>At the bottom of the screen '''Review + create'''</div>
{|
+
[[File:Azure09.png|border|class=tlt-border|800px]]
|-
 
|
 
[[File:Azure09.png|thumb|800x800px]]
 
|}
 
 
     <div>And finally, Click on >> '''Create''' </div>
 
     <div>And finally, Click on >> '''Create''' </div>
{|
+
[[File:Azure10.png|border|class=tlt-border|400px]]
|-
 
|
 
[[File:Azure10.png|thumb|600x600px]]
 
|}
 
 
   <div>'''Note:''' Wait until resource deploys and press Go to '''Resources''' </div>
 
   <div>'''Note:''' Wait until resource deploys and press Go to '''Resources''' </div>
  
Line 88: Line 65:
 
<li> Inside IoT Hub list:  
 
<li> Inside IoT Hub list:  
 
   <div>Scroll down to Explorers and select '''IoT devices''' </div>
 
   <div>Scroll down to Explorers and select '''IoT devices''' </div>
{|
+
[[File:Azure11.png|border|class=tlt-border|300px]]
|-
 
|
 
[[File:Azure11.png|thumb|600x600px]]
 
|}
 
 
     <li>Press '''New''' </li>
 
     <li>Press '''New''' </li>
{|
+
[[File:Azure12.png|border|class=tlt-border|800px]]
|-
 
|
 
[[File:Azure12.png|thumb|1000x1000px]]
 
|}
 
 
<li>
 
<li>
 
     <div>In new device creation</div>
 
     <div>In new device creation</div>
Line 104: Line 73:
 
     <div>2. Leave everything else on default and press '''Save'''</div>
 
     <div>2. Leave everything else on default and press '''Save'''</div>
 
</li>
 
</li>
{|
+
[[File:Azure13.png|border|class=tlt-border|400px]]
|-
 
|
 
[[File:Azure13.png|thumb|600x600px]]
 
|}
 
  
 
     <li>After you finish creation, you will be redirected back to IoT devices select yours newly created Device ID</li>
 
     <li>After you finish creation, you will be redirected back to IoT devices select yours newly created Device ID</li>
{|
+
[[File:Azure14.png|border|class=tlt-border|800px]]
|-
 
|
 
[[File:Azure14.png|thumb|1000x1000px]]
 
|}
 
  
 
     <li>In your device window you will find information needed to connect RUT devices to Azure IoT Hub.</li>
 
     <li>In your device window you will find information needed to connect RUT devices to Azure IoT Hub.</li>
 
       <div>For now, we will only need connection string. Copy Primary Connection string by pressing copy icon next to it. </div>
 
       <div>For now, we will only need connection string. Copy Primary Connection string by pressing copy icon next to it. </div>
{|
+
[[File:Azure16.png|border|class=tlt-border|800px]]
|-
 
|
 
[[File:Azure16.png|thumb|1000x1000px]]
 
|}
 
</li>
 
  
 
</ul>
 
</ul>
  
 
==Configuring RUT955 Azure IoT Hub==
 
==Configuring RUT955 Azure IoT Hub==
<small>Based on Firmware RUT9XX_R_00.06.05.3</small>
+
<ul>
 +
<li>First open router WebUI, go to System > '''Package Manager''' and install Azure IoT Hub package </li>
 +
[[File:Azure17.png|border|class=tlt-border|600px]]
 +
 
 +
<li>Now navigate to Services > '''IoT Platforms''' </li>
 +
<div>1. Select Enable '''Azure IoT Hub monitoring'''</div>
 +
<div>2. Paste previously copied Connection String (For this test we leave other values as default)</div>
 +
<div>3. Select what kind of information you want to send to Azure IoT Hub</div>
 +
<div>4. Press '''Save''' </div>
 +
[[File:Azure18.png|border|class=tlt-border]]
 +
[[File:Azure19-1.png|border|class=tlt-border|800px]]
 +
 
 +
</ul>
 
==Checking if Data reaches Azure IoT Hub==
 
==Checking if Data reaches Azure IoT Hub==
 +
<ul>
 +
<li>From router side, connect to it with CLI or SSH client and write in command azure_iothub and press Enter </li>
 +
<div>- You should get answer that looks something like that, depending on what information you chose to send. </div>
 +
[[File:Azure19.png|border|class=tlt-border]]
 +
<li>From Azure IoT Hub side you can check if it receives data. Go to IoT Hub that you created previously. Select Overview, there you can see:
 +
</li>
 +
<div>1. How many devices are connected to hub, and how many messages it sent during chosen period of time.</div>
 +
<div>2. Device to cloud messages, that your router is sending.</div><br>
 +
<div>It should look something like that if IoT Hub is receiving data. </div>
 +
[[File:Azure20.png|border|class=tlt-border|800px]]
 +
<li>To capture logs you will need '''Device Explorer''' for IoT Hub Devices.</li>
 +
<div>For Windows you can get here: <nowiki>https://github.com/Azure/azure-iot-sdk-csharp/releases/tag/2019-1-4</nowiki> </div><br>
 +
<div>Scroll down to Assets, download and install '''SetupDeviceExplorer.msi''' </div>
 +
[[File:Azure21.png|border|class=tlt-border]]
 +
<li>Now you will need connection string of yours Azure IoT Hub, Not device. Navigate to IoT hub in your browser, then:</li>
 +
<div>1. Click '''Shared access policies'''</div>
 +
<div>2. Next choose '''iothubowner'''</div>
 +
<div>3. And copy '''Connection string – primary key'''</div>
 +
[[File:Azure22-1.png|border|class=tlt-border|800px]]
 +
 +
<li>After that go back to Device Explorer: </li>
 +
<div>1. In Configuration tab paste in Connection string that you just copied</div>
 +
<div>2. Copy HostName part from connection string and paste it in '''Protocol Gateway HostName'''</div>
 +
<div>3. Click '''Update''' </div>
 +
[[File:Azure23.png|border|class=tlt-border|600px]]
 +
 +
<li>Open Management tab </li>
 +
<div>1. Click Update </div>
 +
<div>2. You should see your device in the list below and '''Connection state''' </div>
 +
[[File:Azure24.png|border|class=tlt-border|800px]]
 +
 +
<li>Go to Data tab</li>
 +
<div>1. Click monitor, and wait for '''Event Hub Data''' to update (Depends on yours chosen interval)</div>
 +
<div>2. Messages like this should start appearing. </div>
 +
[[File:Azure25.png|border|class=tlt-border|600px]]
 +
 +
==Setting router to Forward MQTT messages/commands to Azure IoT Hub==
 +
<div>First you will need MQTT broker to subscribe to, for testing purposes we will set MQTT Broker in same router, and will use PC from LAN to sent MQTT messages.</div>
 +
 +
<li>Go to Services > MQTT </li>
 +
<div>1. Click '''Enable'''</div>
 +
<div>2. Use same port in MQTT Broker and Azure IoT Hub settings.</div>
 +
<div>3. Press '''Save'''</div>
 +
[[File:Azure26.png|border|class=tlt-border]]
 +
 +
<li>Go to Service > '''IoT Platforms'''</li>
 +
<div>1. Enable monitoring </div>
 +
<div>2. Use same Connection string as before (GSM values configuration) </div>
 +
<div>3. Messages Type choose '''MQTT messages''' </div>
 +
<div>4. Enter MQTT Host address, we are using 127.0.0.1 since our broker is set up on same router.</div>
 +
<div>5. Port '''Same as MQTT Broker'''</div>
 +
<div>6. And Topic under which router will subscribe to MQTT Broker</div>
 +
<div>7. Press '''Save''', we will not need username or password.</div>
 +
[[File:Azure27.png|border|class=tlt-border]]
 +
 +
</ul>
 +
==Checking if MQTT messages are being forwarded to Azure IoT Hub==
 +
 
===Linux===
 
===Linux===
 +
<ul>
 +
<div>Connect to router with SSH, in logread you should see Router establishing connection to Azure IoT Hub: </div>
 +
[[File:Azure27-1.png|border|class=tlt-border]]
 +
<li>Open terminal and publish to MQTT Broker message with previously chosen topic.<br>
 +
For our example we are using example: '''mosquito_pub -h 192.168.1.1 -p 8883 -m ‘testing Azure MQTT messages’ -t test''' </li>
 +
<br><div>If everything was configured correctly in Device Explorer Data tab you should receive message like: </div>
 +
[[File:Azure28.png|border|class=tlt-border|1000px]]
 +
<div>This means our router Forwards MQTT messages to Azure IoT Hub. </div>
 +
</ul>
 +
 
===Windows===
 
===Windows===
 +
<ul>
 +
<li>Install a MQTT client software to do the test, for this example we used MQTT.fx</li>
 +
<div>Setup your Router IP Address</div>
 +
<div>Use the '''same broker port'''</div>
 +
<div>Paste your '''Connection string – primary key''' and click '''Apply'''</div>
 +
[[File:Azure29-1.png|border|class=tlt-border|800px]]
  
 +
<div>1. Connect to the server broker</div>
 +
<div>2. Use the created topic. For this example '''test'''</div>
 +
<div>3. Send a message</div>
 +
[[File:Azure30.png|border|class=tlt-border|1000px]]
  
==****Configuring the device****==
+
<li>If you did everthing right this message will be shown in the device explorer</li>
 +
[[File:Azure31.png|border|class=tlt-border]]
 +
</ul>
  
<ul>
+
==Checking if Modbus Data to Server is sent to Azure IoT Hub==
    <li>Login to the router's WebUI and go to the <b>System → Administration → Azure IoT Hub</b> page.</li>
 
    <hr />
 
    <li>Configure the main connection settings:<br>[[File:Azure_iot_hub_1.png]]
 
        <ul>
 
            <li>The "Connection string" should be provided by Azure. The format of the string should something like this: <pre>HostName=aics-prod-hub.azure-devices.net;DeviceId=6eLklROrG5;SharedAccessKey=xcRgQpJtY13laOumje3DrxJw1R3LlqnKmVxPFA0Z7Rw=</pre></li>
 
            <li>Take note that a lower sending interval value will mean more data usage.</li>
 
        </ul>
 
    </li>
 
    <hr />
 
    <li>Below the main connection settings there is a list of parameters that will be sent to the Azure IoT Hub. Place check marks next to parameters that are relevant you (once again take into account that more parameters will mean more data usage).<br>[[File:Azure_iot_hub_2.png]]<br><b>Note</b>: the parameters in the figure above are selected for demonstrative purposes. Select the parameters that are relevant to your solution.</li>
 
    <hr />
 
    <li>Don't forget to save the configuration:<br>[[File:Azure_iot_hub_3.png]]</li>
 
</ul>
 

Revision as of 17:10, 6 February 2020

Azure IoT Hub is an open and flexible cloud platform that supports open-source SDKs and multiple protocols.

Introduction

This article contains instructions on how to configure a RUT router in order to connect to the Azure IoT Hub.
The information in this page is updated in accordance with the RUT9XX_R_00.06.05.3 firmware version.

Prerequisites

You will need:

  • A router from the RUT2xx, RUT9xx series or RUTX09
  • An Azure IoT Hub account

Azure account creation

Visit https://azure.microsoft.com/en-us/ and create an account that will suit your needs, for testing purposes we will be using free Azure account.

Managing Azure services

  • First you will want to create a Resource group for easier management of resources that you will add later. In Microsoft Azure home page.
    • Select Resource groups
      If it is not in very first page, click More services and locate it there.
    Azure01.png
  • In new window, select Add
  • Azure02.png
  • And then finish creating yours Resource group
  • Select your subscription, we are using Free Trial for this test.
    1. Name your group
    2. Finally, choose server location for meta data. We will choose (South America) Brazil South and will use it during test where available.
    Azure03.png
  • At this moment we will skip adding Tags since we will be able to do that later if needed, so simply press Review + create at the bottom of screen and then click Create to finish setup.
  • Azure04.png
    Azure05.png
  • You will be redirected to Homepage, then click on Resource groups. You should see yours newly created group, select it, and press Add.
  • Azure06.png
  • Select Internet of Things or simply search IoT Hub and press Create.
  • Azure07.png
  • We leave default subscription and resource group and choose:
    1. Region – (South America) Brazil South as before
    2. Create a name for IoT Hub
    3. Then go to Size and scale tab
  • Azure08.png
  • For testing purposes, we are using F1: Free tier
  • At the bottom of the screen Review + create

    Azure09.png

    And finally, Click on >> Create

    Azure10.png

    Note: Wait until resource deploys and press Go to Resources


  • Inside IoT Hub list:  
    Scroll down to Explorers and select IoT devices

    Azure11.png

  • Press New
  • Azure12.png
  • In new device creation
    1. Enter Device ID
    2. Leave everything else on default and press Save
  • Azure13.png
  • After you finish creation, you will be redirected back to IoT devices select yours newly created Device ID
  • Azure14.png
  • In your device window you will find information needed to connect RUT devices to Azure IoT Hub.
  • For now, we will only need connection string. Copy Primary Connection string by pressing copy icon next to it.

    Azure16.png

Configuring RUT955 Azure IoT Hub

  • First open router WebUI, go to System > Package Manager and install Azure IoT Hub package
  • Azure17.png
  • Now navigate to Services > IoT Platforms
  • 1. Select Enable Azure IoT Hub monitoring
    2. Paste previously copied Connection String (For this test we leave other values as default)
    3. Select what kind of information you want to send to Azure IoT Hub
    4. Press Save

    Azure18.png Azure19-1.png

Checking if Data reaches Azure IoT Hub

  • From router side, connect to it with CLI or SSH client and write in command azure_iothub and press Enter
  • - You should get answer that looks something like that, depending on what information you chose to send.

    Azure19.png

  • From Azure IoT Hub side you can check if it receives data. Go to IoT Hub that you created previously. Select Overview, there you can see:
  • 1. How many devices are connected to hub, and how many messages it sent during chosen period of time.
    2. Device to cloud messages, that your router is sending.

    It should look something like that if IoT Hub is receiving data.

    Azure20.png

  • To capture logs you will need Device Explorer for IoT Hub Devices.
  • For Windows you can get here: https://github.com/Azure/azure-iot-sdk-csharp/releases/tag/2019-1-4

    Scroll down to Assets, download and install SetupDeviceExplorer.msi

    Azure21.png

  • Now you will need connection string of yours Azure IoT Hub, Not device. Navigate to IoT hub in your browser, then:
  • 1. Click Shared access policies
    2. Next choose iothubowner
    3. And copy Connection string – primary key

    Azure22-1.png

  • After that go back to Device Explorer:
  • 1. In Configuration tab paste in Connection string that you just copied
    2. Copy HostName part from connection string and paste it in Protocol Gateway HostName
    3. Click Update

    Azure23.png

  • Open Management tab
  • 1. Click Update
    2. You should see your device in the list below and Connection state

    Azure24.png

  • Go to Data tab
  • 1. Click monitor, and wait for Event Hub Data to update (Depends on yours chosen interval)
    2. Messages like this should start appearing.

    Azure25.png

    Setting router to Forward MQTT messages/commands to Azure IoT Hub

    First you will need MQTT broker to subscribe to, for testing purposes we will set MQTT Broker in same router, and will use PC from LAN to sent MQTT messages.
  • Go to Services > MQTT
  • 1. Click Enable
    2. Use same port in MQTT Broker and Azure IoT Hub settings.
    3. Press Save

    Azure26.png

  • Go to Service > IoT Platforms
  • 1. Enable monitoring
    2. Use same Connection string as before (GSM values configuration)
    3. Messages Type choose MQTT messages
    4. Enter MQTT Host address, we are using 127.0.0.1 since our broker is set up on same router.
    5. Port Same as MQTT Broker
    6. And Topic under which router will subscribe to MQTT Broker
    7. Press Save, we will not need username or password.

    Azure27.png

Checking if MQTT messages are being forwarded to Azure IoT Hub

Linux

    Connect to router with SSH, in logread you should see Router establishing connection to Azure IoT Hub:

    Azure27-1.png

  • Open terminal and publish to MQTT Broker message with previously chosen topic.
    For our example we are using example: mosquito_pub -h 192.168.1.1 -p 8883 -m ‘testing Azure MQTT messages’ -t test

  • If everything was configured correctly in Device Explorer Data tab you should receive message like:

    Azure28.png

    This means our router Forwards MQTT messages to Azure IoT Hub.

Windows

  • Install a MQTT client software to do the test, for this example we used MQTT.fx
  • Setup your Router IP Address
    Use the same broker port
    Paste your Connection string – primary key and click Apply

    Azure29-1.png

    1. Connect to the server broker
    2. Use the created topic. For this example test
    3. Send a message

    Azure30.png

  • If you did everthing right this message will be shown in the device explorer
  • Azure31.png

Checking if Modbus Data to Server is sent to Azure IoT Hub