DIY: Construyendo un Sistema de riego automático con Arduino y Sofia2 Platform

Partiendo de la Arquitectura de Referencia de Sofia2 IoT Platform:

 

Y del modelo de desarrollo de aplicaciones con la Plataforma:

Podemos explicar los pasos a seguir para construir un sistema de riego automático controlado desde Internet vía Sofia2.

Para construir esta solución hemos partido de Jarduino, un sistema de riego controlado por Arduino: http://www.interorganic.com.ar/josx/Jarduino.pdf y de este sistema de riego: http://www.trebol-a.com/2014/06/16/sistema-arduino-para-control-online-de-riego-y-mas/

En este post contaremos a alto nivel los pasos para en post posteriores explicarlo con detalle.

Pasos básicos para el desarrollo:

0. Elijo los dispositivos que compondrán mi solución: en este caso el sensor de humedad del suelo, de temperatura y el Arduino.

Podéis encontrar kits Arduino con un gran número de sensores como estos:

http://www.ebay.es/itm/37-en-1-kit-Arduino-Modulos-de-sensores-compatibles-para-Arduino-UNO-R3-Mega2560-/322019221723?hash=item4af9d760db:g:8eoAAOSwDuJWz6y3

Que incluye un sensor de temperatura y humedad:

O podemos comprar un sensor de humedad como este: http://www.tinydeal.com/es/soil-humidity-moisture-detection-sensor-module-blue-black-p-118297.html

1. Monto y conecto mi dispositivo: conectando los sensores de temperatura y humedad del suelo

2. Desde Sofia2 Control Panel modelo las ontologías (entidades complejas) que representan la información enviada desde el Arduino (Temperatura y Humedad)

Una Entity (Ontología en terminología Sofia2) representa el Modelo de Dominio que maneja un Dispositivo.

En Sofia2 las Ontologías se representan en JSON y pueden representar un modelo básico (como si fuera una tabla) o un modelo complejo con relaciones (como si tuviésemos un conjunto de tablas relacionadas).

Las Entities pueden crearse de diversas formas: visualmente en un diagrama de clases UML, a través de un esquema JSON o XML, campo a campo o a partir de un CSV/XLS.

3. Según el tipo de Gateway elegido y la tecnología que use elegiré una de las APIs de conexión con Sofia2: http://sofia2.com/desarrollador.html#descargas para desarrollar el software que corre en el Arduino.

La representación de este Software+Dispositivo en Sofia2 se denomina ThinKP. Desde el Panel de Control daré de alta este ThinKP y su Token de conexión con la plataforma.

Un ThinKP (en terminología Sofia2 hablamos de KP: Knowledge Processor o de ThinKP) representa a cada uno de los elementos que interactúan con la plataforma, bien publicando, bien consumiendo información.

Un Thing puede representar desde un dispositivo sencillo (un Arduino como en este caso) a un Gateway (una Raspberry, un Smartphone) o un Sistema Empresarial (Backend Java, aplicación web ).

Un Thing puede manejar una o varias Entities (ontologías).

Un ThinKP al ponerse en ejecución crea una instancia de ThinKP.

4. Mientras hago el desarrollo del ThinKP y hago las pruebas de campo la Plataforma ofrece el Simulador de Datos , esta pieza permite desacoplar el desarrollo del software en el dispositivo y el resto de la solución IoT. Puedo estar simulando el envío de datos desde el dispositivo y seguir construyendo.

Podemos verlo en este post.

5. Lo siguiente será definir en la plataforma las reglas que rigen mi sistema, para eso desde el Panel de Control selecciono uno de los motores de reglas de Sofia2 (Motor Scripting, Motor CEP y Motor Node-RED) modelo mis reglas.

En nuestro caso las reglas son estas: Condiciones de Riego: Baja humedad en tierra (habrá que calibrar el sistema) o Temperatura <0ºC (el riego puede utilizarse para derretir heladas)

En el Jarduino el riego lo hace directamente el Arduino, en nuestro caso usaremos el API Arduino para enviar los datos a la plataforma y para suscribirnos a las condiciones de riego.

Típicamente asociado a la ejecución de cada una de estas reglas se genera una instancia de una ontología (por ejemplo ontología RiegoAutomatico con idDevice=XXX), el ThinKP que ejecuta en el Arduino estará suscrito a cambios en esta ontología (vía un SELECT * FROM RiegoAutomatico WHERE idDevice=) y reaccionará a la recepción activando el riesgo

6. Aparte de controlar el riego podemos usar la capacidad de la plataforma a través del módulo Dashboards Sofia2 para crear una visualización que monitorice en tiempo real la evolución de la temperatura y humedad.

  1. Desarrollo visual de indicadores para monitorizar el estado del sistema.

Una evolución de esta solución DIY puede construirse con dispositivos Libelium (por ejemplo este Kit) y con Sofia2 IoT Platform de forma aún más sencilla sin ninguna programación como en este ejemplo:

https://about.sofia2.com/2016/04/04/smart-agriculture-mobile-world-congress-2016/

DIY: Construyendo un Sistema de riego automático con Arduino y Sofia2 Platform

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s