scieee Science in your language
[es] (orig)

Piloto de gestión para dispositivos IoT

Author: Zamora García, Vicente
Year: 2025
Source: https://idus.us.es/bitstreams/28e508d9-e542-45f7-9847-3b24bd18e54a/download
Pilo o de ges ión pa a disposi i os IoT
Au o : Vicen e Zamo a Ga cía
Tu o : An onio José Es epa Alonso
Dp o. de Ingenie ía Telemá ica
Escuela Técnica Supe io de Ingenie ía
Uni e sidad de Se illa
Se illa, 2025
T abajo Fin de G ado
en Ingenie ía de las Tecnologías de Telecomunicación
iii
T abajo Fin de G ado
en Ingenie ía de las Tecnologías de Telecomunicación
Pilo o de ges ión pa a disposi i os IoT
Au o :
Vicen e Zamo a Ga cía
Tu o :
An onio José Es epa Alonso
Dp o. de Ingenie ía Telemá ica
Escuela Técnica Supe io de Ingenie ía
Uni e sidad de Se illa
Se illa, 2025
T abajo Fin de G ado: Pilo o de ges ión pa a disposi i os IoT
Au o :
Vicen e Zamo a Ga cía
Tu o :
An onio José Es epa Alonso
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, 2025
El Sec e a io del T ibunal

ii
A mi amilia
A mis maes os
ix
Ag adecimien os
Conside o ealmen e complicado desc ibi , en unos pocos pá a os, odo lo que han signi icado pa a mí mis
pad es a lo la go de es e camino. Du an e es os úl imos cua o años y en gene al du an e oda mi ida, han sido
el pila undamen al pa a que con inua a, día as día, es o zándome po llega a con e i me en la pe sona que
quie o se , po cumpli los sueños que siemp e he enido y po no ol ida me de que lo más impo an e en es a
ida es no a epen i e de nada.
Han es ado en odos los momen os en los que dudaba de mí mismo, donde una simple con e sación y un
ab azo lleno de con ianza me empujaban a segui adelan e e in en a da lo mejo de mí. Es e log o ambién es
ues o, po que sé que mi es ue zo y pe se e ancia os la debo a oso os, pues me la habéis enseñado desde el
ejemplo.
También me gus a ía ag adece a odos los p o eso es que han o mado pa e de mi o mación du an e el
G ado. G acias a ellos he podido consegui un abajo que me encan a y me man iene mo i ado día as día, con
unas condiciones que ni me plan eaba ene an es de en a en la Uni e sidad.
Quie o ag adece de p ime a mano a mi u o , An onio José Es epa Alonso, po habe me b indado la
opo unidad de ealiza es e abajo y ayuda me an e cualquie duda, pe mi iéndome con inua el p oyec o que
más he dis u ado lle a a cabo en odo el G ado.
G acias a odos.
Vicen e Zamo a Ga cía
Es udian e de Ingenie ía de las Tecnologías de Telecomunicación
Se illa, 2025
ÍNDICE DE TABLAS
Tabla 2-1 – Tipos de da os SNMP 31
Tabla 2-2 – Tipos de mensajes SNMP 32
Tabla 2-3 – Compa a i a A duino MEGA y ESP32 36
Tabla 3-1 - P esupues o 41
Tabla 4-1 – Lib e ías u ilizadas en el ESP32 45
Tabla 4-2 – Pines del LCD TFT 56
Tabla 5-1 – Especi icaciones TMP36 64
Tabla 5-2 – Especi icaciones Vege onix VH400 65
Tabla 5-3 – Especi icaciones KY-38 67
Tabla 5-4 – Pines del display LCD 16x2 70
Tabla 5-5 – G upo1: in o macionDeGes ion 73
Tabla 5-6 – G upo 2: alo esLeidos 73
Tabla 5-7 – G upo 3: e en os 74
Tabla 5-8 – G upo 4: se ido es 74
Tabla 5-9 – G upo 5: nodosDeRed 75
Tabla 5-10 – G upo 6: encaminamien o 75

x ii
ÍNDICE DE FIGURAS
Figu a 1-1 – Esquema gene al del sis ema 24
Figu a 2-1 – Modelo de ges ión po SNMP 29
Figu a 2-2 – Escena io básico MQTT 34
Figu a 2-3 – ESP32 35
Figu a 2-4 – A duino MEGA 2560 35
Figu a 3-1 – Componen es del sis ema 39
Figu a 3-2 – Diag ama de conexiones del sis ema 42
Figu a 3-3: Sis ema eal: ha dwa e implicado 42
Figu a 4-1 – Ha dwa e implicado 44
Figu a 4-2 – Diag ama de es ados A duino_SNMP_Manage 46
Figu a 4-3 – Es uc u as SNMP 46
Figu a 4-4 – Callbacks pa a se ido es 47
Figu a 4-5 – Callbacks pa a los ou e s 47
Figu a 4-6 – Callbacks pa a el g upo BGP 47
Figu a 4-7 – Función ge 1SNMP: en ío de pe iciones SNMP a los se ido es 48
Figu a 4-8 – Función inicioWeb() 1 49
Figu a 4-9 – Función inicioWeb() 2 49
Figu a 4-10 – Función inicioWeb() 3 49
Figu a 4-11 – Web de ges ión del ESP32 50
Figu a 4-12 – Función conexionB oke () 50
Figu a 4-13 – Publicación de a iables con MQTT 51
Figu a 4-14 – Funcionamien o de la comunicación UART 53
Figu a 4-15 – Comunicación UART en e el ESP32 y el A duino 53
Figu a 4-16 – Diag ama de lujo de la comunicación UART 54
Figu a 4-17 – Función combina Va iables() 55
Figu a 4-18 – Función asigna Valo esDesdeCadena() 55
Figu a 4-19 – Display TFT: pan alla de ca ga 56
Figu a 4-20 – Display TFT: es ablecimien o WiFi 57
Figu a 4-21 – Diag ama de lujo del display TFT 57
Figu a 4-22 – Diag ama de lujo del sc ip clien e MQTT 58
Figu a 4-23 – Escena io GNS3 59
Figu a 5-1 – Ha dwa e implicado 63
Figu a 5-2 – Senso de empe a u a TMP36 64
Figu a 5-3 – Senso de humedad del suelo VH400 65
Figu a 5-4 – Senso capaci i o 66
Figu a 5-5 – Senso de sonido KY-38 67
Figu a 5-6 – E he ne Shield W5100 68
Figu a 5-7 – Módulo WiFI: ESP8266 69
Figu a 5-8 – Display LCD: es ablecimien o WiFi 70
Figu a 5-9 – Diag ama de lujo del display LCD 71
Figu a 5-10 - MIBARDUINO 72
Figu a 5-11 – Diag ama de lujo del A duino MEGA 76
Figu a 5-12 – Función loop() 77
Figu a 5-13 – Función ac ualiza2() 78
Figu a 5-14 – Función e en o2() 79
Figu a 6-1 – Decla ación de OIDs (ejemplo R1) 82
Figu a 6-2 – Decla ación de a iables: nodosDeRed 82
Figu a 6-3 – De inición de a iables: nodosDeRed 82
Figu a 6-4 – Función PduRecibida() 83
Figu a 6-5 – Función PduRecibida() - 2 83
Figu a 6-6 – Función PduRecibida() - 3 84
Figu a 6-7 – Función PduRecibida - 4 85
Figu a 6-8 – Función PduRecibida() - 5 85
Figu a 6-9 – A ay auxilia de OIDs 86
Figu a 6-10 – A ay auxilia de a iables locales 87
Figu a 6-11 – Función PduRecibida - 6 88
Figu a 6-12 – Función PduRespues a() 89
Figu a 6-13 – Función PduRespues a() - 2 89
Figu a 6-14 – En ío de TRAP 89
Figu a 6-15 – Función T ap() 90
Figu a 6-16 – Función T ap() - 2 91
Figu a 6-17 – Función T ap() -3 92
Figu a 6-18 – Función T ap() - 4 92
Figu a 6-19 – Función T ap() - 5 93
Figu a 6-20 – P ocesamien o de pe iciones GET-NEXT 93
Figu a 7-1 – Escena io de p uebas 95
Figu a 7-2 – Se ido REST: endpoin s disponibles. 97
Figu a 7-3 – Diag ama de clases del p oyec o Sp ing Boo 98
Figu a 7-4 – Diag ama de clases de la aplicación VManage 99
Figu a 7-5 – Página de inicio de sesión 100
Figu a 7-6 – Página p incipal 101
Figu a 7-7 – Apa ado del g upo in o macionDeGes ion 102
Figu a 7-8 – Apa ado del g upo alo esLeidos 103
xix
Figu a 7-9 – Apa ado del g upo e en os 104
Figu a 7-10 – Apa ado del g upo se ido es 105
Figu a 7-11 – Apa ado del g upo nodosDeRed 106
Figu a 7-12 – Apa ado del g upo encaminamien o 107
Figu a 7-13 – G a ana: Dashboa d 1 109
Figu a 7-14 – G a ana: Dashboa d 2 109
Figu a 7-15 – Selección en MIBB owse 110
Figu a 7-16 – Pe iciones en MIBB owse 111
Figu a 7-17 – Tablas en MIBB owse 111
xxi
No ación
ADC
Analog- o-Digi al Con e e
ASN
Au onomous Sys em Numbe
BER
Basic Encoding Rules
BGP
Bo de Ga eway P o ocol
CSS
Cascading S yle Shee s
HTTP
Hype Tex T ans e P o ocolo
HTML
Hype Tex Ma kup Language
I2C
In e In eg a ed Ci cui
IANA
In e ne Assigned Numbe s Au ho i y
IDE
In eg a ed De elopmen En i onmen
IETF
In e ne Enginee ing Task Fo ce
IoT
In e ne o Things
LX106
A qui ec u a del mic ocon olado ESP8266
MQTT
Message Queuing Teleme y T anspo
OID
Objec Iden i ie
OS
Ope a ing Sys em
QoS
Quali y o Se ice
REST
Rep esen a ional S a e T ans e
RMON
Remo e Ne wo k Moni o ing
SNMP
Simple Ne wo k Managemen P o ocol
SPI
Se ial Pe iphe al In e ace
SPIFFS
SPI Flash File Sys em
SQL
S uc u ed Que y Languaje
UART
Uni e sal Asynch onous Recei e /T ansmi e
VWC
Volume ic Wa e Con en
XTensa
A qui ec u a de mic op ocesado es u ilizada en los ESP

1 INTRODUCCIÓN
Es e p ime capí ulo iene como obje i o p esen a los mo i os y an eceden es que jus i ican la ealización de
es e T abajo Fin de G ado, enma cados en un con ex o donde la ges ión de edes y el In e ne de las Cosas
desempeñan un papel undamen al en el pa adigma de las elecomunicaciones. Además, se desc ibi án desde un
al o ni el de abs acción, las ca ac e ís icas gene ales de la solución p opues a, así como los obje i os y el
alcance de es e p oyec o. Finalmen e, se p esen a á la es uc u a gene al de la memo ia.
1.1 Mo i ación
La ges ión de edes ha e olucionado signi ica i amen e en las úl imas décadas, pasando de se un conjun o
de a eas manuales y eac i as a con e i se en un p oceso p oac i o y au oma izado, siendo esencial pa a
ga an iza la disponibilidad, el endimien o y la segu idad de las in aes uc u as de elecomunicación [1]. En
es e con ex o, SNMP se ha consolidado como uno de los p o ocolos más u ilizados pa a la moni o ización y
ges ión de disposi i os de ed, g acias a su simplicidad, escalabilidad y amplia adopción en el sec o emp esa ial.
Sin emba go, la in eg ación de SNMP en disposi i os IoT, p esen a un g an desa ío debido a las limi aciones de
ecu sos en es os disposi i os y a la necesidad, po an o, de adap a el p o ocolo a en o nos con equisi os
especí icos de bajo consumo y po encia.
Po o o lado, el IoT ha expe imen ado un c ecimien o exponencial en los úl imos años, ans o mando
indus ias en e as, desde aplicaciones en sma ci ies has a sis emas de au oma ización indus ial. Como
consecuencia, ha quedado demos ada su capacidad pa a mejo a la e iciencia, educi cos es y o ece se icios
pe sonalizados.
La mo i ación de es e abajo adica en el desa ollo de una solución inno ado a que pe mi a, no solo ges iona
un conjun o de senso es ísicos y i uales, sino ambién de edes complejas, ap o echando las en ajas de
p o ocolos ampliamen e adop ados como SNMP en disposi i os ealmen e económicos y de muy bajo consumo
ene gé ico. Es e en oque no solo p e ende apo a un nue o pun o de is a pa a la ges ión de edes, sino que
ambién sien a las bases pa a un u u o p oyec o de un sis ema de de ección de a aques y de ges ión po
in enciones [2]. Es deci , a la go plazo, se busca in eg a en es e sis ema écnicas de machine lea ning pa a la
de ección emp ana de posibles a aques o allos en la ed, así como con e i se en una pieza cla e pa a un sis ema
de ges ión po in enciones, donde la ed pueda au oges iona se en unción del es ado ac ual del sis ema.
1.2 Obje i os y alcance
El obje i o p incipal de es e p oyec o es desa olla un sis ema de ges ión emo a que no solo pe mi a la
moni o ización y con ol de senso es ísicos y i uales implemen ados en un disposi i o IoT, sino que ambién
cen alice la in o mación de ges ión de disposi i os de ed eales, como ou e s, swi ches y se ido es. El sis ema
es á diseñado pa a se escalable an o e icalmen e, ampliando el núme o de senso es y disposi i os
ges ionados, como ho izon almen e, pe mi iendo la eplicación del sis ema en dis in as zonas geog á icas pa a
la ges ión dis ibuida de múl iples disposi i os y edes.
"El p incipio es la mi ad de odo."
- Pi ágo as -
In oducción
1.2.1 Esquema gene al del sis ema
Pa a in oduci el sis ema desde un al o ni el de abs acción, p opongo el siguien e diag ama gene al que
simpli ica los p incipales subsis emas que se de alla án a lo la go de la memo ia. En él, se han indicado pa a
cada subsis ema sus en adas y salidas asociadas, además de los p incipales componen es in e nos de cada uno.
Figu a 1-1 – Esquema gene al del sis ema
• Subsis ema de ges ión 1: moni o iza equipos de un escena io de ed complejo (in e conexión de edes
de dos sis emas au ónomos con ou e s que u ilizan BGP) simulado a a és de GNS3. Se simulan
ou e s que implemen an un agen e SNMP. Po an o, es e subsis ema ges o ecopila da os de es os
equipos a a és de SNMP y los en ía al sis ema de pe sis encia de da os a a és del p o ocolo MQTT
y al subsis ema de ges ión 2 a a és de una UART.
Los p incipales componen es de es e subsis ema son: un ges o SNMP enca gado de ealiza las
pe iciones a los agen es SNMP ges ionados, un clien e MQTT enca gado de p opo ciona oda la
in o mación ob enida po SNMP a a és de MQTT y un se ido HTTP pa a mos a ía Web los
disposi i os que es án siendo ges ionados po es e subsis ema, además de pe mi i con igu a el iempo
en e en íos de las pe iciones a es os. Todos es os componen es son implemen a en un único disposi i o
IoT.
25
25
Pilo o de ges ión pa a disposi i os IoT
• Subsis ema de ges ión 2: ecibe del subsis ema de ges ión 1 las ins ancias de SNMP de los ou e s y
se ido es que es e ges iona. T ansmi e, ambién median e SNMP, an o es as ins ancias, como o as
nue as pa a la ges ión de senso es ísicos y i uales que es e subsis ema implemen a. Es, po an o, un
agen e SNMP complejo que implemen a la MIB elabo ada pa a es e abajo (Anexo A). En ella se
de inen odos los obje os de ges ión de es e subsis ema que pueden se ges ionados median e SNMP.
Po an o, los p incipales componen es de es e subsis ema son: un agen e SNMP enca gado de ecibi y
p ocesa las pe iciones de es e p o ocolo y odo el conjun o de senso es i uales y ísicos.
• Subsis ema de pe sis encia: lo con o ma un conjun o de he amien as y ecnologías que hacen posible
el almacenamien o de los da os cen alizados en el subsis ema de ges ión 1, pe mi iendo la pe sis encia
de es os pa a ene un his o ial comple o de las ins ancias de SNMP de los ou e s y se ido es
ges ionados. Conc e amen e, es e subsis ema se compone de un b óke del p o ocolo MQTT, enca gado
de ecibi las ins ancias de SNMP ges ionadas po el subsis ema de ges ión 1 y almacena la en el
segundo componen e, una base de da os Pos g eSQL. Además, implemen a un se ido REST
eje ciendo de backend cuyo obje i o es p o ee la in o mación de la base de da os.
• Subsis ema de In e az de Usua io: se enca ga del p ocesamien o y p esen ación de los da os
ob enidos an o del subsis ema de ges ión 1 pa a las ins ancias de SNMP de los ou e s y se ido es,
como del subsis ema de ges ión 2, pa a las ins ancias del agen e SNMP implemen ado en es e
subsis ema. Se compone de una aplicación mó il desa ollada con And oid S udio y de un s ack de
moni o ización es ánda con o mado po SNMP_Expo e , P ome heus y G a ana.
1.3 Es uc u a de la memo ia
La memo ia comenza á in oduciendo la base eó ica necesa ia pa a comp ende las ca ac e ís icas y el ol
que eje ce cada he amien a y p o ocolo u ilizado en es e abajo.
En un pos e io capí ulo, se ealiza á una de inición gene al del sis ema comple o desde un al o ni el de
abs acción, de allando los p incipales componen es de cada subsis ema.
Pos e io men e, se ealiza á una de inición comple a del subsis ema de ges ion 1, aba cando odo el desa ollo
ealizado pa a el ESP32 en elación a las uncionalidades que o ece: ges ión de un display, comunicación
UART, publicación sob e MQTT, en e o os. Además, en es e apa ado, se de alla án las implemen aciones
ealizadas pa a las he amien as ex e nas que se comunican con es e subsis ema: GNS3 y Eclipse Mosqui o.
En un pos e io capí ulo, se de ini á el subsis ema de ges ion 2, co espondien e al A duino MEGA, de allando
sus p incipales ca ac e ís icas: manejo de senso es, conec i idad WiFi y E he ne , ges ión de los e en os y
ges ión del display.
Dejando pa a un pos e io capí ulo, debido a los p oblemas encon ados y a su no o ia complejidad, el p oceso
e implemen ación del p o ocolo SNMP en un disposi i o A duino.
Pa a e mina con la implemen ación, se de alla án en un único capí ulo de p uebas, el subsis ema de in e az
de usua io y el subsis ema de pe sis encia, aba cando la aplicación mó il desa ollada con And oid S udio y el
se ido REST que eje ce de in e media io con la base de da os. También se p esen a án soluciones al e na i as
que puedan u iliza se como el s ack con o mado po SNMP-Expo e , P ome heus y G a ana o un so wa e
g a uí o llamado MIBB owse .
Po úl imo, se p esen a á en un capí ulo las conclusiones de es e abajo y las líneas a u u o, dejando
cons ancia de múl iples mejo as.
Base eó ica
o ma o especí ico. Como se ha mencionado an e io men e, una MIB no es más que un módulo
ASN.1 donde se de inen los obje os de ges ión que implemen a el agen e SNMP.
o Es os módulos u ilizan el lenguaje de inido po ASN.1 pa a desc ibi la es uc u a de los
obje os.
4. Reglas de Codi icación (BER):
o Pa a codi ica los obje os, se u ilizan las eglas BER (Basic Encoding Rules) siguiendo una
codi icación en o ma o bina io.
o En es as eglas se de inen cómo se empaque an los da os en mensajes SNMP, debiendo inclui
el ipo, la longi ud y el alo de cada uno de los obje os de ges ión.
Es imp escindible conoce de p ime a mano es as eglas pa a en ende la implemen ación de la lib e ía de
Agen eSNMP desa ollada pa a el A duino MEGA. P opongo la consul a de [11], donde se de inen las
p incipales eglas BER pa a los ipos de da os de SNMP is os an e io men e, an o p imi i os como
cons uc o es.
2.1.1.3 Tipos de mensajes
SNMP cuen a con a ios ipos de mensajes, es ando la g an mayo ía disponibles en cualquie e sión del
p o ocolo, excep o GET-BULK y INFORM que su gie on a pa i de la e sión 2 de SNMP y, po an o, no se
pueden u iliza en SNMP 1.
Tabla 2-2 – Tipos de mensajes SNMP
Tipo de mensaje
Desc ipción
GET
Solici a el alo de un obje o especí ico en la MIB
GET-RESPONSE
Respues a del agen e a una solici ud GET, GET-NEXT, GET-
BULK, SET o INFORM. Con iene los alo es solici ados o, en
caso con a io, e o es.
GET-NEXT
Ob iene el siguien e obje o en la MIB, según el o den
je á quico. Se u iliza p incipalmen e pa a eco e ablas o
g upos comple os.
SET
Modi ica el alo de una ins ancia de un obje o.
GET-BULK
Es simila a GET-NEXT, pe o siendo más e icien e al pe mi i
con una única pe ición ob ene un al o núme o de ins ancias de
SNMP, siendo es e núme o limi ado po el amaño máximo del
mensaje.
INFORM
Es simila a TRAP, pe o equie e con i mación del ges o , es
deci , una espues a GET-RESPONSE.
TRAP
U ilizado pa a ale a sob e e en os p e iamen e con igu ados
po el ges o . Indica la ocu encia de dicho e en o con igu ado.

