Incruste su dispositivo Smart Home en el ecosistema SmartThings

Las plataformas Smart Home le permiten integrar dispositivos y crear nuevos escenarios para su interacción. El efecto de plataforma es conocido: es más probable que los usuarios elijan con el que sus dispositivos existentes sean compatibles, en lugar de cambiar a uno nuevo. Por lo tanto, puede ser más rentable que los desarrolladores de nuevos dispositivos ingeniosos se integren en una plataforma ya terminada, centrándose en el producto "de hierro", en lugar de desarrollar sus propias "bicicletas" en forma de ecosistemas en la nube y cuentas personales.

Veamos cómo integrar su propio dispositivo con la plataforma Samsung SmartThings Smart Home. Estamos implementando una opción de conexión directa para controlar el dispositivo Smart Home usando el ejemplo de un interruptor de botón y una bombilla de tres colores. 




¿Por qué necesitamos plataformas Smart Home?


Ahora los gadgets y dispositivos inteligentes están a la venta, tanto como quieras. No hay problema en comprar una tetera con control Bluetooth o una bombilla con WiFi. ¿Pero esto hace que su hogar sea "inteligente"? Una situación no es infrecuente: una bombilla se controla solo a través de una aplicación móvil del fabricante. Esto crea inconvenientes si está intentando combinar al menos varias marcas diferentes. Por lo tanto, la plataforma ideal es aquella que le permite administrar dispositivos de diferentes fabricantes de la misma manera.

Además, me gustaría ver una "computadora disuelta en la vida cotidiana", como lo soñó Mark Weiser de Xerox PARC: no controle a través de una aplicación especial, no rocíe su atención. Me gustaría una interacción natural con un entorno inteligente que no cambie nuestros hábitos. ¿Cómo implementar esto técnicamente? Por ejemplo, puede haber escenarios en los que estén involucrados dispositivos heterogéneos en la casa: usted se despertó: el dispositivo portátil lo detectó y la tetera se encendió; llegaste a casa: el sensor de la puerta lo registró, teniendo en cuenta la hora del día, las cortinas cerradas, la lámpara encendida y el aire acondicionado encendido teniendo en cuenta la temperatura.

Los escenarios se vuelven aún más útiles si usamos Internet: por ejemplo, para verificar de forma remota si la salida con la plancha está apagada. O un ejemplo banal: su casa inteligente miró el pronóstico del tiempo y le dio consejos sobre cómo vestirse mejor. O puede agregar control de voz a través de un altavoz inteligente.

La plataforma Smart Home está diseñada para todo esto. Considere lo que puede hacer la plataforma Samsung SmartThings.

Antecedentes: ¿qué son las SmartThings?


SmartThings comenzó como una startup. En el momento en que apareció, en 2012 en los EE. UU., El tema de "Smart Home" aún no estaba en la cima de la exageración, todavía no había altavoces inteligentes y una variedad de dispositivos en las tiendas. La idea surgió del fundador de la startup, Alex Hawkinson, después de un incidente: la casa de su familia en Colorado sufrió el hecho de que después de un corte temporal de electricidad, las tuberías de agua se congelaron, explotaron y todo el piso se inundó. Luego pensó que podría haber evitado el problema si supiera lo que estaba sucediendo en la casa. 

Después de buscar sin éxito una solución llave en mano, Hawkinson y sus colegas hicieron un prototipo del dispositivo y lanzaron una campaña en Kickstarter. La campaña tuvo demasiado éxito, recaudando $ 1,200,000 en lugar de los $ 250,000 planeados en 30 días. La venta de un concentrador con un pequeño conjunto de dispositivos en el kit ha comenzado: toma inteligente, sensor de puerta abierta, sensor de movimiento, sensor de presencia. Y en 2019, ya bajo la marca Samsung SmartThings, se lanzó la tercera versión del hub.


La clave del éxito en Kickstarter fue la disponibilidad de prototipos de hierro y software que funcionaran, y la amabilidad con la comunidad de fabricantes.

Los creadores de la startup han abandonado el entorno de bricolaje, por lo que constantemente están desarrollando el concepto de una API abierta para los fabricantes geek que pueden actuar como primeros usuarios en una etapa temprana. En la campaña de Kickstarter, había un escudo para Arduino y varios módulos en la nube para conectar sin problemas su dispositivo de terceros. En Internet puede encontrar muchos ejemplos de dispositivos caseros compatibles con SmartThings, ya sea una puerta de gallinero controlada (con la solución de una tarea seria de la vida: salvar a los pollos de un visón depredador) o la instalación remota de un código de bloqueo electrónico para los huéspedes con Airbnb.


