Este es un tema en el que he estado pensando durante un tiempo, especialmente porque el concepto de "IoT" ha estado flotando mucho últimamente.
Comenzaré con lo que quiero decir cuando digo "IoT" . Sé que el término IoT podría significar cosas diferentes y que a veces se usa incorrectamente. Podría ser un término que no está claramente definido y puede conducir a grandes debates sobre qué significa exactamente, yo mismo no conozco la definición adecuada y ampliamente aceptada del término. Entonces, para mí, IoT es un concepto, un concepto que define la capacidad de conectarse a un dispositivo integrado de forma remota a través de Internet, ya sea desde otro dispositivo integrado o desde un teléfono celular . Tan sencillo como eso.
En este contexto, el propósito de la conexión no importa, si puede conectar un dispositivo en su oficina con otro en su hogar, o si puede conectarse a un dispositivo en su hogar desde su teléfono celular, todo esto a través de Internet, entonces estamos hablando de dispositivos IoT (los dispositivos integrados, no el teléfono).
Entonces, habiendo acordado lo que quiero decir con IoT, ahora describiré lo que estoy tratando de lograr.
Lo que intento lograr es precisamente lo que describo en mi definición de IoT.
Quiero tener uno o varios dispositivos integrados en casa conectados a mi enrutador de internet, ya sea por ethernet o wifi y poder conectarme a ellos de forma remota con otros dispositivos integrados en una ubicación remota (y por remoto no quiero decir que esté en la misma red) y tal vez también poder conectarme a ellos con una aplicación de monitoreo en mi teléfono
Por ejemplo, es posible que tenga un dispositivo integrado simple que actúa como un interruptor de encendido / apagado conectado a mi abre-puertas de garaje y otro dispositivo integrado que actúa como un gran botón rojo en mi escritorio en el trabajo para poder presionar el botón rojo en mi escritorio y se abre la puerta del garaje.
Otro ejemplo sería tener un dispositivo integrado con capacidades de ADC que pueda monitorear la temperatura de mi casa y enviarme una alerta cuando llegue a un umbral. La notificación podría ser recibida ya sea por una simple aplicación de Android o por otro dispositivo integrado con una pequeña pantalla en mi escritorio en el trabajo.
Estos ejemplos pueden ser tontos, pero son solo para ilustrar los posibles escenarios y los casos de uso de lo que estoy tratando de lograr. Al final, la idea es la misma: conectar un dispositivo integrado con otro a través de Internet.
Otra cosa para aclarar es que el intercambio de datos entre estos dispositivos será muy liviano, solo un par de bytes cada vez, no es que se necesiten cientos de kilobytes para intercambiarse entre dispositivos.
Además, el tipo de "dispositivos integrados" a los que me refiero son dispositivos simples pero capaces basados en microcontroladores cortex-m4 de 100MHz o 200MHz. Y eso es importante de aclarar porque no habrá ninguna biblioteca Linux o compleja que se ejecute en esos dispositivos. Al final, es un desperdicio de recursos y completamente innecesario tener un procesador potente que ejecute Linux solo para encender y apagar una bombilla . En cualquier caso, planeo usar una BeagleBoard, Raspberry Pi o cualquier otra placa como esa como mis dispositivos integrados. Solo microcontroladores porque no se necesita más complejidad de la necesaria.
No sé mucho sobre las plataformas IoT y ese tipo de soluciones complejas que existen. Cuando comencé este viaje de encontrar una manera de conectar un dispositivo integrado con otro a través de Internet, me topé con un par de sitios con servicios de IoT.
Sé que hay algunos servicios en la nube de IoT como:
Sólo para nombrar unos pocos. Los principales problemas con ellos son el costo y la complejidad. Tienes que pagar para obtener esos servicios y también debes aprender cómo implementar todos los servicios que tienen, en caso de que los necesites a todos, y sus API y tal vez un montón de otras cosas que no me parecen necesarias. capaz de intercambiar algunos bytes entre dispositivos. Solo quiero algo más simple que eso, algo que pueda hacer yo mismo.
Puede decir que implementar mi propia "nube", si eso es algo que tengo que hacer, no es simple y, a veces, es mejor usar ese tipo de servicios en aras de la simplicidad, pero hay dos razones principales por las que quiero saber cómo hacerlo. implementar mis propios servicios de IoT.
La razón principal es que quiero hacerlo yo mismo. No quiero depender de un tercero para conectar mis dispositivos entre sí y dado que desarrollaré el código y el hardware para mis dispositivos, entonces me parece mejor crear también mis propios medios para conectarlos como dispositivos IoT.
La segunda razón es aprender a hacerlo. Al conocer todas las cosas necesarias que necesito para lograr esto, tendré una mejor comprensión del mundo de IoT.
Además, quiero mencionar que soy competente en C y uso Linux como mi sistema operativo cotidiano en el trabajo y en mi hogar, así que evite las cosas de Windows porque eso es inútil para mí. No tengo miedo de nada que tenga que implementar en C para mis dispositivos integrados o en Linux para implementar lo que sea necesario para lograr mi objetivo.
Entonces, mi pregunta es, ¿qué es necesario implementar y dónde, para poder conectar dos o más dispositivos integrados entre sí con el fin de intercambiar datos entre ellos?
Esta pregunta ¿Qué puedo usar para crear un IoT en nuestro propio servidor? tiene algo similar pero está cerrado y no tiene ninguna respuesta, también supone que se utilizará una infraestructura de nube ya existente. Entonces no me ayuda.
Esta otra publicación ¿Qué servicios de IoT están disponibles para almacenar / enviar / publicar datos genéricos en la nube? tiene una pregunta similar, pero el OP pregunta explícitamente por los servicios de IoT y estoy tratando de evitarlos.