33
33
Pilo o de ges ión pa a disposi i os IoT
2.1.2 MQTT
En el con ex o de es e abajo, es imp escindible conoce es e p o ocolo ya que es u ilizado po el subsis ema
de ges ión 1 pa a en ia las ins ancias de SNMP, de los ou e s y se ido es que ges iona, hacia el b óke MQTT
enca gado de in oduci las en la base de da os.
MQTT [12] cuen a con a ios mo i os que lo hace se el p incipal p o ocolo de comunicación en el ámbi o
de los disposi i os de IoT. Lo que p o oca que sus casos de uso aba quen ámbi os muy dispa es y que, cada ez,
sea más u ilizado en en o nos p o esionales.
En e es os ámbi os podemos des aca sec o es como la au omoción, con ma cas como BWM [13] y
Volkswagen [14], que ya implemen en sus p opios sis emas de IoT basados en el p o ocolo de MQTT, o el
sec o de anspo e, donde un cla o ejemplo en Alemania con DB Railway Sys em.
Todos es os casos de uso en ámbi os p o esionales se de allan en [15], sin emba go, no debemos deja a ás
el uso gene al de p o ocolos de es e ámbi o po el ciudadano común, ya que, hay una g an comunidad de ás de
sis emas Sma Home que u ilizan es os p o ocolos pa a au oma iza y ges iona cie as ac i idades en el ámbi o
p i ado: sis emas de segu idad en casa, iego au omá ico de plan as, au oma ización de la iluminación, en e
o os.
2.1.2.1 Modelo Publicado -Susc ip o
Conc e amen e, MQTT es un es ánda de OASIS [12] y cons i uye uno de los p o ocolos más adicionales y
usados de IoT, des inados a la comunicación en disposi i os de bajos ecu sos. En e sus p incipales
ca ac e ís icas, cabe des aca que u iliza un modelo publicación-susc ipción. En es e modelo nos encon amos
los siguien es elemen os:
• Clien e MQTT: Es una aplicación o disposi i o que se enca ga de en ia o ecibi in o mación al b óke .
Po an o, no se comunica di ec amen e con el es o de los clien es. Puede eje ce dos oles: publicado ,
donde el clien e ansmi e un mensaje a un opic especí ico; y susc ip o , donde el clien e le comunica
al b óke que desea ecibi mensajes de un opic especí ico.
• B óke MQTT: Es, po an o, un in e media io en e los clien es. Su labo es la ges ión de las conexiones
con es os y la dis ibución de la in o mación.
En la siguien e Figu a 2-2 se de alla el modo de uncionamien o de es e p o ocolo, donde un clien e puede
eje ce an o como susc ip o , publicado o ambos a la ez, y no necesa iamen e iene que se un disposi i o de
bajos ecu sos ales como senso es, cáma as o disposi i os A duino, sino que pod ía se un disposi i o más
po en e, como un o denado o elé ono.
En es e escena io se p opone un modelo donde el o denado y el elé ono mó il ges ionan los iempos de
mues eo de un senso de empe a u a, un senso de humedad, y un senso gené ico conec ado a un disposi i o
A duino.
Se obse a, cómo el b óke lle a a cabo la a ea de dis ibui la in o mación en e clien es, de o ma que es os
no se comunican de o ma di ec a y de ges iona las conexiones con es os. Es o pe mi e además que un clien e
as desconec a se del b óke pueda man ene sus susc ipciones y publicaciones cuando uel a a conec a se sin
necesidad de ealiza nue as pe iciones.
Base eó ica
Figu a 2-2 – Escena io básico MQTT
2.2 Tecnologías implicadas
A con inuación, se ealiza á una b e e in oducción a odas las ecnologías sob e las que se apoya es e T abajo
Fin de G ado.
2.2.1 A duino
A duino [16] es una pla a o ma de ha dwa e y so wa e de código abie o diseñada pa a acili a la c eación
de p oyec os del ámbi o de la elec ónica, g acias al uso de mic ocon olado es e icien es y muy ba a os que
pe mi en p og ama disposi i os de amaño educido median e un lenguaje basado en C/C++.
En es e abajo, A duino supone la p incipal pla a o ma de ha dwa e y so wa e u ilizada, ya que, el
subsis ema de ges ión 2 es á gobe nado po un A duino MEGA 2560, modelo na i o de la ma ca A duino,
mien as que el subsis ema de ges ión 1 es con o mado po un ESP32 cuyo desa ollo se ealiza ambién desde
el mismo IDE de A duino. Ambos disposi i os compa en simili udes, sin emba go, hay cla as di e encias que
se explica án a lo la go de los siguien es apa ados.
Fue in en ado en 2005 po un es udian e de ins i u o, llamado Massimo Banzi, con el obje i o acili a a los
es udian es de su ins i u o un ap endizaje p ác ico en elec ónica y p og amación, ya que, en aquel momen o, las
placas de mic ocon olado es e an muy poco accesibles económicamen e.
T as a ias e siones y el apoyo de a ios colabo ado es, Banzi consiguió la a ian e de A duino Uno que
conocemos hoy en día y que se ha con e ido en una he amien a líde en el ámbi o de la elec ónica DIY (Do
I You sel , hazlo ú mismo).
En los siguien es apa ados se de alla án las ca ac e ís icas del ha dwa e y so wa e necesa ios pa a elabo a
un p oyec o de es e ámbi o, haciendo én asis en los disposi i os u ilizados en es e abajo.
2.2.1.1 Ha dwa e
Además de las placas es ánda como las de la ma ca A duino, exis en o as pla a o mas de mic ocon olado es
de bajo cos e y g an endimien o que incluyen capacidades de conec i idad como Wi-Fi o Blue oo h, lo que las
con ie e en una excelen e opción pa a p oyec os más a anzados que equie en comunicación inalámb ica y
conexión a In e ne .
35
35
Pilo o de ges ión pa a disposi i os IoT
A con inuación, se desc iben dos opciones muy popula es que cons i uyen el núcleo a ni el de ha dwa e de
es e T abajo Fin de G ado: el ESP32 y el A duino MEGA.
ESP
El módulo ESP32 es un sis ema en chip (SoC) de bajo cos e y consumo ene gé ico, diseñado po la emp esa
Esp essi Sys ems pa a aplicaciones de IoT. A di e encia de las opciones más económicas de A duino, in eg a
de o ma na i a Wi-Fi y Blue oo h, siendo, además, p og amable con el IDE de A duino o el amewo k ESP-
IDF.
Figu a 2-3 – ESP32
A duino MEGA 2560
El A duino MEGA 2560 es una placa basada en el mic ocon olado ATmega2560, diseñada pa a p oyec os
que equie en más pines de E/S y memo ia que un A duino UNO ya que, a di e encia de es e, cuen a con 8 KB
de SRAM, 54 pines digi ales y 16 pines analógicos, núme os cua o eces mayo que los de su he mano meno .
Además, es el modelo más u ilizado de la gama A duino al se compa ible con la mayo ía de las placas de
expansión, ambién llamadas shields, que ag egan capacidades adicionales como E he ne , pan allas LCD,
anu as de memo ia mic o-SD, en e o as.
Figu a 2-4 – A duino MEGA 2560
A ni el de ha dwa e, hay una g an di e encia de po encia en e el A duino MEGA y el ESP32 que puede
e se e lejada en la siguien e abla compa a i a, sin emba go, debido al ele ado núme o de pines y a la acilidad
de con igu ación en A duino IDE, el A duino MEGA 2560 sigue siendo la opción más u ilizada:
Base eó ica
Tabla 2-3 – Compa a i a A duino MEGA y ESP32
Ca ac e ís ica
A duino MEGA 2560
ESP32
Mic ocon olado
ATmega2560 (8 bi s)
Tensilica X ensa LX6 (32 bi s)
F ecuencia del p ocesado
16 MHz
240 Mhz
GPIO
54
36 (14 analógicas compa idas)
Memo ia RAM
8 KB
520 KB
Memo ia de p og ama
256 KB
4 MB
Vol aje de uncionamien o
5 V
3.3 V
2.2.1.2 IDE de A duino y p og amación
La p og amación en A duino se ealiza p incipalmen e a a és de su en o no de desa ollo in eg ado (IDE),
que es una he amien a que pe mi e esc ibi , compila y ca ga código en placas de A duino, ESP y o as ma cas.
El lenguaje u ilizado es á basado en C/C++, lo que signi ica que compa e la sin axis y el uso de es uc u as y
unciones comunes en es os lenguajes. Una de las pa icula idades de los p og amas desa ollados en A duino,
ambién denominados ske chs, es que siemp e siguen la siguien e es uc u a:
• Decla ación de a iables: Al inicio del p og ama se p esen a una pa e pa a decla e a iables,
unciones, obje os y es uc u as e impo a las lib e ías necesa ias.
• Función se up: Se ejecu a una única ez al encende la placa A duino o al pulsa la ecla Rese del
mismo. En es a unción se p esen a el código de con igu ación inicial pa a la inicializaciónd de
pe is é icos, comunicaciones, a iables, e c.
• Función loop: Es a unción con iene la lógica p incipal del p og ama y su ejecución se epi e en bucle
has a que se apague el A duino.
La p og amación en A duino no solo se limi a a con ola ac uado es y lee senso es. A medida que un
p oyec o c ece en complejidad, ambién lo hace la necesidad de u iliza biblio ecas adicionales que pe mi en
in e ac ua ácilmen e con componen es y módulos más a anzados, como pan allas LCD, mo o es, disposi i os
de al a ension como bombillas y elec odomés icos y módulos de comunicación WiFi o E he ne .
2.2.2 Eclipse Mosqui o
Eclipse Mosqui o [17] es un b óke de código abie o que implemen a el p o ocolo MQTT en sus e siones
5.0, 3.1.1 y 3.1. Es á desa ollado po Eclipse Founda ion y es compa ible con múl iples pla a o mas y sis emas
ope a i os, o eciendo ca ac e ís icas como au en icación, ci ado y sopo e pa a QoS, siendo una he amien a
esencial en implemen aciones de IoT. Además, p opo ciona lib e ías en C pa a implemen a clien es de es e
p o ocolo, pe mi iendo con ola los po CLI con dos comandos que esponden a los oles que pueden ene los
clien es de es e p o ocolo: mosqui o_pub y mosqui o_sub.
Den o del subsis ema de pe sis encia, es un elemen o cla e ya que se enca ga de ecibi las ins ancias de
ges ión de ou e s y se ido es ob enidas po el subsis ema de ges ión 1 e in oduci las en la base de da os.
2.2.3 GNS3
GNS3 [18] es una pla a o ma de simulación de edes que pe mi e diseña , p oba y desplega con igu aciones
de ed complejas en un en o no i ual. Es compa ible la mayo ía de los sis emas ope a i os y sopo a una amplia
gama de disposi i os i uales ( ou e s, swi ches, i ewalls).
Es ampliamen e u ilizado po p o esionales y es udian es pa a expe imen a con edes sin necesidad de
37
37
Pilo o de ges ión pa a disposi i os IoT
ha dwa e ísico, ya que, pe mi e ejecu a imágenes eales de Cisco IOS u ilizando Dynamips en la in aes uc u a
de GNS3. Pe mi iendo ealiza con igu aciones como si es u ie as abajando con ou e s eales.
U iliza es e so wa e pa a p oba diseños de edes complejas es muy ecomendable pa a p epa a exámenes
de ce i icaciones muy conocidas de Cisco como CNNA y CCNP. Como al e na i a, ambién exis e un p og ama
simila desa ollado po Cisco Ne wo king Academy llamado Cisco Packe T ace , sin emba go, dada mi
expe iencia con GNS3 en a ios p oyec os du an e el g ado, he decidido segui u ilizando GNS3.
Po ello, GNS3 ha sido el so wa e u ilizado pa a desa olla el escena io p incipal de ges ión de es e abajo que
con ine los ou e s ges ionados median e SNMP po el subsis ema de ges ión 1.
2.2.4 And oid S udio
And oid S udio [19] es el en o no de desa ollo in eg ado (IDE) o icial pa a la c eación de aplicaciones
And oid. Es la pla a o ma p e e ida po los desa ollado es pa a diseña , p oba y op imiza aplicaciones mó iles
pa a el sis ema ope a i o And oid, sopo a lenguaje Ja a y Ko lin. En mi caso, he u ilizado es e IDE pa a el
desa ollo comple o de la aplicación mó il que eje ce como p incipal in e az de usua io del sis ema.
2.2.5 Pos g eSQL
Pos g eSQL [20] es un sis ema de ges ión de bases de da os elacionales de código abie o ampliamen e
u ilizado, basado en el lenguaje SQL. Sopo a consul as complejas, ansacciones ACID, y unciones a anzadas
como igge s, is as y p ocedimien os almacenados. En es e p oyec o se u iliza á como se icio de base de
da os pa a almacena las ins ancias de los obje os de ges ión de los ou e s y se ido es ges ionados po el
subsis ema de ges ión 1.
2.2.6 Sp ing Boo
Sp ing Boo [21] es un amewo k de desa ollo de aplicaciones en Ja a, diseñado p incipalmen e pa a
simpli ica el despliegue y c eación de aplicaciones con he amien as que acili an el acceso y ges ión de los
da os. En es e p oyec o se u iliza á un se ido REST implemen ado usando es e amewo k, pa a eje ce de
in e media io en e la aplicación mó il desa ollada y la base de da os.