Fuente de la foto: https://www.hackster.io/aaronpk/auto-airbnb-entry-745799

En 2012-2013, SmartThings pasó por varias rondas de inversión y recibió $ 12.5 millones. Y finalmente, en 2014, se interesó en Samsung y fue adquirida por $ 200 millones como parte de una estrategia para ingresar al mercado de Internet de las cosas.
Las capacidades en la nube de la plataforma permanecieron gratuitas: los autores, ahora empleados de Samsung, sin excluir la posibilidad teórica de cobrar por grandes volúmenes de tráfico, enfatizan: siempre habrá una opción gratuita para los desarrolladores de dispositivos. Esto es bueno, porque ahora casi todos los servicios en la nube proporcionan monetización y, a menudo, incluso durante un período de prueba, necesita adjuntar una tarjeta bancaria. SmartThings es una plataforma completamente gratuita.

Arquitectura SmartThings




Muevamos el patrón de izquierda a derecha.

Dispositivos


Dispositivos SmartThings: pueden ser no solo dispositivos de la suite SmartThings , sino también muchos socios externos de la lista de socios.



Si el dispositivo no está en la lista de soporte oficial, puede buscar el controlador de dispositivo , puede ser proporcionado por la comunidad de desarrolladores, o escribir el suyo.

Métodos de conexión


Puede conectar dispositivos a la plataforma de las siguientes maneras:

  • Conectado al concentrador: a través de un concentrador concentrador, relevante para dispositivos que no tienen su conexión a Internet, pero que están conectados a través de redes inalámbricas tradicionales como ZigBee para dichos sistemas. 
  • Conectado directamente: a través de Internet directamente a la nube. SmartThings lanzó recientemente una videocámara, una bombilla y un enchufe inteligente, y funcionan sin un hub, a través de WiFi. Esta es la opción que implementaremos en esta guía.
  • Conectado a la nube: a través de una nube de terceros para aquellos dispositivos que ya tienen su propio ecosistema de nube. Esto es más complicado, por lo tanto, no consideraremos esa opción.

Cubo


Por lo general, para conectar una variedad de equipos en su hogar debe haber un pequeño servidor especial "Smart Home" que admita varios protocolos. Él, un hub, hub, gateway, los nombres son diferentes.


Hub y un conjunto de dispositivos para ello. Fuente de la foto: IXBT .

solicitud


SmartThings App es una aplicación que se puede instalar en el sistema operativo móvil principal y con su ayuda: agregue nuevos dispositivos al sistema, controle los que ya se agregaron, establezca reglas de automatización, reciba notificaciones a través de push y SMS, y mucho más. 



Abstracción


En SmartThings, como en muchas otras plataformas de hogares inteligentes, existen las siguientes abstracciones: habitaciones, escenas, escenarios. 

Los dispositivos se agrupan en salas. Simplemente conecte este o aquel gadget a una habitación en la aplicación, y llámelo "Cocina", "Baño", "Pasillo".

Todavía hay escenas (escenas), estas son situaciones: "dormir", "descansar", "trabajar", "mirar una película": cada una de las situaciones se caracteriza por su propio conjunto de estados del dispositivo.


Escenas y salas en la pantalla de la aplicación.

Y finalmente, scripts (Rutinas): reglas de automatización if-then. Por defecto, el programa tiene cuatro escenarios: "Estoy de vuelta", "Buenas noches", "Adiós", "Buenos días". Puede configurar la activación del script de acuerdo con la condición de la mañana, o en el caso de movimiento, o en el caso de abrir la puerta, y así sucesivamente. Un ejemplo no trivial: cuando entro en casa, bloqueo el tráfico de red en la cámara de vigilancia de mi casa para evitar la fuga de mis videos personales. O un ejemplo educativo cruel: desconecte por la fuerza la tableta de la red cuando sean las 11 de la noche para evitar quedarse en Internet en lugar de un sueño saludable.



