Introduction: OpenHAB on Intel Edison

What is openHAB?

openHAB is a software for integrating different home automation systems and technologies into one single solution that allows over-arching automation rules and that offers uniform user interfaces.

  • This means openHAB is designed to be absolutely vendor-neutral as well as hardware/protocol-agnosticcan
  • run on any device that is capable of running a JVM (Linux, Mac, Windows)
  • lets you integrate an abundance of different home automation technologies into one
  • has a powerful rule engine to fulfill all your automation needs
  • comes with different web-based UIs as well as native UIs for iOS and Android
  • is fully open sourceis maintained by a passionate and growing community
  • is easily extensible to integrate with new systems and devices
  • provides APIs for being integrated in other systems

mas info...

Intel® Edison Board Specs

Hardware: Intel® Atom™ dual-core processor at 500 MHz, 1 GB DDR3 RAM, 4 GB eMMC Flash, Bluetooth* 4.0, Wi-Fi*

Software: Yocto Project

mas info...

Step 1: Introduccion Y Desarrollo

Objetivo:

  • Realizar una pequeña aplicación de la plataforma openHAB para domotica, usando una Intel Edison como servidor.
  • Utilizando el protocolo MQTT enviar y recibir información de los sensores.

Sensores y actuadores :

  • Grove sensor de temperatura
  • Grove relay

Primer paso:

Lo primero que se debe realizar es descargar el runtime de openHAB disponible en:

openHAB-downloads

Step 2: Configuraciones

Items

Dentro del runtime/configurations se encuentra la carpeta de items que es donde se configura los elementos que nuestra aplicación tendrá disponibles, ejemplo

home.items
Group All
Switch mqttsw1 "Switch 1" (all) {mqtt=">[broker:/home/sw/1:command:off:0],>[broker:/home/sw/1:command:on:1]"} Switch mqttsw2 "Switch 2" (all) {mqtt=">[broker:/home/sw/2:command:off:0],>[broker:/home/sw/2:command:on:1]"} Switch mqttsw3 "Switch 3" (all) {mqtt=">[broker:/home/sw/3:command:off:0],>[broker:/home/sw/3:command:on:1]"} Number temp "Temperatura [%.1f °C]" {mqtt="<[broker:/home/temp/state:state:default]"}
DateTime Date "Date [%1$tA, %1$td.%1$tm.%1$tY]" { ntp="" }

lo que nos dice que hay 3 interruptores que envian los datos de on y off (1 y 0) por medio de MQTT, luego esta un elemento tipo numero que recibe un valor desde MQTT que es la temperarura por ultimo esta uno llamado DateTime que toma la fecha del servidor y la muestra.

Sitemap

También dentro de configurations esta el archivo del sitemap que es donde se configura la forma de mostrar los elementos; es la parte visual de la aplicación web, ejemplo:

home.sitemap
sitemap demo label="Home IoT"
{ Frame label="Sala" { Switch item=mqttsw1 label="Lamp 1" Switch item=mqttsw2 label="Lamp 2" Switch item=mqttsw3 label="Lamp 3" Text item=temp } Frame label="Fecha" { Text item=Date } Frame label="CameraIP" icon="video" { Webview url="http://xxx.xxx.x.xx:8080/video" height=8 } }

Step 3: OpenHAB Configuración General

para que openHAB reconozca cada archivo es necesario que tengan el mismo nombre pero la extension es donde se coloca el tipo de archivo como los casos anteriores.

Configuración general

dentro de la carpeta de configurations debe de estar un archivo llamado openhab.cfg de donde tomara la información de ubicación, nombre de los elementos que la aplicación necesitara, ejemplo:

openhab.cfg

#######################################################
##### General configurations #### #######################################################

folder:items=10,items
folder:sitemaps=10,sitemap
folder:rules=10,rules
folder:scripts=10,script
folder:persistence=10,persist

chart:provider=default

mqtt:broker.url=tcp://localhost:1883

Step 4: Sensores Y Actuadores

Sensor de temperatura:

#codigo parcial

import paho.mqtt.client as paho import time import pyupm_grove as grove
sensor_temp = grove.GroveTemp(0)
def on_temp(mosq, obj, msg):
pass
def temp():
mqttclient = paho.Client()
mqttclient.on_publish = on_temp
mqttclient.connect("xxx.xxx.x.xx", 1883, 60)
while True:
message = sensor_temp.value()
mqttclient.publish("/home/temp/state", message)
time.sleep(20)

Actuador:

#codigo parcial

import paho.mqtt.client as paho import pyupm_grove as grove

relay1 = grove.GroveRelay(2)

def on_lamp_1(mosq, obj, msg): if int(msg.payload) == 1: relay1.on() else: relay1.off() print "MQTT lamp_1 %s %s" % (msg.topic, msg.payload)

def lamp_1(): mqttclient = paho.Client() mqttclient.on_message = on_lamp_1 mqttclient.connect("xxx.xxx.x.xx", 1883, 60)

mqttclient.subscribe("/home/sw/1", 0) while mqttclient.loop() == 0: pass

Step 5: Conclusion

El potencial de la plataforma de openHAB es muy alto ya que cuenta con una variedad de items disponibles conexiones con mas servicios y APIs disponibles en internet, ejemplo: bots con telegram, servicios de GPS, control de dispositivos multimedia, bases de datos, etc. en lo que respecta al proyecto mostrado es algo bastante simple que eventual tiene formas de crecer por las facilidades que otorga tanto openHAB como tarjeta de desarrollo Intel Edison.

Opciones de expansión:

  • Realizar una red de sensores y actuadores y distribuirlos en una casa usando módulos ESP8266-XX comunicados por MQTT.
  • cambiar la Intel Edison por una Raspberry pi para aprovechar la salida de vídeo y tener la interfaz gráfica en el mismo dispositivo.