Base eó ica
39
39
Pilo o de ges ión pa a disposi i os IoT
3 DEFINICIÓN DEL SISTEMA
n es e capí ulo se lle a á a cabo una de inición gene al del sis ema, pa a in oduci los p incipales
elemen os que componen cada uno de los subsis emas in oducidos en el capí ulo 1: los subsis emas de
ges ión 1 y 2, el subsis ema de pe sis encia y el subsis ema de in e az de usua io. En pos e io es capí ulos,
se án desc i os de alladamen e.
3.1 Componen es del sis ema
Figu a 3-1 – Componen es del sis ema
E
Lo que engo en mi co azón y en mi alma debe
encon a una salida. Esa es la azón de la música
.- Ludwig an Bee ho en-
De inición del sis ema
En la Figu a an e io , se mues a el diag ama comple o del sis ema con las pa es que lo componen y la
comunicación en e es as. Se han indicado con la misma gama de colo es y en o ma de ecuad o cada uno de
los subsis emas is os an e io men e en la Figu a 1-1: Esquema gene al del sis ema. Además, se indican con
lechas las en adas y salidas de cada componen e y el p o ocolo que aplica en cada caso.
En el subsis ema de ges ión 1, el ESP32 iene la unción de clien e SNMP, ob eniendo median e es e p o ocolo
y de o ma pe iódica, las ins ancias de ges ión de a ias de las MIB que implemen an los disposi i os que
ges iona. Es os se án an o ou e s como se ido es:
• En el caso de los ou e s, se u iliza á un escena io desa ollado con el so wa e GNS3 u ilizando
imágenes de ou e s de Cisco, conc e amen e del modelo C7200.
• Pa a los se ido es, u iliza é dos o denado es con el S.O Windows, ap o echando el se icio de SNMP
que iene po de ec o.
Po o a pa e, en el subsis ema de ges ión 2, El A duino MEGA es el disposi i o p incipal enca gado de
p opo ciona , median e el p o ocolo SNMP, las ins ancias de odos los obje os de la MIB elabo ada pa a es e
T abajo Fin de G ado (Anexo A), es deci , se a a del agen e SNMP p incipal. Además, es es e disposi i o el
que implemen a, casi en su o alidad, las uncionalidades de ges ión que se menciona án en el siguien e apa ado
3.2 Funcionalidades Especí icas.
Como se obse a en el diag ama, hay una in e conexión en e el ESP32 y el A duino MEGA. Es o es así dado
que, como se ha mencionado an e io men e, cada ez que el ESP32 ob enga las ins ancias de SNMP de los
ou e s y se ido es ges ionados, las en ia á al A duino MEGA median e comunicación UART. De es a o ma,
el A duino MEGA pod á p opo ciona las median e SNMP, cen alizando así oda la in o mación de ges ión, no
solo de los p opios senso es que implemen a, sino ambién de los alo es de ges ión de ou e s y se ido es.
Del mismo modo, el ESP32 ambién en ía es os alo es a un b óke del p o ocolo MQTT que se enca ga de
almacena los en una base de da os elacional implemen ada con el se icio Pos g eSQL.
Po úl imo, como se puede ap ecia en el p opio diag ama, el subsis ema de pe sis encia y el de in e az de
usua io es án con o mado po las siguien es he amien as:
• En p ime luga , enemos un b óke del p o ocolo MQTT enca gado de ecibi del ESP32 las ins ancias
de SNMP que es e ob iene de ou e s y se ido es, de o ma que almacena en una base de da os oda
es a in o mación con el obje i o de ene un his o ial de cada una de las ins ancias.
• Po o o lado, enemos una aplicación mó il que he desa ollado como p incipal in e az de usua io pa a
in e ac ua con el sis ema. Pa a ello, ob iene pa e de la in o mación de ges ión del A dunio MEGA,
median e pe iciones de SNMP, mien as que el es o de la in o mación, co espondien e a las ins ancias
de ges ión ob enidas po el ESP32, se ob ienen con pe iciones HTTP a un se ido REST. Como es a
pa e se almacena en la base de da os, he desa ollado un backend de inido en es e caso como se ido
REST, que eje ce de in e media io en e la aplicación mó il y la p opia base de da os.
• Po úl imo, como se mencionó p e iamen e, el A duino MEGA ecibe del ESP32 odas las ins ancias
que es e ges iona, de o ma que se p esen a la posibilidad de ob ene las median e pe iciones SNMP. La
di e encia en e ob ene es a in o mación desde la base da os o del A duino MEGA, es únicamen e que
en el p ime caso enemos la posibilidad de ob ene el his o ial comple o pa a cada ins ancia, mien as
que, si la ob enemos a acando po SNMP al A duino MEGA, ob end íamos solo los úl imos alo es de
cada ins ancia.
Sin emba go, dado que se p esen a esa posibilidad de ob ene oda la in o mación de ges ión median e
SNMP, he decidido implemen a un escena io auxilia pa a la isualización de es os da os con un s ack
muy u ilizado en en o nos emp esa iales, compues o po : SNMP-Expo e [22], enca gado de en ia
las pe iciones SNMP y p opo ciona es a in o mación desde un endpoin que puede se a acado po
HTTP, P ome heus [23] que con ie e es os da os en o ma o de mé icas álidas pa a G a ana [24],
que las ob iene y las p esen a en múl iples o ma os de g á icas pe sonalizables.
41
41
Pilo o de ges ión pa a disposi i os IoT
3.2 Funcionalidades del sis ema
De ca a al usua io inal, se desglosa án a con inuación los casos de uso del sis ema:
• Consul a y modi icación de in o mación de ges ión del sis ema: nomb e iden i icado , enca gado de
ges ión, di ección IP del A duino, iempo de encendido, localización, elé ono y co eo de con ac o.
• Consul a del alo de los senso es ísicos y i uales: empe a u a, humedad de suelo, ol íme o, senso
capaci i o, senso es de audio ( ecuencia e in ensidad del sonido), núme o de accesos al se ido Web
y memo ia RAM disponible del A duino Mega.
• Ges ión indi idual de los iempos en e lec u as de cualquie senso , ísico o i ual.
• Consul a del ins an e de lec u a del úl imo alo de cada senso .
• Es ablecimien o de a isos pe sonalizados pa a con ola el alo de cualquie senso , den o del umb al
especi icado po el usua io.
• Ges ión de has a 2 se ido es con el SO Windows (se icio SNMP p opie a io): iempo de encendido,
ca ga de la CPU, núme o de conexiones TCP y espacio en uso del disco p incipal.
• Ges ión de has a 5 disposi i os de ed que implemen en un agen e SNMP ( ou e s, swi ches): iempo
de encendido, localización, es ado y núme o de by es ecibidos de uno de sus pue os.
• Ges ión de in o mación de encaminamien o ela i a a las conexiones del p o ocolo BGP de los
disposi i os de ed ges ionados: ASN del ecino, iempo de la conexión, mensajes de ipo UPDATE y
mensajes o ales ecibidos (UPDATE + KEEP ALIVE).
• Acceso au en icado a la aplicación mó il pa a la ges ión emo a del sis ema.
• Acceso al se ido web HTTP del ESP32 pa a la consul a de los equipos de ed (nomb e y di ección
IP) que es án siendo ges ionados, desca ga la MIB comple a del A duino y con igu a el iempo en e
en íos de las pe iciones SNMP a ou e s y se ido es.
3.3 Conexiones del sis ema: Ha dwa e implicado
El p esupues o o al del ha dwa e se p esen a en la siguien e Tabla:
Tabla 3-1 - P esupues o
Re e encia
Disposi i o
P ecio
1
A duino MEGA 2560
20€
2
ESP32
5€
3
Display TFT 3.2 ILI9341
9€
4
Display LCD 2x16
3€
5
E he ne Shield W5100
12€
6
ESP8266
3€
7
Senso de humedad de suelo VH400
60€
8
Senso de empe a u a TMP35
2€
9
Senso es de audio KY-38
2€
10
Vol íme o
1€
11
Senso capaci i o
1€
12
Cables
4€
13
Resis encias
4€
To al: 136€
Subsis ema de ges ión 1
Figu a 4-7 – Función ge 1SNMP: en ío de pe iciones SNMP a los se ido es
4.2.2 Se ido web HTTP
El se ido web, implemen ado con la biblio eca WebSe e , p opo ciona una in e az pa a isualiza algunas
de las a iables ob enidas po SNMP y con igu a el in e alo de sondeo de pe iciones. Conc e amen e, la página
p incipal (inicioWeb()) mues a:
• Nomb es y di ecciones IP de disposi i os ges ionados po SNMP.
• De alles de in e aces de ed (desc ipción, y localización).
• Un o mula io pa a ajus a el in e alo de sondeo (con igu a la a iable pollIn e al).
• Bo ón pa a desca ga el iche o de la MIB.
Po o a pa e, he con igu ado los endpoin s /modi ica Tm y /ob ene MIB que pe mi en, espec i amen e,
ac ualiza la ecuencia de sondeo y desca ga la MIB desa ollada pa a es e p oyec o (Anexo A) que es á
almacenada en la memo ia SPIFFS del ESP32.
Pa a el desa ollo de es a página web, en el caso de la lib e ía WebSe e se debe ealiza de una o ma
o almen e manual, c eando una a iable de ipo S ing que con enga el HTML con oda la página web, pudiendo
hace conca enaciones pa a pe sonaliza los dis in os campos.

49
49
Pilo o de ges ión pa a disposi i os IoT
Adjun o algunas cap u as de cómo he implemen ado odo el HTML de o ma manual, es e incluye al p incipio
un apa ado ex enso de CSS pa a modi ica los es ilos:
Figu a 4-8 – Función inicioWeb() 1
Figu a 4-9 – Función inicioWeb() 2
Y inalmen e se de ine oda la lógica con las cabece as habi uales de HTML (body, main, h1, e c):
Figu a 4-10 – Función inicioWeb() 3
Subsis ema de ges ión 1
En la siguien e cap u a se puede ap ecia la web p opo cionada po el ESP32 desc i a an e io men e. A ella
se accede indicando la di ección IP del ESP32 desde cualquie cualquie na egado web.
Figu a 4-11 – Web de ges ión del ESP32
4.2.3 Clien e MQTT
El clien e MQTT (PubSubClien ) publica las a iables ecopiladas con SNMP en los ópics de inidos pa a
cada disposi i o. Es os ópics los he con igu ado pa a que, dinámicamen e, con engan el nomb e (sysName)
ob enido po SNMP de cada disposi i o ges ionado.
En p ime luga , dado que MQTT es un p o ocolo o ien ado a conexión, se debe es ablece en p ime luga
una conexión con el b óke . Es o se hace en la unción conexionB oke , que ein en a la conexión cada 5
segundos en caso de alla .
Figu a 4-12 – Función conexionB oke ()
51
51
Pilo o de ges ión pa a disposi i os IoT
Pos e io men e, en la unción loop() se ealiza la publicación de los alo es de odas las a iables en sus
co espondien es ópics de MQTT. En mi caso, he con igu ado los ópics pa a que se es ablezcan de o ma
dinámica con el nomb e de cada disposi i o, que se ob iene con SNMP ( a iable sysName), de o ma que cada
ópic queda de la siguien e o ma:
/a duino1/{sysName}/bgp/{nomb eIns ancia} Pa a las a iables del g upo bgp
/a duino1/{sysName} /{nomb eIns ancia} Pa a el es o de a iables
En la siguien e cap u a se e leja la publicación de odas las a iables en sus co espondien es ópics de
MQTT, con un p ime bucle pa a las a iables de los ou e s, y un segundo bucle pa a las a iables de los
se ido es Windows. Habe almacenado las a iables asociadas a un mismo OID en un a ay acili a la ges ión
de es as, no solo en es e caso de publicación con MQTT, sino ambién en el en ío po UART al A duino Mega
y en las unciones de en ío de pe iciones de SNMP.
Figu a 4-13 – Publicación de a iables con MQTT
4.2.4 Comunicación se ial
Reco demos que una de las pa icula idades de es e abajo es que las uncionalidades de clien e y se ido
(agen e) del p o ocolo SNMP se implemen an en dis in os disposi i os. El ESP32 eje ce de clien e y es el que
en ía pe iciones de ipo GET y GET-NEXT a los se ido es y ou e s ges ionados, mien as que el A duino
MEGA es el agen e SNMP que esponde an e pe iciones SNMP (GET, GET-NEXT y SET) pa a ges iona an o
senso es ísicos y i uales p opios, como los disposi i os que ges iona el ESP32, ya que es e le en ía odos los
alo es que ob iene de los disposi i os que ges iona. De es a o ma, enemos un disposi i o que cen aliza oda
la in o mación de ges ión.
Subsis ema de ges ión 1
Los mo i os de implemen a ambas uncionalidades de o ma sepa ada en dos disposi i os muy di e en es
son a ios, y se en ocan en es p incipales ca ac e ís icas: memo ia RAM, núme o de pines y ol aje de
uncionamien o.
La idea inicial de es e p oyec o e a implemen a lo odo en un único disposi i o que p e endía se un A duino
MEGA, sin emba go, as a ios meses adap adando las lib e ías que o ecen las uncionalidades de clien e y
se ido pa a que unciona an simul áneamen e, conseguí una e sión comple amen e uncional.
No obs an e, su limi ada memo ia RAM de 8 KB únicamen e pe mi ía la ges ión de has a 10 ins ancias de
SNMP, lo que equi ale a ges iona solo dos se ido es. Insa is echo con es a limi ación, decidí sepa a las
uncionalidades de clien es y se ido de SNMP en dos disposi i os dis in os, lo que me ha pe mi ido llega a
ges iona has a 140 ins ancias de SNMP, eniendo oda ía un g an ma gen pa a amplia es e núme o g acias a
su memo ia RAM de 520 KB.
La elección del disposi i o enca gado de implemen a cada uncionalidad no ha sido alea o ia, sino que su gió
como esul ado de un análisis de las necesidades del p oyec o, las capacidades de los disposi i os exis en es en
el me cado y el conocimien o adqui ido du an e odo el abajo p e io de implemen ación en el A duino MEGA:
• En p ime luga , cabe des aca que la uncionalidad de clien e SNMP demanda mucha mas memo ia
RAM que la de se ido . Es o es así debido al a amien o de la memo ia en cada caso, eniendo en
cuen a que, pa a ambas uncionalidades, los a ibu os ealmen e necesa ios de un mensaje SNMP son
el OID y la IP o igen o des ino.
Cuando un clien e ecibe una pe ición del p o ocolo SNMP, comp ueba el OID de la pe ición y en ía
el alo co espondien e a ese OID en el mensaje de espues a. Po an o, el pa OID y IP solo pe manece
en memo ia RAM el iempo que a de el A duino en p ocesa la unción de gene a la espues a. Una
ez en iada, se eliminan de memo ia RAM.
En el caso del clien e, cuando en ía una pe ición debe á man ene en memo ia RAM el pa OID e IP
des ino has a que le llegue la espues a y la p ocese. Po an o, pa a un al o núme o de disposi i os
ges ionados, se llega a ene en un mismo ins an e un al o núme o de pa es OID e IP en memo ia RAM,
p o ocando un uso excesi o de la misma.
• Po o a pa e, necesi aba ene un amplio núme o de pines digi ales y analógicos pa a pode
implemen a un al o núme o de senso es, man eniendo la posibilidad de, en un u u o, implemen a
o os nue os. Además, el disposi i o que implemen a a la uncionalidad de se ido es el que debe ene
conec ados odos los senso es. Po ello, el A duino MEGA que cuen a con 54 pines digi ales y 16
analógicos ha sido mi opción elegida pa a eje ce como se ido mien as que el ESP32, que cuen a
únicamen e con 33 pines digi ales, pudiendo usa 12 de es os como analógicos, eje ce como clien e.
• Además, una g an pa e de los senso es necesi an 5V pa a unciona co ec amen e lo que hace di ícil
u iliza el ESP32 pa a la ges ión de un al o núme o de senso es, dado que es e disposi i o en ega solo
3.3V en odos sus pines. En cambio, el A duino MEGA sí p opo ciona 5V.
Po an o, una ez explicados los mo i os po el que el ESP32 eje ce de clien e y el A duino MEGA de
se ido , puedo de alla el mé odo u ilizado pa a el in e cambio de in o mación en e ambos disposi i os. En
es e apa ado, enía a ias opciones posibles:
• Mé odos ísicos: I2C, UART (comunicación se ial) y SPI.
• Mé odos inalámb icos: u ilizando p o ocolos como MQTT, HTTP, o Blue oo h.
T as in es iga odas las posibilidades y analiza sus en ajas e incon enien es, decidí u iliza la comunicación
se ial (UART) al se la opción más sencilla de implemen a y siendo, además, o almen e álida pa a la necesidad
de mi p oyec o: en ia pe iódicamen e los alo es de 64 ins ancias de SNMP desde el ESP32 has a el A duino
MEGA.
53
53
Pilo o de ges ión pa a disposi i os IoT
La comunicación se ial UART pe mi e el in e cambio asínc ono de da os en e disposi i os median e dos
cables: uno pa a ansmi i (TX) y o o pa a ecibi (RX). A di e encia de o os mé odos de comunicación, el
UART no equie e un eloj compa ido, ya que ambos disposi i os deben es a con igu ados a la misma
elocidad en baudios (en mi caso, 115200 bps) pa a in e p e a co ec amen e los da os.
El uncionamien o del UART se basa en amas de da os que iajan, desde un pin de ansmisión TX hacia el
pin de ecepción RX del des ino e incluyen bi s de inicio, bi s de pa ada y, opcionalmen e, bi s de pa idad pa a
de ec a e o es. El ecep o econs uye los da os in e p e ando las señales eléc icas según el baud a e
con igu ado y aunque es un p o ocolo de comunicación simple y e icaz, su alcance es limi ado, ya que es
ulne able a pé didas de señal, uido elec omagné ico y deg adación con la dis ancia, po ello, deben u iliza se
cables lo más co os posibles.
Figu a 4-14 – Funcionamien o de la comunicación UART
Decidí u iliza es e mé odo de comunicación ya que an o el A duino MEGA como el ESP32 incluyen a ios
pines de ansmisión y ecepción (RX y TX) dedicados a UART, e implemen an de o ma na i a una lib e ía
o icial llamada Se ial que simpli ica el en ío y ecepción de da os en e es os pines median e unciones como
p in () y ead().
En la siguien e ilus ación podemos e como he conec ado ambos disposi i os, u ilizando un único cable que
a desde el pin de ansmisión del ESP32 al pin de ecepción del A duino MEGA. Como solo necesi o es e
sen ido de ansmisión, no he u ilizado un segundo cable pa a el sen ido con a io.
Figu a 4-15 – Comunicación UART en e el ESP32 y el A duino

