20 de enero de 2019

Smart Home - DIY

DIY: Do It Yourself, Haslo tu mismo.

En este tiempo de asistentes personales como:
  • "Ok Google" - Asistente de Google
  • Siri - Apple
  • Alexa - Amazon
  • Cortana - Microsoft

En este post, se enfocara en el Asistente de Google, para automatizar un hogar se tiene las siguientes opciones:

  1. Compara dispositivos listos, pero no entraría en la clasificación DIY.
  2. Comprar dispositivos "chinos" por AliExpress y re-configurarlos a sus gusto, como los dispositivos "Sonoff".
  3. Construir tu propio dispositivo, con un esp82266, raspberry pi, entre otros.

Entre las opciones 2 y 3, se tiene el inconveniente de la integración con el asistente  de google, que se puede solucionar de las siguientes formas:

Crear tu propia nube y conecta tus dispositivos.


 Para este caso Google proporciona un servicio llamado Firebase con el cual podemos crear nuestra propia nube con conexiones y almacenamiento limitado en su parte de uso gratuita.

Para este caso tenemos el ejemplo de una Lavadora: https://codelabs.developers.google.com/codelabs/smarthome-washer/

Para complementar este ejemplo podemos buscar en internet "firebase realtime database esp8266", y encontramos ejemplos de como conectarnos mediante el API Firebase-Arduino: https://github.com/FirebaseExtended/firebase-arduino

De esta forma tenemos nuestra nube y nuestros dispositivos DIY para  interactuar con el Asistente de Google.


Usar el API Device Actions para extender un asistente personal.


Para este caso se requiere construir tu propio "parlante" (asistente)  y extenderlo con hardware externo y/o conexiones que permitan interactuar con otros dispositivos: https://developers.google.com/assistant/sdk/device-actions-overview

En esta pagina podemos observar el kit inicial: https://www.adafruit.com/product/4080

Hay dos formas de usar el api, en forma de servicio, pero esta requiere un botón para activar el asistente y la otra forma es una librería, pero principalmente depende del hardware donde se implemente: https://developers.google.com/assistant/sdk/overview#features


Usar comandos de voz configurados en el servicio de IFTTT.


 El servicio de IFTTT tiene una integración con google que permite crear comandos que ejecuten acciones denominadas "applet", con estas acciones podemos interactuar con nuestros dispositivos DIY,  y se pueden hacer de tres formas:

Paso previo tener configurado la parte inicial en IFTTT y un dispositivos DIY.
  1. Exponer el dispositivo al internet, abrir el puerto del moden/router y exponer un rest/http, el cual es invocado por IFTTT.
  2. Como la forma anterior, sin abrir el puerto, pero usar un servicio de proxy inverso o VPN inversa para exponer el pc y/o dispositivo. (ejemplo usar: https://ngrok.com/).
  3. La forma mas segura es, conectarse aun servicio de colas MQT, y que este servicio posea integración con IFTTT. (Ejmplo: Adafruit IO).

 Notas y Referencias:

  • Adafruit IO, si usas este servicio por favor usar el hardware que ellos venden.  
  • IFTTT  
  • No confundir Device Actions (Google Assistant SDK) con Actions (Actions on Google) que es el api para los servicios en la nube (Cloud).


8 de octubre de 2018

Implicaciones Legales de una Intrusión WiFi





Bajo la Ley 1273 de 2009, una intrusión a la red WiFi ajena puede estar cometiendo los siguientes delitos en Colombia:

Artículo 269A: Acceso abusivo a un sistema informático. «El que, sin autorización o por fuera de lo acordado, acceda en todo o en parte a un sistema informático protegido o no con una medida de seguridad»…

De acuerdo con el tipo de ataque se puede estar cometiendo:

Artículo 269B: Obstaculización ilegítima de sistema informático o red de telecomunicación.
«El que, sin estar facultado para ello, impida u obstaculice el funcionamiento o el acceso normal a un sistema informático, a los datos informáticos allí contenidos, o a una red de telecomunicaciones»…

La interceptación también es un delito, el dicho que dice “es que la señal ingresa a mi casa”:

Artículo 269C: Interceptación de datos informáticos. «El que, sin orden judicial previa intercepte datos informáticos en su origen, destino o en el interior de un sistema informático, o las emisiones electromagnéticas provenientes de un sistema informático que los transporte»…

Si solo es robo de la señal WiFi para obtener internet serian esos delitos mencionados, pero si la victima es un banco o una entidad del estado se le suma el siguiente articulo:

Artículo 269H: Circunstancias de agravación punitiva: «Las penas imponibles de acuerdo con los artículos descritos en este título, se aumentarán de la mitad a las tres cuartas partes si la conducta se cometiere:»

«1. Sobre redes o sistemas informáticos o de comunicaciones estatales u oficiales o del sector financiero, nacionales o extranjeros.»

La ley colombiana tiene leyes que permiten castigar a un delincuente informático, con solo intentar obtener la clave de la red WiFi del vecino sin su autorización.

Si el delincuente que se introduce furtivamente en la red WiFi del “vecino” con otros intereses a obtener internet gratis, puede aplicar otros delitos.


Notas y Referencias:

18 de julio de 2018

Definición: Akka + Java

Que es Akka, son unas librerías para diseñar sistemas flexibles y escalables, enfocadas en aplicaciones distribuidas usando programación concurrente usando un modelo de actores.

Akka esta escrita en el lenguaje Scala, pero debido a interoperatividad con Java ya que puede funcionar en la misma maquina virtual, se puede usar con el lenguaje Java. 

Akka maneja un modelo de actores, donde cada actor es una entidad que procesa mensajes enviados a este actor o que provienen de otros actores,  usando un modelo de programación asíncrona. Los actores no necesariamente pueden estar en el mismo ejecutable (.jar) pueden estar en otros sistemas y entre estos se pueden comunicar.

Akka tiene unas librerías para el manejo de un cluster, se pueden correr varias instancias del aplicativo y este se encarga de distribuir el trabajo,  adicionalmente incluye el proceso de descubrimiento del cluster (en todos los nodos donde se ejecute al app) y selección del líder. (Akka Cluster Bootstrap).