Además, en el programa SmartThings en el teléfono hay una oportunidad interesante: memorizar acciones típicas. Cuando a menudo usa el teléfono, con el tiempo, comienza a indicarle la mejor manera de configurar escenas basadas en las aplicaciones lanzadas con mayor frecuencia.

Para agregar nuevos dispositivos al sistema, se proporciona un sistema de complemento. El desarrollador puede programar el complemento para su propio dispositivo: la interfaz de usuario dentro de la aplicación SmartThings y la lógica del dispositivo. Esto es esencialmente una aplicación web. Desde el punto de vista del desarrollador, el complemento puede suscribirse a eventos o notificaciones desde el dispositivo, enviarle un mensaje, monitorear el estado de la conexión con el dispositivo. Existe una documentación clara sobre el ciclo de vida del complemento.

El usuario los descarga de la "tienda de complementos" según sea necesario, para no inflar la aplicación en el teléfono.



Pero ahora no haremos ningún complemento, pero lo haremos más simple: agregaremos un dispositivo casero usando solo herramientas de plataforma estándar.

Hacer que su dispositivo sea compatible con SmartThings


Puede que tenga una pregunta: ¿por qué? ¿Cuál es el punto de hacerlo compatible si eres un desarrollador de dispositivos?

  • La principal ventaja es el aumento en el valor del producto debido a la integración automática con todo el ecosistema.
  • Bajo la condición de pasar las pruebas funcionales, puede pegar el logotipo: "Compatible con SmartThings" en la caja del producto, lo que garantiza una instalación y configuración sin problemas del dispositivo en el ecosistema SmartThings.
  • Al igual que con cualquier plataforma, su tarea se facilita: ya no necesita probar y desarrollar, por ejemplo, una interfaz de usuario; puede usar los botones estándar y otros elementos de la interfaz SmartThings.
  • Obtiene relaciones públicas y audiencia de usuarios gracias a la comunidad SmartThings (es viva y activa).

En el manual a continuación conectaremos nuestro propio dispositivo totalmente personalizado.

Lo que se propone hacer


El SmartThings Device SDK (STDK) se presentó recientemente en la Samsung Developer Conference en octubre de 2019. A continuación ofrecemos una traducción del manual para este SDK. Y no solo una traducción: hicimos lo mismo y lo repetimos con nuestras propias manos, por lo que habrá algunos comentarios prácticos que irán más allá del manual original.

Cómo se verá el resultado final como se muestra en el video:


La lámpara RGB está conectada a la plataforma SmartThings a través de WiFi, y usted la controla a través del teléfono. La lámpara en sí se implementa de la manera más barata y fácil: en el chip ESP8266 súper popular. El hierro no es importante: se puede hacer en cualquier microcontrolador, porque el SDK está escrito en C, presentado en el dominio público y se puede portar si se desea. Es poco probable que el ESP entre en producción (para empezar, es más conveniente usar otras interfaces en el Smart Home que WiFi), pero es bastante adecuado para el modelo y la ilustración.

La funcionalidad de la "bombilla inteligente" resultante será la siguiente: control de LED RGB mediante la rueda de colores del teléfono. Además de apagarlo y encenderlo usando el botón.
El proceso de desarrollo se muestra en el diagrama:


El proceso que se muestra no es difícil, algunos de los pasos se pueden revertir, lo que mostraremos en el manual.

Hierro


El manual original muestra todo en el ejemplo de la placa WeMos D1 Mini, esta es una placa de depuración basada en ESP8266 que se puede insertar en la placa de pruebas. En general, no hay nada complicado, es solo un módulo del chip ESP chino que es súper popular entre los fanáticos, soldado por conveniencia a una placa más amplia del tamaño de la placa de pruebas. Por lo tanto, puede hacer todo en cualquier otra placa.


Izquierda: WeMos D1, derecha - Troyka WiFi Shield

Suave