Subsis ema de ges ión 1
Pa a acla a la implemen ación de es e en ío de a iables, oy a de alla la pa e del código enca gada de
ealiza es o. En p ime luga , se deben con igu a en ambos disposi i os el mismo núme o de baudios con la
siguien e llamada a la unción begin de la lib e ía Se ial:
Se ial.begin(115200);
Es o inicia á la comunicación se ial en e ambos disposi i os, pe mi iendo el en ío de cualquie ipo de
in o mación desde el ESP32 al A duino MEGA. En la siguien e Figu a se mues a la secuencia del en ío de
odas las a iables que ecibe el ESP32 de ou e s y se ido es al A duino MEGA. En es e caso, el igge que
inicia la secuencia es la ecepción en el ESP32 de odas las ins ancias de SNMP ges ionadas.
Una ez ecibidas, se combinan odas ellas en una única a iable de ipo S ing denominada esul ado
u ilizando la unción combina Va iables.
El A duino MEGA comp oba á en cada i e ación de su unción loop si hay algún da o disponible en el pue o
RX2, en cuyo caso almacena á dicha cadena en la a iable SNMP a s.
Po úl imo, se ealiza á el p oceso in e so: a pa i de la a iable ob enida po comunicación se ial, se asigna á
cada alo a su a iable co espondien e del A duino MEGA.
Figu a 4-16 – Diag ama de lujo de la comunicación UART
Pa a acla a es e p oceso, quie o deja cons ancia de la implemen ación de las unciones combina Va iables
y asigna Valo esDesdeCadena. Debido a la g an ex ensión de ambas unciones, oy a p opo ciona la pa e de
código que se e ie e únicamen e a los alo es de las ins ancias SNMP de los se ido es, ya que la pa e de los
ou e s sigue el mismo p ocedimien o.
En la unción combina Va iables del ESP32 se consigue c ea la a iable esul ado que se á un S ing que
con iene las 64 ins ancias de SNMP que ges iona el ESP32, siguiendo el o ma o:
a iable1* a iable2* a iable3* a iable4*…
Es o se consigue g acias a la unción snp in u ilizando un bu e empo al que se conca ena á inalmen e a
la a iable esul ado. Se ap ecian has a dos i e aciones, una po se ido , dado que odas las a iables que
55
55
Pilo o de ges ión pa a disposi i os IoT
coinciden con un mismo OID de SNMP se almacenan en un mismo A ay (sysName1, nomb eDisco1, ime1…).
Figu a 4-17 – Función combina Va iables()
Cuando el A duino MEGA eciba dicha cadena, llama á a la unción asigna Valo esDesdeCadena que se
enca ga á de gua da cada alo en su a iable co espondien e. G acias a sepa a cada a iable con el signo *,
es a a ea es ealmen e sencilla u ilizando la unción indexO p opia de las a iables de ipo S ing. Cabe des aca
que es c ucial el o den en el que se conca ena on las a iables en el ESP32 dado que es lo que se iene en cuen a
pa a hace la asignación de las a iables en el A duino MEGA:
Figu a 4-18 – Función asigna Valo esDesdeCadena()
Subsis ema de ges ión 1
Es e p oceso se ealiza pe iódicamen e, siemp e que el ESP32 ecibe nue os da os de ipo SNMP de los
ou e s y se ido es. De es a o ma, una ez inalizado odo es e p oceso el A duino MEGA puede p opo ciona
median e el p o ocolo SNMP los alo es de odas es as ins ancias como si ue an p opias.
4.2.5 Ges ión del display TFT
Uno de los p incipales p oblemas de desa olla código en la pla a o ma A duino es que es a no cuen a con
un sis ema in eg ado de depu ación de código que acili e el análisis del lujo del p og ama pa a iden i ica y
co egi e o es. Pa a ello, se suele op a po el mé odo adicional de depu ación con ins ucciones de imp esión
(Se ial.p in ) u ilizando el Se ial Moni o de A duino IDE, sin emba go, es una p ác ica poco adecuada ya que
no pe mi e ealiza análisis de allados y equie e un man enimien o manual.
Debido a es o y a mi deseo de ene un p oyec o comple amen e po á il, decidí implemen a dos displays pa a
acili a es a a ea y u iliza los jun o con el Se ial Moni o . De es a o ma, ambién se pod á consul a en iempo
eal la secuencia de ejecución de ambos disposi i os sin necesidad de ene los conec ados a un o denado pa a
u iliza el Se ial Moni o , he amien a de isualización de logs del p opio IDE de A duino.
Los displays u ilizados han sido elegidos eniendo en cuen a las capacidades del A duino MEGA y del ESP32,
de es a o ma, el A duino ges iona un display LCD de ipo al anumé ico que cuen a con 2 ilas de 16 ca ac e es
cada una, mien as que en el ESP enemos un display TFT LCD de 3,2 pulgadas con esolución de 240x320.
En cuan o al display que ges iona el ESP32, enemos un display con la ecnología TFT LCD que pe mi e
isualiza imágenes y pe sonaliza pixel a pixel lo que se mues a en cada momen o. Es o conlle a que, a su ez,
sea más di ícil de u iliza que el display de ca ac e es. En cuan o a la conexión, es e u iliza únicamen e
comunicación I2C y necesi a ene conec ados los siguien es pines:
Tabla 4-2 – Pines del LCD TFT
Pin
Nomb e
Función
1
CS
Chip Selec , habili a la comunicación en la línea de da os
2
DC
Equi alen e al egis o de selección
3
RST
Reinicia el módulo TFT
4
SDA
Línea de da os SPI
5
SCL
Línea de eloj SPI que sinc oniza la ans e encia de da os
6
VCC
Alimen ación de 5V
7
GND
Tie a
Figu a 4-19 – Display TFT: pan alla de ca ga
57
57
Pilo o de ges ión pa a disposi i os IoT
Figu a 4-20 – Display TFT: es ablecimien o WiFi
Pa a la ges ión de es e display, exis en a ias lib e ías de e ce os muy u ilizadas, como Ada ui o TFT_eSPI.
En mi caso, he u ilizado es a úl ima y no me ha dado ningún p oblema ya que es compa ible con el d i e de mi
display: el ILI9341. El d i e de es e ipo de displays TFT pa a A duino es un elemen o c ucial ya que se enca ga
de la ges ión o al del mismo. Cada ab ican e o modelo de display suele u iliza con olado es, de o ma que
son ges ionados con dis in os comandos, po eso se necesi a una lib e ía compa ible con el con olado
especí ico. La in o mación que mues a du an e la ejecución del p og ama es la siguien e:
Figu a 4-21 – Diag ama de lujo del display TFT
Subsis ema de ges ión 2
5.1.1 Senso es ísicos
En es e apa ado, se de alla án los senso es ísicos u ilizados, p opo cionando una desc ipción de cada uno,
así como sus conexiones ísicas y las lib e ías u ilizadas pa a ealiza las lec u as.
5.1.1.1 Senso de empe a u a
Pa a el senso de empe a u a, se ha u ilizado el modelo TMP36, un senso ampliamen e conocido po su bajo
cos e y simplicidad. Es e cuen a con 3 pines: alimen ación, ie a y salida analógica, al como se mues a en la
siguien e ilus ación:
Figu a 5-2 – Senso de empe a u a TMP36
Las p incipales ca ac e ís icas de es e senso se pueden ob ene en su da ashee [29], no obs an e, las esumo
a con inuación en la siguien e abla:
Tabla 5-1 – Especi icaciones TMP36
Pa áme o
Valo
Rango de empe a u a
–40 °C a +125 °C
P ecisión ípica
±1 °C
Vol aje de alimen ación (Vcc)
2.7 V a 5.5 V
Co ien e de ope ación
< 50 µA
Vol aje de salida a 25 °C
750 mV
Escala de salida
10 mV/°C
O se de empe a u a
500 mV a 0 °C
La lec u a del TMP36 se ealiza midiendo el ol aje de salida en su pin VOUT, el cual a ía linealmen e con
la empe a u a. Pa a ello, es e pin se debe conec a a una en ada analógica del A duino (en mi caso, A0), que
con ie e la señal analógica en un alo digi al u ilizando su con e so ADC de 10 bi s. El alo leído se
ans o ma en ol aje, y luego se con ie e a g ados Celsius aplicando la ó mula:
𝐓𝐞𝐦𝐩𝐞𝐫𝐚𝐭𝐮𝐫𝐚 (°𝐂) = (𝐕𝐨𝐥𝐭𝐚𝐣𝐞 𝐞𝐧 𝐦𝐕 – 𝟓𝟎𝟎𝐦𝐕)
𝟏𝟎𝐦𝐕

65
65
Pilo o de ges ión pa a disposi i os IoT
Es o se debe a que el TMP36 iene un o se de 500 mV y una sensibilidad de 10 mV po g ado. De es a
o ma, el mic ocon olado puede in e p e a ácilmen e la empe a u a ambien e.
5.1.1.2 Senso de humedad de suelo
Como senso de humedad de suelo he u ilizado una opción p o esional, de la ma ca es adounidense
Vege onix, conc e amen e, el modelo VH400. Tu e la opo unidad de ob ene lo a buen p ecio en el me cado
de segunda mano y puedo asegu a que la calidad de ma e iales y p ecisión de lec u a es aco de a su p ecio.
Al igual que el TMP36, se a a de un senso analógico de 3 pines (alimen ación, ie a y salida analógica):
Figu a 5-3 – Senso de humedad del suelo VH400
Su da ashee [30] p esen a las siguien es ca ac e ís icas p incipales:
Tabla 5-2 – Especi icaciones Vege onix VH400
Pa áme o
Valo
Tipo de medición
Con enido olumé ico de agua (VWC)
P ecisión (a 25 °C)
±2% VWC
Resolución
0–50% VWC
Rango de empe a u a de ope ación
–40 °C a +85 °C
Señal de salida
P opo cional al ni el de humedad: 0–3 V
Tiempo de a anque
400 ms
Consumo de co ien e
<13 mA
Alimen ación
3.5 V a 20 V DC
La lec u a del senso Vege onix VH400 se ealiza midiendo el ol aje de salida en su pin VOUT, el cual a ía
en unción del con enido olumé ico de agua (VWC) p esen e en el suelo. Es e pin se debe conec a a una
en ada analógica del A duino (en mi caso, A1), que con ie e la señal analógica en un alo digi al u ilizando
su con e so ADC de 10 bi s.
Subsis ema de ges ión 2
El esul ado se p esen a en po cen aje de humedad de suelo, u ilizando la siguien e o mula:
𝐇𝐮𝐦𝐞𝐝𝐚𝐝 𝐝𝐞𝐥 𝐬𝐮𝐞𝐥𝐨 (%) = (𝟏𝟎𝟐𝟑 × 𝟏𝟎𝟎 )
𝐕𝐨𝐥𝐭𝐚𝐣𝐞 (𝐦𝐕)
5.1.1.3 Senso capaci i o
Un senso capaci i o pe mi e de ec a la p esencia o p oximidad de obje os o pe sonas, sin necesidad de
con ac o ísico. Su uncionamien o se basa en el compo amien o de un condensado : dos placas me álicas
sepa adas po un dieléc ico, cuya capacidad depende á de la supe icie de las placas, la dis ancia en e ellas y
el ipo de ma e ial dieléc ico. En el caso de es e senso , el cue po humano ac úa como una de esas placas cuando
se ace ca, lo que modi ica la capacidad del sis ema.
En A duino, es e senso ecibe una implemen ación y un a amien o muy dis in o a los senso es in oducidos
has a aho a. Pa a cons ui es e senso se necesi a: una esis encia de mínimo 100kΩ , un pa de cables y un
ma e ial conduc o como el papel de aluminio.
La conexión se ealiza de la siguien e o ma: cada pin de la esis encia se conec a á a un pin digi al dis in o
del A duino y la lámina de aluminio se conec a á a cualquie a de ellas. Cada conexión ecibe un nomb e dis in o:
aquella que enga conec ada la lámina de aluminio ecibe el nomb e de ecep o ( ecei e ) mien as que la o a
se denomina emiso (sende ):
El pin emiso (sende ) se enca ga de gene a una señal eléc ica que se ansmi e hacia el ecep o ( ecei e )
a a és del ci cui o R (po d ía añadi se un condesado ob eniendo un ci cui o RC). Cuando se p oduce es a
ansmisión, el iempo que a da la señal en llega al pin ecep o depende á de la capaci ancia o al del ci cui o.
Figu a 5-4 – Senso capaci i o
Al ace ca la mano u o o obje o conduc o al papel de aluminio, se al e a la capaci ancia y, po an o, ambién
el iempo de ansmisión. Es deci , la lec u a de un senso capaci i o consis e en medi el iempo que a da la
señal en alcanza el ecep o , y ese iempo a ía según la capaci ancia del en o no del senso . De es a o ma, la
lib e ía Capaci i eSenso [31] se enca ga de medi es e e a do de p opagación.
67
67
Pilo o de ges ión pa a disposi i os IoT
5.1.1.4 Vol íme o
Un ol íme o es un ins umen o esencial en elec ónica que mide la di e encia de po encial ( ol aje) en e dos
pun os de un ci cui o. Los ol íme os mode nos suelen se digi ales, con amplias con igu aciones y una pan alla
donde se mues a el alo leído.
Sin emba go, en el caso de A duino, medi ol aje es muy sencillo: bas a conec a un único cable desde el
pun o a medi a una de sus en adas analógicas (en mi caso A2). El ADC de 10 bi s del A duino con e i á la
señal analógica (que a ía en e 0V y 5V po de ec o) en un alo digi al (de 0 a 1023), el cual puede lee se en
el código y con e i se a ol ios con la siguien e ó mula de con e sión:
𝐕𝐨𝐥𝐭𝐚𝐣𝐞 (𝐕) = 𝐕𝐚𝐥𝐨𝐫 𝐝𝐢𝐠𝐢𝐭𝐚𝐥 𝐀𝐃𝐂 (𝟎 − 𝟏𝟎𝟐𝟑) × 𝐕𝐨𝐥𝐭𝐚𝐣𝐞 𝐝𝐞 𝐫𝐞𝐟𝐞𝐫𝐞𝐧𝐜𝐢𝐚 (𝐕𝐫𝐞𝐟)
𝟏𝟎𝟐𝟑
V e = 5V (A duino Mega)
5.1.1.5 Senso es de audio
El senso de audio KY-38 pe mi e medi la in ensidad del sonido que cap a median e un mic ó ono elec e .
No obs an e, no p opo ciona un alo en escala calib ada, como po ejemplo en dB, sino que de ec a a iaciones
del ol aje p o ocadas po la p esión de las ondas acús icas cap adas po dicho mic ó ono. No mide, po an o,
una magni ud ísica de o ma p ecisa, sino que ealiza una es imación de la in ensidad del sonido.
Sus p incipales ca ac e ís icas pueden se consul adas en su da ashee [32]. A con inuación, se p esen a un
cuad o esumen de algunas de ellas:
Tabla 5-3 – Especi icaciones KY-38
Pa áme o
Valo
Rango de ecuencias
20 Hz – 20 kHz (Sin calib ación)
Sensibilidad
Ajus able con po encióme o
Vol aje de alimen ación (Vcc)
3.73V a 5.5 V
Co ien e de ope ación
10 mA
La lec u a de es e senso se ealiza midiendo el ol aje de salida en su pin analógico, que debe á es a
conec ado a una en ada analógica del A duino (en mi caso, A3). Pa a ealiza la lec u a se u iliza á di ec amen e
la salida del con e ido ADC del A duino MEGA:
Figu a 5-5 – Senso de sonido KY-38
Subsis ema de ges ión 2
𝐈𝐧𝐭𝐞𝐧𝐬𝐢𝐝𝐚𝐝 𝐝𝐞𝐥 𝐬𝐨𝐧𝐢𝐝𝐨 (−)= 𝐕𝐚𝐥𝐨𝐫 𝐝𝐢𝐠𝐢𝐭𝐚𝐥 𝐀𝐃𝐂 (𝟎 − 𝟏𝟎𝟐𝟑)
5.1.2 Senso es i uales
En es e apa ado se de alla án los senso es i uales u ilizados, en qué consis e cada uno de ellos y cómo se
implemen an.
5.1.2.1 Memo ia RAM lib e
Uno de los p incipales p oblemas que u e en el desa ollo de odo el código pa a el A duino MEGA ue on
los e o es p o ocados po el desbo damien o de memo ia RAM, p o ocando un ese au omá ico del A duino.
Como consecuencia, decidí du an e odo el desa ollo ene implemen ado es e senso como una a iable mas
ges ionada median e SNMP, eniendo con igu ado un e en o pa a a isa si la memo ia RAM lib e bajaba de un
cie o umb al.
Pa a consegui es o, no exis en lib e ías o iciales pa a consul a la memo ia RAM lib e, sin emba go,
Memo yF ee [33] es una lib e ía desa ollada po e ce os que cumple a la pe ección es a labo . Con una simple
llamada a la unción eeMemo y de es a lib e ía, ob enemos un en e o indicando el núme o de by es de memo ia
RAM disponibles en iempo eal.
5.1.2.2 Núme o de accesos Web
Como imos en apa ados an e io es, una de las pa icula idades del p og ama desa ollado pa a el ESP32, es
que, además de eje ce como clien e SNMP y clien e MQTT, implemen a un se ido web que esponde a
pe iciones HTTP p opo cionando una web con in o mación de los disposi i os que ges iona po SNMP el
ESP32, an o nomb es como di ecciones IP. Es a web pe mi e, además, con igu a el iempo de mues eo del
en ío de pe iciones SNMP y desca ga el iche o comple o de la MIB del p oyec o.
Po ello, me pa eció in e esan e implemen a una a iable que con abilice el núme o de accesos a es a página
web, pudiendo con igu a e en os pe sonalizados ambién pa a es a a iable. Pues o que es e da o es
con abilizado po el ESP32, lo en ia á jun o con el es o de las a iables ob enidas po SNMP al A duino MEGA
po comunicación se ial (UART), pa a que es e pe mi a que su ges ión po SNMP como si ue a una a iable
p opia.
5.1.3 In e aces de ed: conexión Wi i y E he ne
Pa a las p ime as e siones de es e p oyec o, u ilicé como único adap ado de ed pa a el A duino MEGA, un
E he ne Shield W5100, que es una expansión muy u ilizada pa a es e disposi i o dada la acilidad de conexión
e implemen ación y su bajo cos e, al ededo de los 10 eu os. P ác icamen e cualquie lib e ía o p oyec o de la
comunidad de A duino que equie a conexión a In e ne es á p epa ada pa a u iliza lo.
Figu a 5-6 – E he ne Shield W5100
69
69
Pilo o de ges ión pa a disposi i os IoT
Es e adap ado de ed es á basado en el chip Wizne W5100, un con olado de ed que implemen a la pila de
p o ocolos TCP/IP. Po an o, con iene un mic op ocesado independien e que libe a al mic op ocesado del
A duino MEGA, el ATmega2560, de p ocesa cualquie a ea elacionadas con es os p o ocolos y que debe
comunica se con él, u ilizando pa a ello, el mé odo de comunicación po in e az SPI.
Como se ap ecia en la ilus ación, cuen a con un conec o RJ45 que admi e elocidades de has a 100 Mbps,
además de inclui un adap ado pa a a je as mic oSD. Po o o lado, se alimen a di ec amen e desde el A duino
y dispone de pines de expansión que eplican los del mic ocon olado base, de o ma que no se pie den pines
digi ales y analógicos.
Desde un pun o de is a écnico, el W5100 puede maneja has a cua o conexiones simul áneas (socke s) TCP,
y su con igu ación y ges ión se ealiza ácilmen e con la lib e ía E he ne .h, que es una lib e ía na i a de la
pla a o ma A duino pa a abaja con es e disposi i o.
T abaja con es e adap ado ha sido ealmen e sencillo, no me ha dado ningún ipo de p oblema y esponde
muy ápido an e cualquie ipo de pe ición. Sin emba go, dado que yo deseaba que es e p oyec o ue a
comple amen e po á il y que pa a abaja con él no siemp e he enido disponible conec i idad po E he ne ,
decidí do a al A duino MEGA de conec i idad WiFi u ilizando un disposi i o ESP8266, ya a di e encia del
ESP32, el A duino no cuen a con un adap ado de ed WiFi na i o.
Figu a 5-7 – Módulo WiFI: ESP8266
El ESP8266-01 no es mas que o o disposi i o muy u ilizado de IoT, al igual que el A duino MEGA o el
ESP32, pe o siendo una opción muy compac a. Implemen a el chip ESP8266EX, un mic ocon olado con Wi-
Fi in eg ado que a pesa de su amaño cuen a con más memo ia RAM, y ecuencia de eloj que el ATmega2560.
Conc e amen e implemen a una a qui ec u a X ensa LX106 de 32 bi s, con una ecuencia de eloj de has a 80
MHz y 96 KB de memo ia RAM.
Lo que nos in e esa de es e disposi i o es que sopo a dis in os modos de ope ación: modo es ación (STA) en
el que se conec a a una ed Wi-Fi exis en e como si ue a un clien e; modo AP (Access Poin ), en el que ac úa
como pun o de acceso, gene ando su p opia ed inalámb ica pa a que o os disposi i os se conec en a él; y modo
mix o (AP + STA), que pe mi e usa ambas unciones de mane a simul ánea.
En esumen, es capaz de unciona como un adap ado de ed independien e que do e de capacidad
inalámb ica a o os disposi i os A duino. Pa a ello, en ez de u iliza SPI como el W5100, es e inco po a una
in e az UART (TX/RX) pa a comunica se con o os disposi i os.
El p oblema de u iliza es e disposi i o es su poca compa ibilidad con p oyec os y lib e ías exis en es ya que
pa a ealiza oda la ges ión de conexiones, con igu ación y en ío/ ecepción de da os se u iliza una lib e ía
desa ollada po e ce os denominada WiFiEsp. Es a lib e ía es á des inada exclusi amen e pa a acili a la
comunicación en e el ESP8266 y el A duino MEGA, sin emba go, adap a la lib e ía de SNMP del A duino
MEGA pa a pode u iliza el ESP8266 ha sido odo un e o debido a las impo an es di e encias de
implemen ación con el W5100.

