{"id":411,"date":"2017-02-15T16:29:09","date_gmt":"2017-02-15T16:29:09","guid":{"rendered":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/?p=411"},"modified":"2017-02-16T12:52:56","modified_gmt":"2017-02-16T12:52:56","slug":"desgranando-iot-ii-azure-iot-hub","status":"publish","type":"post","link":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/desgranando-iot-ii-azure-iot-hub\/","title":{"rendered":"Desgranando IoT (II): Azure IoT Hub"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-425 alignleft\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/iot-1.png\" alt=\"iot-1\" width=\"250\" height=\"200\" \/>En \u00e9ste segundo art\u00edculo de la serie en la que vamos a profundizar en toda la tem\u00e1tica de IoT, vamos a detallar uno a uno los diferentes elementos y componentes de los que est\u00e1 compuesta una soluci\u00f3n \u201ctipo\u201d de<strong> IoT en Azure<\/strong>, como son las <strong>soluciones preconfiguradas<\/strong> de las que habl\u00e1bamos en el art\u00edculo anterior.<\/p>\n<p>En \u00e9ste caso, vamos a centrarnos en el <strong>IoT Hub.<\/strong><\/p>\n<p><!--more--><\/p>\n<p>El <strong>Azure IoT Hub<\/strong> ser\u00e1, como su nombre indica, <strong>el centro de todas las soluciones que creemos o ideemos cuya cloud sea Azure<\/strong>. Es, literalmente, el centro de actividad de IoT de Azure, y para compararlo con otro elemento de Azure el cual ya lleva m\u00e1s tiempo disponible y es m\u00e1s conocido, vendr\u00eda a ser como un Event Hub, al cual se han hecho unas modificaciones y a\u00f1adidos para que sea m\u00e1s espec\u00edfico para nuestros desarrollos con IoT.<\/p>\n<p>&nbsp;<\/p>\n<p>Hablando a grandes rasgos, el IoT Hub nos permite<strong> comunicarnos de forma bidireccional con todos nuestros dispositivos IoT<\/strong> que tengamos conectados y registrados, pudiendo a la vez conectar otros elementos de Azure como un trabajo de an\u00e1lisis de flujos de datos (un Stream Analytics) para que lean de \u00e9l los mensajes y as\u00ed poder realizar un procesado inicial o un guardado en una base de datos.<\/p>\n<p>En la p\u00e1gina oficial de <a href=\"https:\/\/azure.microsoft.com\/es-es\/services\/iot-hub\/\">Azure IoT Hub<\/a> podremos encontrar mucha m\u00e1s informaci\u00f3n adem\u00e1s de ejemplos.<\/p>\n<h1>Comparaci\u00f3n IoT Hub vs Event Hub<\/h1>\n<p>Uno de los principales usos de IoT Hub es recopilar telemetr\u00eda de dispositivos. Por este motivo, IoT Hub a menudo se compara con\u00a0<a href=\"https:\/\/docs.microsoft.com\/es-es\/azure\/event-hubs\/event-hubs-what-is-event-hubs\">Azure Events Hubs<\/a>. Al igual que el Centro de IoT, Centros de eventos de Azure es un servicio de procesamiento de eventos que ofrece entrada de telemetr\u00eda y eventos en la nube a escala masiva, con una latencia baja y una confiabilidad alta.<\/p>\n<p>Sin embargo, los servicios tienen muchas diferencias las cuales se pueden ver con detalle en \u00e9ste <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/iot-hub\/iot-hub-compare-event-hubs\">enlace<\/a>.<\/p>\n<p>No obstante, tampoco es raro usar IoT Hub y Event Hubs en la misma soluci\u00f3n, ya que el IoT Hub controla la comunicaci\u00f3n del dispositivo a la nube, y los Events Hubs controlan la entrada de eventos de \u00faltima fase en motores de procesamiento en tiempo real.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-424\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/IoT-2.png\" alt=\"IoT_ENCAMINA_2\" width=\"594\" height=\"413\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/IoT-2.png 780w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/IoT-2-300x208.png 300w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/IoT-2-768x534.png 768w\" sizes=\"auto, (max-width: 594px) 100vw, 594px\" \/><\/p>\n<h1>Ejemplo pr\u00e1ctico<\/h1>\n<p>Una vez hemos visto qu\u00e9 es y para qu\u00e9 sirve el IoT Hub, vamos a ver de forma pr\u00e1ctica c\u00f3mo crearlo y configurarlo, qu\u00e9 par\u00e1metros son relevantes y debemos tener a mano, y un ejemplo sencillo de env\u00edo de mensajes al IoT Hub. Para ver m\u00e1s en detalle todo esto, existe un tutorial m\u00e1s detallado de Microsoft <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/iot-hub\/iot-hub-csharp-csharp-getstarted\">aqu\u00ed<\/a>.<\/p>\n<h2>Creaci\u00f3n IoT Hub<\/h2>\n<p>Para empezar, accederemos al portal de Azure (<a href=\"http:\/\/portal.azure.com\">http:\/\/portal.azure.com<\/a>) y crearemos el IoT Hub, el cu\u00e1l podremos encontrar en el apartado Internet of Things.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-426\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/IoT3-1024x694.png\" alt=\"IoT3\" width=\"1024\" height=\"694\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/IoT3-1024x694.png 1024w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/IoT3-300x203.png 300w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/IoT3-768x521.png 768w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/IoT3.png 1034w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>En la siguiente pantalla configuraremos todos los par\u00e1metros que se nos indican, siendo necesario prestar especial atenci\u00f3n a los siguientes (si no elegimos nivel de servicio gratuito, en cuyo caso no podremos modificarlos):<\/p>\n<ul>\n<li>IoT Hub Units: Unidades de IoT Hub. En caso de tratarse de una aplicaci\u00f3n en producci\u00f3n con un volumen muy alto de dispositivos, nos podr\u00eda interesar aumentar \u00e9stas unidades.<\/li>\n<li>Device-to-cloud partitions: \u00c9ste par\u00e1metro fijar\u00e1 las particiones que tendremos de entrada para recibir mensajes de los distintos dispositivos. En \u00e9ste caso, no particionaremos por el <strong>PartitionKey<\/strong> como en los Event Hub, sino que los mensajes se colocar\u00e1n en una partici\u00f3n u otra en funci\u00f3n de su <strong>deviceId<\/strong>. Por defecto est\u00e1 a 4 (2 en nivel gratuito), aument\u00e1ndolo mejoraremos la eficiencia de lectura cuando tengamos varios lectores de mensajes, aunque no variar\u00e1 el throughput de entrada total.<\/li>\n<\/ul>\n<p>A partir de ahora, el hostname de nuestro IoT Hub ser\u00e1 HOSTNAME.azure-devices.net, siendo HOSTNAME el nombre que hayamos elegido para nuesto IoT Hub. Para obtener otro de los datos que necesitamos para conectarnos al Hub, nos iremos al apartado Shared Access Policies, y de ellas a iothubowner.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-427 size-large\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/IoT4-1024x483.png\" alt=\"IoT_ENCAMINA_4\" width=\"1024\" height=\"483\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/IoT4-1024x483.png 1024w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/IoT4-300x141.png 300w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/IoT4-768x362.png 768w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/IoT4.png 1746w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Mediante \u00e9stas <strong>Shared Access Policies<\/strong> es como gestionaremos los permisos que tendr\u00e1n los dispositivos que se conecten al Hub, por lo que podremos modificar las que hay o a\u00f1adir nuevas. Finalmente, buscaremos, y copiaremos la <strong>Connection string\u2014primary key<\/strong> de la que nos interese para nuestro dispositivo en cuesti\u00f3n, en \u00e9ste caso <em>iothubowner<\/em>.<\/p>\n<h2>Creaci\u00f3n de la identidad del dispositivo<\/h2>\n<p>Un dispositivo no puede conectarse al IoT Hub si no tiene una entrada en su registro de identidades. Por ello, antes de crear una aplicaci\u00f3n para conectar un dispositivo y enviar mensajes, necesitaremos registrar el dispositivo. Si tuvi\u00e9ramos una interfaz web desarrollada con una funcionalidad similar a la que nos ofrecen las soluciones preconfiguradas de Azure IoT Suite, podr\u00edamos crearlo desde all\u00ed, pero en \u00e9ste caso optaremos por hacerlo con una aplicaci\u00f3n de consola.<\/p>\n<p>Para ello, seguiremos los pasos indicados a continuaci\u00f3n:<\/p>\n<ol>\n<li>Crearemos una aplicaci\u00f3n de consola, y la llamaremos por ejemplo <strong>CreateDeviceIdentity<\/strong>.<\/li>\n<li>A\u00f1adiremos el paquete de NuGet Azure IoT service SDK (<em>Microsoft.Azure.Devices<\/em>).<\/li>\n<li>Modificaremos el c\u00f3digo de <strong>Program.cs<\/strong> para que quede de la siguiente forma:<\/li>\n<\/ol>\n<pre class=\"brush: csharp; title: ; wrap-lines: false; notranslate\" title=\"\">\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading.Tasks;\r\nusing Microsoft.Azure.Devices;\r\nusing Microsoft.Azure.Devices.Common.Exceptions;\r\n\r\nnamespace CreateDeviceIdentity\r\n{\r\n    class Program\r\n    {\r\n        static RegistryManager registryManager;\r\n        static string connectionString = &quot;{IOT_HUB_CONNECTIONSTRING}&quot;;\r\n\r\n        static void Main(string&#x5B;] args)\r\n        {\r\n            registryManager = RegistryManager.CreateFromConnectionString(connectionString);\r\n            AddDeviceAsync().Wait();\r\n            Console.ReadLine();\r\n        }\r\n\r\n        private static async Task AddDeviceAsync()\r\n        {\r\n            string deviceId = &quot;myFirstDevice&quot;;\r\n            Device device;\r\n            try\r\n            {\r\n                device = await registryManager.AddDeviceAsync(new Device(deviceId));\r\n            }\r\n            catch (DeviceAlreadyExistsException)\r\n            {\r\n                device = await registryManager.GetDeviceAsync(deviceId);\r\n            }\r\n            Console.WriteLine(&quot;Generada device key: {0}&quot;,\r\n           device.Authentication.SymmetricKey.PrimaryKey);\r\n        }\r\n    }\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Reemplazando <em>{IOT_HUB_CONNECTIONSTRING}<\/em> por la cadena de conexi\u00f3n de nuestro IoT Hub con los permisos correspondientes (en nuestro caso la de <em>iothubowner<\/em>).<\/p>\n<ol start=\"4\">\n<li>Ejecutar la aplicaci\u00f3n. Debemos anotar el <em>Device Key<\/em> que nos devuelva por pantalla, ya que lo usaremos en nuestro dispositivo.<\/li>\n<\/ol>\n<h2>Env\u00edo de mensajes de dispositivo a la nube<\/h2>\n<p>Una vez ya tenemos el dispositivo registrado, procederemos a realizar dos aplicaciones: una aplicaci\u00f3n que leer\u00e1 los mensajes de dispositivos del IoT Hub y una aplicaci\u00f3n de consola que env\u00ede mensajes al IoT Hub.<\/p>\n<p>Para la primera, seguiremos los siguientes pasos:<\/p>\n<ol>\n<li>Crearemos una aplicaci\u00f3n de consola, a la que llamaremos, por ejemplo, <strong>ReadDeviceToCloudMessages<\/strong>.<\/li>\n<li>A\u00f1adiremos el paquete de NuGet Azure Service Bus (<em>WindowsAzure.ServiceBus<\/em>).<\/li>\n<li>Modificar el c\u00f3digo de <strong>Program.cs<\/strong> para que quede de la siguiente forma:<\/li>\n<\/ol>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading.Tasks;\r\nusing Microsoft.ServiceBus.Messaging;\r\nusing System.Threading;\r\n\r\nnamespace ReadDeviceToCloudMessages\r\n{\r\n    class Program\r\n    {\r\n        static string connectionString = &quot;{IOT_HUB_CONNECTIONSTRING}&quot;;\r\n        static string iotHubD2cEndpoint = &quot;messages\/events&quot;;\r\n        static EventHubClient eventHubClient;\r\n\r\n        static void Main(string&#x5B;] args)\r\n        {\r\n            Console.WriteLine(&quot;Receive messages. Ctrl-C to exit.\\n&quot;);\r\n            eventHubClient = EventHubClient.CreateFromConnectionString(connectionString, iotHubD2cEndpoint);\r\n\r\n            var d2cPartitions = eventHubClient.GetRuntimeInformation().PartitionIds;\r\n\r\n            CancellationTokenSource cts = new CancellationTokenSource();\r\n\r\n            System.Console.CancelKeyPress += (s, e) =&gt;\r\n            {\r\n                e.Cancel = true;\r\n                cts.Cancel();\r\n                Console.WriteLine(&quot;Exiting...&quot;);\r\n            };\r\n\r\n            var tasks = new List&lt;Task&gt;();\r\n            foreach (string partition in d2cPartitions)\r\n            {\r\n                tasks.Add(ReceiveMessagesFromDeviceAsync(partition, cts.Token));\r\n            }\r\n            Task.WaitAll(tasks.ToArray());\r\n        }\r\n\r\n        private static async Task ReceiveMessagesFromDeviceAsync(string partition, CancellationToken ct)\r\n        {\r\n            var eventHubReceiver = eventHubClient.GetDefaultConsumerGroup().CreateReceiver(partition, DateTime.UtcNow);\r\n            while (true)\r\n            {\r\n                if (ct.IsCancellationRequested) break;\r\n                EventData eventData = await eventHubReceiver.ReceiveAsync();\r\n                if (eventData == null) continue;\r\n\r\n                string data = Encoding.UTF8.GetString(eventData.GetBytes());\r\n                Console.WriteLine(&quot;Message received. Partition: {0} Data: '{1}'&quot;, partition, data);\r\n            }\r\n        }\r\n    }\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Reemplazando igualmente <em>{IOT_HUB_CONNECTIONSTRING}<\/em> con el mismo valor de antes.<\/p>\n<p>Finalmente, crearemos la aplicaci\u00f3n que simular\u00e1 un dispositivo enviando mensajes al IoT Hub. Para ellos seguiremos los siguientes pasos:<\/p>\n<ol>\n<li>Crearemos una aplicaci\u00f3n de consola, a la que llamaremos, por ejemplo, <strong>SimulatedDevice<\/strong>.<\/li>\n<li>A\u00f1adiremos el paquete de NuGet Azure IoT device SDK (<em>Microsoft.Azure.Devices.Client<\/em>).<\/li>\n<li>Modificar el c\u00f3digo de <strong>Program.cs<\/strong> para que quede de la siguiente forma:<\/li>\n<\/ol>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading.Tasks;\r\nusing Microsoft.Azure.Devices.Client;\r\nusing Newtonsoft.Json;\r\n\r\nnamespace SimulatedDevice\r\n{\r\n    class Program\r\n    {\r\n        static DeviceClient deviceClient;\r\n        static string iotHubUri = &quot;{IOT_HUB_CONNSTRING}&quot;;\r\n        static string deviceKey = &quot;{DEVICE_KEY}&quot;;\r\n\r\n        static void Main(string&#x5B;] args)\r\n        {\r\n            Console.WriteLine(&quot;Simulated device\\n&quot;);\r\n            deviceClient = DeviceClient.Create(iotHubUri, new DeviceAuthenticationWithRegistrySymmetricKey(&quot;myFirstDevice&quot;, deviceKey), TransportType.Mqtt);\r\n\r\n            SendDeviceToCloudMessagesAsync();\r\n            Console.ReadLine();\r\n        }\r\n\r\n        private static async void SendDeviceToCloudMessagesAsync()\r\n        {\r\n            double avgWindSpeed = 10; \/\/ m\/s\r\n            Random rand = new Random();\r\n\r\n            while (true)\r\n            {\r\n                double currentWindSpeed = avgWindSpeed + rand.NextDouble() * 4 - 2;\r\n\r\n                var telemetryDataPoint = new\r\n                {\r\n                    deviceId = &quot;myFirstDevice&quot;,\r\n                    windSpeed = currentWindSpeed\r\n                };\r\n                var messageString = JsonConvert.SerializeObject(telemetryDataPoint);\r\n                var message = new Message(Encoding.ASCII.GetBytes(messageString));\r\n\r\n                await deviceClient.SendEventAsync(message);\r\n                Console.WriteLine(&quot;{0} &gt; Sending message: {1}&quot;, DateTime.Now, messageString);\r\n\r\n                Task.Delay(1000).Wait();\r\n            }\r\n        }\r\n    }\r\n}\r\n<\/pre>\n<p>Reemplazando, como antes el valor de <em>{IOT_HUB_CONNECTIONSTRING}<\/em>, y en \u00e9ste caso el valor de <em>{DEVICE_KEY}<\/em> por el device key que hayamos obtenido en el registro del dispositivo.<\/p>\n<p>Una vez hecho todo esto, si arrancamos ambas aplicaciones, veremos algo como lo siguiente:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-428 size-full\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/Iot-ENCAMINA.png\" alt=\"Iot-ENCAMINA\" width=\"720\" height=\"242\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/Iot-ENCAMINA.png 720w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/Iot-ENCAMINA-300x101.png 300w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><\/p>\n<p>Y en el <a href=\"http:\/\/portal.azure.com\" target=\"_blank\">portal de Azure<\/a>, en el apartado de <em>Usage<\/em>, veremos el n\u00famero de mensajes enviados.<\/p>\n<p>Adem\u00e1s de los mensajes de dispositivo a nube, existe otro tipo que son los de nube a dispositivo, principalmente mensajes de control para que el dispositivo pueda modificar par\u00e1metros o realizar acciones predeterminadas. Para m\u00e1s informaci\u00f3n o ejemplos consultar \u00e9sta <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/iot-hub\/iot-hub-csharp-csharp-c2d\">gu\u00eda<\/a>.<\/p>\n<h1>Siguientes pasos<\/h1>\n<p>En el siguiente art\u00edculo, hablaremos en detalle acerca de <strong>Stream Analytics<\/strong>, un servicio que nos permite obtener los datos del IoT Hub y hacer un procesado inicial de ellos, pudiendo luego enviarlos a distintos destinos.<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content --><span class=\"et_bloom_bottom_trigger\"><\/span>","protected":false},"excerpt":{"rendered":"<p>En \u00e9ste segundo art\u00edculo de la serie en la que vamos a profundizar en toda la tem\u00e1tica de IoT, vamos a detallar uno a uno los diferentes elementos y componentes de los que est\u00e1 compuesta una soluci\u00f3n \u201ctipo\u201d de IoT &hellip; <a href=\"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/desgranando-iot-ii-azure-iot-hub\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":162,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[68],"tags":[],"class_list":["post-411","post","type-post","status-publish","format-standard","hentry","category-iot"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v18.2.1 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Desgranando IoT (II): Azure IoT Hub - Piensa en software, desarrolla en colores<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/desgranando-iot-ii-azure-iot-hub\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Desgranando IoT (II): Azure IoT Hub\" \/>\n<meta property=\"og:description\" content=\"En \u00e9ste segundo art\u00edculo de la serie en la que vamos a profundizar en toda la tem\u00e1tica de IoT, vamos a detallar uno a uno los diferentes elementos y componentes de los que est\u00e1 compuesta una soluci\u00f3n \u201ctipo\u201d de IoT &hellip; Continue reading &rarr;\" \/>\n<meta property=\"og:url\" content=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/desgranando-iot-ii-azure-iot-hub\/\" \/>\n<meta property=\"og:site_name\" content=\"Piensa en software, desarrolla en colores\" \/>\n<meta property=\"article:published_time\" content=\"2017-02-15T16:29:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-02-16T12:52:56+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/iot-1.png\" \/>\n<meta name=\"author\" content=\"Adri\u00e1n Del Rinc\u00f3n L\u00f3pez\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Adri\u00e1n Del Rinc\u00f3n L\u00f3pez\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/desgranando-iot-ii-azure-iot-hub\\\/#article\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/desgranando-iot-ii-azure-iot-hub\\\/\"},\"author\":{\"name\":\"Adri\u00e1n Del Rinc\u00f3n L\u00f3pez\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/#\\\/schema\\\/person\\\/7f6a50bc93473c836a90f1438ddfd247\"},\"headline\":\"Desgranando IoT (II): Azure IoT Hub\",\"datePublished\":\"2017-02-15T16:29:09+00:00\",\"dateModified\":\"2017-02-16T12:52:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/desgranando-iot-ii-azure-iot-hub\\\/\"},\"wordCount\":1633,\"commentCount\":7,\"image\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/desgranando-iot-ii-azure-iot-hub\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2017\\\/02\\\/iot-1.png\",\"articleSection\":[\"IoT\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/desgranando-iot-ii-azure-iot-hub\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/desgranando-iot-ii-azure-iot-hub\\\/\",\"url\":\"http:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/desgranando-iot-ii-azure-iot-hub\\\/\",\"name\":\"Desgranando IoT (II): Azure IoT Hub - Piensa en software, desarrolla en colores\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/desgranando-iot-ii-azure-iot-hub\\\/#primaryimage\"},\"image\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/desgranando-iot-ii-azure-iot-hub\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2017\\\/02\\\/iot-1.png\",\"datePublished\":\"2017-02-15T16:29:09+00:00\",\"dateModified\":\"2017-02-16T12:52:56+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/#\\\/schema\\\/person\\\/7f6a50bc93473c836a90f1438ddfd247\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/desgranando-iot-ii-azure-iot-hub\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/desgranando-iot-ii-azure-iot-hub\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2017\\\/02\\\/iot-1.png\",\"contentUrl\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2017\\\/02\\\/iot-1.png\",\"width\":250,\"height\":200},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/#website\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/\",\"name\":\"Piensa en software, desarrolla en colores\",\"description\":\"Las ventajas que te ofrece Microsoft Azure y el mundo.NET\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/#\\\/schema\\\/person\\\/7f6a50bc93473c836a90f1438ddfd247\",\"name\":\"Adri\u00e1n Del Rinc\u00f3n L\u00f3pez\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0a0f5d273d24cb00bb3b4d1a016365e18f38440dc1c66311a85633c723b75485?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0a0f5d273d24cb00bb3b4d1a016365e18f38440dc1c66311a85633c723b75485?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0a0f5d273d24cb00bb3b4d1a016365e18f38440dc1c66311a85633c723b75485?s=96&d=mm&r=g\",\"caption\":\"Adri\u00e1n Del Rinc\u00f3n L\u00f3pez\"},\"description\":\"Ingeniero Superior de Telecomunicaciones por la Universidad Polit\u00e9cnica de Valencia. Desde hace varios a\u00f1os trabajo en el departamento de desarrollo de ENCAMINA. Sobre todo, me apasiona estar al tanto de lo \u00faltimo en tecnolog\u00eda, y si es en el mundo\\\/ecosistema Microsoft y .NET, mejor que mejor. Adem\u00e1s, tambi\u00e9n participo de las redes sociales, si quieres encontrarme, b\u00fascame con el usuario @adderin\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/author\\\/arincon\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Desgranando IoT (II): Azure IoT Hub - Piensa en software, desarrolla en colores","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/desgranando-iot-ii-azure-iot-hub\/","og_locale":"es_ES","og_type":"article","og_title":"Desgranando IoT (II): Azure IoT Hub","og_description":"En \u00e9ste segundo art\u00edculo de la serie en la que vamos a profundizar en toda la tem\u00e1tica de IoT, vamos a detallar uno a uno los diferentes elementos y componentes de los que est\u00e1 compuesta una soluci\u00f3n \u201ctipo\u201d de IoT &hellip; Continue reading &rarr;","og_url":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/desgranando-iot-ii-azure-iot-hub\/","og_site_name":"Piensa en software, desarrolla en colores","article_published_time":"2017-02-15T16:29:09+00:00","article_modified_time":"2017-02-16T12:52:56+00:00","og_image":[{"url":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/iot-1.png","type":"","width":"","height":""}],"author":"Adri\u00e1n Del Rinc\u00f3n L\u00f3pez","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Adri\u00e1n Del Rinc\u00f3n L\u00f3pez","Tiempo de lectura":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/desgranando-iot-ii-azure-iot-hub\/#article","isPartOf":{"@id":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/desgranando-iot-ii-azure-iot-hub\/"},"author":{"name":"Adri\u00e1n Del Rinc\u00f3n L\u00f3pez","@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/#\/schema\/person\/7f6a50bc93473c836a90f1438ddfd247"},"headline":"Desgranando IoT (II): Azure IoT Hub","datePublished":"2017-02-15T16:29:09+00:00","dateModified":"2017-02-16T12:52:56+00:00","mainEntityOfPage":{"@id":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/desgranando-iot-ii-azure-iot-hub\/"},"wordCount":1633,"commentCount":7,"image":{"@id":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/desgranando-iot-ii-azure-iot-hub\/#primaryimage"},"thumbnailUrl":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/iot-1.png","articleSection":["IoT"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/desgranando-iot-ii-azure-iot-hub\/#respond"]}]},{"@type":"WebPage","@id":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/desgranando-iot-ii-azure-iot-hub\/","url":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/desgranando-iot-ii-azure-iot-hub\/","name":"Desgranando IoT (II): Azure IoT Hub - Piensa en software, desarrolla en colores","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/#website"},"primaryImageOfPage":{"@id":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/desgranando-iot-ii-azure-iot-hub\/#primaryimage"},"image":{"@id":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/desgranando-iot-ii-azure-iot-hub\/#primaryimage"},"thumbnailUrl":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/iot-1.png","datePublished":"2017-02-15T16:29:09+00:00","dateModified":"2017-02-16T12:52:56+00:00","author":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/#\/schema\/person\/7f6a50bc93473c836a90f1438ddfd247"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/desgranando-iot-ii-azure-iot-hub\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/desgranando-iot-ii-azure-iot-hub\/#primaryimage","url":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/iot-1.png","contentUrl":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2017\/02\/iot-1.png","width":250,"height":200},{"@type":"WebSite","@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/#website","url":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/","name":"Piensa en software, desarrolla en colores","description":"Las ventajas que te ofrece Microsoft Azure y el mundo.NET","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/#\/schema\/person\/7f6a50bc93473c836a90f1438ddfd247","name":"Adri\u00e1n Del Rinc\u00f3n L\u00f3pez","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/0a0f5d273d24cb00bb3b4d1a016365e18f38440dc1c66311a85633c723b75485?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/0a0f5d273d24cb00bb3b4d1a016365e18f38440dc1c66311a85633c723b75485?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0a0f5d273d24cb00bb3b4d1a016365e18f38440dc1c66311a85633c723b75485?s=96&d=mm&r=g","caption":"Adri\u00e1n Del Rinc\u00f3n L\u00f3pez"},"description":"Ingeniero Superior de Telecomunicaciones por la Universidad Polit\u00e9cnica de Valencia. Desde hace varios a\u00f1os trabajo en el departamento de desarrollo de ENCAMINA. Sobre todo, me apasiona estar al tanto de lo \u00faltimo en tecnolog\u00eda, y si es en el mundo\/ecosistema Microsoft y .NET, mejor que mejor. Adem\u00e1s, tambi\u00e9n participo de las redes sociales, si quieres encontrarme, b\u00fascame con el usuario @adderin","url":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/author\/arincon\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/posts\/411","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/users\/162"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/comments?post=411"}],"version-history":[{"count":0,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/posts\/411\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/media?parent=411"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/categories?post=411"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/tags?post=411"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}