Lo que necesitas para construir el ejemplo:

  • Versión de Ubuntu Linux no inferior a 18.04 (puede crear un ejemplo para Windows y MacOS, pero para ser definitivos elegimos Linux)
  • Android 1.7.39, iOS 1.6.41-343. Play Market SmartThings, Samsung Account. Samsung, .
  • ESP8266 SDK. , , , :

    git clone https://github.com/espressif/ESP8266_RTOS_SDK.git

    SDK IDF_PATH:

    nano ~/.bashrc
    export IDF_PATH="~/git/ESP8266_RTOS_SDK:$IDF_PATH"
  • :

    sudo apt-get install gcc git wget make libncurses-dev flex bison gperf python python-pip python-setuptools python-serial python-cryptography python-future python-pyparsing python-pyelftools

    ():

    sudo mkdir /opt/Espressif
    sudo chown username /opt/Espressif/
    cd /opt/Espressif
    wget https://dl.espressif.com/dl/xtensa-lx106-elf-linux64-1.22.0-100-ge567ec7-5.2.0.tar.gz
    tar -xzf ./xtensa-lx106-elf-linux64-1.22.0-100-ge567ec7-5.2.0.tar.gz
    cd xtensa-lx106-elf
    export PATH="/opt/Espressif/xtensa-lx106-elf/bin:$PATH"

  • Smart Things Device SDK C – . github, , , .

    git clone https://github.com/SmartThingsCommunity/st-device-sdk-c-ref.git
    cd st-device-sdk-c-ref
    ./setup.sh esp8266



Los siguientes dispositivos se considerarán como ejemplos: interruptor inteligente y bombilla inteligente. Comenzaremos con un interruptor inteligente, que es más simple y no requiere periféricos externos.

Paso 1. Registre su dispositivo.


El trabajo comienza en SmartThings Developer Workspace , donde debe iniciar sesión con su cuenta Samsung. Esta cuenta se crea de forma gratuita, y para crearla no es necesario tener un teléfono Samsung. 



En Developer Workspace, se le ofrece inmediatamente crear el primer proyecto. Estamos de acuerdo, después de lo cual, de las dos opciones de proyecto, debe seleccionar Integración de dispositivos.



La elección tendrá tres opciones para integrar el dispositivo: 

  • SmartThings Cloud Connector: para conectar dispositivos que tienen su propia nube que se conectará a la nube SmartThings
  • SmartThings Hub no está disponible para dispositivos ZigBee, Z-Wave, Bluetooth, y al momento de la escritura, ya que el hub aún no se vende oficialmente en Rusia
  • Directly Connected es la opción más fácil para conectarse directamente, sin ningún intermediario. 

Elige la tercera opción. Piense en un nombre de proyecto, por ejemplo, por simplicidad: SmartSwitch.



Agregar un perfil de dispositivo. Hablando en términos de OOP, un perfil de dispositivo es una "clase", y un dispositivo específico es una "instancia de clase".

Necesitamos determinar las características funcionales del dispositivo en términos de capacidad SmartThings. Puede leer sobre las "capacidades" generales del dispositivo en el manual.



Completamos los campos con nuestros valores. Por ejemplo, se puede ingresar el nombre del perfil Test Switch Profile, descripción - cualquier texto, tipo de dispositivo - Switch, ID de proveedor - cualquier texto. El "Tipo de dispositivo" afecta el icono de su dispositivo y la interfaz de usuario. No hay muchos tipos posibles de dispositivos en la lista (aunque hay algunos exóticos, por ejemplo WineCellar, un gabinete para vinos), por lo que si no encuentra el suyo, no se desanime y simplemente elija el más cercano y el más cercano. En la última pantalla (Control del tablero) no puede cambiar nada.

Después de crear el perfil, no olvide hacer clic en el botón "Agregar perfil de dispositivo al proyecto" en la esquina superior derecha.



  • Importante: se requiere la comprobación de estado para todos los dispositivos conectados directamente. Agréguelo al perfil del dispositivo. 
  • « » : Switch, Health Check.

Ahora agregue el perfil de autenticación (perfil de incorporación). En resumen, en este perfil puede personalizar las pantallas que aparecen cuando se conecta e inicia sesión por primera vez. Ingrese cualquier nombre y cualquier número de tres dígitos. Puede omitir las otras dos pantallas por ahora. En la última pantalla, seleccione la opción de confirmación - Confirmar botón - presionando el botón en el dispositivo. En este manual, asumimos que tiene una placa con un botón incorporado. Si de repente no hay un botón (por ejemplo, está utilizando otro módulo ESP), puede elegir la opción sin autenticación: se llama Just Works, es decir, "simplemente funciona" sin ninguna pregunta.

Y de nuevo, por analogía con el ejemplo anterior, no olvide hacer clic en el botón "Agregar incorporación de dispositivo al proyecto".