Subsis ema de ges ión 2
5.1.4 Ges ión del display
El display LCD que ges iona el A duino cuen a con los siguien es pines:
Tabla 5-4 – Pines del display LCD 16x2
Pin
Nomb e
Función
1
VSS
GND
2
VDD
+5V
3
VO
Con as e del display
4
RS
Regis o de selección
5
RW
Modo lec u a/esc i u a
6
E
Enable (ac i a la lec u a de da os)
7-14
D0-D7
Líneas de da os
15
LED+
Re oiluminación posi i a
16
LED-
Re oiluminación nega i a
A pesa de ene 16 pines, no es necesa io u iliza odos ellos pa a ges iona es e display g acias a que pe mi e
has a es modos de conexión:
• Modo de 8 bi s: Es e modo equie e conec a odas las líneas de da os (D0-D7) a pines digi ales del
A duino, pe mi iendo una comunicación más ápida, pe o necesi ando demasiados pines.
• Modo de 4 bi s: Es e modo es el más u ilizado, dado que solo se necesi an conec a las cua o líneas de
da os que comp enden en e D4 y D7. Aunque es más len o que el modo de 8 bi s, es su icien e pa a la
mayo ía de aplicaciones.
• I2C: Es e modo de conexión equie e un módulo ex a I2C, sin emba go, pe mi e u iliza únicamen e
dos pines: SDA pa a da os y SCL pa a la sinc onización ( eloj).
En mi caso, he decidido u iliza el modo de 4 bi s al como se ap ecia en la siguien e Figu a, dejando lib es los
cua o p ime os pines de da os:
Figu a 5-8 – Display LCD: es ablecimien o WiFi
71
71
Pilo o de ges ión pa a disposi i os IoT
Pa a la ges ión de es e display, u ilizo una lib e ía na i a del IDE A duino, llamada LiquidC ys al, ealmen e
sencilla de u iliza y que consume muy pocos ecu sos. La in o mación que mues a du an e la ejecución del
p og ama es la siguien e:
Figu a 5-9 – Diag ama de lujo del display LCD
5.2 So wa e: Implemen ación
En es e apa ado se de alla á de o ma gene al y p ecisa odos los códigos que con o ma el p og ama
desa ollado pa a el A duino MEGA, apoyándome en diag amas y p opo cionando cap u as de las pa es de
código que conside o más ele an es pa a su comp ensión. En p ime luga , se de alla á la MIB elabo ada pa a
el agen e SNMP de es e subsis ema, el A duino MEGA.
5.2.1 A duino MEGA
5.2.1.1 MIB
An es de p esen a la es uc u a gene al del p og ama, conside o necesa io in oduci en p ime luga odas las
ins ancias del A duino MEGA que pod án se ges ionadas po SNMP.
A con inuación, se p esen a un diag ama con la MIB comple a elabo ada pa a el A duino MEGA.
Subsis ema de ges ión 2
Figu a 5-10 - MIBARDUINO
Aunque la MIB comple a puede se consul ada en el Anexo A, oy a ealiza un esumen de la misma, así
como de los g upos e ins ancias que la componen:
El OID aíz u ilizado (.1.3.6.1.4.1.36582) ha sido pa a u iliza el p e ijo de en e p ises, que no es á p easignado
puediendo se adop ado po emp esas. A pa i de es OID se de inen los 6 g upos de ges ión que con o man la
MIB elabo ada pa a es e p oyec o, bajo el nomb e de MIBARDUINO.
En el p ime g upo, in o maciónDeGes ión, enemos ins ancias de ipo escala elacionadas con la ges ión
gene al del A duino, que son equi alen es a los escala es conocidos de la MIB-II [34] como sysName,
sysUpTime, sysCon ac y sysLoca ion. En la siguien e abla se de inen odos los escala es que con o man es e
g upo, indicando el nomb e, ipo, ni el de acceso ( ead-w i e o ead-only) y una b e e desc ipción:
73
73
Pilo o de ges ión pa a disposi i os IoT
Tabla 5-5 – G upo1: in o macionDeGes ion
Nomb e
Tipo
Acceso
Desc ipción
iden i icado
DisplayS ing
R/W
Nomb e iden i icado del A duino
localización
DisplayS ing
R/W
Ubicación del A duino
di ecciónIP
IpAdd ess
R/O
Di ección IP asignada
iempoEncendido
TimeTicks
R/O
Tiempo desde el encendido
enca gadoDeGes ión
DisplayS ing
R/W
Nomb e de la pe sona esponsable
elé onoCon ac o
DisplayS ing
R/W
Telé ono de con ac o
co eoCon ac o
DisplayS ing
R/W
Co eo del esponsable
En el segundo g upo, alo esLeidos, enemos oda la in o mación elacionada con la ges ión de los senso es
ísicos y i uales que implemen a el A duino MEGA. Toda es a in o mación es á ep esen ada en una abla de
SNMP que con iene las siguien es ins ancias:
Tabla 5-6 – G upo 2: alo esLeidos
Nomb e
Tipo
Acceso
Desc ipción
indice
In ege
R/O
Índice de ila
desc Senso
DisplayS ing
R/O
Desc ipción del senso a lee
alo Leido
In ege
R/O
Valo leído del senso
ins an eLec u a
TimeTicks
R/O
Ins an e del alo leído
iempoMues eo
In ege
R/W
In e alo en segundos en e lec u as del
senso (con igu able)
El e ce g upo, e en os, con iene las ins ancias necesa ias pa a con igu a e en os pe sonalizados a cada uno
de los senso es del g upo an e io , pa a en ia ale as a modo de mensajes TRAP de SNMP en caso de supe a
o. baja de un cie o umb al es ablecido, pudiendo es ablece la di ección IP del disposi i o que ecibi á dicha
ale a. Toda es a in o mación es á ep esen ada en una abla de SNMP que su ge como inspi ación de la RMON-
MIB [35] y que con iene las siguien es ins ancias:
Subsis ema de ges ión 2

81
81
Pilo o de ges ión pa a disposi i os IoT
6 LIBRERÍA DE AGENTE SNMP PARA ARDUINO
La ci ilización no sup ime la ba ba ie, la pe ecciona.
.- Vol ai e -
n es e capí ulo, se abo da á el desa ío que ha supues o la implemen ación de un agen e SNMP en
disposi i os A duino, an o los p oblemas écnicos encon ados como su p oceso desa ollo e
implemen ación.
Cabe des aca que es e p oceso equi ió la c eación de una lib e ía p opia, desa ollada desde ce o, pe o
omando como e e encia una lib e ía desa ollada po un pa icula , cuyo eposi o io o iginal ya no se encuen a
disponible, denominada Agen uino [37].
Pa iendo de es a lib e ía como base, he ampliado signi ica i amen e sus capacidades con las siguien es
mejo as: inco po ación de nue os ipos de da os SNMP, sopo e pa a mensajes GET-NEXT, la adap ación al
módulo WiFi del ESP8266 y op imizaciones pa a maneja un al o núme o de ins ancias.
6.1 Diseño gene al
En los siguien es apa ados se de alla án, espec i amen e, los iche os que componen el p og ama comple o
desa ollado pa a el A duino MEGA 2560, y el lujo de ejecución especi icado pa a la lib e ía pe sonal que he
denominado agen eSNMP.
6.1.1 Es uc u a
El código es á di idido en 6 iche os dis in os:
• Agen e.ino: Es el iche o p incipal o ske ch que con iene las unciones se up y loop con la
comp obación pe iódica de pe iciones SNMP, la lec u a de senso es y la comp obación de e en os.
• Agen eSNMP.cpp: Fiche o p incipal de la lib e ía agen eSNMP desa ollada, con iene odas las
unciones que implemen an la lógica del p o ocolo SNMP: ecepción y pa seo de pe iciones, en ío de
espues as y en ío de TRAPs.
• Agen eSNMP.h: Fiche o de cabece a que de ine odas las es uc u as necesa ias pa a el uncionamien o
de la lib e ía: clase p incipal Agen eSNMP, es uc u a PDU que se á u ilizada en odas y cada una de
las unciones de la lib e ía, códigos de e o , ipos de mensajes, ipos ASN, odo con la codi icación
BER.
Además, en es e iche o se de inen las unciones auxilia es de codi icación y decodi icación de los
dis in os ipos de a iables posibles: INTEGER, IPADDRESS, OCTET STRING, TIME TICKS,
COUNTER, en e o os. Es as unciones es aban muy bien implemen adas en la lib e ía o iginal
Agen uino, excep o aquellas co espondien es al ipo IPADDRESS que u e que implemen a .
• MIB.h: Con iene la decla ación de los 140 OIDs de la MIB co espondien es a cada uno de los obje os.
Todos p esen an el siguien e o ma o:
E
Lib e ía de agen e SNMP pa a A duino
Figu a 6-1 – Decla ación de OIDs (ejemplo R1)
Es e ejemplo p esen a los OIDs del g upo nodosDeRed especi icando los co espondien es al ou e R1
pa a odos sus obje os: índice, nomb e, iempo de encendido, localización, pue o ges ionado, es ado y by es
ecibidos en dicho pue o.
• Va iables.cpp: Con iene la decla ación de las 140 ins ancias que almacenan los alo es de cada obje o
de la MIB. En es e caso ealizo las decla aciones de cada g upo u ilizando a ays cuyos nomb es
coinciden con los obje os SNMP de inidos ealmen e en las MIBs es ánda . Especi ico en el siguien e
ejemplo las a iables que de inen el g upo nodosDeRed:
Figu a 6-2 – Decla ación de a iables: nodosDeRed
• Va iables.h: Con iene la de inición de las 140 ins ancias que almacenan los alo es de cada obje o de
la MIB. Siguen el mismo o ma o de a ay y se expo an pa a se u ilizadas en cualquie pa e del
p og ama:
Figu a 6-3 – De inición de a iables: nodosDeRed
6.2 Análisis de la in e az
En los siguien es apa ados se de alla án las p incipales unciones de la lib e ía, enca gadas de implemen a
oda la lógica del p o ocolo SNMP: ecepción de pe iciones, en ío de espues as, en ío de mensajes de ipo
TRAP e implemen ación sopo e a pe iciones de ipo GET-NEXT.
Cada una de es as unciones ha sido codi icada desde 0, omando como e e encia, excep o pa a la unción de
GET-NEXT, la lib e ía o iginal Agen uino, adap ando an o el algo i mo u ilizado pa a acili a el abajo con
un al o núme o de obje os SNMP, como la in e az del obje o udp u ilizado, pa a pe mi i la conexión po WiFi
u ilizando el ESP8266.
83
83
Pilo o de ges ión pa a disposi i os IoT
6.2.1 Pe iciones SNMP
Cada ez que se de ec a en el bu e del ESP8266 nue os da os ecibidos, se llama a la unción PduRecibida(),
que se enca ga de c ea el obje o de ipo pdu donde se almacena án de o ma o denada odos los da os del
paque e ecibido. Además, as consegui el obje o pdu con odos sus campos comple os, se comp oba á la
a iable local co espondien e al OID de la pe ición, pa a ob ene el alo a en ia en la espues a.
Sin emba go, es a unción no es la enca gada de pa sea el paque e ecibido, pa a ello, llama a o a unción
con la que compa e nomb e, pasándole un pun e o al obje o pdu c eado:
Figu a 6-4 – Función PduRecibida()
Es a unción se á la enca gada de pa sea el paque e ecibido comple ando los campos del obje o pdu
inicialmen e acío. Como se obse a en el siguien e agmen o de código co espondien e al inicio de es a
unción, se decla an las p incipales a iables que de inen los campos ecibidos de un paque e SNMP:
comunidad, secuencia, e sión, ipo de pdu, a bind, OID y alo . Pos e io men e se ob ienen los da os del bu e
en la a iable _paque e, comp obando que el amaño del paque e no excede el máximo con igu ado y que
e ec i amen e se a a de un paque e SNMP, e i icando que el p ime by e es 30:
Figu a 6-5 – Función PduRecibida() - 2
A con inuación, se asignan po o den odas las a iables an e io es, eniendo en cuen a el o den de los by es
que de inen un paque e de pe ición de SNMP: amaño del sequence, e sión, comunidad, ipo, e c. Como se
ap ecia, pa a cada uno de los campos exis e el pa alo y amaño asociado:
Lib e ía de agen e SNMP pa a A duino
Figu a 6-6 – Función PduRecibida() - 3
Po úl imo, se de inen nume osas comp obaciones pa a los siguien es ipos de e o es posibles:
• Tamaño de la comunidad: Se comp ueba si el amaño de la comunidad (comTam) excede la longi ud
máxima pe mi ida de inida. Es a alidación se hace pa a ga an iza que la comunidad no desbo de los
bu e s in e nos. Si se de ec a que el amaño es demasiado g ande, se de uel e un es ado de e o p opio
del sis ema que impide en ia una espues a a es a pe ición.
• Comunidad en unción del ipo de PDU: Se compa a by e a by e la comunidad ecibida con las
cadenas espe adas (_ge Comunidad y _se Comunidad) en unción del ipo de PDU: GET, SET o
GETNEXT. Si la comunidad no coincide exac amen e con la espe ada pa a ese ipo de PDU, se asigna
el e o es ánda de SNMP conocido como noSuchName. En es e caso sí se en ía una espues a pa a
en ia ese e o .
• Tamaño del OID: Se e i ica e i ica si la longi ud del OID de la pe ición (obiTam) supe a el alo
máximo de inido. Nue amen e, es a comp obación es impo an e pa a e i a desbo damien os de
memo ia.
• Tamaño del alo de la ins ancia: Finalmen e, se ealiza una comp obación simila pa a el amaño del
alo asociado al OID, asegu ándose de que no supe e el máximo pe mi ido pa a no pode desbo da la
memo ia del A duino
A con inuación, se p esen a la comp obación del amaño y alo de la comunidad ecibida. Como se ap ecia,
hay dos comp obaciones, una pa a cada ipo de PDU, ya que exis en dos comunidades dis in as pa a los ipos
SET y GET (incluyendo GET-NEXT).
85
85
Pilo o de ges ión pa a disposi i os IoT
Figu a 6-7 – Función PduRecibida - 4
Po úl imo, se ob iene el alo ecibido, en cuyo caso se á ú il y no nulo pa a las pe iciones de ipo SET, ya
que en las de ipo GET es e campo es a á acío. La unción de ol e á éxi o o e o dependiendo de las
comp obaciones p e ias:
Figu a 6-8 – Función PduRecibida() - 5
Vol iendo con la unción inicial PduRecibida, as ene el obje o pdu comple o, se debe á comp oba
inalmen e a qué a iable local co esponde el OID ecibido en la pe ición. Pa a ello, he u ilizado la siguien e
lógica pa a abaja con un al o núme o de ins ancias: un único bucle o cuyo único obje i o consis en en ob ene
el índice, den o de los 140 obje os posibles de la MIB, que indica la posición exac a de la a a iable asociada
al OID ecibido.
Una ez ob enido ese núme o, ealizo comp obaciones de es e índice, ag upando aquellas a iables que son
de un mismo ipo pa a minimiza el núme o de compa aciones. Una ez ob enida la a iable exac a cuyo alo
debe á con ene el mensaje de espues a, en caso de habe ecibido una pe ición GET o GET-NEXT, o cuyo

