 Bienvenidos a este Submit de Embedded IoT, parte del Open Source Submit Latinoamérica. El tema es Building Smart Farms with H-Computing Systems Using Kubernetes. Vamos a explorar un poco de cómo Kubernetes puede ser usado para aplicaciones que usan el concepto H-Computing aplicado a granjas inteligentes. Yo soy Sergio Mendes. Un poquito sobre mí, pues soy ingeniero de sistemas. Soy de Guatemala. Doy clases en la Universidad San Carlos. También soy organizador de la mito de CloudNerd y Guatemala. Trabajo como DevOps Engineer en Yalo. Trabajando un poquito de deployments de chatbots y ese tipo de cosas. También soy LinkerD Ambassador. LinkerD es una service mesh. Y actualmente estoy escribiendo un libro sobre H-Computing con Kubernetes con la editorial PACT. Para dar un poquito de introducción, pues IoT, pues se va a referir a conectar dispositivos, le llaman inteligentes a través de Internet. Estos dispositivos regularmente van a estar usando microcontroladores con una lógica por mencionar lo estática, que no tiene mucha capacidad. Este concepto, pues este tipo de sistemas, pues ya llevan algunos años y pues está evolucionando a la parte H, pero no es que lo reemplaces, sino más bien se complementa. H-Computing se refiere a lo que es hacer cómputo cerca en la origen de datos. Es decir, en IoT nosotros se enviamos información a la nube, pero no teníamos mucho poder reprocesamiento para hacer cosas locales. Ahorita con H-Computing, pues ya se está logrando con el avance de la tecnología que pequeñas microcomputadoras puedan procesar la información cerca de la origen de datos. Si bien IoT no es H-Computing, pues se van a complementar, como lo vamos a ver en la siguiente presentación, características que podemos ver de cada una, pues el IoT, solo sus dispositivos que usan microcontroladores, pues se van a encargar de realizar una solo tarea. En el caso de H-Computing, pues pueden realizar varias tareas. Algo que estaba mencionando, pues en IoT es muy común ver dispositivos que usan microcontroladores con una lógica estática y memoria limitada. Y en H estamos viendo el uso de microcomputadoras regularmente, y ahora se está popularizando que están usando arquitecturas ARM. ARM es muy balanceada entre el poder reprocesamiento y el consumo de energía. IoT y H-Computing se complementan. Regularmente o actualmente se está oyendo mucho, a veces hablan de H-IoT, mezclan los conceptos. Esto viene de que esta se complementa. Si bien en el IoT que usábamos microcontroladores, pues era muy limita. En vez de llevarnos esa información a la nave, lo estamos logrando. Estamos logrando hacer ese procesamiento localmente, antes de llevarnos la información que nos interesa para hacer pública a la nave. Eso es lo que están haciendo estos microprocesadores. Y acá es donde viene a hacer la función de H-Computing de hacer el procesamiento cerca al origen de datos. Entonces IoT y H-Computing se complementan, pero esta información va a estar dispersa entre lo local y en la nave. Localmente en el H que le llaman, o DH, es un concepto que regularmente se maneja. Es por eso que algunos lo pueden ver como que H-Computing es el paso de evolución del IoT. Ciertamente se complementan. Puede ser que empecemos a adoptar este concepto más que lo que era IoT. Pero el espíritu de IoT siempre es conectar las cosas a través de internet. H-Computing solo viene a reforzar y hacer procesamiento local, sacar provecho de los nuevos microprocesadores que se están logrando crear para poder hacer cómputo localmente. Resumiendo un poquito las capas de lo que es H-Computing, podemos clasificar en cuatro capas. Esta es parte de recopilación y información que he encontrado y lo podemos encontrar en estas cuatro capas. Donde están los probares de la nave, que van a tener algunos servicios administrados que pueden apoyar al sistema de H-Computing en general para guardar cierta información, compartir estadísticas, etc. En el Near-H, esta va a ser una capa donde si bien la información se hace cerca al origen de datos o en el H, por así llamarlos, el Near-H solo es la capa de transición. La parte de telecomunicación es que se va a llevar la información del Far-H hasta llevarse la nave. Acá podemos ver el Far-H. El Far-H lo podemos ver como la información que se está llevando a procesar cerca del origen de datos. Sin embargo, el Far-H podemos dividirlo en o clasificar una parte interna, que es el Tiny-H, donde están los sensores. Y los dispositivos que están capturando información que regularmente podrían usar microcontrolladores, son los sensores que capturan información y se lo llevan a un cluster o nodo o máquina simple para procesar información. En este caso, en esta plática, nos estamos enfocando que el que nos va a llevar a procesar información va a ser un cuernete ligero llamado K3S, un cuernete que está diseñado para poder correr en este tipo de ambientes. Resumiendo, en Tani-H, vamos a encontrar los sensores que van a capturar la información. En el Far-H, vamos a encontrar el cluster que va a procesar esa información, captura por estos sensores y se la va a mandar a la capa de Cloud, al Cloud Air, a través del Near-H, que va a hacer la capa de telecomunicaciones para llevarse la información. Podemos encontrar que el Edge Computing lo podríamos configurar de ciertas formas. Las capas que habíamos mencionado antes podríamos encontrar los dispositivos, un cluster de uno o más nodes en el Far-H, en nuestra capa de transición para llevarnos la Internet, los dispositivos de red, el network devices y se lo lleva a la capa de la NUE cuando ya está procesada la información para compartir para otros servicios o clientes que estén usando el sistema. En esta capa de Cloud vamos a encontrar los proveedores como AWS, Azure, GCP, por ejemplo, SIBO, que ofrece un servicio de K3 dedicado a la NUE. Y en sí, servicios administrados como bases de datos, SQL, reportería o instancias en la NUE de los sistemas. O sea, realmente es una mezcla entre lo local y lo público. ¿Sí? Aplicaciones prácticas del Edge Computing podríamos mencionar, por ejemplo, lo que es el Computer Vision. El Computer Vision pues vamos a encontrar el análisis de imágenes, por ejemplo, cámaras de seguridad que están analizando la información con un algoritmo de Machine Learning, incluso el Machine Learning, el Computer Vision sería como una parte o una aplicación de Machine Learning o específica para análisis de imágenes. Y el Machine Learning en general que nos permite clasificar información y hacer predicciones de la información. Otras partes que podemos utilizar o que son bien complementarias pues bases de datos relacionales, no relacionales, SQL en un SQL como Mongo, Redis bases de datos de ese tipo pues necesitamos sensores para captuar la información o un medio para captuar la información vamos a usar dispositivos ARM como una Raspberry que es el ejemplo que traemos o dispositivos más avanzados diseñados para producción otros dispositivos como RockPI Pine64 por ejemplo NVIDIA tiene unos dispositivos también para H que se llama Jetson Nano ASUS tiene dispositivos y hay un montón de dispositivos ahorita que están pues emergiendo a raíz de esto incluso las nubes ya están ofreciendo servicios cloud con microprocesores ARM tal es el caso por ejemplo de Azure ya tiene la opción para ARM Google se ha matado el EDS Graviton 2 y pues las empresas están empezando a optar procesamiento en ARM porque el balance entre costo o beneficio es más barato que usar arquitecturas Intel Intel regularmente pues usa bastante energía tiene más procesamiento pero ARM es más balanceado tiene un mejor balance para ser usada en el H o cerca la origen de datos como mencioné pues también podemos usar servicios en la nube y también algo que se está volviendo popular por la forma en que administra el software lo actualiza y el diseño que tiene para crear sistemas distribuidos el uso de containers y gubernetes un orquesta de containers ahora es importante mencionar que hay tipos de dispositivos que se pueden ser usados en estos tipos de sistemas dispositivos que son para prototipos que no son production ready para aguantar el mal clima el maltrato y todo esto porque son dispositivos que están siendo llevados cerca la origen de datos ambientes donde mucho calor, mucho frío humedad y hay que esos serían dispositivos para prototipos como la Raspberry y dispositivos para producción que son más robustos bueno de hecho la Raspberry hay algunas modificaciones y lo han logrado hacer pero siempre tenemos que pensar que podemos usar dispositivos para crear prototipos y después llevarlos a una forma productiva para que puedan resistir el ambiente y condiciones extremas gubernetes si es su primera vez tiene un contexto de que es gubernetes o hayan escuchado podemos ver si bien está Docker y los containers pues los containers son considerados en la forma que lo maneja Docker una virtualización por sistema operativo solo que los containers no necesitan nada especial para correr en una computadora y eso permite poder crear un montón de containers dentro de una computadora a la misma velocidad que un binario corre entro de la máquina cuando tenemos varios containers corriendo demasiados gubernetes viene a darnos herramientas para establecer un orden manejar mejor su red y proveer otras características que no podíamos encontrar entonces gubernetes viene a ser esa plataforma que nos va a poder ayudar a crear sistemas distribuidos y a orquestar nuestros containers e implementar estrategias de CICD DevOps etc pero lo podemos ver desde el punto de vista para crear un sistema distribuido no todo es DevOps K3 es un gubernetes donde se le quedó quito todo lo y se modificó y adaptó para que pudiera correr en ambientes con pocos recursos eso lo hace ideal para Hitch Computing eso es K3 creado por Rancher que ahora es de suce pues K3 tiene varios backends no el típico baseato CICD la clave de valor sino que fue adaptado para que pudiera almacenar la información de los objetos que se quedan gubernetes CICD incluir todo adentro todo lo necesario para poder correr y tener un ambiente de forma rapida osea que es muy sencillo de usar y está diseñado especificamente y es muy bueno para este tipo de ambientes de Hitch Computing el diseño es que un binario de 100 megas o alrededor de ese espacio que tiene todos estos componentes que habitan en un cluster regular recuerda antes todo en un simple binario podemos tener clusters de uno que no deberíamos llamar cluster pero sin uno cluster o cluster de varios nuevos K3 es pues es un proyecto de la Clownary Computer Foundation y su nivel de madurez en este proceso de CNCF de los proyectos que administra pues está en la parte de de inicio porque da de sandbox, incubated y graduated, va en el principio es un proyecto que está teniendo bastante empuje para crear por ejemplo a sistemas o ambientes de pruebas rapido y es especial para correr en Hitch también se tiene que tener en consideración que cuando usamos ARM cuando creamos container regularmente se crean para arquitectura Intel tenemos que hacer una conversión de nuestros containers y lo que estamos usando para ARM entonces ya tenemos que tomar en consideración que los lenguajes de programación y las librerías que usamos tengan soporte para ARM para que puedan correr también K3 funciona para y pueden usar un set de herramientas complementarias para K3 como es el Metal LV un load balancer de bare metal que ustedes saben cuernetes pues es algo que implementa el cloud provider Calico como para crear redes Acre, detectar dispositivos USB y otros tipos de hardware Calico para crear como formas de manejo de red más complejas Cube H para correr cosas en Hitch Compute que incluye un montón de herramientas ya específicas para este tipo de ambientes, Rancher para administrar clusters de K3S K3O es una distro de K3S Inlets para exponer sus nodes publicamente los que están locales Netmakers redes de nodes locales y los conecta con la LUI son herramientas complementarias que se pueden usar ahora bien hablando de las smart farms pues es un enfoque que se tiene que que está enfocado pues en la agricultura si se foca en la agricultura automatizar todos esos procesos usar tecnologías como Big Data IoT Tracking, monitoreo y automatización de los procesos en la agricultura y analizar la información y las operaciones que se está haciendo para hacer un uso eficiente los recursos, optimizar todos los procesos de agrícolas por así decirlos y mantenimiento de plantas y cosas de este tipo similares entonces también tenemos este arama de cómo implementamos el sistema en la nube tenemos un Grafana y un MySQL nuestra Kapanier H se va a llevar de lo local a la nube la información en el Far H tenemos nuestro un node de que es un single node cluster que tiene un servicio que se llama Metrix que captura un JSON que tiene la temperatura y la humedad si en este servicio o sea hasta una red TCP y tiene este servicio y tenemos dos dispositivos loras que son para transmisión de información a larga distancia puede hacer una granja o una finca o un rancho que es grandísimo y necesitamos un kilómetro de distancia para enviar información entonces en el Tiny H tenemos un dispositivo lora, lora es un protocolo para enviar información a larga distancia basado en el wifi entonces hay un sensor lora que está capturando la información es un receptor es el que captura esa información y envía la información a otro dispositivo lora que recibe la información y lo envía a través de la red local a la cual este dispositivo SCP32 está conectado y este cluster también está conectado y entonces el servicio de Metrix recibe la información en formato de JSON la procesa donde viene temperatura y humedad calcula grados Fahrenheit y centígrados envía la información y grafana muestra un reporte si entonces así es como funciona vamos a así lora como les está diciendo pues está basado en wifi es una técnica de modulación para enviar información a larga distancia y tiene un protocolo de red basado en lora y usa muy muy poca energía para enviar información vamos a ver el dispositivo está la conexión vamos a mostrar acá acá en el stream tengo esto en el video entonces en esta parte acá pueden ver ustedes el dispositivo la antena que está ahí y acá arriba está el dispositivo lora y tiene la pantalla y tiene una lucecita naranja y tiene conectado este sensor de ht11 que captura humedad y temperatura tiene maneja tierra 3 voltios y una pulsación en el pin 17 de este dispositivo donde está conectado como está en el diárama para capturar la información del sensor entonces captura la información del sensor y lo envía a través del protocolo lora ahora bien yo tengo este otro dispositivo que es literalmente el mismo que está ahí en pantalla este es el receptor que está acá este es el receptor recibe la información que viene en lora viene en jason con el número dispositivo temperatura y humedad y lo manda a la red local donde yo estoy acá que si pueden ver acá en la imagen estoy tocando con el router este router está conectado acá a mi máquina o sea que el cluster está en la misma red de mi máquina y este dispositivo lora está conectado a la misma red y envía la información jason a este cluster si el servicio matriculo recibe lo procesa y se lo lleva a la nueve para finalmente graficarlo en grafano entonces en casos prácticos que podemos usar este mismo efecto este ejemplo que está acá por ejemplo tráfico vehicular para capturar información e monitora de temperatura en ciudades bueno también el caso de h podemos aplicar la agricultura como lo estamos haciendo ahorita manufactura la parte de salud donde se captura información se analiza información este caso es específico para para smart farms captura esta información de plantas, humedad y temperatura la lora one como habíamos mencionado pues es este protocolo de red para lora una red lora por así decirlo entonces acá en la demostración vamos a si quieren vamos a poner en bueno vamos acá tenemos acá nuestro dashboard lo vamos a reconectar ya que en acá pueden ver este es el Kubernetes que está en la nueve Google Cloud ya está iniciado acá entonces nos lo vamos a llevar por acá y vamos a recargar nuestra página nuestro dashboard y vamos a ver por acá vamos a revisar que todos estén conectados por acá y vamos a recargar acá la información a ver si ya empieza a aparecer y ah bueno acá ya está cargando los últimos cinco minutos vamos a ver acá tenemos acá nuestro esta parte de Arduino vamos a ver pareciera que que esto ya no está recibiendo información lo vamos a vamos a revisar este que a veces se escomenta acá vamos a volver a reiniciar el dispositivo para que todos estén bien y empiece a recibir información ese que están viendo ahí pues es el yo creo que acá está Zafá acá está como que Zafá vamos a limpiar acá el nuestro dispositivo a ver dice que lo ha reinicio está conectado ok ahí también ya está recibiendo enviando y en el en el en el como se llama en el está volviendo código 200 del web service entonces si empezamos a cargar acá información pues ya nos va empezar a mostrarlo vamos a mostrar cada cinco segundos pues para que se pueda ver de mejor forma entonces acá tengo por ejemplo algo de que podemos ver yo tengo acá una bolsa de hielo y si pueden ver ustedes está ahorita a 24.6 grados si yo por ejemplo pongo la vamos a ver por acá si yo pongo la bolsa de hielo por acá vamos a poner acá la bolsa de hielo tiene que ser afectada la humedad la humedad es el en la línea celeste también la línea maría de temperatura que es en fire y la verde es en Celsius tiene que verse afectada y si se dan cuenta está descendiendo si miren está descendiendo la temperatura vamos a darle otros par de segundos ahorita como menos de miren está aún está bajando la temperatura si se dan cuenta o sea que más o menos acá en mi casa estábamos como a unos 27 grados una información así miren y está bajando la temperatura acá acaba la bolsa de hielo que tengo acá y si se dan cuenta sigue bajando la temperatura al quitarlo tiene que empezar a restablecer la temperatura y empezar a subir porque pues yo ya no estoy aplicando frío si se dan cuenta ya la curva ya se está enderezando ya está subiendo la temperatura y lo me da la idea es que esta parte nosotros la pudiéramos tener en una ocasión de nuestra granja si pudiéramos tener ahí nuestra locación de la granja y estar empezando a medir la la temperatura lo me da y poder implementar sistemas de auto riego y que tenga una acción verdad sea detecta que está pasando se podría programar una alerta en grafana o si usáramos por ejemplo prometius que tenga un detonante que algún otro dispositivo de tome por ejemplo un riego también hay sensores especiales para detectar la humedad de la tierra estas como me da general y acá como pueden ver ustedes pues acá está la gráfica también de como fue que se fue realizando esto si nosotros nos vamos a la información del query acá podemos ver ver por ejemplo vamos a ponernos así si acá tenemos la consulta de mysecuel en este caso estoy usando mysecuel como storage yo tengo un un dispositivo que está ahí vamos a mostrar acá tengo el código en acá tenemos el repositorio está la parte de vamos a ponerlo así si tenemos la parte del dispositivo ahora que enví información genera un JSON con la temperatura, la humedad y el número dispositivo acá solo tengo un dispositivo entonces está creado como device 1 puedo crear varios dispositivos para hacer un query en mysecuel después el que recibe la información tiene el IP del servidor de metrics y también están seteados en la misma banda de recepción de información en la 915 ahora tiene varias bandas tiene una que está en la 800, otra en la 900 y otra en la 400 porque cada una pues unas para Europa otras para América y otra para larga distancia entonces en el que recibe la información sean cuenta acá captura la información que viene que es en ese formato JSON y luego manda llamar al endpoint que es el servicio de metrics en esta URL y captura la información y hace el request nuestro servicio eso será en Lora y eso los quemamos con el Arduino IDE yo estoy usando unos dispositivos que dan unos dispositivos luego en el index pues tenemos el código que corre en el dispositivo H en la Raspberry que está acá acá tenemos la Raspberry este que tengo acá es la Raspberry este es el dispositivo Lora el sensor que está conectado el dispositivo y acá está el router la antena acá como les decía acá tengo el otro dispositivo y mi computadora está conectada a la red que está en la Raspberry entonces este servicio de metrics pues tiene un endpoint que se llama device entonces device recibe esa información la temperatura este es usado por Grafana Grafana va a volver va a volver esa esa información para que perdón esta información se inserta en MySQL cuando llamamos a device desde desde nuestro servicio de Lora cuando Lora manda llamar a metrics manda llamar a este device en MySQL acá está la función de MySQL que inserta la información o sea que obviamente la base datos la inicializamos con una tabla y empezamos a guardar la información en esta tabla por número y dispositivo con temperatura de humedad graus, sentidos y farenges entonces también tenemos a CalSource el deployment de Grafana un volumen claim el data source ya preconfigurado con su password y todo pues no usamos secrets para simplificar un poquito más el ejemplo el deployment del Grafana el service que está acá el servicio de metrics el deployment de metrics que está corriendo en el H en la Raspberry que más tenemos por acá la instalación del MySQL el servicio de service que lo tenemos como load balancer para tenemos uno de service para que el servicio lo use y uno de load balancer para que lo usemos a través de nuestro servicio le crea su IP público y también otra cosa por ejemplo acá podemos ver que nos podemos conectar vamos a conectar a acá podemos conectar al cluster que está en mi red local vamos a conectar acá y tenemos los dispositivos si entonces está usando método del B para el servicio de metrics crea nuestro balance ahora carga de bare metal crea un endpoint en la red interna entonces de esta forma logramos juntar todas las piezas como está acá nuestra presentación con este arama toda esta interconexión los loras envían información lo recibe el node el node que tiene metrics portama y SQL y en grafana mostramos la información entonces ya sí ya podemos tener acá la información que pues ya nosotros lo estábamos viendo ahorita pues si vieron ya se estabilizó súper bastante la información podemos ver los picos de la información de cómo se capturó entonces básicamente esa fue la demostración vamos a regresar por acá el github del código usted lo pueden encontrar acá las slides también las pueden obtener por acá referencias links importantes que pueden ustedes visitar mi contacto en twitter pueden seguirme en twitter y pueden visitar mi sitio si quieren ver ustedes como vamos con el libro ya andamos en últimas revisiones y pues muy agradecido por su atención y sigan viendo este super evento y muy agradecido seguían chao