Todo lo que queda es hacer clic en el botón Implementar. Después de eso, puede ver su dispositivo en la aplicación SmartThings, pero solo en Modo desarrollador. Si Deploy no se presiona y escriben "Agregue un nombre de modelo", esto significa que no especificó una ID de incorporación de dispositivo, desplácese hacia abajo en la página a continuación y hágalo; ingrese cualquier nombre de su elección.



Ahora puede comenzar a probar su dispositivo virtual en su teléfono.

Todo el primer paso se muestra en detalle en el video:


Registrar un dispositivo en la nube


Antes de comenzar a trabajar con el hardware real, debe hacer otra cosa. Después de presionar el botón Implementar, la pantalla se verá diferente: allí aparecerá un nuevo campo de Identidad del dispositivo. 


Para autenticar su dispositivo en la nube SmartThings, debe ingresar su número de serie y clave pública (con el esquema de firma ED25519). Esto es bastante fácil.

Este ejemplo muestra cómo crear un par de claves ED25519 utilizando una herramienta en el SDK. Obtendrá el archivo device_info.json como resultado del programa en la carpeta tools / keygen / linux / output_ {serialNumber}

La versión de Linux de keygen se encuentra en st-iot-device-sdk-c-reference / iot-core / tools / keygen / linux o en st-device-sdk-c / tools / keygen / linux

El número de serie del dispositivo de prueba se generará aleatoriamente en formato STDK + [MNID] + formato alfanumérico (8 caracteres). Puede encontrar su MNID en el perfil de desarrollador en la sección Administrar cuenta. 





Luego, para generar la parte alfanumérica, debe ingresar su MNID (4 caracteres) como parámetro keygen. En el ejemplo a continuación, el MNID es fJ * c.


    cd ~/Workspace/st-iot-device-sdk-c-ref/iot-core/tools/keygen
    ./stdk-keygen -m fJ*c
    Go Device Identity of Developer Workspace.
    
    Serial Number:
    ┌──────────┬──────────┐
    │ STDKfJ*c    │ abed**5c   │
    └──────────┴──────────┘
    
    Public Key:
    waGgyjWIvHhF1LU***FG2hx/4u***ADFHr/ry0j5jbk=

Copie “abed ** 5c” de la emisión de keygen y péguelo en los campos XXXXXXXX en la sección Registro de identidad del dispositivo. Aparecerá una ventana pidiéndole que ingrese la clave pública.


Copie la clave pública de la emisión keygen ("waGgyjWIvHhF1LU *** FG2hx / 4u *** ADFHr / ry0j5jbk =" en este ejemplo) y péguela en el campo "Clave pública del dispositivo".



Paso 2. Firmware del dispositivo


Hable sobre el código que descargará al dispositivo.
Ejemplos de firmware se encuentran en la carpeta st-device-sdk-c-ref / apps / esp8266 / . Nos interesará el ejemplo de st_switch .

  • Descargue onboarding_profile.json en la ventana de descripción general de su dispositivo en la oficina del desarrollador.


  • Copie el archivo descargado onboarding_profile.json en el directorio de su aplicación, en nuestro caso apps / esp8266 / st_switch / main .

    cd ~/Workspace/st-device-sdk-c-ref/apps/esp8266/st_switch/main/
    cp ~/Downloads/onboarding_profile.json .
    

    Ya hay un ejemplo de dicho archivo, simplemente reemplácelo con el tuyo.
  • Del mismo modo, copiar el device_info.json archivo de la {} serialNumber carpeta de herramientas / keygen / Linux / output_ , en la que se encuentra la información específica del dispositivo, en la misma carpeta, reemplazando el archivo existente.

    cd ~/Workspace/st-device-sdk-c-ref/iot-core/tools/keygen/linux/
    cp output_{serialNumber}/device_info.json ~/Workspace/st-device-sdk-c-ref/apps/esp8266/st_switch/main/

    En este archivo, además de las claves y el número de serie, está la línea "firmwareVersion", que puede reemplazarse con la versión de su programa.
  • Ahora ensamble y actualice el programa.

    cd ~/Workspace/st-device-sdk-c-ref
    ./build.sh esp8266 st_switch
    ./build.sh esp8266 st_switch flash
    ./build.sh esp8266 st_switch monitor

    O lo mismo, pero más corto:

    cd ~/Workspace/st-device-sdk-c-ref
    ./build.sh esp8266 st_switch flash monitor