Lib e ía de agen e SNMP pa a A duino
alo debe á se modi icado, en caso de habe ecibido un SET, se llama án a las unciones de decodi icación o
codi icación, espec i amen e, u ilizando los siguien es a ays que juegan un papel imp escindible en es a lógica:
De ino, en p ime luga , un a ay que con iene pun e os a odas las a iables locales que con ienen los OID
de oda la MIB (decla adas en MIB.h), en el o den léxicog á ico exac o:
Figu a 6-9 – A ay auxilia de OIDs
Pos e io men e, de ino un a ay de pun e os a odas las a iables locales que con iene las ins ancias de odos
los obje os de la MIB (decla adas en Va iables.cpp), siguiendo nue amen e el o den lexicog á ico:
87
87
Pilo o de ges ión pa a disposi i os IoT
Figu a 6-10 – A ay auxilia de a iables locales
G acias a es o, podemos de ini pa a las 140 a iables locales posibles, las co espondien es comp obaciones
ag upando aquellas que, siguiendo el o den es ablecido, son del mismo ipo. De es a o ma, cuando el OID
ecibido coincida con alguno de los de inidos localmen e, se ob iene el índice ‘i’ exac o en el ango de 1 a 140
que de e mina á la a iable local a la que le co esponde dicho OID.
Una ez de e minada dicha a iable, en unción del ipo de la PDU ecibida, se llama á a la unción de
decodi ica si es ipo SET o codi ica si es ipo GET o GET-NEXT. En ambos casos, se pasa á la e e encia a
dicha a iable, u ilizando el a ay mibV que con iene pun e os a odas las a iables locales, y además, se inclui á
el amaño de es a.
Como se puede obse a , pa a aquellas a iables que se de inen en la MIB como ead-only, es posible
con igu a las pa a que no se pueda cambia les su alo median e una pe ición SET, pa a ello, en la pa e
co espondien e donde se llama ía a la unción de decodi ica , en ez de es o, se incluye en el campo e o del
obje o pdu el e o ead-only.
Lib e ía de agen e SNMP pa a A duino
Figu a 6-11 – Función PduRecibida - 6
Finalmen e, se llama á a la unción PduRespues a que se enca ga á de c ea la PDU de espues a a pa i del
obje o pdu.
6.2.2 Respues as SNMP
En la unción de espues a, se c ea á odo el paque e a en ia en la a iable _paque e, eniendo nue amen e
en cuen a el o den de los by es que de inen un paque e SNMP.
Dada la g an simili ud con la unción de PduRecibida donde se ealiza el p oceso in e so, incluyo únicamen e
el inicio de es a unción. Podemos e que la a iable _paque e que pos e io men e se á la que se en íe, se a
cons uyendo con sus p ime os by es: el by e 30 que indica que es un sequence
(SNMP_SINTAXIS_SEQUENCE), el amaño del mismo, e c.
89
89
Pilo o de ges ión pa a disposi i os IoT
Figu a 6-12 – Función PduRespues a()
Finalmen e, se u ilizan las unciones del obje o udp cuyo ipo depende á del ipo de conexión que se haya
con igu ado: Wi iEspUdp en caso de con igu a el A duino con WiFi y E he ne UDP en caso de u iliza
conexión ísica:
Figu a 6-13 – Función PduRespues a() - 2
6.2.3 T aps SNMP
La unción de en ío de mensajes de ipo TRAP se llama de la siguien e o ma, indicando el mensaje
desc ip i o a en ia , la IP des ino que ecibi á el mensaje, el iempo que el A duino lle aba encendido cuando
se en ió dicho mensaje, y los OID asociados:
Figu a 6-14 – En ío de TRAP
Subsis emas de in e az de usua io y pe sis encia: p uebas inales
espec i amen e po el ESP32 y el A duino MEGA 2560, un o denado po á il que ejecu a odas las
he amien as y se icios ex e nos co espondien es a los subsis emas de pe sis encia e in e az de usua io: el
escena io de GNS3 con los ou e s que eje ce án de agen es de SNMP, el b óke MQTT pa a ecibi los da os
ob enidos po el ESP32 e inse a los en la BBDD, el se icio Ma en pa a el se ido REST y el se icio
Pos g eSQL como base de da os elacional. La aplicación mó il de allada en es e capí ulo la es a é ejecu ando
en mi elé ono pe sonal que iene el SO And oid.
Todos es os disposi i os es á án conec ados pa a ealiza es as p uebas al ou e de mi casa median e conexión
inalámb ila WiFi, si bien es cie o que, pa a el desa ollo del subsis ema de ges ión de inido po el A duino
MEGA, he u ilizado mucho la conexión po cable E he ne al se más es able.
7.1 Se ido REST: Sp ing Boo
Pa a in oduci el desa ollo del backend REST en Sp ing Boo , oy a p esen a las p incipales dependencias
del p oyec o que de e minan las p incipales ca ac e ís icas de es e. Pa a ello, es de no able impo ancia el iche o
de con igu ación de un p oyec o Ja a que u iliza el sis ema de cons ucción Ma en: pom.xml (P ojec Objec
Model):
• sp ing-boo -s a e -da a-jpa: Pe mi e abaja con bases de da os elacionales u ilizando JPA, así
como el mapeo de las elaciones de una base de da os a las p opias en idades de Ja a g acias al uso de
ano aciones como @En i y, @Table y @Id. De es a o ma, se e i a decla a sen encias SQL en el p opio
código pa a ealiza las ope aciones CRUD.
• sp ing-boo -s a e -web: Es una de las dependencias más comunes en p oyec os de Sp ing Boo ya
que pe mi e c ea un se ido web basado en la API REST.
• pos g esql: Es el d i e necesa io pa a que la aplicación Ja a pueda conec a se a una base de da os
Pos g eSQL y ejecu a ope aciones CRUD sob e ella.
• sp ing-boo -ma en-plugin: Es un plugin de Ma en que pe mi e el embaque ado, ejecución y
despliegue de aplicaciones de Sp ing Boo . Facili a la con igu ación y ejecución de la aplicación
e i ando un despliegue manual de la misma.
• sp ingdoc-openapi: Pe mi e in eg a Swagge de o ma au omá ica en aplicaciones Sp ing Boo , una
he amien a que gene a documen ación del p oyec o y p o ee de una in e az pa a consul a la ía web.
Ap o echando es a úl ima dependencia, oy a u iliza la he amien a Swagge pa a de alla los con olado es
de mi p oyec o Sp ing Boo que son aquellas clases que eciben, p ocesan y esponde a las pe iciones HTTP
ecibidas po el se ido REST. Dado que decidí añadi pe sis encia pa a los g upos se ido es, nodosDeRed y
in o macionBGP de mi MIB, es os con olado es esponde án an e las URL asociadas a es os g upos:

97
97
Pilo o de ges ión pa a disposi i os IoT
Figu a 7-2 – Se ido REST: endpoin s disponibles.
Los es con olado es p esen an la misma lógica implemen ada pa a cada endpoin espondiendo a mis
necesidades pe sonales pa a el desa ollo de de e minados apa ados de la aplicación mó il que equie en los
siguien es mé odos: ob ene odos los his ó icos de odos los se ido es, ob ene solo los úl imos alo es de odos
los se ido es y ob ene el his o ial de un único se ido .
Dado que en mi caso no necesi o implemen a ningún ipo de ope ación o algo i mo sob e los da os ob enidos
de la base de da os, no he u ilizado la capa Se ice que es an u ilizada en p oyec os de Sp ing Boo pa a ejece
de in e media io en e la capa de con olado es y la de acceso a da os (no malmen e, capa de eposi o ios),
implemen ando odo lo e e en e a la lógica de negocio, ope ando sob e los da os ob enidos de la BBDD.
De es a o ma, p esen o a con inuación un diag ama de clases que ep esen a las p incipales en idades o
POJOs, con olado es y eposi o ios que componen mi aplicación de Sp ing Boo . Es impo an e des aca que,
las clases pe enecien es a los eposi o ios son gene adas en iempo de ejecución po el componen e de Sp ing
Boo denominado Sp ing Da a JPA. Es as clases implemen an las in e aces que de es os eposi o ios que sí he
enido que gene a manualmen e y u ilizan a ibu os gené icos como En i yManage que es el enca gado de
ealiza las ope aciones en la base de da os.
El diag ama de clases queda ep esen ado, po an o, po clases asociadas a los con olado es, que p ocesan
las pe iciones y en ían las espues as, clases asociadas a las en idades o POJOs, que ep esen an los da os de
cada en idad, y clases que implemen an las in e aces de inidas pa a los eposi o ios, que se enca gan de la
in e acción con la base de da os:
Subsis emas de in e az de usua io y pe sis encia: p uebas inales
Figu a 7-3 – Diag ama de clases del p oyec o Sp ing Boo
99
99
Pilo o de ges ión pa a disposi i os IoT
7.2 Aplicación Mó il: VManage
Figu a 7-4 – Diag ama de clases de la aplicación VManage
Pa a desa olla la aplicación mó il con And oid S udio, he u ilizado pa a el diseño de la misma un modelo
modula con el uso de agmen os y una única ac i idad pa a inicia sesión. De es a o ma, emenos 6 agmen os
dis in os, uno pa a cada g upo de la MIB, y un agmen o ex a que eje ce de apa ado de inicio de la aplicación.
Subsis emas de in e az de usua io y pe sis encia: p uebas inales
7.2.1 Inicio de Sesión
El apa ado de inicio de sesión, al como he desc i o an e io men e, co esponde a la única ac i idad de la
aplicación And oid, cuyo obje i o es el acceso al es o de apa ados de la p opia aplicación. Como no he que ido
pone el oco de a ención en el desa ollo de una aplicación obus a y p o esional, sino c ea una in e az ácil
de usa y pe sonalizada que pe mi ie a la ges ión de odo el sis ema, a la ez que ponía en p ác ica los
conocimien os adqui idos de una asigna u a que he cu sado du an e la ealización de es e abajo, he decidido
que el inicio de sesión sea an simple como comp oba en local el pa usua io y cla e, sin implemen a un medio
de con ol de acceso ía oken, ni almacena los usua ios en la misma BBDD.
De es a o ma, se p esen a en la siguien e cap u a el apa ado de inicio de sesión, cuyo layou asociado,
ac i i y_main.xml, p esen a el siguien e o ma o isual, con una imagen de ondo pe sonalizada que se á isible
en odos los apa ados de la aplicación:
Figu a 7-5 – Página de inicio de sesión
101
101
Pilo o de ges ión pa a disposi i os IoT
7.2.2 Apa ado de inicio
Una ez accedemos a la aplicación, se nos p esen a un apa ado de inicio co espondien e al agmen o
InicioF agmen , donde podemos encon a : un diag ama de conexiones de oda la implemen ación ísica del
sis ema (A duino MEGA y ESP32), apa ados de con igu ación de di ecciones IP, an o del A duino MEGA
como del se ido REST que hace de backend, y una imagen con o ma de campana que nos pe mi e accede a
los mensajes de ipo TRAP que se han ecibido en el p opio elé ono mó il.
En el apa ado écnico, pa a la ecepción de los mensajes de ipo TRAP, se u iliza la lib e ía SNMP4j que
pe mi e implemen a , en e a ias o as uncionalidades de SNMP que e emos en apa ados pos e io es, un
se ido SNMP que escucha pe iciones en el pue o 162 de o ma inin e unpida. Cada ez que se ecibe un
mensaje de ipo TRAP, se p esen a un Toas a isando de ello y se ep oduce un sonido p ede e minado de
And oid, g acias a la clase Ring oneManage . En cuan o a las di ecciones IP con igu ables, se u ilizan las
Sha edP e e ences pa a ene las accesibles du an e cualquie o o agmen o de la aplicación.
Respec o al apa ado isual, su layou asociado, agmen _inicio.xml p esen a la siguien e isual:
Figu a 7-6 – Página p incipal
Po o a pa e, desde es e y cualquie o o apa ado de la aplicación, end emos accesible un Na iga ion
D awe que consis e en el siguien e menú la e al deslizable que pe mi e isualiza odos los apa ados de la
aplicación y accede a cualquie a de ellos.

