T abajo Fin de G ado
G ado en Ingenie ía de las Tecnologías de
Telecomunicación
In eg ación de OpenHAB y Home Connec en una
aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo
ene gé ico
Dp o. Ingenie ía Telemá ica
Escuela Técnica Supe io de Ingenie ía
Uni e sidad de Se illa
Se illa, 2023
Au o : Belén Ma ía Lozano Ju ado
Tu o : Ma ía Te esa A iza Gómez
ii
iii
T abajo Fin de G ado
G ado en Ingenie ía de las Tecnologías de Telecomunicación
In eg ación de OpenHAB y Home Connec en una
aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo
ene gé ico
Au o :
Belén Ma ía Lozano Ju ado
Doc o a:
Ma ía Te esa A iza Gómez
Depa amen o de Ingenie ía Telemá ica
Escuela Técnica Supe io de Ingenie ía
Uni e sidad de Se illa
Se illa, 2023
i
T abajo Fin de G ado: In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol
domó ico de los elec odomés icos y la es imación de su consumo ene gé ico
Au o :
Belén Ma ía Lozano Ju ado
Tu o :
Ma ía Te esa A iza Gómez
El ibunal nomb ado pa a juzga el P oyec o a iba indicado, compues o po los siguien es miemb os:
P esiden e:
Vocales:
Sec e a io:
Acue dan o o ga le la cali icación de:
Se illa, 2023
El Sec e a io del T ibunal
i
ii
A mi amilia y a mis amigos, po su
apoyo incondicional.
iii
ix
Ag adecimien os
Sin duda, el ins an e más signi ica i o y emo i o en la c eación de es a memo ia se encuen a en es e apa ado.
Quisie a exp esa mi since o ag adecimien o a odas las pe sonas que han con ibuido de mane a signi ica i a
en la ealización de es e p oyec o. Su apoyo, o ien ación y colabo ación han sido undamen ales pa a el éxi o de
es a inicia i a.
En p ime luga , quie o ag adece de co azón a mi u o a Ma ía Te esa A iza Gómez su dedicación
inqueb an able, su o ien ación expe a y sus aliosos consejos a lo la go de odo es e p oyec o. Su comp omiso
ha sido undamen al pa a la ealización exi osa de es e p oyec o.
No puedo deja de exp esa mi p o unda g a i ud hacia mis pad es, he mano y abuela, así como a oda mi amilia,
cuyo apoyo incondicional ha sido mi oca du an e odo es e p oceso. Sus palab as de alien o, comp ensión y
amo han sido mi uen e de mo i ación cons an e. Ag adezco p o undamen e su paciencia y comp ensión en los
momen os en que mi a ención es aba cen ada en es e p oyec o. Su espaldo ha sido esencial en es a a esía.
Mi más since o ag adecimien o a mi compañe o de ida, Alejand o, po se mi pun o de apoyo día as día.
G acias po es a siemp e ahí, escucha me, ayuda me y mo i a me incluso en los momen os más complicados.
G acias a mi que ido amigo Juanjo, po se uno de mis apoyos más impo an es a lo la go de es a e apa
uni e si a ia. Te ag adezco de co azón odos us consejos, explicaciones y u disposición pa a ayuda en odo
momen o. G acias a mi amiga Ca men, po inspi a me y aconseja me en el diseño g á ico de mi aplicación
mó il. Y a odos mis amigos, g acias po ues o apoyo y con ianza.
Ex iendo mi g a i ud a odos mis p o eso es y compañe os po habe me ayudado du an e la ca e a.
G acias a odos mis se es que idos que ya no es án en e noso os, po que sé que desde allá donde es éis me
habéis mandado oda ues a ue za y apoyo.
Belén Ma ía Lozano Ju ado
Se illa, 2023
x i
3.1.3 Simulado de Home Connec 18
3.1.4 API REST de Home Connec 20
3.2 OpenHAB 21
3.2.1 De inición de OpenHAB 21
3.2.2 Con igu ación de OpenHAB 22
3.2.3 API Explo e de OpenHAB 35
3.3 Ven ajas de in eg a OpenHAB y Home Connec 38
4 Desa ollo del p oyec o 39
4.1 Aplicación And oid In elliHome 39
4.1.1 Diseño de la In e az de Usua io 39
4.1.2 Conexión de la aplicación mó il con el se ido de OpenHAB 51
4.1.3 Conexión de la aplicación mó il con el se ido REST de consumo 53
4.2 Se icio REST de consumo 54
4.2.1 Se ido REST de consumo 54
4.2.2 Sp ing Secu i y 59
4.2.3 Base de da os 66
4.3 Es imación del consumo ene gé ico 69
4.3.1 T amos de consumo ene gé ico 69
4.3.2 C eación y con igu ación de eglas de OpenHAB 69
5 Conclusiones y líneas u u as 79
5.1 Conclusiones pe sonales 79
5.2 Conclusiones écnicas 79
5.3 Líneas u u as 80
5.3.1 Diseño 80
5.3.2 Funcionalidades 80
5.3.3 Segu idad 80
5.3.4 In aes uc u a y despliegue 81
Anexo A: Ins alación y Con igu ación del se ido de OpenHAB en Ubun u 83
A) Ins alación del se ido de OpenHAB 83
B) A anque y pa ada del se ido de OpenHAB 84
Anexo B: Ins alación y Despliegue del se ido REST de Consumo en Ubun u 87
A) Ins alación del se ido REST de Consumo 87
B) Inicialización de la base de da os 87
C) Despliegue del se ido REST de Consumo 87
Re e encias 89
x ii
ÍNDICE DE TABLAS
Tabla 1. I ems de cada elec odomés ico 35
Tabla 2. Endpoin s u ilizados en OpenHAB 36
Tabla 3. Endpoin s del se icio Consumo 55
Tabla 4. Mé odos Consumo Con olle 57
x iii
xix
ÍNDICE DE FIGURAS
Figu a 1-1. A qui ec u a 4
Figu a 2-1. Po á il Dell Inspi on 15 5510 7
Figu a 2-2. And oid S udio 8
Figu a 2-3. Emulado Pixel 4 8
Figu a 2-4. Logo OpenHAB 9
Figu a 2-5. Logo Home Connec 9
Figu a 2-6. Simulado de elec odomés icos Home Connec 9
Figu a 2-7. Ubun u 20.04 10
Figu a 2-8. Mozilla Fi e ox 10
Figu a 2-9. Sp ing 10
Figu a 2-10. Ma en 10
Figu a 2-11. Pos g eSQL 11
Figu a 2-12. Figma 11
Figu a 2-13. RESTClien 11
Figu a 2-14. Visual S udio Code 12
Figu a 2-15. Gi Hub 12
Figu a 2-16. Wi esha k 12
Figu a 2-17. Sp ing Secu i y 13
Figu a 3-1. Logo Home Connec 15
Figu a 3-2. Regis o usua io Home Connec 16
Figu a 3-3. Regis o app Home Connec 16
Figu a 3-4. Menú aplicaciones Home Connec 17
Figu a 3-5. Da os bellozAPP Home Connec 18
Figu a 3-6. Simulado ca e e a 19
Figu a 3-7. Logo de OpenHAB 21
Figu a 3-8. Regis o OpenHAB 22
Figu a 3-9. Menú de inicio OpenHAB 23
Figu a 3-10. Ajus es OpenHAB 24
Figu a 3-11. Binding HomeConnec 24
Figu a 3-12. Añadi Thing 25
Figu a 3-13. Elegi Binding 25
Figu a 3-14. Elegi Home Connec API 26
Figu a 3-15. New Home Connec API 26
Figu a 3-16. Home Connec B idge 27
xx
Figu a 3-17. Ing esa c edenciales Home Connec 27
Figu a 3-18. Scopes Home Connec 28
Figu a 3-19. Au o ización exi osa b idge 28
Figu a 3-20. Añadi Thing manualmen e 29
Figu a 3-21. New Co ee Machine 30
Figu a 3-22. Scan new hings 30
Figu a 3-23. Con igu ación ca e e a 31
Figu a 3-24. Things Home Connec 31
Figu a 3-25. Channels ca e e a 32
Figu a 3-26. Channel po encia ca e e a 32
Figu a 3-27. New i em Po encia 33
Figu a 3-28. Endpoin s API REST OpenHAB 36
Figu a 3-29. Pe ición GET API Explo e OpenHAB 37
Figu a 3-30. Respues a del se ido a la pe ición GET 37
Figu a 4-1. Diseño ca e e a Figma 40
Figu a 4-2. Pan alla Login 41
Figu a 4-3. Pan alla Habi aciones 42
Figu a 4-4. Añadi habi ación 43
Figu a 4-5. Edi a o elimina habi ación 44
Figu a 4-6. Edi a habi ación 44
Figu a 4-7. Elimina habi ación 44
Figu a 4-8. Pan alla Cocina 44
Figu a 4-9. Pan alla Ca e e a 45
Figu a 4-10. Pan alla F igo í ico 46
Figu a 4-11. Pan alla Ho no 47
Figu a 4-12. Pan alla La a ajillas 48
Figu a 4-13. Pan alla La ade o 48
Figu a 4-14. Pan alla La ado a 49
Figu a 4-15. Pan alla Secado a 50
Figu a 4-16. Pan alla Consumo 51
Figu a 4-17. Consumo il ado 51
Figu a 4-18. Diag ama de secuencia comunicación APP, OpenHAB y Home Connec 52
Figu a 4-19. Diag ama de secuencia comunicación APP, se ido de consumo y BBDD 53
Figu a 4-20. Diag ama de secuencia inicio de sesión 62
Figu a 4-21. Diag ama de secuencia consul a consumo 63
Figu a 4-22. Pe ición /login co ec a 64
Figu a 4-23. Pe ición /login inco ec a 64
Figu a 4-24. Pe ición de c edenciales 65
Figu a 4-25. Respues a co ec a se ido 65
xxi
Figu a 4-26. C ea nue a ule OpenHAB 70
Figu a 4-27. Con igu ación ule OpenHAB 71
Figu a 5-1. Ba a de na egación 80
xxii
xxiii
No ación y ac ónimos
REST
API
SQL
HD
SSD
XML
RAM
HTTP
APT
T ans e encia de Es ado Rep esen acional
In e az de P og amación de Aplicaciones
Lenguaje de Consul a Es uc u ado
Al a De inición
Unidad de Es ado Sólido
Lenguaje de Ma cado Ex ensible
Memo ia de Acceso Alea o io
P o ocolo de T ans e encia de Hipe ex o
He amien a A anzada de Ges ión de Paque es
JVM
TCP
IP
URL
MVC
BBDD
IoT
Máquina Vi ual de Ja a
P o ocolo de Con ol de T ansmisión
P o ocolo de In e ne
Localizado Uni o me de Recu sos
Modelo Vis a Con olado
Base de Da os
In e ne de las Cosas
xxi
1
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
1 INTRODUCCIÓN
1.1 Mo i ación
El p esen e p oyec o su ge de la c ecien e impo ancia de la au oma ización del hoga y la necesidad de p omo e
la e iciencia ene gé ica en nues a sociedad ac ual. Conscien es de la ele ancia de es e ema, es e T abajo de
Fin de G ado se en oca en el desa ollo de una aplicación mode na y p ác ica pa a disposi i os And oid, que
ap o eche la in e ope abilidad y lexibilidad de OpenHAB y la inno ado a ecnología de Home Connec .
El obje i o p incipal de es e p oyec o es p opo ciona a los usua ios una solución in eg al y p ác ica pa a
con ola sus disposi i os del hoga a dis ancia y moni o ea el consumo de los mismos desde la comodidad de
sus disposi i os mó iles. Es a aplicación no solo mejo a á la calidad de ida de los usua ios al o ece les un
con ol cen alizado de sus elec odomés icos, sino que ambién p omo e á la e iciencia ene gé ica al pe mi i
un seguimien o de allado del consumo de ene gía de cada disposi i o, pe mi iendo al usua io op imiza su
consumo y educi cos os. Es e úl imo aspec o adquie e una ele ancia aún mayo en el con ex o ac ual de
in lación que supone gas os ele ados al consumido .
Además, es a in es igación ep esen a una opo unidad única pa a explo a , ap ende y aplica ecnologías de
angua dia, como el desa ollo de se icios REST y la in eg ación de pla a o mas como OpenHAB y Home
Connec . A ni el académico, es e p oyec o desempeña á un papel undamen al en mi c ecimien o pe sonal,
pe mi iéndome adqui i y mejo a mis habilidades en á eas cla e como la au oma ización del hoga , el diseño
de aplicaciones mó iles y la ges ión del consumo ene gé ico.
Al abo da es a emá ica, se espe a con ibui al conocimien o exis en e y o ece soluciones p ác icas que
bene icien an o a los usua ios inales como al medio ambien e. Es e p oyec o ep esen a una opo unidad pa a
usiona la inno ación ecnológica con la p eocupación po la sos enibilidad, es ableciendo un p eceden e pa a
u u as in es igaciones y mejo as en el campo de la au oma ización del hoga .
1.2 Obje i os
En es a sección, se p esen an los obje i os que se han es ablecido pa a el desa ollo de es e p oyec o:
• Realiza una in es igación p o unda sob e las ecnologías de Home Connec y OpenHAB,
comp endiendo sus ca ac e ís icas, capacidades y equisi os de in eg ación.
• Desa olla una aplicación pa a disposi i os And oid que pe mi a a los usua ios con ola y moni o ea
sus elec odomés icos de o ma emo a.
• Implemen a un se icio REST que pe mi a lle a un seguimien o del consumo de ene gía de cada
elec odomés ico y mos a dicha in o mación en la aplicación.
El éxi o es la suma de pequeños es ue zos epe idos día as día.
- Robe Collie -
8
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
2.2 Recu sos So wa e
2.2.1 And oid S udio
And oid S udio es un en o no de desa ollo in eg ado (IDE) ampliamen e u ilizado pa a c ea aplicaciones
mó iles pa a disposi i os And oid. P opo ciona he amien as in ui i as y po en es que acili an la esc i u a de
código, la depu ación, la c eación de in e aces de usua io y la ges ión de p oyec os, lo que pe mi e a los
desa ollado es c ea aplicaciones de al a calidad y op imizadas pa a la pla a o ma And oid. [5]
2.2.2 Emulado del Google Pixel 4
And oid S udio o ece di e sos emulado es y el elegido pa a es e p oyec o ha sido el Google Pixel 4 API 31.
Es e emulado eplica las ca ac e ís icas ha dwa e y so wa e del disposi i o eal, y pe mi e p oba y depu a las
aplicaciones desa olladas en el en o no de And oid S udio de mane a ácil e in ui i a.
Figu a 2-3. Emulado Pixel 4
Figu a 2-2. And oid S udio
9
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
2.2.3 OpenHAB
OpenHAB es un sis ema de au oma ización del hoga de código abie o esc i o en Ja a. [6]
2.2.4 Binding de Home Connec
Es un componen e que pe mi e la in eg ación y comunicación en e el sis ema de au oma ización del hoga
OpenHAB y los disposi i os conec ados a a és de la pla a o ma Home Connec , pe mi iendo con ola y
moni o ea los elec odomés icos de mane a cen alizada. [7]
2.2.5 Simulado de elec odomés icos de Home Connec
Pa a pode p oba la comunicación en e la aplicación mó il y los elec odomés icos que sopo an la ecnología
Home Connec , se ha hecho uso del simulado de elec odomés icos que p opo ciona Home Connec .
Conc e amen e, dispone de una ca e e a, un igo í ico, una la ado a, una secado a, un la a ajillas y un ho no,
como podemos e en la igu a 2-6. [8]
Figu a 2-4. Logo OpenHAB
Figu a 2-5. Logo Home Connec
Figu a 2-6. Simulado de elec odomés icos Home Connec
10
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
2.2.6 Ubun u
El sis ema ope a i o elegido pa a el desa ollo de la aplicación mó il, la ejecución en local del se ido
pe sonalizado de OpenHAB y el despliegue del se ido REST pa a el cálculo del consumo de los
elec odomés icos, ha sido Ubun u 20.04.
2.2.7 Mozilla Fi e ox
Es e ha sido el na egado elegido pa a pode isualiza el simulado de Home Connec y pa a pode accede al
se ido de OpenHAB y con igu a lo.
2.2.8 Sp ing
Sp ing es un en o no de desa ollo de aplicaciones Ja a que p opo ciona un conjun o de he amien as y
uncionalidades pa a cons ui , en e o as cosas, se icios REST ul de mane a e icien e y escalable. [9]
2.2.9 Ma en
Ma en es una he amien a de ges ión de p oyec os que acili a la cons ucción, ges ión de dependencias y
compilación de aplicaciones Ja a de mane a e icien e. Es á basado en un o ma o XML. [10]
Figu a 2-7. Ubun u 20.04
Figu a 2-8. Mozilla
Fi e ox
Figu a 2-9. Sp ing
Figu a 2-10. Ma en
11
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
2.2.10 Pos g eSQL
Pos g eSQL es un sis ema de ges ión de bases de da os elacional de código abie o y obus o que o ece un al o
ni el de uncionalidad y capacidad de adap ación pa a el almacenamien o y manipulación de da os. [11]
2.2.11 Figma
Figma es una he amien a de diseño colabo a i o basada en la nube que pe mi e a los equipos c ea , p o o ipa
y compa i diseños de in e aces de usua io de mane a e icien e. [12]
2.2.12 RESTClien
Es una he amien a que pe mi e ealiza pe iciones HTTP y p oba se icios REST di ec amen e desde el
na egado , acili ando su desa ollo y depu ación. [13]
Figu a 2-11. Pos g eSQL
Figu a 2-12. Figma
Figu a 2-13. RESTClien
12
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
2.2.13 Visual S udio Code
Visual S udio Code, a menudo llamado VS Code, es un edi o de código g a ui o y lige o desa ollado po
Mic oso . Es á diseñado pa a di e sos lenguajes de p og amación y o ece ca ac e ís icas como esal ado de
sin axis, au ocomple ado de código in eligen e, depu ación, in eg ación de con ol de e siones y una amplia
gama de ex ensiones. [14]
2.2.14 Gi Hub
Gi Hub es una pla a o ma web que pe mi e a los desa ollado es ges iona , espalda y colabo a en p oyec os
de so wa e a a és de sis emas de con ol de e siones. Además de su u ilidad pa a p oyec os colabo a i os,
ambién es alioso pa a su uso de o ma indi idual, b indándoles un espacio pa a man ene un his o ial de
e siones, explo a y espalda su código de mane a e icien e. [15]
2.2.15 Wi esha k
Wi esha k es una he amien a de análisis de ed de código abie o que pe mi e cap u a y examina el á ico de
da os en una ed. P opo ciona in o mación de allada sob e los paque es de da os, pe mi iendo a los
adminis ado es de ed y desa ollado es diagnos ica p oblemas, analiza p o ocolos y supe isa la ac i idad
de la ed en iempo eal. [16]
Figu a 2-14. Visual S udio Code
Figu a 2-15. Gi Hub
Figu a 2-16. Wi esha k
13
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
2.2.16 Sp ing Secu i y
Sp ing Secu i y es un ma co de segu idad al amen e pe sonalizable pa a aplicaciones Ja a. P opo ciona
he amien as pa a au en ica y au o iza usua ios, p o ege ecu sos y ges iona sesiones. Con ca ac e ís icas
como au en icación de usua ios, con ol de acceso y p o ección con a amenazas de segu idad, Sp ing Secu i y
pe mi e a los desa ollado es o alece la segu idad de sus aplicaciones de mane a e ec i a. [17]
Figu a 2-17. Sp ing Secu i y
14
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
15
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
3 ESTADO DEL ARTE
En es e capí ulo, se indica á la de inición, la con igu ación y o as ca ac e ís icas de las ecnologías Home
Connec y OpenHab. Además, se expond án las en ajas de in eg a OpenHAB y Home Connec .
3.1 Home Connec
3.1.1 De inición de Home Connec
Home Connec es una ecnología que pe mi e conec a y con ola elec odomés icos in eligen es de o ma
emo a a a és de una aplicación mó il o un asis en e de oz. Con Home Connec , se puede accede a unciones
especí icas de cada apa a o, ecibi no i icaciones, consul a su es ado, ob ene consejos y ece as pe sonalizadas,
en e o as uncionalidades. Las ma cas de elec odomés icos que es án asociadas a Home Connec son: Bosch,
Siemens, Gaggenau, Ne y Balay.
Po o o lado, Home Connec o ece su p opia aplicación mó il pa a And oid y iOS y, además, lo más in e esan e
es que o ece una API REST que pe mi e a los desa ollado es c ea aplicaciones y se icios inno ado es que
se in eg en con los elec odomés icos conec ados. La API REST de Home Connec se basa en los p incipios de
a qui ec u a REST ul y u iliza el o ma o JSON pa a el in e cambio de da os.
Pa a acili a el uso de la API, Home Connec p opo ciona un po al del desa ollado donde se puede encon a
documen ación, ejemplos de código, guías de inicio ápido y un simulado de elec odomés icos. El po al del
desa ollado ambién pe mi e ges iona las c edenciales de acceso, las susc ipciones y el sopo e écnico.
3.1.2 Regis o y con igu ación de Home Connec
En es a sección, explo a emos de alladamen e los pasos eque idos pa a con igu a nues a cuen a en la web del
desa ollado de Home Connec , pe mi iéndonos ap o echa al máximo es a ecnología y lle a a cabo un con ol
e icien e de nues os elec odomés icos.
1. Lo p ime o que end emos que hace es egis a nos en el po al del desa ollado [18] y ellena
nues os da os pe sonales como se puede obse a en la igu a 3-2.
Figu a 3-1. Logo Home Connec
16
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
Figu a 3-2. Regis o usua io Home Connec
2. Una ez egis ada nues a cuen a, nos di igimos a la pes aña Applica ions [19] y egis amos una nue a
aplicación. En la igu a 3-3, podemos obse a cómo hab ía que con igu a los di e en es campos pa a
que odo uncione de o ma óp ima. Es de especial impo ancia que en el apa ado “Home Connec Use
Accoun o Tes ing” indiquemos el mismo usua io que hemos con igu ado en el paso 1 y, en “Redi ec
URI”, hay que indica la IP y pue o donde se encuen e co iendo el se ido de OpenHAB seguido,
po ejemplo, de “/homeconnec ”.
Figu a 3-3. Regis o app Home Connec
17
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
3. Una ez egis ada la aplicación, si odo lo hemos ealizado co ec amen e, nos debe ía sali algo simila
a la igu a 3-4. A la izquie da, enemos un ID de clien e y dos enlaces hacia el clien e API Web que
o ece Home Connec , pa a amilia iza nos con los endpoin s
3
de su API REST. Y, a la de echa,
enemos los da os de la aplicación que hemos c eado en el paso 2.
Figu a 3-4. Menú aplicaciones Home Connec
4. Si hacemos clic en “De ails” pod emos e la cla e sec e a del clien e y el es o de los da os que hemos
ellenado en el egis o de la aplicación. Es os da os se án de c ucial impo ancia pa a asocia nues a
aplicación Home Connec con OpenHAB. En la igu a 3-5, enemos los da os de nues a aplicación
Home Connec i ulada “bellozAPP”.
3
URLs especí icas de un se icio web o API a las cuales se puede accede pa a ealiza solici udes y ob ene espues as de da os o ealiza
acciones especí icas.
24
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
5. Iniciamos sesión con las c edenciales que in odujimos en el paso 1 y ya nos sald án los ajus es donde
pod emos con igu a el se ido a nues o gus o, como podemos e en la igu a 3-10.
De es a mane a, ya end íamos con igu ado OpenHAB lis o pa a añadi odos los elemen os que que amos en
nues a casa i ual.
3.2.2.2 Con igu ación binding Home Connec
Lo p ime o que ha emos pa a comenza la con igu ación de nues o se ido de OpenHAB se á ins ala el
binding de Home Connec . Pa a ello, en los ajus es (Se ings) na egamos has a el apa ado Add-ons y hacemos
clic al apa ado Bindings. Una ez ahí, buscamos HomeConnec Binding y hacemos clic en ins ala ( e igu a
3-11).
A con inuación, p ocede emos a la con igu ación del binding siguiendo el manual de OpenHAB dedicado al
binding de Home Connec [24]:
Figu a 3-11. Binding HomeConnec
Figu a 3-10. Ajus es OpenHAB
25
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
1. Nos amos al apa ado Things de la in e az web de OpenHAB y le damos al bo ón de añadi ( e igu a
3-12).
2. Seleccionamos el binding de Home Connec ( e igu a 3-13).
Figu a 3-13. Elegi Binding
Figu a 3-12. Añadi Thing
26
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
3. Hacemos clic en Home Connec API pa a con igu a el binding ( e igu a 3-14).
4. Rellenamos los da os de Clien ID y Clien Sec e con las c edenciales p opo cionadas po Home
Connec pa a nues a aplicación ( igu a 3-5, apa ado 3.1.2) y luego hacemos clic en Show ad anced
pa a selecciona la opción del simulado (ya que no enemos disposi i os ísicos que dispongan de la
ecnología Home Connec pa a hace nues as p uebas). Po úl imo, hacemos clic en el bo ón C ea e
Thing. Podemos e en la igu a 3-15 cómo debe queda es a con igu ación.
Figu a 3-15. New Home Connec API
Figu a 3-14. Elegi Home Connec API
27
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
5. A con inuación, ing esa emos en el na egado es a URL h p://127.0.0.1:8080/homeconnec pa a
ob ene la au o ización po pa e de la API de Home Connec y hacemos clic en Au ho ize B idge ( igu a
3-16).
6. Seguidamen e, nos edi ecciona a una página de Home Connec donde debemos ing esa nues as
c edenciales pa a ob ene el oken de au o ización a la API REST de Home Connec ( e igu a 3-17).
7. Al hace clic en Login nos edi ecciona a o a página pa a acep a un conjun o de pe misos que
de e minan qué acciones y da os puedes accede y manipula en los disposi i os. Los podemos obse a
en la igu a 3-18.
Figu a 3-16. Home Connec B idge
Figu a 3-17. Ing esa c edenciales Home Connec
28
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
8. Si odo ha salido co ec amen e debe ía sali una pan alla simila a la de la igu a 3-19.
De es a mane a, ya end íamos co ec amen e con igu ado nues o binding de Home Connec en OpenHAB.
Figu a 3-18. Scopes Home Connec
Figu a 3-19. Au o ización exi osa b idge
29
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
3.2.2.3 Con igu ación de los elec odomés icos del binding de Home Connec
Una ez con igu ado nues o binding de Home Connec , es el momen o de incula al mismo nues os
disposi i os del simulado pa a pode con ola los co ec amen e desde nues a aplicación mó il. Pa a ello, es
necesa io c ea es os disposi i os ( hings) y, pos e io men e, asocia los median e canales (channels) a los
di e en es elemen os (i ems) de los elec odomés icos.
3.2.2.3.1 C eació n de Things del binding Hóme Cónnec
Pa a la c eación de los disposi i os Home Connec en OpenHAB, segui emos los siguien es pasos:
1. Hacemos clic en añadi un nue o Thing de igual mane a que en la igu a 3-12 del apa ado an e io .
Seguidamen e, hacemos clic en el binding de Home Connec y, a con inuación, enemos 2 opciones:
me e manualmen e la con igu ación de cada disposi i o o hace clic en el bo ón Scan pa a que de ec e
los disposi i os compa ibles que se encuen en conec ados a la misma ed que el se ido de OpenHAB.
2. Pa a hace lo manualmen e, hacemos clic en el ipo de disposi i o que que emos añadi ( igu a 3-20).
Po ejemplo, si seleccionamos la ca e e a (Co ee Machine), hab ía que ellena los da os que apa ecen
en la igu a 3-21.
Figu a 3-20. Añadi Thing manualmen e
30
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
3. En cambio, si hacemos clic en el bo ón Scan es mucho más sencillo, ya que se ellenan au omá icamen e
es os da os ( e igu a 3-22).
Hacemos clic en Add All y ya se nos añaden au omá icamen e odos los disposi i os conec ados a
nues a ed.
Figu a 3-21. New Co ee Machine
Figu a 3-22. Scan new hings
31
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
4. A con inuación, un paso opcional es modi ica el nomb e de es os disposi i os pa a que sea más legible
y además añadi la zona de la casa en la que se encuen an, ellenando pa a ello el campo Loca ion ( e
igu a 3-23).
5. De es a mane a, ya end íamos nues os 6 disposi i os disponibles en el simulado de Home Connec
inculados a OpenHAB, como podemos comp oba en la igu a 3-24.
Figu a 3-24. Things Home Connec
Figu a 3-23. Con igu ación ca e e a
32
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
3.2.2.3.2 C eació n de I ems y inculació n de Channels del binding Hóme Cónnec
Una ez que se han es ablecido los 6 disposi i os del simulado de Home Connec en el en o no de OpenHAB,
el siguien e paso cla e es la c eación de elemen os (i ems) que ac ua án como in e media ios pa a ges iona la
in e acción en e la aplicación mó il y los disposi i os. En es e apa ado, explo a emos el p oceso de
con igu ación de elemen os y la o ma en que se es ablece la conexión uncional en e los disposi i os ( hings)
y los elemen os (i ems) a a és de canales (channels), acili ando así un con ol cohe en e y e icien e de los
elec odomés icos median e la pla a o ma OpenHAB.
Pa a ello, segui emos los siguien es pasos:
1. Pa a añadi los i ems co espondien es a cada elec odomés ico, nos amos a la lis a de hings y hacemos
clic en el elec odomés ico al que que amos añadi le sus i ems. Seguidamen e, le damos a la pes aña
Channels donde e emos un lis ado con odos los canales disponibles. En la igu a 3-25 podemos
obse a los channels co espondien es a la ca e e a.
2. Hacemos clic po ejemplo en el p ime canal “Po encia” y emos que sale una pes aña donde pone “Add
Link o I em…” ( e igu a 3-26).
Figu a 3-25. Channels ca e e a
Figu a 3-26. Channel po encia ca e e a
33
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
3. Le damos a “Add Link o I em…” y nos pe mi e 2 opciones: usa un I em exis en e o c ea un nue o
I em, y incula lo al canal. Elegimos la segunda opción, dejamos los alo es po de ec o y hacemos clic
en el bo ón Link. Así ya end íamos c eado el nue o i em y inculado a su canal co espondien e ( e
igu a 3-27).
4. De la misma mane a, epe imos es e p ocedimien o con el es o de los canales e i ems que que amos
con igu a en cada elec odomés ico.
A con inuación, en la abla 1 pod emos e los di e en es I ems asociados a sus Things necesa ios en nues o
p oyec o:
Figu a 3-27. New i em Po encia
40
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
4. Implemen ación de las in e acciones y e oalimen ación con el usua io: po úl imo, se ha lle ado
a cabo la implemen ación de los de alles que hacen mucho más isual, a ac i a y cómoda a nues a
aplicación. Se ha hecho uso de algunos widge s como PopupMenu pa a lanza desplegables con las
di e en es opciones que puede selecciona el usua io o cuad os de diálogo pa a in e ac ua con el usua io
y solici a que se ellenen cie os da os o ac ua a modo de a iso, en e o as muchas uncionalidades.
A con inuación, p ocede emos a p esen a y de alla las dis in as pan allas que con o man la aplicación mó il:
Figu a 4-1. Diseño ca e e a Figma
41
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
4.1.1.1 Pan alla Login
Cada ez que el usua io inicie la aplicación In elliHome es a se á la pan alla de bien enida, donde se in i a á al
usua io a in oduci sus c edenciales pa a pode accede a su casa i ual, como podemos e en la igu a 4-2.
Cuando el usua io haga clic en INICIAR SESIÓN as habe ellenado sus da os, se en ia á una pe ición POST
al endpoin /login del se ido de consumo, donde se comp oba á si las c edenciales son co ec as o inco ec as
y se le da á acceso o no en consecuencia al usua io.
Figu a 4-2. Pan alla Login
42
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
4.1.1.2 Pan alla Habi aciones
Si el usua io ha in oducido de o ma co ec a las c edenciales, se ca ga á la pan alla “Habi aciones”, donde se
lis a án au omá icamen e odas las habi aciones disponibles en la abla “habi aciones” de la base de da os SQLi e
de la aplicación ( e igu a 4-3). Pa a log a es o, es undamen al que el usua io haya p e iamen e c eado al
menos una habi ación siguiendo las indicaciones p opo cionadas en la uncionalidad “Añadi nue a habi ación”,
explicada unas líneas más abajo. La aplicación u iliza una consul a pa a ecupe a odas las habi aciones
almacenadas en la base de da os y las p esen a en la pan alla de o ma o denada. Cada habi ación se mues a con
su nomb e y la imagen seleccionada po el usua io como icono. Es o p opo ciona al usua io una is a ápida y
o ganizada de odas las habi aciones en su hoga .
Es a pan alla iene di e sas uncionalidades:
1. Ce a sesión: en la esquina supe io de echa, al hace clic en el ex o "Ce a sesión", se emos
edi igidos a la pan alla de Login, al mismo iempo que odos los da os asociados a la sesión que se
acaba de ce a se án eliminados.
2. Añadi nue a habi ación: si hacemos clic en el bo ón ama illo con el símbolo “+”, nos sald á un
cuad o de diálogo como podemos e en la igu a 4-4. Es e cuad o nos pedi á que inse emos un nomb e
a la nue a habi ación así como que seleccionemos de la gale ía una imagen pa a pone le de icono a es a
nue a habi ación. Cuando hagamos clic en AÑADIR, se inse a á es a nue a habi ación en la base de
da os y ya apa ece á lis ada en e las demás habi aciones.
No a: es impo an e des aca que el nomb e asignado a la habi ación coincida con el a ibu o "Loca ion"
de los disposi i os en OpenHAB. Es o pe mi i á que los elec odomés icos ubicados en dicha habi ación
se mues en lis ados en la pan alla co espondien e a la misma.
Figu a 4-3. Pan alla Habi aciones
43
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
3. Edi a habi ación: si man enemos pulsada una de las habi aciones que apa ecen lis adas, nos apa ece á
un menú con dos opciones como podemos e en la igu a 4-5. Si hacemos clic en “Edi a ” nos
apa ece á un cuad o de dialogo simila al de “Añadi habi ación” y pod emos cambia le el nomb e y la
imagen a la habi ación que hemos pulsado como se puede ap ecia en la igu a 4-6. Cuando hagamos
clic en ACEPTAR, se modi ica á es a habi ación en la base de da os y ya apa ece á el cambio lis ado
en e las demás habi aciones.
4. Elimina habi ación: si man enemos pulsada una de las habi aciones que apa ecen lis adas, nos
apa ece á un menú con dos opciones como podemos e en la igu a 4-5. Si hacemos clic en “Elimina ”
nos apa ece á un cuad o de como se puede ap ecia en la igu a 4-7, p egun ándonos si es amos segu os
de que e elimina la habi ación que hemos pulsado. Cuando hagamos clic en ACEPTAR, se elimina á
es a habi ación de la base de da os y ya no apa ece á en el lis ado de las habi aciones.
Figu a 4-4. Añadi habi ación
44
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
4.1.1.3 Pan alla Elec odomés icos: Cocina
Cuando hacemos clic en “Cocina” en la pan alla “Habi aciones”, nos edi igimos a la pan alla
“Elec odomés icos”. Al inicia es a ac i idad, se hace una pe ición GET al endpoin / hings del se ido de
OpenHAB de mane a que se ca gan en es a pan alla los elec odomés icos cuyo a ibu o Loca ion enga el alo
Cocina. En nues o caso, los elec odomés icos que es án en es a ubicación son los que podemos e en la igu a
Figu a 4-8. Pan alla Cocina
Figu a 4-6. Edi a habi ación
Figu a 4-7. Elimina habi ación
Figu a 4-5. Edi a o elimina
habi ación
45
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
4-8.
4.1.1.3.1 Pan alla Ca e e a
Si hacemos clic a la “Ca e e a” en la pan alla “Elec odomés icos” (Cocina), se emos edi igidos a la pan alla
“Ca e e a” ( e igu a 4-9). En es a pan alla enemos di e sas uncionalidades (en e pa én esis el elemen o
XML u ilizado):
• In e up o Powe pa a ac i a o desac i a la po encia de la ca e e a (View).
• Panel in o ma i o con el es ado de ope ación ac ual de la ca e e a (Tex View).
• Menú desplegable pa a elegi el p og ama de la ca e e a (PopupMenu).
• Bo ón pa a inicia o pa a el p og ama seleccionado en la ca e e a (View).
• Bo ón pa a na ega hacia el g á ico de consumo ene gé ico de la ca e e a (View).
Cada una de es as uncionalidades, es án asociadas a una o a ias pe iciones al se ido REST de OpenHAB o
al de consumo, que se án de alladas en apa ados pos e io es.
4.1.1.3.2 Pan alla F igó í icó
Si hacemos clic al “F igo í ico” en la pan alla “Elec odomés icos” (Cocina), se emos edi igidos a la pan alla
“F igo í ico” ( e igu a 4-10). En es a pan alla enemos di e sas uncionalidades (en e pa én esis el elemen o
XML u ilizado):
• Selec o de empe a u a del igo í ico (Numbe Picke ).
• In e up o Supe Cooling pa a ac i a o desac i a el modo supe cooling del igo í ico (Swi ch).
• Selec o de empe a u a del congelado (Numbe Picke ).
• In e up o Supe F eezing pa a ac i a o desac i a el modo supe eezing del congelado (Swi ch).
• Bo ón pa a na ega hacia el g á ico de consumo ene gé ico del igo í ico/congelado (View).
Figu a 4-9. Pan alla Ca e e a
46
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
Cada una de es as uncionalidades, es án asociadas a una o a ias pe iciones al se ido REST de OpenHAB o
al de consumo, que se án de alladas en apa ados pos e io es.
4.1.1.3.3 Pan alla Hó nó
Si hacemos clic al “Ho no” en la pan alla “Elec odomés icos” (Cocina), se emos edi igidos a la pan alla
“Ho no” ( e igu a 4-11). En es a pan alla enemos di e sas uncionalidades (en e pa én esis el elemen o XML
u ilizado):
• In e up o Powe pa a ac i a o desac i a la po encia del ho no (View).
• Panel in o ma i o con el iempo es an e ap oximado pa a conclui el p og ama ac ual (Tex View).
• Menú desplegable pa a elegi el p og ama del ho no (PopupMenu).
• Selec o de empe a u a del ho no (Numbe Picke ).
• Selec o pa a elegi la du ación del p og ama de ho neado (TimePicke ).
• Bo ón pa a inicia o pa a el p og ama seleccionado en el ho no (View).
• Bo ón pa a na ega hacia el g á ico de consumo ene gé ico del ho no (View).
Cada una de es as uncionalidades, es án asociadas a una o a ias pe iciones al se ido REST de OpenHAB o
al de consumo, que se án de alladas en apa ados pos e io es.
Figu a 4-10. Pan alla F igo í ico
47
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
4.1.1.3.4 Pan alla La a ajillas
Si hacemos clic al “La a ajillas” en la pan alla “Elec odomés icos” (Cocina), se emos edi igidos a la pan alla
“La a ajillas” ( e igu a 4-12). En es a pan alla enemos di e sas uncionalidades (en e pa én esis el elemen o
XML u ilizado):
• In e up o Powe pa a ac i a o desac i a la po encia del la a ajillas (View).
• Panel in o ma i o con el iempo es an e ap oximado pa a conclui el p og ama ac ual (Tex View).
• Menú desplegable pa a elegi el p og ama del la a ajillas (PopupMenu).
• Bo ón pa a inicia o pa a el p og ama seleccionado en el la a ajillas (View).
• Bo ón pa a na ega hacia el g á ico de consumo ene gé ico del la a ajillas (View).
Cada una de es as uncionalidades, es án asociadas a una o a ias pe iciones al se ido REST de OpenHAB o
al de consumo, que se án de alladas en apa ados pos e io es.
Figu a 4-11. Pan alla Ho no
48
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
4.1.1.4 Pan alla Elec odomés icos: La ade o
Cuando hacemos clic en “La ade o” en la pan alla “Habi aciones”, nos edi igimos a la pan alla
“Elec odomés icos”. Al inicia es a ac i idad, se hace una pe ición GET al endpoin / hings del se ido de
OpenHAB de mane a que se ca gan en es a pan alla los elec odomés icos cuyo a ibu o Loca ion enga el alo
La ade o. En nues o caso, los elec odomés icos que es án en es a ubicación son los que podemos e en la
igu a 4-13.
Figu a 4-12. Pan alla La a ajillas
Figu a 4-13. Pan alla La ade o
49
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
4.1.1.4.1 Pan alla La adó a
Si hacemos clic a la “La ado a” en la pan alla “Elec odomés icos” (La ade o), se emos edi igidos a la pan alla
“La ado a” ( e igu a 4-14). En es a pan alla enemos di e sas uncionalidades (en e pa én esis el elemen o
XML u ilizado):
• Panel in o ma i o con el iempo es an e ap oximado pa a conclui el p og ama ac ual (Tex View).
• Menú desplegable pa a elegi el p og ama de la ado (PopupMenu).
• Menú desplegable pa a elegi la empe a u a del agua de la la ado a (PopupMenu).
• Menú desplegable pa a elegi la elocidad de cen i ugado de la la ado a (PopupMenu).
• Bo ón pa a inicia o pa a el p og ama seleccionado en la la ado a (View).
• Bo ón pa a na ega hacia el g á ico de consumo ene gé ico de la la ado a (View).
Cada una de es as uncionalidades, es án asociadas a una o a ias pe iciones al se ido REST de OpenHAB o
al de consumo, que se án de alladas en apa ados pos e io es.
4.1.1.4.2 Pan alla Secadó a
Si hacemos clic a la “Secado a” en la pan alla “Elec odomés icos” (La ade o), se emos edi igidos a la pan alla
“Secado a” ( e igu a 4-15). En es a pan alla enemos di e sas uncionalidades (en e pa én esis el elemen o
XML u ilizado):
• Panel in o ma i o con el iempo es an e ap oximado pa a conclui el p og ama ac ual (Tex View).
• Menú desplegable pa a elegi el ma e ial de la opa (PopupMenu).
• Menú desplegable pa a elegi el p og ama de secado (PopupMenu).
• Bo ón pa a inicia o pa a el p og ama seleccionado en la secado a (View).
• Bo ón pa a na ega hacia el g á ico de consumo ene gé ico de la secado a (View).
Figu a 4-14. Pan alla La ado a
56
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
En cambio, pa a ealiza una pe ición de consumo en ho a io pun a:
• GET a h p://localhos :8000/consumo/pun a/Ca e e a.
Un ejemplo de espues a que pod íamos ob ene po pa e del se ido a es a consul a se ía:
[{"elec odomes ico":"Ca e e a"," echa":"2023-06-28",
"consumoTo alDia io":3.2}, {"elec odomes ico":"Ca e e a"," echa":"2023-06-30",
"consumoTo alDia io":2.4},
{"elec odomes ico": "Ca e e a"," echa":"2023-07-03", "consumoTo alDia io":37.25}]
4.2.1.4 Clases con olado as
Den o del ma co del desa ollo del se icio REST de consumo, se han implemen ado clases con olado as pa a
ges iona las di e sas uncionalidades de mane a o ganizada y e icien e. Es as clases ac úan como in e media ias
en e las solici udes ealizadas po la aplicación mó il o el se ido de OpenHAB y la lógica subyacen e.
4.2.1.4.1 Cónsumó Cón ólle
ConsumoCon olle .ja a es una clase undamen al que se enca ga de ges iona las solici udes elacionadas con
el consumo ene gé ico de los elec odomés icos. A a és de una cuidadosa con igu ación de endpoin s y
mé odos, es e con olado pe mi e que la aplicación mó il en íe solici udes pa a ob ene in o mación de allada
sob e el consumo almacenada en la base de da os o, en su de ec o, pe mi e al se ido OpenHAB ing esa nue os
egis os de consumo en la base de da os.
Es a clase implemen a 5 mé odos que podemos e a con inuación en la abla 4:
Mé odos
Endpoin
Desc ipción
c eaConsumo
/consumo
Pe mi e c ea un nue o consumo en la abla
consumo de la base de da os.
Es e mé odo ecibe y de uel e un obje o de
ipo Consumo.
c eaConsumoT amo
/consumoT amo
Pe mi e c ea un nue o consumo (di idido)
en la abla consumo_ amo de la base de
da os. Es deci , si el consumo ocupa a ios
amos ho a ios, se c ea un consumo pa a
cada ho a io ( e ejemplo en la siguien e
página).
Es e mé odo ecibe y de uel e un obje o de
ipo ConsumoT amo.
ge ConsumoPun a
/consumo/pun a/{elec odomes ico}
Pe mi e ob ene una lis a con odos los
consumos pun a del elec odomés ico
indicado.
Es e mé odo ecibe el nomb e del
elec odomés ico y de uel e una lis a de
obje os de ipo ConsumoTo alDia io.
57
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
ge ConsumoLlano
/consumo/llano/{elec odomes ico}
Pe mi e ob ene una lis a con odos los
consumos llano del elec odomés ico
indicado.
Es e mé odo ecibe el nomb e del
elec odomés ico y de uel e una lis a de
obje os de ipo ConsumoTo alDia io.
ge ConsumoValle
/consumo/ alle/{elec odomes ico}
Pe mi e ob ene una lis a con odos los
consumos alle del elec odomés ico
indicado.
Es e mé odo ecibe el nomb e del
elec odomés ico y de uel e una lis a de
obje os de ipo ConsumoTo alDia io.
Tabla 4. Mé odos Consumo Con olle
Ejemplo de di isión de un egis o de consumo en a ios consumos po amo:
• Consumo:
{"elec odomes ico": "Ca e e a"," echa_inicio": "2023-07-26","ho a_inicio": "23:59:40"," echa_ in":
"2023-07-27","ho a_ in": "00:00:10","consumo_pun a": 0,"consumo_llano": 0.533,"consumo_ alle":
0.266}
Pa a es e egis o de consumo que end íamos almacenado en la abla “consumo” de la base de da os, en la abla
“consumo_ amo” se e ía di idido en 2 consumos: uno pa a egis a los 0.533 kWmin de ho a io llano y o o
pa a el 0.266 kWmin de ho a io alle. Es o se ha implemen ado de es a mane a pa a pode ene un cálculo
p eciso en el caso de aquellos consumos que puedan ocupa dis in os días, es deci , que comience un día X el
consumo y inalice un día Y, como el p esen e ejemplo. De es a mane a pod emos de e mina el consumo exac o
que se ha ealizado cada día.
• Consumos po amo:
o Pun a:
{"elec odomes ico": "Ca e e a"," echa":"2023-07-26","consumo_pun a": 0,"consumo_llano":
0.533,"consumo_ alle": 0}
o Llano:
{"elec odomes ico": "Ca e e a"," echa":"2023-07-27","consumo_pun a": 0,"consumo_llano":
0,"consumo_ alle": 0.266}
Las clases Consumo, ConsumoT amo y ConsumoTo alDia io ienen los siguien es cons uc o es:
//Consumo: consumo o iginal (sin di idi po ipo de consumo según su amo
ho a io)
public Consumo(in id, S ing elec odomes ico, LocalDa e echa_inicio,
LocalTime ho a_inicio, LocalDa e echa_ in, LocalTime ho a_ in, double
consumo_pun a, double consumo_llano, double consumo_ alle) {...}
//ConsumoT amo: consumo di idido en amos (sólo un ipo de consumo po
egis o)
public ConsumoT amo(in id, S ing elec odomes ico, LocalDa e echa, double
consumo_pun a, double consumo_llano, double consumo_ alle) {...}
58
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
//ConsumoTo alDia io: suma de odos los consumos egis ados en un día conc e o,
po amos (lo que se imp ime en el g á ico de ba as)
public ConsumoTo alDia io(S ing elec odomes ico, LocalDa e echa, double
consumo_ o al_dia io) {...}
4.2.1.4.2 Lógin Cón ólle
La clase LoginCon olle .ja a desempeña un papel undamen al en la segu idad y au en icación de la
aplicación. Enca gada de maneja las solici udes de inicio de sesión (POST al endpoin /login), es e con olado
e i ica las c edenciales p opo cionadas po el usua io y esponde con una cadena de ex o.
@Au owi ed
p i a e Use Reposi o y use Reposi o y;
@Au owi ed
p i a e BC yp Passwo dEncode bC yp Passwo dEncode ;
@Pos Mapping("/login")
public ResponseEn i y<S ing> login(@Reques Body Usua io usua io) {
Usua io use = null;
y {
use = use Reposi o y. indByUse name(usua io.ge Usua io());
} ca ch (SQLExcep ion e) {
e.p in S ackT ace();
}
i (use == null) {
Sys em.ou .p in ln("Usua io no encon ado");
e u n ResponseEn i y.s a us(H pS a us.UNAUTHORIZED).body("Usua io no encon ado");
}
i (bC yp Passwo dEncode .ma ches(usua io.ge Con asenia(), use .ge Con asenia())) {
// Au en icación exi osa
Sys em.ou .p in ln("Inicio de sesión exi oso");
e u n ResponseEn i y.ok("Inicio de sesión exi oso");
} else {
// Con aseña inco ec a
Sys em.ou .p in ln("Con aseña inco ec a");
e u n ResponseEn i y.s a us(H pS a us.UNAUTHORIZED).body("Con aseña inco ec a");
}
}
Es e código se en ende á mejo con el diag ama de secuencia del apa ado 4.2.2.4.
La clase Usua io iene el siguien e cons uc o :
public Usua io(S ing usua io, S ing con asenia) {
his.usua io = usua io;
his.con asenia = con asenia;
}
59
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
4.2.2 Sp ing Secu i y
La p o ección de da os y ecu sos es una p io idad en el diseño de cualquie aplicación. Es e subapa ado se
en oca en cómo se ha implemen ado la segu idad u ilizando Sp ing Secu i y pa a el se ido REST de Consumo.
Se de alla án los p ocedimien os de au en icación y au o ización que asegu an que los endpoin s solo sean
accesibles po usua ios au o izados. Median e es e en oque, se ga an iza que los da os sensibles es én p o egidos
y solo puedan se accedidos po aquellos que hayan iniciado sesión co ec amen e.
Una ez añadida la dependencia indicada en el apa ado 4.2.1.1 necesa ia pa a implemen a Sp ing Secu i y en
nues o se ido , se p ocede a la c eación de las clases Secu i yCon ig, Use De ailsSe iceImpl y
Use Reposi o y explicadas a con inuación:
4.2.2.1 Secu i yCon ig
Es a clase ep esen a una con igu ación de segu idad, donde se es ablecen las eglas de acceso y au en icación
pa a las u as y ecu sos p o egidos. Conc e amen e:
• Se inyec a la in e az Use De ailsSe ice pa a ob ene los de alles del usua io.
• Se de ine un bean BC yp Passwo dEncode que p opo ciona un algo i mo de hash
4
pa a ci a con aseñas.
• Se c ea un il o de segu idad (Secu i yFil e Chain) pa a con ola el acceso a las di e en es u as.
• En au ho izeH pReques s, se es ablece que la u a "/login" es accesible sin au en icación, mien as que o as
u as equie en au en icación.
• Se con igu a la au en icación básica median e h pBasic(), es deci , se equie e usua io y con aseña.
• Se de ine un DaoAu hen ica ionP o ide que u iliza el Use De ailsSe ice y el ci ado de con aseñas.
• Se con igu a un Au hen ica ionManage pa a ges iona la au en icación.
@Con igu a ion
public class Secu i yCon ig {
@Au owi ed
p i a e Use De ailsSe ice use De ailsSe ice;
@Bean
public BC yp Passwo dEncode passwo dEncode () {
e u n new BC yp Passwo dEncode ();
}
@Bean
public Secu i yFil e Chain secu i yFil e Chain(H pSecu i y h p) h ows Excep ion {
h p
.au ho izeH pReques s((au ho ize) -> au ho ize
. eques Ma che s("/login").pe mi All()
.anyReques ().au hen ica ed()
)
.h pBasic()
.and()
.cs (Abs ac H pCon igu e ::disable);
4
Un hash es una salida única y ija de un algo i mo de hash que ans o ma da os en una cadena de ca ac e es, esencial pa a la e i icación y
la segu idad de da os, como con aseñas o e i icación de in eg idad.
60
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
e u n h p.build();
}
@Bean
public DaoAu hen ica ionP o ide au hen ica ionP o ide () {
DaoAu hen ica ionP o ide au hP o ide = new DaoAu hen ica ionP o ide ();
au hP o ide .se Use De ailsSe ice(use De ailsSe ice);
au hP o ide .se Passwo dEncode (passwo dEncode ());
e u n au hP o ide ;
}
@Bean
public Au hen ica ionManage au hen ica ionManage (Au hen ica ionCon igu a ion au hCon ig)
h ows Excep ion {
e u n au hCon ig.ge Au hen ica ionManage ();
}
}
4.2.2.2 Use De ailsSe iceImpl
Es a clase llamada Use De ailsSe iceImpl es una implemen ación de Use De ailsSe ice, una in e az en
Sp ing Secu i y que maneja la ca ga y alidación de de alles de usua ios. U iliza un eposi o io de usua ios
Use Reposi o y pa a busca y ca ga in o mación de usua io desde la base de da os. Luego, cons uye un obje o
Use De ails pa a la au en icación y au o ización, incluyendo el nomb e de usua io, con aseña y oles asociados.
@Se ice
public class Use De ailsSe iceImpl implemen s Use De ailsSe ice {
@Au owi ed
p i a e Use Reposi o y use Reposi o y;
@O e ide
public Use De ails loadUse ByUse name(S ing use name) h ows Use nameNo FoundExcep ion {
// Implemen a la ca ga de usua ios desde la base de da os
Usua io usua io = null;
y {
usua io = use Reposi o y. indByUse name(use name);
} ca ch (SQLExcep ion e) {
h ow new Use nameNo FoundExcep ion("E o al busca usua io en la base de da os", e);
}
i (usua io == null) {
h ow new Use nameNo FoundExcep ion("Usua io no encon ado: " + use name);
}
e u n Use .builde ()
.use name(usua io.ge Usua io())
.passwo d(usua io.ge Con asenia())
. oles("USER")
.build();
}
}
61
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
4.2.2.3 Use Reposi o y
Es a clase ac úa como un eposi o io pa a accede y ecupe a in o mación de usua io desde nues a base de
da os. U iliza una consul a SQL pa a busca un usua io po su nomb e de usua io en la abla usua ios. Si se
encuen a una coincidencia, c ea un obje o Usua io con los da os ecupe ados y lo de uel e. Es a clase es á
e ique ada con la ano ación @Reposi o y, indicando que es un componen e de acceso a da os y pe mi iendo que
Sp ing lo adminis e como un bean den o del con ex o de la aplicación.
@Reposi o y
public class Use Reposi o y {
//De uel e el Usua io indicado po el nomb e de usua io
public Usua io indByUse name(S ing use name) h ows SQLExcep ion {
inal S ing QUERY_USUARIO = "SELECT * FROM usua ios WHERE usua io = ?";
Connec ion conn = null;
Resul Se s = null;
P epa edS a emen s = null;
Usua io u = null;
conn = Conexion.conec a();
s = conn.p epa eS a emen (QUERY_USUARIO);
s .se S ing(1, use name);
s = s .execu eQue y();
i ( s.nex ()) {
u = new Usua io( s.ge S ing("usua io"), s.ge S ing("con asenia"));
}
e u n u;
}
}
62
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
4.2.2.4 Diag ama de secuencia inicio de sesión
Pa a acla a el código desc i o en el apa ado 4.2.1.4.2 Login Con olle , se p esen a a con inuación un diag ama
de secuencia con la comunicación de allada en e las di e en es clases que in e ienen en el p oceso de inicio de
sesión. El usua io ellena las c edenciales y hace clic en INICIAR SESIÓN en la pan alla Login. Seguidamen e,
el se ido a a és de las di e en es clases de las que se compone hace una se ie de comp obaciones que
podemos e al de alle en la igu a 4-20.
Figu a 4-20. Diag ama de secuencia inicio de sesión
63
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
4.2.2.5 Diag ama de secuencia consul a consumo
Po o o lado, pa a e la comunicación en e las dis in as clases de con igu ación de Sp ing Secu i y, se p esen a
o o diag ama de secuencia que e leja una pe ición del usua io el cual desea ob ene la g á ica de consumo de
la ca e e a. Pa a ello, el se ido debe con i ma que el usua io es á au o izado pa a ealiza esa consul a y
seguidamen e, as se au o izado, el se ido le p opo ciona á los da os que solici a ( e igu a 4-21).
4.2.2.6 Ejemplo de uso de Sp ing Secu i y
Po úl imo, se a a p opo ciona un ejemplo de uso de Sp ing Secu i y pa a e i ica su co ec a con igu ación.
Como hemos mencionado en apa ados an e io es, al endpoin /login odo el mundo puede manda le pe iciones
sin es icción.
• Si mandamos las c edenciales co ec as de un usua io, ecibimos 200 OK po pa e del se ido ( e
igu a 4-22).
• En cambio, si en iamos las c edenciales inco ec as, ecibimos 401 UNAUTHORIZED ( e igu a
4-23).
Sin emba go, pa a el es o de endpoin s del se ido , se necesi a que las pe iciones es én au o izadas pa a pode
b inda una espues a álida.
• Si in en amos hace una pe ición GET al endpoin /consumo/pun a/ca e e a nos pedi á que nos
au en iquemos como podemos obse a en la igu a 4-24.
• Al in oduci las c edenciales álidas y hace clic en “Inicia sesión”, ya nos pe mi i á ob ene una
espues a po pa e del se ido ( e igu a 4-25).
Figu a 4-21. Diag ama de secuencia consul a consumo
64
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
Figu a 4-22. Pe ición /login co ec a
Figu a 4-23. Pe ición /login inco ec a
65
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
Figu a 4-24. Pe ición de c edenciales
Figu a 4-25. Respues a co ec a se ido
72
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
A con inuación, se an a comen a las ca ac e ís icas undamen ales del código usado pa a el cálculo es imado
del consumo eléc ico de la ca e e a.
En el p ime agmen o de código, podemos iden i ica lo siguien e:
• Se c ea un obje o llamado holidays que mapea echas especí icas (mes, día) con sus nomb es de
es i idades co espondien es. Es o pe mi i á iden i ica si una echa de e minada es un día es i o.
• Se de inen dos a ays: TRAMO_L pa a amos en días labo ables y TRAMO_NL pa a amos en días no
labo ables (sábados, domingos y es i os). Cada elemen o en los a ays con iene una upla con dos
elemen os: la ho a y el ipo de amo ho a io ('P' pa a pun a, 'L' pa a llano y 'V' pa a alle).
• Se de ine la po encia de la ca e e a en a ios (W), lo que se á esencial pa a calcula el consumo
ene gé ico en cada amo.
• Se impo a la clase Ja a necesa ia pa a ealiza pe iciones HTTP en OpenHAB. Luego, se de inen
c edenciales de au en icación básica (nomb e de usua io y con aseña) y se codi ican en base64 pa a se
u ilizadas en las cabece as de las pe iciones HTTP.
• Se c ea un mapa de cabece as HTTP que con iene la cabece a "Au ho iza ion" con las c edenciales
básicas codi icadas. Es o es c ucial pa a au en ica las solici udes HTTP hacia el se ido .
//Obje o cla e, alo con los días es i os
a holidays = {
"1,1": "Año Nue o",
"1,6": "Epi anía del Seño ",
"8,15": "Asunción de la Vi gen",
"10,12": "Fies a Nacional de España",
"11,1": "Todos los San os",
"12,6": "Día de la Cons i ución Española",
"12,8": "Inmaculada Concepción",
};
//A ays de uplas de 2 elemen os (ho a, amo)
a TRAMO_L = [[0, 'V'], [8, 'L'], [10, 'P'], [14, 'L'], [18, 'P'], [22, 'L']]; // T amos labo ables L-V (Pun a,
Valle, Llano)
a TRAMO_NL = [[0, 'V']]; //T amos no labo ables S-D y es i os (Valle)
//Po encia de la ca e e a
a po encia_ca e e a = 1600; // W
//HTTP
a h p = Ja a. ype('o g.openhab.co e.model.sc ip .ac ions.HTTP');
a use name = "admin";
a passwo d = "12345";
a basicAu hC eden ials = ja a.u il.Base64.ge Encode ().encodeToS ing((use name + ":" +
passwo d).ge By es());
a heade s = new ja a.u il.HashMap();
heade s.pu ("Au ho iza ion", "Basic " + basicAu hC eden ials);
73
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
En el segundo agmen o de código, se pueden obse a las di e en es unciones implemen adas en nues o
código, las cuáles se án imp escindibles pa a de e mina si es in de semana, es i o y de e mina el amo
ho a io en el que nos encon amos y el siguien e al ac ual.
//Función pa a sabe si es in de semana (calenda io inglés)
unc ion isWeekend(da e) {
cons dayO Week = da e.ge Day();
e u n (dayO Week === 6) || (dayO Week === 0);
}
//Función pa a sabe si es es i o
unc ion isPublicHoliday(da e) {
e u n !!holidays[da e.ge Mon h()+1 + ',' + da e.ge Da e()]; // !! con ie e a booleano y si hay ex o
de uel e ue
}
//Función pa a sabe si es in de semana o es i o
unc ion isWeekendO PublicHoliday(da e) {
e u n isPublicHoliday(da e) || isWeekend(da e);
}
//Función pa a sabe en el amo ho a io que es amos aho a
unc ion ob ene T amoAc ual( amos, da e){
a ho a_ac ual = da e.ge Hou s();
// Calcula el siguien e amo eniendo en cuen a la ho a ac ual
o ( a i = 0; i < amos.leng h; i++) {
i (ho a_ac ual < amos[i][0]) {
e u n amos[i-1];
}
}
// Si no se encuen a un amo es po que es amos en el úl imo del día
e u n amos[ amos.leng h-1];
}
//Función pa a sabe el siguien e amo ho a io
unc ion ob ene Siguien eT amo( amos, da e){
a ho a_ac ual = da e.ge Hou s();
// Calcula el siguien e amo eniendo en cuen a la ho a ac ual
o ( a i = 0; i < amos.leng h; i++) {
i (ho a_ac ual < amos[i][0]) {
e u n amos[i];
}
}
// Si no se encuen a un amo, es que es el úl imo del día. Hay que a isa con un null.
e u n null;
}
//Función pa a ob ene la echa donde comienza el siguien e amo
unc ion ob ene FechaSigT amo( amos, da e){
a siguien e_ amo = ob ene Siguien eT amo( amos, da e);
i (siguien e_ amo === null) {
// Si no se encuen a un amo, es que es el úl imo del día
a p e ious_da e = new Da e(da e.ge FullYea (), da e.ge Mon h(), da e.ge Da e(), 0, 0, 0);
// Añadimos 1 día
e u n new Da e(p e ious_da e.ge Time() + 24 * 60 * 60 * 1000); // en milisegundos
}
74
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
e u n new Da e(da e.ge FullYea (), da e.ge Mon h(), da e.ge Da e(), siguien e_ amo[0], 0, 0);
}
//Función pa a ellena las echas y ho as con un 0 delan e pa a adecua se al o ma o dd/mm/aaaa o
hh:mm:ss
unc ion ellena( ex ){
e u n ex . oS ing().padS a (2, "0")
}
//Función pa a edondea esul ados
unc ion edondea(num, decimales){
e u n Ma h. ound((num + Numbe .EPSILON) * Ma h.pow(10, decimales)) / Ma h.pow(10,
decimales);
}
//Función pa a c ea ho a local
unc ion c ea eLocalDa e() {
e u n new Da e(new Da e(). oLocaleS ing("en-US", { imeZone: "Eu ope/Mad id"}));
}
En e ce luga , iene luga el cálculo de la echa y ho a de inicio y in del consumo que es amos midiendo. Pa a
ello, jus o al inicia se la ejecución del código se gua da la echa y ho a de inicio. Seguidamen e, iene luga un
bucle while que espe a has a que el es ado del elec odomés ico cambie a "Ready", indicando que ha inalizado
su uncionamien o. Es en es e ins an e cuando se gua da án la echa y ho a de in del consumo ac ual.
// Ob ene echa de inicio
a s a _da e = c ea eLocalDa e();
a ho a_inicio =
ellena(s a _da e.ge Hou s())+":"+ ellena(s a _da e.ge Minu es())+":"+ ellena(s a _da e.ge Seconds());
a echa_inicio = s a _da e.ge FullYea ()+"-"+ ellena((s a _da e.ge Mon h()+1))+"-
"+ ellena(s a _da e.ge Da e());
console.log("Ca e e a", "Fecha de inicio: " + echa_inicio);
console.log("Ca e e a", "Ho a de inicio: " + ho a_inicio);
a i em = i ems.ge I em("Ca e e a_Ope a ion_S a e");
console.log("Es ado de ope ación de la ca e e a: ", i em.s a e);
// Espe a has a que el p og ama inalice (pase de "Run" a "Ready")
a i = 0;
while (i em.s a e. oS ing() != "Ready") {
ja a.lang.Th ead.sleep(1000); // Espe a 1 segundo an es de ol e a e i ica
i++;
console.log("Ca e e a", "I e ación: " + i, "Es ado de ope ación: " + i em.s a e);
}
// Ob ene echa de inalización
a end_da e = c ea eLocalDa e();
a ho a_ in =
ellena(end_da e.ge Hou s())+":"+ ellena(end_da e.ge Minu es())+":"+ ellena(end_da e.ge Seconds());
a echa_ in = end_da e.ge FullYea ()+"-"+ ellena((end_da e.ge Mon h()+1))+"-
"+ ellena(end_da e.ge Da e());
75
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
console.log("Ca e e a", "Fecha de in: " + echa_ in);
A con inuación, se encuen a el co azón de nues o código, donde se ealiza el cálculo del iempo de uso y
consumo en los dis in os amos ho a ios. Po un lado, almacenamos el iempo de uso o al en es a iables
co espondien es a cada amo ( _uso_pun a, _uso_llano, _uso_ alle). Es as a iables se u iliza án pa a
calcula el consumo o al del elec odomés ico en cada pe iodo ho a io. Po o o lado, gua damos en o as es
a iables el consumo pa cial en cada uno de los amos (consumoPun aPa cial, consumoLlanoPa cial,
consumoVallePa cial). Es e alo ep esen a el consumo gene ado en el amo ac ual en e aluación ( iempo de
uso del amo ac ual, di , mul iplicado po la po encia de la ca e e a, po encia_ca e e a). Es e cálculo pa cial
esul a esencial pa a el almacenamien o en la base de da os del consumo po amos, pe mi iendo la
di e enciación de consumos en caso de cambio de día. Pos e io men e, se ealiza una pe ición POST al
endopoin /consumoT amo del se ido de consumo pa a egis a es e consumo pa cial en la abla
consumo_ amo de la base de da os, asegu ando un egis o p eciso de los consumos en cada pe iodo.
// Calcula iempo de uso
a _uso_pun a = 0;
a _uso_ alle = 0;
a _uso_llano = 0;
a consumoPun aPa cial = 0;
a consumoVallePa cial = 0;
a consumoLlanoPa cial = 0;
a calc_s a _da e = s a _da e;
a calc_end_da e;
a amo_ac ual;
while (calc_s a _da e < end_da e) {
// Calcula qué ho a es á más ce ca, si end_da e o el siguien e cambio de a i a
i (isWeekendO PublicHoliday(calc_s a _da e)) {
amo_ac ual = ob ene T amoAc ual(TRAMO_NL, calc_s a _da e);
console.log("Ca e e a", "T amo ac ual: " + amo_ac ual);
a echa_sig_ amo = ob ene FechaSigT amo(TRAMO_NL, calc_s a _da e);
console.log("Ca e e a", "Fecha siguien e amo: " + echa_sig_ amo);
} else {
amo_ac ual = ob ene T amoAc ual(TRAMO_L, calc_s a _da e);
console.log("Ca e e a", "T amo ac ual: " + amo_ac ual);
a echa_sig_ amo = ob ene FechaSigT amo(TRAMO_L, calc_s a _da e);
console.log("Ca e e a", "Fecha siguien e amo: " + echa_sig_ amo);
}
console.log("Ca e e a", "Calc_s a _da e: " + calc_s a _da e);
a echa_ amo_ac ual = calc_s a _da e.ge FullYea ()+"-
"+ ellena((calc_s a _da e.ge Mon h()+1))+"-"+ ellena(calc_s a _da e.ge Da e());
console.log("Ca e e a", "Fecha amo ac ual: " + echa_ amo_ac ual);
calc_end_da e = echa_sig_ amo < end_da e ? echa_sig_ amo : end_da e;
console.log("Ca e e a", "Ho a de in: " + ho a_ in);
76
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
console.log("Ca e e a", "Calc_end_da e: " + calc_end_da e);
a di = calc_end_da e.ge Time() - calc_s a _da e.ge Time(); // en milisegundos
console.log("Ca e e a", "di : " + di );
//Rese eamos a 0 po los posibles cambios del an e io amo
consumoPun aPa cial = 0;
consumoVallePa cial = 0;
consumoLlanoPa cial = 0;
swi ch ( amo_ac ual[1]) {
case 'P':
_uso_pun a += di / 1000; //en seg
console.log("Ca e e a", "Tiempo de uso ho a io pun a: " + _uso_pun a + " seg.");
consumoPun aPa cial = edondea(((di /1000) / 60000) * po encia_ca e e a, 3); // en kW*min
console.log("Ca e e a", "Consumo pun a pa cial: " + consumoPun aPa cial. oS ing() + "
kW*min.");
b eak;
case 'V':
_uso_ alle += di / 1000; //en seg
console.log("Ca e e a", "Tiempo de uso ho a io alle: " + _uso_ alle + " seg.");
consumoVallePa cial = edondea(((di /1000) / 60000) * po encia_ca e e a, 3); // en kW*min
console.log("Ca e e a", "Consumo alle pa cial: " + consumoVallePa cial. oS ing() + "
kW*min.");
b eak;
case 'L':
_uso_llano += di / 1000; //en seg
console.log("Ca e e a", "Tiempo de uso ho a io llano: " + _uso_llano + " seg.");
consumoLlanoPa cial = edondea(((di /1000) / 60000) * po encia_ca e e a, 3); // en kW*min
console.log("Ca e e a", "Consumo llano pa cial: " + consumoLlanoPa cial. oS ing() + "
kW*min.");
b eak;
}
//Hace el POST a la di ección del se icio REST (Inse amos el consumo del amo ac ual en la abla
consumo_ amo de la bbdd)
a u l = "h p://localhos :8000/consumoT amo";
a json = JSON.s ingi y({
elec odomes ico: "Ca e e a",
echa: echa_ amo_ac ual,
consumo_pun a: consumoPun aPa cial,
consumo_llano: consumoLlanoPa cial,
consumo_ alle: consumoVallePa cial
});
a eques = h p.sendH pPos Reques (u l, h p.CONTENT_TYPE_JSON, json, heade s, 5000);
console.log("Ca e e a", "Respues a a la pe ición de consumo dia io: " + eques );
calc_s a _da e = calc_end_da e;
}
77
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
Finalmen e, llegamos al cálculo de los consumos o ales en cada amo, medidos en kW*min. Es a elección de
unidad poco con encional obedece a la na u aleza del simulado , que p opo ciona in e alos de iempo
ex emadamen e co os. Po ejemplo, lo que en la ida eal oma ía 2 ho as, aquí se educe a 1 minu o de
simulación.
Pa a calcula el consumo, mul iplicamos el iempo acumulado de uso de cada amo (exp esado en segundos y
con e ido a minu os) po la po encia de la ca e e a (dada en W y con e ida a kW). Aunque es a es imación no
es comple amen e iel a la ealidad, especialmen e en elec odomés icos con p og amas la gos, como la a ajillas
o la ado as, donde el consumo a ía du an e el ciclo, nues o simulado ca ece de un a íme o pa a medi el
consumo ins an áneo y p opo ciona un alo p eciso. Po an o, op amos po calcula el consumo como:
𝑐𝑜𝑛𝑠𝑢𝑚𝑜 = 𝑡𝑖𝑒𝑚𝑝𝑜𝑢𝑠𝑜 × 𝑝𝑜𝑡𝑒𝑛𝑐𝑖𝑎𝑒𝑙𝑒𝑐𝑡𝑟𝑜𝑑𝑜𝑚é𝑠𝑡𝑖𝑐𝑜
A con inuación, al igual que con el egis o del consumo pa cial en la base de da os del caso an e io , ealizamos
un POST al se ido de consumo en el endpoin /consumo pa a almacena el consumo comple o en la abla
consumo de la base de da os. Aunque es a me odología no es idén ica a una medición p ecisa, nos b inda una
es imación adecuada den o de las limi aciones del simulado .
// Calcula consumo y edondea a 3 decimales
a consumoPun a = edondea(( _uso_pun a / 60000) * po encia_ca e e a, 3); // en kW*min
a consumoValle = edondea(( _uso_ alle / 60000) * po encia_ca e e a, 3); // en kW*min
a consumoLlano = edondea(( _uso_llano / 60000) * po encia_ca e e a, 3); // en kW*min
console.log("Ca e e a", "Consumo en pun a: " + consumoPun a. oS ing() + " kW*min");
console.log("Ca e e a", "Consumo en alle: " + consumoValle. oS ing() + " kW*min");
console.log("Ca e e a", "Consumo en llano: " + consumoLlano. oS ing() + " kW*min");
// Hace el POST a la di ección del se icio REST (inse amos consumo comple o a la abla consumo de
la bbdd)
a u l2 = "h p://localhos :8000/consumo";
a json2 = JSON.s ingi y({
elec odomes ico: "Ca e e a",
echa_inicio: echa_inicio,
ho a_inicio: ho a_inicio,
echa_ in: echa_ in,
ho a_ in: ho a_ in,
consumo_pun a: consumoPun a,
consumo_llano: consumoLlano,
consumo_ alle: consumoValle
});
a eques = h p.sendH pPos Reques (u l2, h p.CONTENT_TYPE_JSON, json2, heade s, 5000);
console.log("Ca e e a", "Respues a del se ido : " + eques );
78
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
Pa a depu a es e código se ha hecho uso de la consola de OpenHAB, la cual en Ubun u se ejecu a con el
siguien e comando:
Al in oduci es e comando, nos pedi á una con aseña la cual po de ec o es habopen. Seguidamen e, pa a pode
isualiza los logs que se ayan p oduciendo en iempo eal, bas a ía con ejecu a en la consola de OpenHAB
es e comando:
openhab-cli console
log: ail
79
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
5 CONCLUSIONES Y LÍNEAS FUTURAS
Pa a conclui es a memo ia, es c ucial des aca los log os y a ances que es e p oyec o ha alcanzado en el
desa ollo de una aplicación And oid, la c eación de un se icio de consumo y la in eg ación de ecnologías
impo an es en el sec o IoT. Es a sección inal no solo ecopila las conclusiones pe sonales y écnicas de i adas
de es e p oceso, sino que ambién delinea á las di ecciones u u as que pod ían lle a es e p oyec o a ni eles aún
más al os de inno ación y e icacia.
5.1 Conclusiones pe sonales
Mi ando e ospec i amen e, puedo obse a que los p opósi os que me p opuse al comienzo de es e p oyec o
han sido exi osamen e cumplidos. Los esul ados ob enidos no solo me llenan de sa is acción pe sonal, sino que
ambién e ue zan mis habilidades en el ámbi o ecnológico.
A lo la go de es e iaje, me encon é con desa íos y momen os de ince idumb e. Sin emba go, al con empla el
esul ado inal, ap ecio p o undamen e cuán o he e olucionado du an e es e pe iodo. Las compe encias que he
adqui ido, la con ianza que he desa ollado y las opo unidades que aho a se islumb an pa a mi c ecimien o
con inuo son es imonio de es e p oceso. Aunque no con aba con expe iencia p e ia en la c eación de p oyec os
p opios, he u ilizado los undamen os p opo cionados po mi o mación en Ingenie ía y he seguido los consejos
de mi u o a pa a alcanza los obje i os p opues os.
Es e p oyec o no solamen e ma ca una e apa en mi eco ido académico, sino que ambién con i ma que la
dedicación y la pe se e ancia pueden aduci se en log os angibles y aliosos. Es oy emocionada po las
lecciones ap endidas, la con ianza que he ganado y las pe spec i as emocionan es que es a expe iencia ha abie o
pa a mi u u o.
5.2 Conclusiones écnicas
Es e p oyec o ha culminado en la c eación de una aplicación And oid llamada "In elliHome", que pe mi e
con ola los elec odomés icos Home Connec a a és de la in eg ación de OpenHAB. Además, se ha
implemen ado un se icio REST que es ima el consumo ene gé ico de los disposi i os conec ados. La
combinación de ecnologías And oid, OpenHAB, Home Connec y Sp ing Boo , en e o as, ha esul ado en una
aplicación e sá il y uncional, que pe mi e a los usua ios con ola sus elec odomés icos y es ima su consumo
de mane a con enien e.
La in eg ación con elec odomés icos Home Connec ha demos ado se e ec i a pa a b inda a los usua ios un
con ol emo o y au oma izado de sus disposi i os. La conexión con OpenHAB y la es imación del consumo
basada en amos ho a ios p opo cionan un alo añadido al ayuda a los usua ios a ges iona su consumo de
mane a más e icien e.
Además, es e p oyec o ha e o zado mi habilidad pa a plani ica y documen a un p oyec o de mane a
es uc u ada. La c eación de una memo ia écnica comple a, que incluye desde la a qui ec u a de la aplicación
has a la desc ipción de cada componen e, me ha p opo cionado una isión más p o unda de la impo ancia de la
plani icación y la documen ación en el desa ollo de so wa e.
En gene al, es e T abajo Fin de G ado ha ep esen ado un ap endizaje signi ica i o en el desa ollo de
aplicaciones mó iles y la implemen ación de se icios REST pa a la ges ión ene gé ica. Ha pe mi ido aplica
concep os eó icos en un en o no p ác ico y ha p opo cionado una base sólida pa a u u as explo aciones en el
campo de la e iciencia ene gé ica y la au oma ización esidencial.
80
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
5.3 Líneas u u as
El p esen e apa ado des aca la mi ada hacia el u u o de es e p oyec o, delineando posibles di ecciones en las
que pod ía e oluciona . Al analiza y an icipa nue as opo unidades y desa íos, se explo an las á eas en las que
se pod ía expandi o mejo a la aplicación, así como la adopción de nue as ecnologías y en oques pa a segui
en iqueciendo su uncionalidad y alcance.
5.3.1 Diseño
En cuan o a las mejo as del diseño, podemos des aca las siguien es:
• C eación e implemen ación de una pan alla Home que o ien e al usua io hacia las p incipales
uncionalidades de la aplicación mó il.
• C eación e implemen ación de una pan alla gené ica Elec odomés icos que pe mi a lis a odos
los Things de nues o se ido OpenHAB.
• C eación e implemen ación de una ba a de na egación in e io pa a que la expe iencia del
usua io sea más g a i ican e. Con es a ba a el usua io pod á na ega en e las pan allas Home,
Habi aciones y Elec odomés icos muy cómodamen e ( e igu a 5-1).
5.3.2 Funcionalidades
Den o de las uncionalidades adicionales que pod ían se implemen adas se encuen an:
• Añadi nue as eglas de OpenHAB pa a pode p og ama el a anque de elec odomés icos
según le con enga al usua io.
• Implemen a no i icaciones median e la ecnología Fi ebase Cloud Messaging en conjun o con
las eglas de OpenHAB, pa a así pode ecibi no i icaciones de inalización de p og amas o
del es ado de algún elec odomés ico incluso cuando la aplicación es é ce ada y el e minal
bloqueado.
• Modi ica el se icio REST de consumo pa a que pe mi a dis ingui el consumo po usua io.
• Añadi más elec odomés icos al se ido de OpenHAB ap o echando la amplia a iedad de
bindings que p opo ciona es a ecnología.
5.3.3 Segu idad
En el campo de la segu idad, se pod ía mejo a lo siguien e:
• Implemen ación de HTTPS, pa a ci a las comunicaciones en e la aplicación y se ido es,
ga an izando la con idencialidad y au en icidad de los da os. Requie e la adquisición de un
ce i icado SSL/TLS, ac ualización del se ido y ajus es en la aplicación pa a mejo a la
segu idad.
Figu a 5-1. Ba a de na egación
81
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
5.3.4 In aes uc u a y despliegue
Pa a conclui , en in aes uc u a y despliegue algunos aspec os a mejo a pod ían se :
• Con igu ación de NAT pa a pode ealiza pe iciones a los se ido es de OpenHAB y consumo
desde edes ex e nas.
• Aloja se ido es de OpenHAB y consumo en una Raspbe y Pi pa a ga an iza su
disponibilidad con inua.
• Explo a la opción de inco po a a íme os en los enchu es donde se conec an los
elec odomés icos, pe mi iendo ob ene mediciones de consumo p ecisas. Además, se debe á
adap a el código de las eglas de OpenHAB pa a almacena la po encia en cada ins an e
medida po es os a íme os.
88
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
89
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
REFERENCIAS
[1]
José de Lóza Alameda, 2020, «Aplicación domó ica en And oid con OpenHAB pa a el con ol de los
disposi i os del hoga ».[En línea]. Disponible en: h ps://idus.us.es/handle/11441/102851
[2]
And oid S udio, «Cómo con igu a las edes de And oid Emula o ». [En línea]. Disponible en:
h ps://de elope .and oid.com/s udio/ un/emula o -ne wo king?hl=es-419
[3]
Home Connec , «Sys em A chi ec u e». [En línea]. Disponible en: h ps://de elope .home-
connec .com/how_i _wo ks
[4]
Dell, «Con igu ación y especi icaciones». [En línea]. Disponible en:
h ps://www.dell.com/suppo /manuals/es-es/inspi on-15-5510-lap op/inspi on-5510-se up-and-
speci ica ions/especi icaciones-de-inspi on-15-5510?guid=guid-7c9 07ce-626e-44ca-be3a-
a1 b036413 9&lang=es-mx
[5]
And oid S udio, «Pla a o ma». [En línea]. Disponible en: h ps://de elope .and oid.com/abou
[6]
OpenHAB, «OpenHAB». [En línea]. Disponible en: h ps://www.openhab.o g/
[7]
OpenHAB, «Home Connec Binding». [En línea]. Disponible en:
h ps://www.openhab.o g/addons/bindings/homeconnec /
[8]
Home Connec De elope P og am, «Simula o s». [En línea]. Disponible en: h ps://de elope .home-
connec .com/simula o ( equie e egis a se en el po al de Home Connec De elope pa a pode accede
a los simulado es)
[9]
Sp ing, «Sp ing | Home». [En línea]. Disponible en: h ps://sp ing.io/
[10]
Ma en, «Welcome o Apache Ma en». [En línea]. Disponible en: h ps://ma en.apache.o g/
[11]
Pos g eSQL, «Pos g eSQL». [En línea]. Disponible en: h ps://www.pos g esql.o g/
[12]
Figma, «Figma». [En línea]. Disponible en: h ps://www. igma.com/
[13]
RESTClien , «RESTClien , a debugge o REST ul web se ices». [En línea]. Disponible en:
h ps://addons.mozilla.o g/es/ i e ox/addon/ es clien /
[14]
Visual S udio Code, «Visual S udio Code». [En línea]. Disponible en: h ps://code. isuals udio.com/
[15]
Gi Hub, «Gi Hub». [En línea]. Disponible en: h ps://gi hub.com/
[16]
Wi esha k, «Wi esha k». [En línea]. Disponible en: h ps://www.wi esha k.o g/
[17]
Sp ing Secu i y, «Sp ing Secu i y». [En línea]. Disponible en: h ps://docs.sp ing.io/sp ing-
secu i y/ e e ence/index.h ml
90
In eg ación de OpenHAB y Home Connec en una aplicación And oid pa a el con ol domó ico de los
elec odomés icos y la es imación de su consumo ene gé ico
[18]
Home Connec De elope P og am, «Sign Up». [En línea]. Disponible en: h ps://de elope .home-
connec .com/
[19]
Home Connec De elope P og am, «Applica ions». [En línea]. Disponible en: h ps://de elope .home-
connec .com/applica ions
[20]
Home Connec De elope P og am, «API Docs». [En línea]. Disponible en: h ps://api-docs.home-
connec .com
[21]
Home Connec De elope P og am, «Quick S a ». [En línea]. Disponible en: h ps://api-docs.home-
connec .com/quicks a /# he-home-connec -api
[22]
OpenHAB, «Ins alla ion O e iew». [En línea]. Disponible en:
h ps://www.openhab.o g/docs/ins alla ion/#p e equisi es
[23]
OpenHAB, «OpenHAB on Linux». [En línea]. Disponible en:
h ps://www.openhab.o g/docs/ins alla ion/linux.h ml
[24]
OpenHAB, «Home Connec Binding». [En línea]. Disponible en:
h ps://www.openhab.o g/addons/bindings/homeconnec
[25]
Endesa, «¿Cuáles son los ho a ios de la luz?». [En línea]. Disponible en:
h ps://www.endesa.com/es/blog/blog-de-endesa/ho a ios-luz- alle-pun a-llano