! Si no puede actualizar el programa de ninguna manera, lo más probable es que haya olvidado poner la placa ESP8266 en modo de programación. Esto generalmente se hace presionando un botón en el tablero. Por ejemplo, el módulo Wi-Fi Troyka se puede traducir manteniendo presionado el botón PROG y luego presionando y soltando el botón RESET.

Después de descargar el firmware, no olvide reiniciar la placa.

Paso 3. Conexión y control desde el teléfono


Active el modo desarrollador en la aplicación SmartThings de su teléfono. Cómo hacerlo está escrito en el sitio web oficial, pero es más fácil de explicar con palabras: ingrese la configuración a través del "engranaje" y presione el botón "Detalles de SmartThings" durante 20 segundos. El menú "Modo desarrollador" aparece a continuación.



Nuestro dispositivo debe estar visible en la lista de la aplicación SmartThings: inicie la aplicación, haga clic en el botón más y Agregar dispositivo. Desplácese hasta el final de la lista de proveedores y vea el icono "Mis dispositivos de prueba". Haga clic en él y seleccione su dispositivo.



Además: si ya activó el modo de desarrollador y activó el dispositivo, ¡tendrá un menú emergente que le ofrece agregar este dispositivo! Comienza la

conexión:


administre el dispositivo desde la aplicación SmartThings. 

Al principio, el dispositivo aparece como un punto de acceso, porque aún no conoce la contraseña de su WiFi. Durante el proceso de conexión, especifique la red con la que se debe conectar el dispositivo. Si tiene un punto de acceso oculto, ESP no podrá conectarse a él, así que elija un punto abierto.

El resultado será este:



en este ejemplo ( interruptor st ), usted controla el LED incorporado en el tablero presionando el botón en el tablero. Como puede ver, para este ejemplo ni siquiera necesita periféricos adicionales, solo la placa ESP8266.

También puede encender / apagar el dispositivo con el botón en el panel de control en la aplicación móvil:



y, por supuesto, si presiona el botón físico, el estado de la bombilla en la aplicación también se actualiza.

Ejemplo de luz inteligente


Después de haber hecho el ejemplo de Smart Switch, intentemos complicar un poco las cosas. Habrá un LED RGB, y activaremos / desactivaremos un botón externo, y también seleccionaremos un color a través de la aplicación.

Hierro


El esquema de conexión será simple:

y el diagrama del circuito tampoco duele:



si mira la fuente (ubicada en: st-device-sdk-c-ref / apps / esp8266 / st_lamp), entonces la conexión es la siguiente: puede reasignar las conclusiones según las cuales Es el modelo del tablero que tienes. Tenga en cuenta que hay un sistema de notación (D1, D2 ...) en el tablero y otro en el código, pero esto es fácil de resolver simplemente mirando la documentación de su tablero.

#define GPIO_OUTPUT_NOTIFICATION_LED 2
#define GPIO_INPUT_BUTTON 5
#define GPIO_OUTPUT_COLORLED_R 16
#define GPIO_OUTPUT_COLORLED_G 14
#define GPIO_OUTPUT_COLORLED_B 12
#define GPIO_OUTPUT_COLORLED_0 13 




Parte de software


Según la parte del software, cambiaremos varios pasos:

  • Al agregar capacidades, debe especificar lo siguiente: Interruptor, Nivel de interruptor, Control de color, Verificación de estado. El tipo de dispositivo habrá - Light.
  • Tomamos un ejemplo de firmware de la misma carpeta con ejemplos, se llama st_lamp

La interfaz en la aplicación se



verá así : Cómo se ve en acción - una vez más GIF:



Conclusión


Entonces, tienes un ejemplo de trabajo listo. Verá que la mayor parte del código ya está hecho para usted, todo lo relacionado con la conexión, la autenticación y la interfaz del dispositivo. El ejemplo de SmartThings es valioso porque no está vinculado a ningún dispositivo de hardware, y puede ver y evaluar qué funcionalidad de plataforma se necesita en 2k20 si está desarrollando una Smart Home.


Tatyana Volkova, autora del plan de estudios de seguimiento de Internet de las cosas de Samsung IT Academy, especialista en programas de responsabilidad social corporativa en el Centro de Investigación de Samsung

All Articles