Subsis emas de in e az de usua io y pe sis encia: p uebas inales
7.2.3 G upo 1: In o mación
El p ime g upo de la MIB del A duino, in o macionDeGes ion, se p esen a en un o ma o de abla con odos
los escala es de es e g upo, de o ma que, cuando se accede a es e apa ado, se en ía una pe ición al A duino
MEGA pa a ob ene cada uno de ellos.
Pa a el en ío de pe iciones de SNMP, ol emos a u iliza la lib e ía SNMP4j, en es e caso a a és de una clase
auxilia , SnmpHelpe , c eada con los mé odos necesa ios pa a en ia mensajes de ipo GET y SET, llamados
sendSnmpReques y se SnmpValue, espec i amen e. Ambos mé odos equie en la di ección IP des ino, en es e
caso se á siemp e la del A duino MEGA, y el OID que i á en la pe ición, que se án los co espondien es a los
escala es de es e g upo.
Visualmen e, queda ep esen ado al como se ap ecia en la siguien e cap u a:
Figu a 7-7 – Apa ado del g upo in o macionDeGes ion
103
103
Pilo o de ges ión pa a disposi i os IoT
7.2.4 G upo 2: alo esLeídos
Pa a el g upo 2 de la MIB, alo esLeidos, ol emos a ene la misma lógica implemen ada pa a las consul as de
SNMP los mé odos de la clase SnmpHelpe . No obs an e, el apa ado isual cambia no ablemen e a un o ma o
de ipo lis a, median e el uso de un Recycle View que pe mi e de ini cada elemen o de la lis a, u ilizando el
iche o de layou auxilia i em_ alo esleidos.
Encon a emos, po an o, un í em pa a cada uno de los 8 senso es, con odos sus campos de inidos pa a es e
g upo de la MIB (índice, desc ipción, alo , ins an e de lec u a y iempo de mues eo), y pe mi iendo cambia
el iempo de mues eo de cada senso u ilizando el bo ón “Cambia TM”. Al pulsa lo, se ab i á una en ana de
diálogo que pe mi e in oduci el alo deseado, mos ando el ac ual con igu ado. Al acep a , se en ia á el
mensaje de ipo SET co espondien e a la di ección IP del A duino MEGA, con igu ada en el apa ado de inicio
de la aplicación:
Figu a 7-8 – Apa ado del g upo alo esLeidos
Subsis emas de in e az de usua io y pe sis encia: p uebas inales
7.2.5 G upo 3: E en os
En el g upo 3, e en os, ol emos a ene un impo an e cambio isual en el layou asociado,
agmen _e en os.xml, a es e nue o agmen o (E en osF agmen ), u ilizando nue amen e la misma lógica con
el uso de SNMPJ4, en iando las consul as di ec amen e al A duino MEGA.
Como se ap ecia en la siguien e cap u a, enemos un o ma o de o mula io que nos pe mi e con igu a
cualquie a de los 5 e en os disponibles en el A duino MEGA, ellenando uno a uno, los campos
co espondien es: el e en o a con igu a , el índice del senso pa a el que se con igu a dicho e en o, la desc ipción
que se en ia á al gene a se la ale a, los umb ales a con ola y la di ección IP des ino que ecibi á la ale a
(mensaje de ipo TRAP):
Figu a 7-9 – Apa ado del g upo e en os
Además, al selecciona en el checkbox cada uno de los e en os con igu ables, se ca ga án los alo es
ac ualmen e con igu ados en el A duino MEGA pa a cada uno de sus co espondien es campos, es deci , se
en ían consul as SNMP al A duino MEGA, pa a ob ene los campos del e en o seleccionado.
105
105
Pilo o de ges ión pa a disposi i os IoT
7.2.6 G upo 4: Se ido es
A pa i de es e g upo 4, se ido es, hay un cambio ele an e en la lógica implemen ada ya que es os úl imos 3
g upos no se ges ionan median e consul as de SNMP di ec amen e al A duino MEGA, sino que se a aca al
se ido REST que co e el backend Sp ing-Boo . Es deci , se hacen pe iciones de ipo HTTP a los endpoin s
de allados en el an e io apa ado 4.2.3.3 (Se ido REST: Sp ing Boo ).
Po an o, no se u iliza la lib e ía SNMP4J, sino OkH p pa a ealiza pe iciones HTTP al se ido REST cuya
di ección IP se con igu a, como se io an e io men e, desde el apa ado de inicio de la aplicación. Además, se
u iliza la lib e ía JSON pa a p ocesa las espues as ácilmen e.
En es e caso, los endpoin s del se ido REST que se consul an son /se ido es/úl imos, pa a ob ene los úl imos
alo es de los dos se ido es ges ionados y /se ido es/his o ial/, pa a ob ene odos los alo es de cada uno de
ellos.
De es a o ma, enemos la siguien e isual, de inida en el layou agmen _se ido es.xml, que nos mues a en
o ma o de lis a los úl imos alo es ob enidos de odos los campos de cada se ido , pudiendo accede , median e
el bo ón His o ial, a odos los alo es an e io es, o denados empo almen e:
Figu a 7-10 – Apa ado del g upo se ido es
Subsis emas de in e az de usua io y pe sis encia: p uebas inales

