Changes

Created page with "<b>Azure IoT Hub</b> is an open and flexible cloud platform that supports open-source SDKs and multiple protocols. __TOC__ ==Introduction== This article contains instruction..."
<b>Azure IoT Hub</b> is an open and flexible cloud platform that supports open-source SDKs and multiple protocols.

__TOC__
==Introduction==

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==

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==

<ul>
<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>
<div>[[File:Azure01.png|border|class=tlt-border|800px]]</div>
<li>In new window, select '''Add'''</li>
[[File:Azure02.png|border|class=tlt-border]]

<li>And then finish creating yours Resource group </li>

Select your subscription, we are using '''Free Trial''' for this test.
#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.
[[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]]
<br>
[[File:Azure05.png|border|class=tlt-border]]

<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]]

<li>Select '''Internet of Things''' or simply search '''IoT Hub''' and press '''Create'''.</li>


[[File:Azure07.png|border|class=tlt-border|800px]]

<li>We leave default subscription and resource group and choose:
<div>1. Region – '''(South America) Brazil South''' as before</div>
<div>2. Create a name for IoT Hub</div>
<div>3. Then go to '''Size and scale tab''' </div>
</li>
[[File:Azure08.png|border|class=tlt-border|800px]]
<li>For testing purposes, we are using '''F1: Free tier''' </li>
<div>At the bottom of the screen '''Review + create'''</div>
[[File:Azure09.png|border|class=tlt-border|800px]]
<div>And finally, Click on >> '''Create''' </div>
[[File:Azure10.png|border|class=tlt-border|400px]]
<div>'''Note:''' Wait until resource deploys and press Go to '''Resources''' </div>


<li> Inside IoT Hub list:
  <div>Scroll down to Explorers and select '''IoT devices''' </div>
[[File:Azure11.png|border|class=tlt-border|300px]]
<li>Press '''New''' </li>
[[File:Azure12.png|border|class=tlt-border|800px]]
<li>
<div>In new device creation</div>
<div>1. Enter Device ID</div>
<div>2. Leave everything else on default and press '''Save'''</div>
</li>
[[File:Azure13.png|border|class=tlt-border|400px]]

<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]]

<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>
[[File:Azure16.png|border|class=tlt-border|800px]]

</ul>

==Configuring RUT955 Azure IoT Hub==
<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==
<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: https://github.com/Azure/azure-iot-sdk-csharp/releases/tag/2019-1-4 </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-1.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-2.png|border|class=tlt-border]]

</ul>
==Checking if MQTT messages are being forwarded to Azure IoT Hub==

===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===
<ul>
<li>Install a MQTT client software to do the test, for this example we used MQTT.fx</li>
<div>1. Setup your Router IP Address</div>
<div>2. Use the '''same broker port'''</div>
<div>3. 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]]

<li>If you did everything right this message will be shown in the device explorer</li>
</ul>

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

Navigation menu