113
113
Pilo o de ges ión pa a disposi i os IoT
8 CONCLUSIONES Y LÍNEAS FUTURAS
La paciencia es ama ga, pe o sus u os son dulces.
- P o e bio pe sa
En los úl imos años, el In e ne de las Cosas ha pe mi ido la ans o mación digi al de múl iples sec o es,
desde la indus ia y la sanidad, has a el anspo e, el hoga e incluso las ciudades. Sin emba go, su aplicación
en el ámbi o de la ges ión de edes de elecomunicación ha sido limi ada y poco explo ada.
En es e sen ido, es e abajo ha demos ado la posibilidad de implemen a p o ocolos como SNMP, que
o iginalmen e no es án diseñados pa a disposi i os con ecu sos an limi ados, pe mi iendo una e sión comple a
de es e p o ocolo y llegando a ges iona has a 140 ins ancias, con ma gen de memo ia pa a aumen a aún más
es e núme o.
Además, se han lle ado a la p ác ica ecnologías muy u ilizadas como: Eclipse Mosqui o como b óke del
p o ocolo MQTT pa a la comunicación de disposi i os IoT, Pos g eSQL como base de da os pa a la pe sis encia
de la in o mación de ges ión, Sp ing Boo como amewo k pa a el desa ollo de un backend que in eg a a la
base de da os con la aplicación And oid, desa ollada en And oid S udio.
Asimismo, se ha u ilizado GNS3 como simulado de edes, que ha pe mi ido la c eación de un escena io con
ou e s ges ionables sin necesidad de ha dwa e ísico. Finalmen e, se han pues o a p ueba las uncionalidades
del sis ema con el s ack con o mado po SNMP-Expo e , P ome heus y G a ana como in e az de
moni o ización es ánda , siendo ampliamen e u ilizada en la ges ión p o esional de in aes uc u as
emp esa iales.
G acias a odas es as ecnologías y p o ocolos, el sis ema desa ollado e implemen ado en es e abajo
consigue adminis a , an o senso es ísicos y i uales, como disposi i os de ed, conc e amen e ou e s y
se ido es. Desde el ma co clásico de ges ión de inido po la ISO como FCAPS (Faul , Con igu a ion,
Accoun ing, Pe o mance, Secu i y) podemos clasi ica a ias de las uncionalidades de mi sis ema:
• Ges ión de allos (F): den o de la ges ión de allos, podemos des aca el conjun o de ale as
con igu ables que pe mi e de ec a e en os c í icos en cualquie a de los senso es implemen ados y
no i ica los a a és de mensajes de TRAP de SNMP a cualquie disposi i o des ino.
• Ges ión de la con igu ación (C): cen ándonos en la ges ión de la con igu ación, des aca la posibilidad
de modi ica median e mensajes de ipo SET de SNMP, an o in o mación gene al de ges ión como la
localización y el ges o asociado, así como su elé ono y co eo de con ac o, como los iempos de lec u a
de cada uno de los senso es implemen ados. Además, ambién pe mi e modi ica ía Web el iempo
en e en íos de las pe iciones SNMP del ESP32 a los ou e s implemen ados en GNS3.
• Ges ión de la con abilidad (A): si bien es cie o que el con ol del núme o de accesos a la Web del
ESP32 o el con ol del núme o de paque es ecibidos en las in e aces ges ionadas de los ou e s pod ían
se conside ados unciones de es e apa ado, conside o que ambos des acan, desde el pun o de is a de
mi abajo, en el ma co de ges ión de la segu idad.
• Ges ión del endimien o (P): en es e caso des aca la p opia ges ión de los senso es ísicos y i uales
implemen ados, con especial mención a la ges ión de la memo ia RAM lib e en el A duino MEGA.
• Ges ión de la segu idad (S): al como se mencionó an e io men e, conside o den o de es e ma co an o
el con ol del núme o de accesos a la Web p opo cionada po el ESP32, como el con ol del núme o de
paque es ecibidos en las in e aces de los ou e s ges ionados. También pod ía inclui se en es e ma co
de ges ión el con ol del núme o de mensajes de las sesiones BGP.
Conclusiones y Líneas u u as
Sin emba go, son muchas las uncionalidades y mejo as que deseo implemen a en un u u o, an o a ni el de
ha dwa e como de so wa e:
• Pe mi i la ges ión de un núme o dinámico y con igu able de obje os ges ionados de SNMP.
• Pe mi i modi ica , pa a cada uno de los obje os ges ionados, an o el OID como la di ección IP del
agen e SNMP des ino, en ez de ene que de ini ambos pa áme os en el p opio código.
• Pe mi i la con igu ación de ale as pa a cualquie a de los obje os ges ionados, no sólo pa a el g upo de
senso es. De es a o ma, se libe a ía de ca ga a los disposi i os de ed ges ionados dado que la
comp obación con inua de los umb ales la ealiza ía el A duino MEGA.
• Mejo a la in e az Web p opo cionada po el ESP32 pa a inclui , además del o mula io ya exis en e
pa a modi ica el iempo en e en íos de las pe iciones SNMP, nue os o mula ios pa a pode
con igu a las mejo as comen adas an e io men e.
• Desde el pun o de is a de diseño, me gus a ía diseña mi p opia PCB pa a cons ui un disposi i o más
compac o y con una apa iencia más p o esional y abajada, que implemen e los mic ocon olado es del
A duino MEGA, ESP32 y ESP826, e incluso los senso es en la p opia PCB pa a e i a el ele ado
núme o de cables y espacio consumido po odos los componen es del sis ema.
• Po úl imo, desea ía implemen a pa a ambas lib e ías de SNMP la capacidad de ci ado pe mi iendo,
po an o, la ac ualización de ambas lib e ías de SNMP a la e sión 3 de es e p o ocolo.
Debo des aca que odos los códigos desa ollados pa a es e T abajo de Fin de G ado se encuen an
disponibles en un eposi o io de Gi hub, disponible en el Anexo C, que c eado pa a que cualquie pe sona pueda
eplica lo o eu iliza cualquie a de sus pa es. Es e incluye las implemen aciones ealizadas pa a el A duino
MEGA y el ESP32, incluyendo la lib e ía desa ollada Agen eSNMP, el escena io comple o de GNS3, el sc ip
de clien e MQTT, odos los códigos del backend de Sp ing Boo y de la aplicación de And oid y los iche os de
con igu ación pa a pode ealiza la ins alación comple a del s ack con o mado po SNMP-Expo e ,
P ome heus y G a ana.
Po o o lado, quie o deja cons ancia de dos u u as mejo as que planeo ealiza en base a algunas
in es igaciones que he lle ado a cabo pa a expandi el uso de mi sis ema en dos ámbi os de g an in e és: la
de ección de a aques y la ges ión po in enciones.
En [39] y [40], Gaya h i y Boya , espec i amen e, demues an cómo el p o ocolo SNMP puede se u ilizado
pa a de ec a a aques DDoS median e el análisis de los da os ob enidos a a és de es e p o ocolo u ilizando
di e en es écnicas es adís icas y del ámbi o del Machine Lea ning. En p ime luga , Gaya h i ealiza nume osas
p uebas con la dis ancia de Kullback–Leible (KLD) y el uso de Mo ing Ta ge De ense (MTD) pa a la
de ección au omá ica de amenazas. Po o o lado, Boya u iliza los p incipales obje os de SNMP que de inen el
amaño y la ecuencia de los paque es ecibidos pa a alimen a modelos de machine lea ning de edes
neu onales, KNN y C5.0, log ando una al a asa de de ección con un bajo núme o de alsos posi i os
De es a o ma, mi sis ema p e ende se un pun o de pa ida que p opo cione de o ma cen alizada odas las
ins ancias de SNMP necesa ias pa a la de ección de a aques en una ed compleja. Pa a ello, se debe ía
implemen a o o subsis ema de ges ión que implemen a a alguna de las écnicas de Machine Lea ning
mencionadas p e iamen e.
Po o o lado, hay un ema inno ado del ámbi o de la ges ión de edes que despie a en mí un g an in e és: la
ges ión po in enciones, o In en -Based Ne wo king (IBN). Conc e amen e, se p opone un cambio de pa adigma
en el que el ges o no se ocupa de con igu a di ec amen e los disposi i os, sino de exp esa lo que desea que la
ed haga, po ejemplo, ga an iza baja la encia pa a cie o ipo de á ico o p io iza de e minados se icios, y el
sis ema se enca ga au omá icamen e de aduci esas in enciones en con igu aciones conc e as, aplica las y
supe isa su cumplimien o.
En es e sen ido, me gus a ía p o undiza en el desa ollo de un sis ema con es as ca ac e ís icas que u ilice los
da os ob enidos median e SNMP po mi sis ema ac ual, a la ho a de ealiza el análisis de las acciones necesa ias
a lle a a cabo pa a cumpli las pe iciones del ges o .
115
115
Pilo o de ges ión pa a disposi i os IoT
A pesa de habe dejado es as mejo as como líneas u u as, me sien o eno memen e sa is echo po el abajo
ealizado, ya que me ha pe mi ido e o za mis conocimien os écnicos y p ác icos en muchas de las á eas is as
du an e el G ado. Es mi cons an e ambición y deseo de mejo a lo que me impulsa a segui mejo ando es e
abajo, con la misma ilusión y mo i ación con los que empecé el p ime día.
Conclusiones y Líneas u u as
117
117
Pilo o de ges ión pa a disposi i os IoT
REFERENCIAS
[1] Clemm, A., & Cisco Sys ems, I. C. P. (2007). Ne wo k managemen undamen als (1s edi ion). Cisco P ess.
[2] Ges ión po in enciones. h ps://www.junipe .ne /mx/es/ esea ch- opics/wha -is-in en -based-
ne wo king.h ml
[3] Blog o icial de p oyec os de A duino. h ps://p ojec hub.a duino.cc/
[4] RFC 1067 – A Simple Ne wo k Managemen P o ocol (SNMP) . h ps://da a acke .ie .o g/doc/h ml/ c1067
[5] RFC 1901 – In oduc ion o Communi y-based SNMP 2. h ps://da a acke .ie .o g/doc/h ml/ c1901
[6] RFC 1905 – P o ocol Ope a ions o Ve sion 2 o he Simple Ne wo k Managemen .
h ps://da a acke .ie .o g/doc/h ml/ c1905
[7] RFC 1906 – T anspo Mappings o Ve sion 2 o he Simple Ne wo k Managemen P o ocol (SNMP 2.
h ps://da a acke .ie .o g/doc/h ml/ c1906
[8] RFC 3411 – An A chi ec u e o Desc ibing SNMP Managemen F amewo ks.
h ps://da a acke .ie .o g/doc/h ml/ c3411
[9] Ligh weigh Machine o Machine Technical Speci ica ion
h ps://www.openmobilealliance.o g/ elease/Ligh weigh M2M/V1_2-20201110-A/OMA-TS-
Ligh weigh M2M_Co e-V1_2-20201110-A.pd
[10] CoAP Managemen In e ace (CORECONF). h ps://da a acke .ie .o g/doc/d a -ie -co e-comi/
[11] Basic encoding ules (ASN.1). h ps://www.oss.com/asn1/ esou ces/asn1-made-simple/asn1-quick-
e e ence/basic-encoding- ules.h ml
[12] Es ánda MQTT 5.0. h ps://docs.oasis-open.o g/mq /mq / 5.0/mq - 5.0.pd
[13] Aplicación de BMW que u iliza MQTT (de Hi eMQ)
h ps://www.hi emq.com/case-s udies/bmw-mobili y-se ices/
[14] Sis ema de Volkswagen basado en MQTT (u ilizando EMQ). h ps://www.emqx.com/en/cus ome s/saic-
olkswagen
[15] Casos de uso de MQTT. h ps://mq .o g/use-cases/
[16] A duino. h ps://www.a duino.cc/
[17] Eclipse Mosqui o. h ps://mosqui o.o g/
[18] GNS3. h ps://www.gns3.com/
[19] And oid S udio. h ps://de elope .and oid.com/s udio?hl=es-419
[20] Pos g eSQL. h ps://www.pos g esql.o g/
[21] Sp ingBoo . h ps://sp ing.io/p ojec s/sp ing-boo
[22] SNMP_Expo e . h ps://gi hub.com/p ome heus/snmp_expo e
[23] P ome heus. h ps://p ome heus.io/
[24] G a ana. h ps://g a ana.com/

Re e encias
[25] Lib e ía ges o SNMP: A duino_SNMP_Manage
h ps://gi hub.com/sho bloke/A duino_SNMP_Manage
[26] Lib e ía clien e MQTT: Pub_sub_clien : h ps://gi hub.com/knollea y/pubsubclien
[27] Lib e ía de ges ión del display TFT: TFT_eSPI: h ps://gi hub.com/Bodme /TFT_eSPI
[28] P o o ipo de un sis ema de moni o izacióndomó ico basado en la pla a o ma A duino usando p o ocolos
es ánda de ges ión de ed:
h ps:// eposi o io.unican.es/xmlui/bi s eam/handle/10902/29588/447021.pd ?sequence=1&isAllowed=y
[29] Da ashee TMP36. h ps://www.allda ashee .com/da ashee -pd / iew/49108/AD/TMP36.h ml
[30] Da ashee Vege onix VH400. h ps://solem-i iga ion.com/wp-con en /uploads/2022/06/20200326_-
_Soil_mois u e_senso _VEGETRONIX_VH400_-_V2_-_EN-1.pd
[31] Lib e ía senso capaci i o: Capaci i eSenso . h ps://gi hub.com/PaulS o egen/Capaci i eSenso
[32] Da ashee KY-38. h ps://www.allda ashee .es/da ashee -pd / iew/1138845/ETC2/KY-038.h ml
[33] Lib e ía memo ia RAM A duino. h ps://gi hub.com/mp laga/A duino-Memo yF ee
[34] MIB-II. h ps://www.ie .o g/ c/ c1213. x
[35] RMON-MIB. h ps://da a acke .ie .o g/doc/h ml/ c3577
[36] BGP4-MIB. h ps://da a acke .ie .o g/doc/h ml/ c4273
[37] Agen uino. h ps://gi hub.com/ca losdel ino/agen uino
[38] MIB B owse . h ps://www.i easoning.com/mibb owse .sh ml
[39]Gaya h i, R.; Usha ani, S.; Mahdal, M.; Vezha endhan, R.; Vincen , R.; Rajesh, M.; Elango an, M.
De ec ion and Mi iga ion o IoT-Based A acks Using SNMP and Mo ing Ta ge De ense Techniques. Senso s
2023, 23, 1708.
[40]O. Boya , M. E. Özen and B. Me in, "De ec ion o Denial-o -Se ice A acks wi h SNMP/RMON," 2018
IEEE 22nd In e na ional Con e ence on In elligen Enginee ing Sys ems (INES), Las Palmas de G an Cana ia,
Spain, 2018.
[41] Video de demos ación: ase de p uebas. h ps://www.you ube.com/wa ch? =mIFPKZTALaY
[42] RFC2578. h ps://da a acke .ie .o g/doc/h ml/ c2578
119
119
Pilo o de ges ión pa a disposi i os IoT
Anexo A: MIBARDUINO
ANEXO A: MIBARDUINO
MIBARDUINO DEFINITIONS ::= BEGIN
IMPORTS
MODULE-IDENTITY, en e p ises
FROM RFC1155-SMI
OBJECT-TYPE
FROM RFC-1212
IpAdd ess
FROM SNMP 2-SMI;
a duinoMIB MODULE-IDENTITY
LAST-UPDATED "202404120000Z"
ORGANIZATION "Uni e sidad de Se illa"
CONTACT-INFO " iczamga @alum.us.es"
DESCRIPTION
" Pilo o de ges ión pa a disposi i os IoT"
::= { en e p ises 36582 }
in o macionDeGes ion OBJECT IDENTIFIER ::= { a duinoMIB 1 }
alo esLeidos OBJECT IDENTIFIER ::= { a duinoMIB 2 }
e en os OBJECT IDENTIFIER ::= { a duinoMIB 3 }
se ido es OBJECT IDENTIFIER ::= { a duinoMIB 4 }
nodosDeRed OBJECT IDENTIFIER ::= { a duinoMIB 5 }
encaminamien o OBJECT IDENTIFIER ::= { a duinoMIB 6 }
-- De inicion del s ing u ilizado en oda la MIB
DisplayS ing ::= OCTET STRING (SIZE (0..255))
-- De inicion de los escala es del g upo de in o macion ace ca de ges ion del p o o ipo a duino,
-- se p esen a in o macion an o del disposi i o como de la pe sona y equipo de con ac o.
121
121
Pilo o de ges ión pa a disposi i os IoT
iden i icado OBJECT-TYPE
SYNTAX DisplayS ing
ACCESS ead-w i e
STATUS manda o y
DESCRIPTION
" Nume o iden i icado del p o o ipo a duino ges ionado "
::= { in o macionDeGes ion 1 }
localizacion OBJECT-TYPE
SYNTAX DisplayS ing
ACCESS ead-w i e
STATUS manda o y
DESCRIPTION
" Localizacion del p o o ipo A duino "
::= { in o macionDeGes ion 2 }
di eccionIP OBJECT-TYPE
SYNTAX IpAdd ess
ACCESS ead-only
STATUS manda o y
DESCRIPTION
" Di eccion IP asignada al a duino "
::= { in o macionDeGes ion 3 }
iempoEncendido OBJECT-TYPE
SYNTAX TimeTicks
ACCESS ead-only
STATUS manda o y
DESCRIPTION
" Tiempo desde el encendido del p o o ipo "
::= { in o macionDeGes ion 4 }
enca gadoDeGes ion OBJECT-TYPE
SYNTAX DisplayS ing
ACCESS ead-w i e
STATUS manda o y
DESCRIPTION
" Nomb e de la pe sona enca gada de ges iona la placa "
Anexo A: MIBARDUINO
"Nomb e del se ido "
::= { pcEn y 2 }
iempoAc i o OBJECT-TYPE
SYNTAX TimeTicks
ACCESS ead-only
STATUS manda o y
DESCRIPTION
"Tiempo ac i o del se ido "
::= { pcEn y 3 }
ca gaCPU OBJECT-TYPE
SYNTAX INTEGER
ACCESS ead-only
STATUS manda o y
DESCRIPTION
"Ca ga de la CPU del se ido "
::= { pcEn y 4 }
TCPConn OBJECT-TYPE
SYNTAX INTEGER
ACCESS ead-only
STATUS manda o y
DESCRIPTION
"Conexiones TCP ac i as del se ido "
::= { pcEn y 5 }
nomb eDisco OBJECT-TYPE
SYNTAX DisplayS ing
ACCESS ead-only
STATUS manda o y
DESCRIPTION
" Nomb e del disco du o p incipal"
::= { pcEn y 6 }

129
129
Pilo o de ges ión pa a disposi i os IoT
espacioLib e OBJECT-TYPE
SYNTAX INTEGER
ACCESS ead-only
STATUS manda o y
DESCRIPTION
"Espacio lib e en el disco du o p incipal"
::= { pcEn y 7 }
-- G upo nodosDeRed
swTable OBJECT-TYPE
SYNTAX SEQUENCE OF FilasSW
ACCESS no -accessible
STATUS manda o y
DESCRIPTION
" Tabla que con iene los nodos de ed ges ionados po el ESP32"
::= { nodosDeRed 1 }
swEn y OBJECT-TYPE
SYNTAX FilasSW
ACCESS no -accessible
STATUS manda o y
DESCRIPTION
" Filas de la abla"
INDEX { indiceSW }
::= { swTable 1 }
FilasSW::=
SEQUENCE {
indiceSW
INTEGER,
nomb eSW
DisplayS ing,
iempoUp
TimeTicks,
loca ion
Anexo A: MIBARDUINO
DisplayS ing,
pue oGes ionado
DisplayS ing,
es adoPue o
INTEGER,
by eRecibidos
INTEGER
}
indiceSW OBJECT-TYPE
SYNTAX INTEGER
ACCESS ead-only
STATUS manda o y
DESCRIPTION
" Índice de la ila "
::= { swEn y 1 }
nomb eSW OBJECT-TYPE
SYNTAX DisplayS ing
ACCESS ead-only
STATUS manda o y
DESCRIPTION
"Nomb e del nodo "
::= { swEn y 2 }
iempoUp OBJECT-TYPE
SYNTAX TimeTicks
ACCESS ead-only
STATUS manda o y
DESCRIPTION
" Tiempo ac i o del nodo"
::= { swEn y 3 }
loca ion OBJECT-TYPE
SYNTAX DisplayS ing
ACCESS ead-only
STATUS manda o y
131
131
Pilo o de ges ión pa a disposi i os IoT
DESCRIPTION
"Localización ísica del nodo "
::= { swEn y 4 }
pue oGes ionado OBJECT-TYPE
SYNTAX DisplayS ing
ACCESS ead-only
STATUS manda o y
DESCRIPTION
" Pue o ges ionado "
::= { swEn y 5 }
es adoPue o OBJECT-TYPE
SYNTAX INTEGER
ACCESS ead-only
STATUS manda o y
DESCRIPTION
" Es ado del pue o (1=Ac i o, 0=Inac i o) "
::= { swEn y 6 }
by esRecibidos OBJECT-TYPE
SYNTAX INTEGER
ACCESS ead-only
STATUS manda o y
DESCRIPTION
" By es ecibidos en el pue o ges ionado "
::= { swEn y 7 }
-- G upo encaminamien o
bgpTable OBJECT-TYPE
SYNTAX SEQUENCE OF FilasBGP
ACCESS no -accessible
STATUS manda o y
DESCRIPTION
"Tabla que con iene la in o mación de las conexiones BGP de los nodos de ed ges ionados"
Anexo A: MIBARDUINO
::= { encaminamien o 1 }
bgpEn y OBJECT-TYPE
SYNTAX FilasBGP
ACCESS no -accessible
STATUS manda o y
DESCRIPTION
"Fila de la abla de conexiones BGP"
INDEX { indiceBGP }
::= { bgpTable 1 }
FilasBGP ::=
SEQUENCE {
indiceBGP INTEGER,
nodoO igen DisplayS ing,
ecinoASN INTEGER,
iempoConexion Gauge32,
mensajesUpda e INTEGER,
mensajesTo ales INTEGER
}
indiceBGP OBJECT-TYPE
SYNTAX INTEGER
ACCESS ead-only
STATUS manda o y
DESCRIPTION
"Índice único de la en ada BGP"
::= { bgpEn y 1 }
nodoO igen OBJECT-TYPE
SYNTAX DisplayS ing
ACCESS ead-only
STATUS manda o y
DESCRIPTION
"Nomb e o di ección del nodo o igen BGP"
::= { bgpEn y 2 }
133
133
Pilo o de ges ión pa a disposi i os IoT
ecinoASN OBJECT-TYPE
SYNTAX INTEGER
ACCESS ead-only
STATUS manda o y
DESCRIPTION
"ASN (Au onomous Sys em Numbe ) del ecino BGP"
::= { bgpEn y 3 }
iempoConexion OBJECT-TYPE
SYNTAX Gauge32
ACCESS ead-only
STATUS manda o y
DESCRIPTION
"Tiempo de conexión BGP en segundos"
::= { bgpEn y 4 }
mensajesUpda e OBJECT-TYPE
SYNTAX INTEGER
ACCESS ead-only
STATUS manda o y
DESCRIPTION
"Núme o de mensajes BGP Upda e en iados"
::= { bgpEn y 5 }
mensajesTo ales OBJECT-TYPE
SYNTAX INTEGER
ACCESS ead-only
STATUS manda o y
DESCRIPTION
"Núme o o al de mensajes BGP en iados"
::= { bgpEn y 6 }
END

Anexo B: Ins alación y con igu ación de p ome heus, snmp-expo e y g a ana
ANEXO B: INSTALACIÓN Y CONFIGURACIÓN DE
PROMETHEUS, SNMP-EXPORTER Y GRAFANA
La ins alación y con igu ación del s ack p ome heus, snmp-expo e y g a ana, he decidido hace la u ilizando
Docke , ya que acili a eno memen e odo es e p oceso. Po ello, el p ime paso se á ins ala Docke , en mi caso,
en Ubun u 22:
sudo ap upda e
sudo ap ins all -y docke .io
En p ime luga , c ea emos una ed compa ida que u iliza án los es se icios, pe mi iendo la comunicación
en e ellos. Pa a ello, ejecu a emos el siguien e comando:
docke ne wo k c ea e moni o ing
El p oceso de ins alación y con igu ación segui á el siguien e o den: snmp-expo e , p ome heus y g a ana. Es o
pe mi e depu a e o es desde el pun o de comunicación di ec o con el A duino, snmp-expo e , pasando po el
ecolec o de mé icas, p ome heus, llegando has a la in e az g á ica que ecoge las mé icas ob enidas en
p ome heus.
Pa a le an a un Docke de snmp_expo e que pe mi a ob ene obje os de la MIB de A duino, c ea emos el
siguien e iche o (snmp.yml) en cualquie di ec o io:
di @linux-U-L1:~/p ome heus-g a ana-snmp_expo e $ ca snmp.yml
au hs:
public_ 2:
communi y: public
e sion: 1
modules:
a duino:
walk:
- 1.3.6.1.4.1.36582.2.1.1.3.1 # empe a u a
- 1.3.6.1.4.1.36582.2.1.1.3.2 # capaci i o
- 1.3.6.1.4.1.36582.2.1.1.3.3 # senso 3 alo
- 1.3.6.1.4.1.36582.2.1.1.3.4 # accesos web
- 1.3.6.1.4.1.36582.2.1.1.3.5 # humedad suelo
- 1.3.6.1.4.1.36582.2.1.1.3.6 # am disponible
- 1.3.6.1.4.1.36582.2.1.1.3.7 # sonido 1
- 1.3.6.1.4.1.36582.2.1.1.3.8 # sonido 2
- 1.3.6.1.4.1.36582.4.1.1.4.1 # ca ga cpu s1
135
135
Pilo o de ges ión pa a disposi i os IoT
- 1.3.6.1.4.1.36582.4.1.1.4.2 # ca ga cpu s2
- 1.3.6.1.4.1.36582.4.1.1.5.1 # conexiones cp s1
- 1.3.6.1.4.1.36582.4.1.1.5.2 # conexiones cp s2
- 1.3.6.1.4.1.36582.5.1.1.7.1 # R1 by es en an es
- 1.3.6.1.4.1.36582.5.1.1.7.2 # R2 by es en an es
- 1.3.6.1.4.1.36582.5.1.1.7.3 # R3 by es en an es
- 1.3.6.1.4.1.36582.5.1.1.7.4 # R4 by es en an es
- 1.3.6.1.4.1.36582.5.1.1.7.5 # R5 by es en an es
me ics:
- name: empe a u a
oid: 1.3.6.1.4.1.36582.2.1.1.3.1
ype: gauge
- name: capaci i o
oid: 1.3.6.1.4.1.36582.2.1.1.3.2
ype: gauge
- name: alo _senso _3
oid: 1.3.6.1.4.1.36582.2.1.1.3.3
ype: gauge
- name: accesos_web
oid: 1.3.6.1.4.1.36582.2.1.1.3.4
ype: coun e
- name: humedad_suelo
oid: 1.3.6.1.4.1.36582.2.1.1.3.5
ype: gauge
- name: am_disponible
oid: 1.3.6.1.4.1.36582.2.1.1.3.6
ype: gauge
- name: sonido_1
oid: 1.3.6.1.4.1.36582.2.1.1.3.7
ype: gauge
- name: sonido_2
oid: 1.3.6.1.4.1.36582.2.1.1.3.8
ype: gauge
- name: ca ga_cpu_se ido _1
oid: 1.3.6.1.4.1.36582.4.1.1.4.1
ype: gauge
- name: ca ga_cpu_se ido _2
oid: 1.3.6.1.4.1.36582.4.1.1.4.2
Anexo B: Ins alación y con igu ación de p ome heus, snmp-expo e y g a ana
ype: gauge
- name: conexiones_ cp_se ido _1
oid: 1.3.6.1.4.1.36582.4.1.1.5.1
ype: gauge
- name: conexiones_ cp_se ido _2
oid: 1.3.6.1.4.1.36582.4.1.1.5.2
ype: gauge
- name: by es_en an es_R1
oid: 1.3.6.1.4.1.36582.5.1.1.7.1
ype: coun e
- name: by es_en an es_R2
oid: 1.3.6.1.4.1.36582.5.1.1.7.2
ype: coun e
- name: by es_en an es_R3
oid: 1.3.6.1.4.1.36582.5.1.1.7.3
ype: coun e
- name: by es_en an es_R4
oid: 1.3.6.1.4.1.36582.5.1.1.7.4
ype: coun e
- name: by es_en an es_R5
oid: 1.3.6.1.4.1.36582.5.1.1.7.5
ype: coun e
G acias a es e iche o, pod emos le an a un con enedo de snmp-expo e con el siguien e comando:
docke un -d --name snmp_expo e --ne wo k moni o ing -p 9116:9116
- /home/di /p ome heus-g a ana-
snmp_expo e /snmp.yml:/e c/snmp_expo e /snmp.yml p om/snmp-expo e
Una ez le an ado, comp oba emos que unciona co ec amen e accediendo a la siguien e URL en el
na egado , modi icando las di ecciones IP po las co espondien es:
h p://192.168.48.213:9116/snmp?module=a duino& a ge =192.168.48.82
137
137
Pilo o de ges ión pa a disposi i os IoT
Como se puede obse a , se eciben co ec amen e los alo es de los obje os de la MIB de A duino que
de inimos an e io men e en snmp.yml. Po an o, pasa emos a le an a un con enedo de p ome heus que se
enca ga á de ecoge es as mé icas de o ma pe iódica, cada 30 segundos. Pa a ello, c eamos el iche o
p ome heus.yml con el siguien e con enido:
global:
sc ape_in e al: 30s
e alua ion_in e al: 30s
sc ape_ imeou : 30s # Aumen a el imeou global po de ec o (opcional)
# ule_ iles:
# - " i s . ules"
# - "second. ules"
sc ape_con igs:
Anexo C: Sc ip B oke MQTT
"/a duino1/{sysName}/diskName",
"/a duino1/{sysName}/ cpConnec ions",
"/a duino1/{sysName}/cpuLoad",
"/a duino1/{sysName}/diskSize"
]
o opic in opics:
clien .subsc ibe( opic)
p in ( " Susc i o a: { opic}")
# Con igu ación del clien e MQTT
clien = mq .Clien ()
clien .on_connec = on_connec
clien .on_message = on_message
# Conexión con el b oke
clien .connec ("localhos ", 1883)
clien .loop_ o e e ()

145
145
Pilo o de ges ión pa a disposi i os IoT
ANEXO D: REPOSITORIO DE GITHUB
He c eado un eposi o io de Gi hub accesible desde mi pe il o desde la URL
h ps://gi hub.com/ iczamga /Pilo o_de_ges ion_pa a_disposi i os_IoT con odos los códigos desa ollados
pa a es e abajo, o ganizados en los siguien es di ec o ios:
• Sp ing Boo : códigos del backend de Sp ing Boo desa ollados pa a el se ido REST.
• Subsis emaG1/ges o SNMP: códigos del ESP32.
• Subsis emaG2/agen eSNMP: códigos del A duino MEGA, incluyendo la lib e ía desa ollada
Agen eSNMP.
• escena ioGNS3: iche os necesa ios pa a eplica el escena io de GNS3 con los ou e s ges ionados.
• p ome heus-g a ana-snmp_expo e : iche os de con igu ación de p ome heus y snmp_expo e pa a
eplica la ins alación de ambos componen es.
• bbdd.sql: iche o con la de inición de las ablas de la base de da os de Pos g eSQL.
• clien eMQTT.py: sc ip de Py hon del clien e MQTT que ecibe la in o mación de ges ión del ESP32
y la inse a en la BBDD.
ANEXO E: VIDEO DE DEMOSTRACIÓN: PRUEBAS
He subido a la pla a o ma You ube un ideo de demos ación enseñando odos los componen es del sis ema,
an o ha dwa e como so wa e, haciendo p uebas con la aplicación mó il y G a ana. Es e puede se consul ado
en el siguien e enlace: h ps://www.you ube.com/wa ch? =mIFPKZTALaY o en mi canal Vicen e Z de es a
pla a o ma.