Вы находитесь на странице: 1из 176

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA

Proyecto de Fin de Grado en Ingeniería Informática

REAL OPENVEND
EL INTERNET DE LAS MÁQUINAS DE VENDING

FRANCISCO JOSÉ PAÑOS MERINO

Dirigido por: ANTONIO SOLANO TARROC

Codirigido por: NATIVIDAD DURO CARRALERO Y RAQUEL DORMIDO CANTO

Curso: CURSO 2015 - 2016


OPENVEND EL INTERNET DE LAS MÁQUINAS DE VENDING

Proyecto de Fin de Grado en Ingeniería Informática


de modalidad específica

Realizado por: FRANCISCO JOSÉ PAÑOS MERINO

Dirigido por: ANTONIO SOLANO TARROC

Codirigido por: NATIVIDAD DURO CARRALERO Y RAQUEL DORMIDO CANTO

Fecha de lectura y defensa: ........................................................................................................


Capítulo 1 - Resumen

1. RESUMEN

Este Proyecto forma parte a su vez, de un Proyecto de Tesis Doctoral

en el que se busca aplicar los conceptos del Internet de las Cosas (IoT Internet

of the Things) a las máquinas de Vending, máquinas expendedoras de

distintos tipos de productos, construyendo dispositivos e implementando en

ellos los servicios que permitan ser accedidos en todo momento desde

distintos dispositivos electrónicos a través de Internet, permitiendo una

interacción intuitiva y una gran usabilidad. Para ello se usarán tecnologías

Open Source y Open Hardware.

Como primera meta importante fijamos la construcción de elementos

Hardware para posibilitar la comunicación con las máquinas de vending,

usando equipos tipo Arduino.

Una segunda meta será poner en servicio una serie de sistemas de

administración y gestión para realizar las operaciones pertinentes en estas

máquinas dotadas con el Hardware obtenido del primer punto.

Con tercera meta se establece la construcción de los sistemas que

permitan realizar un seguimiento y predicción de los movimientos realizados

en las máquinas de vendind.

Por último, como cuarta meta se propone dotar a estas máquinas que

elementos adicionales que las hagan más funcionales y atraigan a una mayor

cantidad de público.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 5


Real Openvend - El Internet de las Máquinas de Vending

Esta obra está bajo una licencia Reconocimiento 3.0 España de


Creative Commons.

Para ver una copia de esta licencia, visite:


http://creativecommons.org/licenses/by-sa/3.0/es/ o envíe una carta a
Creative Commons, 171 Second Street, Suite 300, San Francisco, California
94105, USA.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 6


Capítulo 1 - Resumen

SUMMARY

This Project is a part of a Doctoral Thesis Project in which it seeks to apply the
concepts of Internet of Things (IoT Internet of the Things) to vending machines,
vending machines of different types of products, building devices and
implementing them to provide services to be accessed at any time from
different electronic devices via the Internet, allowing intuitive interaction and
usability. For this, Open Source technologies and Open Hardware will be used.

As a first important goal we set Hardware building elements to enable


communication with vending machines, using equipment such Arduino
devices.

A second goal will be to provide services a variety of administrative and


management systems to perform relevant operations in these devices with
Hardware earned the first point machines.

With third goal the construction of systems to track and predict the movements
in machines vending.

Finally, as a fourth goal it is proposed to furnish these machines that additional


elements that make them more functional and appeal to a larger audience.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 7


Real Openvend - El Internet de las Máquinas de Vending

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 8


Capítulo 2 - Listado de palabras clave

2. LISTA DE PALABRAS CLAVE

Internet de las Cosas, Wordpress, Woocommerce, API, Arduino, Hosting,


Scrum, PaaS, Certificados SSL, One Time Password, Big Data, Sistema de
Administración de Contenido, Comercio Electrónico, Alojamiento Web, Plesk,
Registro de Dominios, Máquinas de Vending, Scrum, Cloud Computing,
Servidor Cloud, Servidor Dedicado, Temas, Plantilla, Enpoint, Oauth,
Explorador de Internet, Cliente FTP

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 9


Real Openvend - El Internet de las Máquinas de Vending

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 10


Capítulo 2 - Listado de palabras clave

KEYWORD LIST

Internet of the Things, Wordpress, Woocommerce, API, Arduino, Hosting,


Scrum, PaaS, Certificados SSL, One Time Password, Big Data, Content
Management System, Ecommerce, Web Hosting, Plesk, Domain Register,
Vending Machines, Scrum, Cloud Computing, Cloud Server, Dedicated
Server, Theme, Template, Enpoint, Oauth, Internet Browser, FTP Client

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 11


Real Openvend - El Internet de las Máquinas de Vending

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 12


Capítulo 3 - Título del Proyecto en inglés

3. TÍTULO DEL PROYECTO EN INGLÉS

REAL OPENVEND THE INTERNET OF THE VENDING MACHINES

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 13


Real Openvend - El Internet de las Máquinas de Vending

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 14


Capítulo 4 - Índice

4. INDICE

1. RESUMEN Página 5

2. LISTA DE PALABRAS CLAVES Página 9

3. TÍTULO DEL PROYECTO EN INGLÉS Página 13

4. INDICE Página 15

5. LISTA DE FIGURAS Y TABLAS Página 19

6. DESCRIPCIÓN DEL PROYECTO Página 21

6.1. CONTEXTO Página 25

6.2. MODELO DE PROCESO Página 33

6.2.1. SCRUM Página 33

6.3. HOSTING Página 43

6.3.1. Elección del Proveedor del Hosting Página 45

6.3.2. Registro Dominio OPENVEND.NET Página 49

6.3.3. Plesk Página 52

6.3.4. Configuración hosting para dominio Página 54

6.4. SEGURIDAD HOSTING Página 55

6.4.1. Certificado SSL Página 55

6.4.2. Instalación del Certificado SSL Página 57

6.5. WORDPRESS Página 59

6.5.1. Justificación de la elección Página 60

6.5.2. Instalación Página 62

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 15


Real Openvend - El Internet de las Máquinas de Vending

6.5.3. Configuración Página 63

6.5.4. Plantillas de Diseño Página 64

6.5.5. Seguridad Página 66

6.5.6. Respaldo Página 68

6.6. WOOCOMMERCE Página 69

6.6.1. Justificación de la elección Página 70

6.6.2. Instalación Página 71

6.6.3. Configuración Página 71

6.6.4. MarketPlace Página 71

6.6.5. Módulos de Pago Página 73

6.7. PLUGINS ADICIONALES Página 75

6.7.1. WP REST API Página 75

6.7.2. WC VENDORS Página 76

6.7.2. LOGIN REDIRECT Página 76

6.7.2. SHORTCODE REDIRECTOR Página 77

6.7.2. TWO FACTOR AUTH Página 78

6.7.2. CHECKOUT MANAGER Página 80

6.7.2. WP MIGRATE DB Página 81

6.7.2. WORDFENCE SECURITY Página 81

6.7.2. MYCRED Página 82

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 16


Capítulo 4 - Índice

6.8. APIs REST Página 83

6.8.1. Conceptos Página 83

6.8.2. APIs Woocommerce y Wordpress Página 85

6.8.3. Ejemplos operaciones API REST Página 89

6.9. CASOS DE USO Página 97

6.9.1. Ciclo de compra completo Página 97

6.9.2. Instanciar una máquina de vending Página 102

6.10. MEJORAS A REALIZAR Página 107

6.11. CONCLUSIONES Página 111

7. ANEXOS Página 113

7.1. Instalación WampServer Servidor Local Página 115

7.2. Instalación Wodpress en Servidor Local Página 119

7.3. Instalación Woocommerce en Servidor Local Página 125

7.4. Instalación Plugins Página 131

7.5. Configuración Hosting Plesk Página 135

7.6. Instalación Certificado SSL Página 145

7.7. Instalación de Servidor Local a Remoto Página 157

7.8. Cliente FTP Página 163

8. AGRADECIMIENTOS Página 165

9. BIBLIOGRAFÍA Página 169

10. LISTA DE ABREVIATURAS, SIGLAS

Y ACRÓNIMOS Página 173

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 17


Real Openvend - El Internet de las Máquinas de Vending

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 18


Capítulo 5 - Lista de Figuras y Tablas

5. LISTA DE FIGURAS Y TABLAS

FIGURA 6.1 - LOGOTIPO DE REAL OPENVEND – PÁGINA 23

FIGURA 6.2 - FLUJO GENERAL OPENVEND – PÁGINA 26

FIGURA 6.3 - RESPONSABILIDADES PROYECTO – PÁGINA 27

FIGURA 6.4 - MODELO DE PROCESO SCRUM – PÁGINA 34

FIGURA 6.5 - TIPOS DE HOSTING – PÁGINA 44

FIGURA 6.6 - LOGOTIPO PLESK – PÁGINA 52

FIGURA 6.7 - FUNCIONAMIENTO CERTIFICADO SSL – PÁGINA 56

FIGURA 6.8 - USO DE WORDPRESS – PÁGINA 61

FIGURA 6.9 - THEMES DE WORDPRESS – PÁGINA 65

FIGURA 6.10 - PLUGINS DE WORDPRESS – PÁGINA 66

FIGURA 6.11 - USO DE WOOCOMMERCE – PÁGINA 70

FIGURA 6.12 - FLUJO REST – PÁGINA 83

FIGURA 6.13 - FLUJO CASO DE USO COMPRA PRODUCTO – PÁGINA 99

FIGURA 6.14 - FLUJO CASO DE USO INSTANCIAR MÁQUINA

VENDING – PÁGINA 103

CAPTURAS CAPITULO 6.7 - NUMERO TOTAL 5 – DESDE PÁGINA 76

CAPTURAS CAPITULO 6.8 - NUMERO TOTAL 9 – DESDE PÁGINA 86

CAPTURAS ANEXO 1 - NUMERO TOTAL 2 – DESDE PÁGINA 116

CAPTURAS ANEXO 2 - NUMERO TOTAL 9 – DESDE PÁGINA 119

CAPTURAS ANEXO 3 - NUMERO TOTAL 9 – DESDE PÁGINA 125

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 19


Real Openvend - El Internet de las Máquinas de Vending

CAPTURAS ANEXO 4 - NUMERO TOTAL 5 – DESDE PÁGINA 131

CAPTURAS ANEXO 5 - NUMERO TOTAL 16 – DESDE PÁGINA 135

CAPTURAS ANEXO 6 - NUMERO TOTAL 12 – DESDE PÁGINA 145

CAPTURAS ANEXO 7 - NUMERO TOTAL 6 – DESDE PÁGINA 158

CAPTURAS ANEXO 8 - NUMERO TOTAL 2 – DESDE PÁGINA 163

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 20


Capítulo 6 - Descripción del Proyecto

6. DESCRIPCIÓN DEL PROYECTO

Para una mejor comprensión de la estructura y contenido de este


Proyecto a continuación se expone de manera muy resumida cada uno de los
apartados que lo componen.

- Contexto, proporciona una visión global del problema planteado al que


se pretende buscar una solución tecnológica lo más acertada posible
tratando de usar las tecnologías actuales más idóneas, eso sí, siempre
usando tecnologías Open Source y Open Hardware.

- Modelo de Proceso, se indica como funciona el modelo de proceso


Scrum que ha sido la metodología seleccionada para la realización de
este Proyecto, indicando la planificación que se ha llevado a cabo.

- Tecnologías a implementar, se detallan de manera general todos los


componentes, principalmente Software que se usará para el desarrollo
de las funcionalidades que se han querido poner en marcha para este
Proyecto.

- Hosting, se indica como ha sido, y porqué, el proceso para seleccionar


una proveedor de hosting que albergue los sistemas que se han
integrado, así como la configuración del mismo para adecuarlo de la
mejor manera posible a las necesidades planteadas por el Proyecto.

- Seguridad Hosting, como se apreciará en distintos apartados de este


Proyecto, la seguridad será una constante en muchas de las parte del
mismo, en este caso se buscar dotar a la infraestructura base de las
mayores medidas de seguridad, empezando por la instalación de un
Certificado SSL para la encriptación de todas las conexiones.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 21


Real Openvend - El Internet de las Máquinas de Vending

- Wordpress, justificando en primer lugar su elección, se detalla la


instalación y configuración de este Sistema de Gestión de Contenidos
CMS, en el servidor que se ha contratado a tal efecto. Es muy posible
que se incluyan modificaciones en el código original para ampliar
funcionalidades que son muy específicas y que posiblemente no
tengan solución con la instalación de Plugins adicionales de
Wordpress.

- Woocommerce, justificando igualmente su elección, de detalla la


instalación y configuración de este Plugin de Comercio Electrónico
dentro de la distribución de Wordpress mencionada anteriormente. Se
crearán una serie de productos con todas las características

- Componentes Adicionales, teniendo en cuenta la naturaleza de


Wordpress que se detallará en el apartado correspondiente, serán
necesarios una serie de componentes llamados Plugins para dotar de
funcionalidades extra tanto al CMS como al Plugin de Ecommerce.
Estos Plugins ofrecerán funcionalidades de Seguridad, Respaldo,
ampliación de funcionalidades, …, teniendo en cuenta que se
instalarán tanto para Wordpress como para Woocommerce.

- APIs, con la finalidad de proporcionar una mejor accesibilidad desde


los componentes Hardware que estarán instalados en las máquinas de
Vending se instalarán y/o habilitarán las funciones de las APIs de
Wordpress y Woocommerce que permitirán una fácil y fluida
comunicación de diversos dispositivos con el servidor de las
aplicaciones.

- Casos de uso, se detallará uno en concreto, que será el que probará


un ciclo completo de la compra de un producto cualquiera en una
máquina de vending. Este caso de uso afectará a los distintos sistemas
que se habrán construido en el desarrollo del Proyecto común, es por
ello que se ha seleccionado este caso de uso en concreto

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 22


Capítulo 6 - Descripción del Proyecto

- Ampliaciones futuras, se indicarán una serie de ampliaciones


recomendadas que actualmente estarían fuera del alcance de este
Proyecto por diversos motivos, pero que serían grandes aportaciones
para construir un sistema robusto y profesional.

FIGURA 6.1 - LOGOTIPO DE REAL OPENVEND

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 23


Real Openvend - El Internet de las Máquinas de Vending

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 24


Capítulo 6.1. - Contexto

6.1. CONTEXTO

El Proyecto objeto de esta memoria forma parte del trabajo de


investigación de la tesis doctoral "Building the Internet of Things of Vending
Machines" del Sr. Antonio Solano Tarroc cuyo objetivo es, "proporcionar a las
PYMES que operan máquinas auto expendedoras (máquinas de vending)
soluciones tecnológicas asequibles que permitan conectar sus máquinas de
Internet del futuro con el fin último de mejorar su competitividad".

Debido al crecimiento exponencial de Internet y sus aplicaciones y


acceso en prácticamente todos los campos imaginables, se pretende dotar a
uno muy concreto, las máquinas de vending, de la posibilidad de
aprovecharse de todas las ventajas que Internet proporciona, buscando
principalmente una serie muy concreta de objetivos entre los que destacamos
la facilidad de uso a través de cualquier dispositivo electrónico (en este caso
especialmente a través de smartphones), la gestión integrada desde un único
sistema que nos proporcionará la posibilidad de mantener el acceso a las
máquinas de vending a la vez que nos proporcionará los datos suficientes
para poder predecir en mayor o menor grado las ventas que se esperen en
determinados momentos para que podamos previamente surtir a esas
máquinas de los productos necesarios.

De esta manera, las máquinas de vending formarán parte del llamado


concepto Internet de las Cosas que se refiere a la interconexión digital de
objetos cotidianos con Internet, en este caso unos dispositivos que
proporcionan una serie de determinados productos, operando dichos
dispositivos a través de dispositivos electrónicos de última generación a través
de un sistema integrado que nos da acceso a esos productos.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 25


Real Openvend - El Internet de las Máquinas de Vending

El sistema que se pretende poner en marcha constará por lo tanto de


los siguientes elementos,

- Máquinas de Vending dotadas con placas Arduino


- Servidor con los sistemas indicados instalados
- Servidor Big Data
- Reclamos audiovisuales

FIGURA 6.2 - FLUJO GENERAL OPENVEND

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 26


Capítulo 6.1. - Contexto

Como se puede ir comprobando el Proyecto aborda distintos campos


dentro del mundo de sistemas y equipos informáticos, desde la creación y
configuración de placas de Arduino, pasando por el emergente mundo del Big
Data, así como la gestión de sistemas de administración de contenidos y
comercio electrónico, por todo esto, y por el número de alumnos, entre lo que
me encuentro, que se ha inscrito en este Proyecto, en concreto somos cuatro
alumnos, el Proyecto se dividido a su vez en cuatro partes claramente
diferenciada y con unas relaciones muy fuertes entre estas cuatro partes.

En concreto, estos cuatro alumnos somos, David Díaz en la


construcción y configuración de las placas de Arduino, Francisco Paños en la
configuración y mantenimiento del servidor de alojamiento y los sistemas en
él instalados, Javier Mira en la creación de los sistemas de estadística y
predicción de datos mediante Big Data y por último Manuel García en la parte
de instalación de dispositivos y sistemas para aumentar el reclamo publicitario
en las máquinas de Vending.

David Díaz

Manuel García Francisco Paños

Javier Mira

FIGURA 6.3 - RESPONSABILIDADES PROYECTO

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 27


Real Openvend - El Internet de las Máquinas de Vending

A partir de lo escrito anteriormente y de la figura de la página anterior, se


puede ver que el Proyecto globalmente abarca cuatro campos de actividad
fundamentales, cada uno de los cuales se resumen de la siguiente manera:

CONSTRUCIÓN Y CONFIGURACIÓN DISPOSITIVOS ARDUINO

Responsable: David Díaz

Una vez que se han analizado las necesidades de funcionalidad en el


sistema global, se procederá a la búsqueda en el mercado de los dispositivos
de Hardware que se podrán construir con los cambios que sean necesarios
para cubrir esas necesidades, y como se ha comentado anteriormente
atendiendo a una de las máximas de este Proyecto y es que sean
componentes de bajo coste Open Hardware y en los que se puedan instalar
aplicaciones Open Source que no generen gastos de licencias, teniendo
siempre que tomar decisiones en relación con los conceptos de futuras
mejoras o adaptaciones para nuevos sistemas que estén llegando al mercado,
que como se puede entender siempre habrá algo en este sentido.

Una vez construidos o adaptados esos componentes Hardware se


procederá a la configuración de los mismos con el Software que permita
interactuar con el resto de sistemas que se hayan definido en las
especificaciones previas del diseño del Proyecto, en particular con el servidor
principal que contendrá el sistema de administración de contenidos y el
sistema de comercio electrónico. Se realizan las pruebas oportunas para ver
que los flujos de operaciones son correctos.

En este sentido, cabe destacar que una de las tecnologías que será
la que implementará en las máquinas de vending será la de los lectores NFC
(Near Field Communication o Comunicación de Campo Cercano) que están
presentes por defecto ya en los smartphones de última generación y que se
prevé que sea una tecnología en auge para gestiones de todo tipo,

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 28


Capítulo 6.1. - Contexto

especialmente para dotar a estos dispositivos de medios de pago virtuales


online, de tal manera que lo que se pretende en última instancia es que al
acerca un móvil dotado de NFC a la máquina de vending nos muestre en la
pantalla del móvil la web del sistema que contiene los productos que se
pueden comprar, mediante un pago con la propia pasarela del pago del
sistema, en la máquina de vending en la que nos encontramos.

PROVISIONAR ALOJAMIENTO PARA SISTEMA DE ADMINISTRACION


DE CONTENIDOS Y COMERCIO ELECTRÓNICO

Responsable: Francisco Paños

En la misma especificación de requisitos para el sistema del que


hablamos en el punto anterior, en este apartado del Proyecto se deben
primero diseñar y posteriormente implementar los sistemas que permitirán
realizar las operaciones que se han descrito dotando a todo ello las más altas
cotas de seguridad y usabilidad posibles para que realizar una compra en
estas máquinas de vending sea una experiencia positiva, segura y
recomendable.

Como en el apartado anterior hay que buscar sistemas que no sean


propietarios e intentar en la medida de lo posible incurrir en los costes
económicos más bajos posibles para lograr una de las máximas de este
Proyecto que es lograr un sistema de bajo coste.

Finalmente, tras mucha deliveración y lectura de diversas opiniones


se opta por implementar el CMS Wordpress con su Plugin de Comercio
Electrónico Woocommerce, además de una serie de Plugins adicionales para
dotar de funcionalidades avanzadas al sistema.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 29


Real Openvend - El Internet de las Máquinas de Vending

Al principio, en las primeras videoconferencias con el Director del


Proyecto, se vislumbraba la posibilidad que la UNED o la empresa Huawei
nos suministrara una plataforma de alojamiento para los sistemas que
desarrolláramos, cosa que finalmente no pudo ser de esa manera por lo que
me vi obligado a buscar una proveedor de hosting más modesto, se eligió en
primer lugar la empresa 1&1, donde se instalaron las primeras versiones, pero
con el paso del tiempo al requerir a ese servidor más recursos de Hardware
se vio claramente que no se podría llevar a cabo sin incrementar los costos
económicos por lo que se decidió migrar el sistema a la empresa Grupo
Interdominios que nos proveería un servidor en el que si podríamos gestionar
los recursos Hardware a la vez que se prestaban más recursos que en el
anterior de la otra empresa.

Se configurará el servidor de tal manera que exista la mayor seguridad


posible, empezando por la instalación de un certificado SSL para que todas
las conexiones que se realicen al sistemas estén completamente encriptadas,
además de otras configuraciones adicionales de seguridad

PROVISIONAR SISTEMA PARA MUESTREO DE DATOS DE VENTA Y


PREDICCIÓN DE FUTURAS COMPRAS - BIG DATA

Responsable: Javier Mira

En este caso, este apartado no necesita implementar los mismos requisitos


para su construcción que los dos apartados anteriores, pues es un apartado
más específico que a partir de los datos obtenidos en el sistema de comercio
electrónico, y tras una importación de los mismos, generará un análisis
estadístico de las compras que se realizan en las distintas máquinas de
vending y una predicción de compra a través de los sistemas que su
responsable pondrá en funcionamiento.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 30


Capítulo 6.1. - Contexto

Como base de las tecnologías que se implementan en este apartado


destacamos R que es un entorno y lenguaje de programación con un enfoque
al análisis matemático. Es una implementación de Software libre del Lenguaje
S, pero con soporte de alcance estático, es uno de los lenguajes más usados
en investigación por la comunidad estadística, siendo muy popular en los
campos de la minería de datos, la investigación biomédica, …, a esto
contribuye la posibilidad de cargar distintas bibliotecas o paquetes con
funcionalidades de cálculo y creación de gráficas.

Como técnicas para la predicción de las futuras compras que se


esperan en las distintas máquinas en función de su ubicación o productos que
venden, se usarán modelos lineales de regresión y SVM (Máquinas de
Vectores Soporte).

DOTAR A LAS MÁQUINAS DE VENDING DE DISPOSITIVOS Y


SISTEMAS PARA ATRAER CLIENTES

Responsable: Manuel García

Para conseguir atraer más clientes a nuestras máquinas de vending


se propondrán una serie de añadidos a las propias máquinas como pueden
ser videos publicitarios, conexiones wifi gratuitas, …, de esta manera se
proporciona un valor añadido a los clientes o posibles clientes que se
aproximen a las zonas done están instaladas las máquinas.

Todos los dispositivos que se integren en las máquinas de vending o


en sus entornos tendrán conectividad tanto con las placas Arudino de las
máquinas como con los sistemas que se integren para la gestión de comercio
electrónico como para los sistemas de predicción de datos mediante sistemas

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 31


Real Openvend - El Internet de las Máquinas de Vending

Big Data, es decir con los proyectos del resto del grupo que forma parte de
este Proyecto en su totalidad.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 32


Capítulo 6.3. - Hosting

6.2. MODELO DE PROCESO

En las primeras reuniones mantenidas para el desarrollo del Proyecto


el Director del mismo nos propuso usar como Modelo de Proceso el
denominado Scrum, tras una breve pero clarificadora presentación de este
modelo a todos nos pareció muy adecuado y lo establecimos con el modelo a
usar para el desarrollo de los sistemas, más adelante se detalla como se
realiza este modelo.

El Modelo de Proceso Scrum se enmarca dentro del llamado


Desarrollo Ágil, y es una filosofía ágil para la ingeniería de software pone el
énfasis en cuatro aspectos clave: la importancia de los equipos con
organización propia que tienen el control sobre el trabajo que realizan, la
comunicación y colaboración entre los miembros del equipo y entre los
profesionales y sus clientes, el reconocimiento de que el cambio representa
una oportunidad y la insistencia en la entrega rápida de software que satisfaga
al consumidor. Los modelos de proceso ágil han sido diseñados para abordar
cada uno de estos aspectos.

6.2.1. SCRUM

Los principios Scrum son congruentes con el manifiesto ágil y se


utilizan para guiar actividades de desarrollo dentro de un proceso de análisis
que incorpora las siguientes actividades estructurales: requerimientos,
análisis, diseño, evolución y entrega. Dentro de cada actividad estructural, las
tareas del trabajo ocurren con un patrón del proceso llamado sprint. El trabajo
realizado dentro de un sprint (el número de éstos que requiere cada actividad
estructural variará en función de la complejidad y tamaño del producto) se
adapta al problema en cuestión y se define —y con frecuencia se modifica—
en tiempo real por parte del equipo Scrum.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 33


Real Openvend - El Internet de las Máquinas de Vending

El flujo general del proceso Scrum se ilustra en la figura a


continuación:

FIGURA 6.4 - MODELO DE PROCESO SCRUM

Scrum acentúa el uso de un conjunto de patrones de proceso del


software que han demostrado ser eficaces para proyectos con plazos de
entrega muy apretados, requerimientos cambiantes y negocios críticos. Cada
uno de estos patrones de proceso define un grupo de acciones de desarrollo:

- Retraso: lista de prioridades de los requerimientos o características del


proyecto que dan al cliente un valor del negocio. Es posible agregar en
cualquier momento otros aspectos al retraso (ésta es la forma en la que
se introducen los cambios). El gerente del proyecto evalúa el retraso y
actualiza las prioridades según se requiera.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 34


Capítulo 6.3. - Hosting

- Sprints: consiste en unidades de trabajo que se necesitan para


alcanzar un requerimiento definido en el retraso que debe ajustarse en
una caja de tiempo14 predefinida (lo común son 30 días). Durante el
sprint no se introducen cambios (por ejemplo, aspectos del trabajo
retrasado). Así, el sprint permite a los miembros del equipo trabajar en
un ambiente de corto plazo pero estable.

- Reuniones Scrum: son reuniones breves (de 15 minutos, por lo


general) que el equipo Scrum efectúa a diario. Hay tres preguntas clave
que se pide que respondan todos los miembros del equipo:

• ¿Qué hiciste desde la última reunión del equipo?


• ¿Qué obstáculos estás encontrando?
• ¿Qué planeas hacer mientras llega la siguiente reunión del equipo?

Un líder del equipo, llamado maestro Scrum, dirige la junta y evalúa


las respuestas de cada persona. La junta Scrum ayuda al equipo a descubrir
los problemas potenciales tan pronto como sea posible. Asimismo, estas
juntas diarias llevan a la “socialización del conocimiento”, con lo que se
promueve una estructura de equipo con organización propia.

- Demostraciones preliminares: entregar el incremento de software al


cliente de modo que la funcionalidad que se haya implementado pueda
demostrarse al cliente y éste pueda evaluarla. Es importante notar que
las demostraciones preliminares no contienen toda la funcionalidad
planeada, sino que éstas se entregarán dentro de la caja de tiempo
establecida.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 35


Real Openvend - El Internet de las Máquinas de Vending

REUNIONES SCRUM

A continuación y de manera muy escueta se indican las reuniones


mantenidas a lo largo de esta curso para la realización del Proyecto, estas
reuniones se realizaban mediante aplicaciones como Hangouts de Google o
Skype de Microsoft y se realizaban mediante videoconferencias. La duración
era variable, pudiendo estar desde desde 30 minutos hasta 2 horas y media.

07/10/15

- Primera reunión oficial

14/10/15

- Antonio expone las primeras aproximaciones del Proyecto

21/10/15

- Antonio explica el desarrollo histórico del Proyecto

29/10/15

- David, Javi, Manuel y Fran cambian impresiones sobre el Proyecto

04/11/15

- Antonio detalla las funcionalidades aplicadas en el Proyecto en años


pasados

11/11/15

- David, Javi y Manuel intercambian detalles sobre los objetivos a conseguir

18/11/15

- David, Javi, Manuel y Fran organizan las primeras actuaciones

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 36


Capítulo 6.3. - Hosting

25/11/15

-Se proporciona código fuente Arduino.

-Se encarga a Fran revisar openvend.net -> pasar a .es

-David: Estudiar posibilidades Bluetooth, BLE, diferentes tarjetas (Gboard,


nfc dtag, etc) Estudiar Json (encriptado)

-Manuel: Estudiar las distintas versiones de código Arduino

-Javi: Revisión Opencart, estudio Bigdata memorias anteriores (minería /


optimización / fuentes de datos) Posibilidad usar servidores Huawey /hadoop

02-12-15

-Explicación Apikey. Uso DHC en api.openvend.net. Uso yourls y token.


Efectuamos todo un proceso de compra.

-Manuel estudiará traducir a Pi el código usado.

09-12-15

-Fran: Revisando la distribución de Víctor. Problemas con el token y las url


reducidas.

-Javi: Estudiando BD centralizada

-Toni: estabilizando el entorno.

15-12-15

-Se registra dominio en 1&1

Principal: openvend.net

1) Demo.openvend.net (opencart)
2) Api openvend.net (/Slim/api)
3) Web.openvend.net /slim/web
4) Yourls
Se revisa el flujo de llamadas desde Arduino.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 37


Real Openvend - El Internet de las Máquinas de Vending

16-12-15

-Fran revisa el ciclo de compra desde la web

-Javi estudia el problema de gestión de stocks.

-Problema DEX no actualiza con monedas

-Manuel estudia los casos de uso de la memoria de Daniel

Se revisan los 3 primeros escenarios

23-12-15

Demostración del login descentralizado / cross domain.

Dudas de Fran sobre versiones de Víctor y Luis Miguel

Análisis de alto nivel: Casos de uso y flujos

30-12-15

Tony: Pruebas openvend.es OK – Login centralizado funcionando. Server


Slim ok en openvend.es

20-01-16

Revisión casos uso propuestos.

NFC P2P Uribeacon

Uribeacons

Portal wifi cautivo en la Pi

Gestión Slim / unificar portal

Dudas sobre disponibilidad máquinas BigData

Mejorar look@feel

Fran: migrado .net a nuevo portal

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 38


Capítulo 6.3. - Hosting

Se proporciona un código básico compra en Arduino.

PERIODO EXAMENES PRIMER CUATRIMESTRE - No hay reuniones

2-2-16

Pruebas Rest rephone

Posibilidad migrar arm

Comunicaciones bt – nfc o wifi

Diseño con EAGLECad

Comienzo diseño placa

Manuel : Impresión QR URL Dinámico

17-02-2016

Enseñamos las presentaciones de los anteproyectos.

20-02-2016

Demos

02-03-2016

Manuel: Problemas con la pantalla Pi. Montar servidor streaming

David: Problemas con los puertos serial en repone y REST

Fran: intentando pasar interfaz web.openvend e integrar con plugin Slim


framework

Javi: investigando acceso BBDD desde fuera. Pruebas instalación librerías


phyton y R. Dudas generación datos ficticios.

09-03-2016

Javi: Termina generación de datos ficticios. Estudiando fuente de datos


¿Woocommerce?

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 39


Real Openvend - El Internet de las Máquinas de Vending

David: Estudiando señales electrónicas bus MDB / DEX. Pruebas


programación ESP como Gateway

Fran: Resolución dudas casos de uso, envío URL dinámica, REST

Vemos de nuevo los ciclos de ventas con Antonio

16-03-16

Fran: Sigue con las pruebas de 1&1

Manuel: Pruebas de Streaming

Javi: Generando datos aleatorios, creando el modelo de regresión


estimación ventas

David: Revisando conectividad con Gboard y ESP en FOCA con Toni


(OV_BasichttpClientPin)

23-03-16

David: Diseño de placa circuito

Javi: Revisando nuevos modelos de regresión y cómo se ajustan

Fran: Migración de entorno opencart

Manuel: Instalando entorno (php, streaming, etc)

30-03-16

Manuel: Estudiando la interconectividad de la Pi

David: Estudiando el código del cliente reducido (esp8266)

Fran: Migración a Wordpress-Problemas api woocommerce

Javi: Cambio de modelos de regresión

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 40


Capítulo 6.3. - Hosting

06-04-16

Javi: Ya se estiman correctamente las ventas con el nuevo modelo.


Integración con Fran?

Manuel: Revisando la utilidad de la PI, posibles casos de uso con portal


cautivo, o la pantalla táctil

Fran: Integración con Wordpress

David: Pruebas con https y certificado (fingerprint) Placa ya soldada. Más


pruebas rephone

13-04-2016

Fran: Pone a funcionar las api de woocomerce

Javi: Gráficas con los datos reales y estimaciones con su máquina.

David: Intentando interactuar con la nueva web de Fran

20-04-2016

Javi: Paneles de visualización mejorados

Fran: Pruebas con el nuevo dominio

Manuel: revisando casos de uso RPi

David: Pruebas conexión arduino con https

27-04-16

Fran: Construcción de la página en 3isi.com y desarrollo portal

Manuel: Desarrollo portal cautivo con la Pi.

David: Pruebas con placa y NFC p2p

Javi: Sigue con el portal y calculando estimaciones con los nuevos


modelos.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 41


Real Openvend - El Internet de las Máquinas de Vending

11-05-16

Presentación DEMOS

13-05-16

Presentación a Natividad Duro Carralero y Raquel Dormido Canto

PERIODO EXAMENES SEGUNDO CUATRIMESTRE - No hay reuniones

15-06-16

Coordinación para presentación de memorias

22-06-16

Se fija la fecha para la lectura del proyecto el día 11 de julio de 2016 a las
11:00 horas en la Escuela Técnica Superior de Ingenieros Informáticos
situada en Madrid.
Se indican los plazos para la entrega de memorias

29-06-16
Última reunión, se concreta sobre las memorias y su entrega

Fin de los Scrums

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 42


Capítulo 6.3. - Hosting

6.3 HOSTING

Como se ha comentado en algún apartado anteriormente, al inicio del


Proyecto se vislumbró la posibilidad que bien la UNED o bien HUAWEI
proporcionaría una plataforma tipo SaaS, PaaS o IaaS donde poder
implementar las aplicaciones necesarias para la realización de este Proyecto,
pero finalmente esta posibilidad no pudo ser posible por lo que se determinó
la contratación por mi parte de un servicio de Hosting.

Siguiendo una de las máximas del Proyecto, habría que buscar un


Hosting de bajo coste, pero con unos requerimientos mínimos para poder
tener igualmente unas garantías de funcionalidad mínima. Como es de
imaginar hay que tener en cuenta que para este Proyecto se contratará un
Hosting muy modesto para no incrementar los costes, en caso de una
aplicación real se contrataría otro Hosting, pero eso sí que siguiera con la
mentalidad de bajo coste, tratando que pudiera ser escalable a la hora de la
contratación de prestaciones como velocidad de acceso, capacidad de
almacenamiento, seguridad, …

El Hosting Web o Alojamiento Web, es un servicio que provee a los


usuarios de Internet un sistema donde poder almacenar información,
imágenes, aplicaciones o cualquier contenido accesible vía web, es una
analogía de "hospedaje o alojamiento en hoteles o similares" donde uno
ocupa un lugar específico, en este caso se ocupa un servidor o un espacio
dentro de un servidor donde residen las aplicaciones, páginas web, sistemas
integrados, además de otros servicios como pueden ser el Correo electrónico,
servicio FTP, …

Hacemos notar que en este Proyecto siempre estamos hablando de


alquiler de servicios, otra alternativa sería crear la infraestructura de servidor

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 43


Real Openvend - El Internet de las Máquinas de Vending

y comunicaciones con el Hardware adecuado, cosa que estaría fuera del


alcance de este Proyecto, pero que sería una alternativa a tener en cuenta
porque podría ser rentable tanto en el aspecto económico como en el de
prestaciones y escalabilidad.

FIGURA 6.5 - TIPOS DE HOSTING

La gama de Hostings que podemos encontrar actualmente en el


mercado es muy amplia y variada, tratándose de una decisión vital en
cualquier proyecto en el que se requieran servicios de alojamiento, pues es la
base en la que residirá todo lo que implementemos, y en consecuencia si no
se acierta con la elección nos podría tirar por la borda el resto de desarrollo
del Proyecto, pues por ejemplo aunque hayamos construido potentes
aplicaciones o servicios si no corren bien en la plataforma física no servirá de
nada.

Dentro de la gama antes indicada, tenemos Hostings gratuitos,


servidores compartidos, servidores virtuales, servidores dedicados,
servidores en la nube, …, o algunos que mezclan estas características,
después de leer documentación referente a este tipo de servicios, la decisión
es optar por un Servidor Cloud que nos proporcionará un espacio y servicios
compartidos dentro de ese servidor. Se indicará más adelante que para un

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 44


Capítulo 6.3. - Hosting

caso de implementación real se optaría por contratar un Servidor Cloud


Dedicado que nos permitiera ampliar sus prestaciones en función de las
necesidades.

6.3.1. Elección del Proveedor del Hosting

Tras una búsqueda intensiva en Internet, se observa que muchas


empresas que proveen este tipo de servicios y que cada una de ellas ofrece
también una amplia variedad de tipos de servicios. Finalmente se seleccionan
tres empresas como posibles candidatas:

www.1and1.es se selecciona y contrata el servicio denominado 1&1


WP gestionado BASIC por un importe de promoción para el primer año de
0,99 € al mes pasando a 6,99 € a partir del decimotercer mes. En este servicio
se incluyen los siguientes servicios y características dados en la página web
de esta empresa:

- 1 página Wordpress
- 50 Gb de espacio web sobre disco SSD
- Visitas ilimitadas
- 1 dominio incluido
- 1 base de datos
- Cuentas de correo ilimitadas
- 20 cuentas SFTP
- Georredundancia
- Protección DdoS
- Recuperación de archivos
- (NO se menciona la memoria RAM disponible de 69 MB en las
especificaciones técnicas del servicio que como se verá más será un
importante hándicap)
- (NO hay apenas acceso a configuración a parámetros de la
arquitectura física del servidor, cosa que también será un handicap)

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 45


Real Openvend - El Internet de las Máquinas de Vending

Como se indica anteriormente este servicio de Hosting solo sería


válido para este caso práctico pues la web no será accedida comercialmente
y para una implementación real profesional habría que contratar un servicio
de la denominada gama Perfomance Hosting cuyos precios varían entre los
49,99 € a los 119,99 € al mes, con la posibilidad de ampliar prestaciones
individualmente como puede ser la memoria RAM, el espacio en discos SSD,
el número de procesadores, …, siempre intentando buscar el equilibrio entre
las prestaciones ofrecidas y el precio del servicio.

La primera instalación del Proyecto se realizó sobre este Hosting,


en principio cumplía con los requisitos, pero como se pudo comprobar
posteriormente algunos de los Plugins de Wordpress requerían más
memoria RAM y como se tiene acceso a la configuración de la
arquitectura del servidor no se puede ampliar esta memoria que se
queda exhausta, la única manera de ampliar esta memoria es contratar
mayor capacidad de memoria RAM, incrementando el precio
considerablemente y no se soluciona el problema de manera
permanente, motivo por el cual se anula este contrato y se busca una
nueva solución de Hosting.

www.interdominios.com se selecciona y contrata el servicio


denominado Servidor Virtual VPS SSD con un precio de 8,29 € al mes con
promoción de 2 meses gratis si realiza el pago anual en lugar de
mensualmente, con posibilidad de ampliación de prestaciones En este servicio
se incluyen los siguientes servicios y características dados en la página web
de esta empresa:

- RAM garantizada 512 MB


- 5 GB de espacio en disco SSD
- Transferencia de datos ilimitada
- Cuentas de correo ilimitadas

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 46


Capítulo 6.3. - Hosting

- Bases de datos ilimitadas


- Cuentas FTP ilimitadas
- Servicio de Backup por 0,95 € al mes
- Panel de Control Plesk (se verá en el apartado siguiente)

Al igual que en el caso anterior este servicio no sería válido para una
implementación del sistema en un caso real profesional pues las prestaciones
son muy ajustadas, y habría que contratar otro servicio más avanzado, que
dentro de esta empresa habríamos seleccionado el denominado Servidor
Cloud que varia desde los 48,33 € al mes hasta una cantidad sin determinar
en función de las ampliaciones de memoria RAM, número de procesadores,
espacio en disco SSD, servicios adicionales como Backup, …, y como
siempre intentando buscar el adecuado equilibrio entre prestaciones de
servicio y coste del mismo.

Al contrario de lo sucedido con 1and1, el Hosting contratado en


la empresa Interdominios para este Proyecto ha sido muy adecuado por
las posibilidades de configuración de los parámetros de la arquitectura
física, por ejemplo pudiendo ampliar la cantidad de memoria RAM que al
ir ampliando el sistema se requería para un correcto funcionamiento.

www.arsys.es se selecciona el producto denominado Hosting


Wordpress con un precio de 9,90 € al mes con una promoción de 1 mes
gratuito. En este servicio se incluyen los siguientes servicios y características
dados en la página web de esta empresa:

- 1 Gb de espacio web en disco SSD


- 10 Gb al mes de transferencia
- 10 buzones de correo de 6 Gb
- 1 Base de datos

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 47


Real Openvend - El Internet de las Máquinas de Vending

- 1 dominio incluido
- Gestión DNS
- (NO tiene transferencia ilimitada, factor a tener en cuenta pues en caso
de tener un éxito no controlado el exceso de visitas nos implicaría
costes adicionales importantes).

Este tipo de servicio tampoco sería válido para un implementación real


profesional, habría que pasar a otro servicio como el denominado Cloud, de
más amplias prestaciones que iría desde los 15,00 € a los 150,00 € al mes,
además pudiendo contratar servicios adicionales o ampliaciones específicas
de las prestaciones de memoria, disco, …

Como la solución encontrada con Interdominios ha sido válida


para desarrollar este Proyecto, el servicio indicado de Arsys no se ha
contratado y por lo tanto no se ha probado y no se pueden indicar
conclusiones sobre la calidad del servicio.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 48


Capítulo 6.3. - Hosting

6.3.2. Registro Dominio OPENVEND.NET

Se ha registrado el dominio OPENVEND.NET que será el dominio en


el que se instalarán las aplicaciones, sistemas y páginas web que son objeto
de este Proyecto. El Registro de Dominios es el proceso por el que una
persona o empresa pasa a tener el control sobre un nombre de dominio a
cambio de pagar una cantidad de dinero a un registrador autorizado.

Para el registro del dominio hay que seguir el siguiente procedimiento:

- Elegir el nombre del dominio, en este caso OPENVEND y la extensión


del mismo, en este caso .NET
- Verificar la disponibilidad del dominio en algún registrador, en este caso
se hizo desde la propia web del proveedor del Hosting que facilita el
registro del mismo directamente con el Registrador.
- Se indican los datos personales para el Registrante y los contactos
administrativos, comerciales y de pago.
- Hay que indicar la periodicidad del registro, normalmente se hacen por
uno o varios años, en este caso se ha hecho por un año.
- Se realiza el pago del dominio, bien al proveedor del Hosting o
directamente al registrador.
- Se configuran las direcciones DNS del dominio en este caso son
dns1.3isi.com y dns2.3isi.com
- El registrado contacta con la ICANN (Corporación de Internet para la
asignación de nombres y números), paso que se hace de manera
transparente, y se realiza el registro del dominio
- Pasado un breve período, unas horas o unos días, el dominio ya es
accesible desde cualquier parte del mundo, salvo que se configure con
excepciones de acceso por países o regiones concretas.
- A continuación se debe configurar el hosting con el nuevo dominio
registrado.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 49


Real Openvend - El Internet de las Máquinas de Vending

A continuación se muestra la captura del registro del WHOIS del


dominio OPENVEND.NET

Whois Server Version 2.0

Domain names in the .com and .net domains can now be registered
with many different competing registrars. Go to http://www.internic.net
for detailed information.

Domain Name: OPENVEND.NET


Registrar: INTERDOMINIOS, INC.
Sponsoring Registrar IANA ID: 818
Whois Server: whois.interdominios.com
Referral URL: http://www.interdominios.com
Name Server: DNS1.3ISI.COM
Name Server: DNS2.3ISI.COM
Status: clientTransferProhibited https://icann.org/epp#clientTransferPr
ohibited
Updated Date: 24-jun-2016
Creation Date: 16-nov-2015
Expiration Date: 16-nov-2017

))) Last update of whois database: Sat, 25 Jun 2016 09:47:39 GMT (((

For more information on Whois status codes, please visit https://icann.org


/epp
The Registry database contains ONLY .COM, .NET, .EDU domains and
Registrars.
Domain Name: OPENVEND.NET
Registry Domain ID: 1980554400_DOMAIN_NET-VRSN
Registrar WHOIS Server: whois.primalstore.com
Registrar URL: http://www.interdominios.com
Updated Date: 2016-06-15T08:42:16Z
Creation Date: 2015-11-16T07:16:31Z
Registrar Registration Expiration Date: 2017-11-16T07:16:31Z
Registrar: Interdominios, Inc.
Registrar IANA ID: 818
Domain Status: clientTransferProhibited https://icann.org/epp#clientTransf
erProhibited
Registry Registrant ID:
Registrant Name: Tres Isi Mirobriga, s.l.u
Registrant Organization: 636014994158158478
Registrant Street: San Cristobal 7
Registrant City: Ciudad Rodrigo
Registrant State/Province: Salamanca
Registrant Postal Code: 37500
Registrant Country: ES
Registrant Phone: +34.692062961
Registrant Phone Ext:
Registrant Fax:
Registrant Fax Ext:
Registrant Email: tresisimirobriga@gmail.com
Registry Admin ID:
Admin Name: Tres Isi Mirobriga, s.l.u
Admin Organization: 636014994158158478
Admin Street: San Cristobal 7

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 50


Capítulo 6.3. - Hosting

Admin City: Ciudad Rodrigo


Admin State/Province: Salamanca
Admin Postal Code: 37500
Admin Country: ES
Admin Phone: +34.692062961
Admin Phone Ext:
Admin Fax:
Admin Fax Ext:
Admin Email: tresisimirobriga@gmail.com
Registry Tech ID:
Tech Name: Tres Isi Mirobriga, s.l.u
Tech Organization: 636014994158158478
Tech Street: San Cristobal 7
Tech City: Ciudad Rodrigo
Tech State/Province: Salamanca
Tech Postal Code: 37500
Tech Country: ES
Tech Phone: +34.692062961
Tech Phone Ext:
Tech Fax:
Tech Fax Ext:
Tech Email: tresisimirobriga@gmail.com
Name Server: dns1.3isi.com
Name Server: dns2.3isi.com
DNSSEC:Unsigned
Registrar Abuse Contact Email:
Registrar Abuse Contact Phone:
URL of the ICANN WHOIS Data Problem Reporting System: http://wdprs.interni
c.net/
))) Last update of WHOIS database: 2016-06-25T09:47:43Z (((

For more information on Whois status codes, please visit https://icann.org


/epp

Registration Service Provided By: INTERDOMINIOS.COM

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 51


Real Openvend - El Internet de las Máquinas de Vending

6.3.3. Plesk

Plesk es una plataforma comercial de alojamiento web cuyo Panel de


Control permite al administrado del servidor configurar nuevos espacios para
sitios web, entradas DNS, cuentas de correo electrónico, dominios, …, todo a
través de una interfaz basada en web.

FIGURA 6.6 - LOGOTIPO PLESK

También se puede configurar parámetros relacionados con la


asignación de recursos, espacio en disco, memoria, …, configuración de los
distintos servicios incluidos como el servidor de correo electrónico, la gestión
de las bases de datos (MySQL, PostgreSQL), servidor web Apache Tomcat,
ColdFusion, …

Se disponen de opciones de visualización del estado del rendimiento


del servidor, servicio de alertas, estadísticas completas de acceso a los
distintos dominios y recursos del servidor.

Al tener control total sobre la plataforma Plesk podemos ampliar la


funcionalidad de la misma con la instalación de distintas aplicaciones y
extensiones para añadir servicios de autenticación, backup, desarrollo,
plataformas de codificación, servicios DNS, seguridad, …

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 52


Capítulo 6.3. - Hosting

La versión proporcionada por la empresa Interdominios en el Hosting


contratado es la versión Plesk 12.0.18 Actualización # 85 instalada sobre
Linux CentOS 6.5 Final. La empresa suministradora proporciona también
servicios como la administración delegada para ocuparse de la gestión de la
actualización de la plataforma así como para solucionar todos los problemas
que pudieran surgir tanto de Hardware como de Seguridad y para el caso de
una implementación real sería muy recomendable si nos queremos olvidar de
esta problemática, o bien tener un servicio técnico que controle de manera
continúa el estado del rendimiento de la plataforma para proporcionar un
servicio óptimo y mantener seguro el entorno de todas las amenazas a las que
se enfrentan los servidores que Hosting pues son un claro objetivo para los
ataques de piratas informáticos y demás.

En el ANEXO 5 puede verse como se ha instalado y configurado el


dominio OPENVEND.NET en la Plataforma Plesk mencionada en este
apartado.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 53


Real Openvend - El Internet de las Máquinas de Vending

6.3.4. Configuración hosting para dominio

Para esta operación realizamos lo indicado en el ANEXO 5 y


obtendremos una suscripción dentro del servidor contratado con la empresa
Interdominios.

Una práctica habitual a la hora de desarrollar sitios web es elaborar


todo el contenido y codificación en entornos más controlados, como puede ser
un ordenador o servidor con Apache + MySQL + PHP instalado en modo Local
de tal manera que las funcionalidades y comportamiento sería básicamente
los mismos que una web cargada en un servidor remoto, solo que no estaría
expuesta a los peligros de Internet en temas de seguridad y que no podría ser
vista por otras personas ni indexada por los motores de búsqueda de Internet.

Se instalará la aplicación gratuita llamada WampServer que contiene


distribuciones actualizadas de Apache + MySQL + PHP (Ver ANEXO 1), y
posteriormente se implementarán todas los sistemas y aplicaciones que
componen este Proyecto en el servidor local que proporciona la aplicación
WampServer, una vez depurada y probada lo suficiente para obtener un
producto final de ciertas garantías se procederá a la migración de todo ello al
servidor remoto que hemos configurado mediante la realización de la
operaciones indicadas en el Anexo 5.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 54


Capítulo 6.4. - Seguridad

6.4. SEGURIDAD HOSTING

Como se indica en varios apartados de esta memoria, hay que tener


siempre muy presente el tema de la Seguridad en todos los ámbitos de un
Proyecto de desarrollo web, tanto en los niveles de Software en lo que a
código como en los niveles de Hardware, si bien en éstos últimos la
securización de los entornos físicos se delega en los proveedores de Hosting,
en este caso en la empresa Interdominios, en los niveles de Software es
donde podremos hacer más énfasis y donde tendremos que tener más
cuidado, comprobando y corrigiendo en la medida de la posible todas las
vulnerabilidades que puedan presentarse al usar aplicaciones y/o sistemas de
código abierto, y que en algunos casos, principalmente en aquellos de gozan
de mucho éxito como Wordpress o Woocommerce están en el punto de mira
de los ataques cibernéticos.

Aparte de las medidas de Seguridad que se indicarán en la instalación


de las aplicaciones seleccionadas para implementar en este Proyecto, una de
las medidas previas a esas instalaciones será la incorporación de un
Certificado SSL (Secure Sockets Layer) en el espacio web creado en el
servidor contratado para el alojamiento del dominio OPENVEND.NET.

6.4.1. Certificado SSL

Un Certificado SSL se usa para proporcionar seguridad al visitante de


una página o sistema web, de alguna manera es como decirle a un visitante o
cliente de nuestra web que nuestro sitio es real, auténtico y confiable para
realizar operaciones como guardar datos personales o realizar compras. Las
siglas SSL significan Secure Socket Layer, el cual es un protocolo de
seguridad que hace que los datos se trasmitan de forma íntegra y segura

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 55


Real Openvend - El Internet de las Máquinas de Vending

desde el ordenador del visitante o cliente hasta nuestro servidor y viceversa,


esta comunicación es totalmente encriptada, dicho de otra manera la
tecnología de un Certificado SSL es la trasmisión segura de información a
través de Internet.

Al encontrarnos en la Era de la Información, los visitantes necesitan


confiar en las transacciones que se realizan a través de Internet, y para ello
un Certificado SSL nos asegura esta confiabilidad implementando el modelo
preferido de seguridad en la web, conteniendo las claves digitales que
guardan la integridad de los datos en el momento de enviar y recibir, los
servidores con certificados de este tipo instalados crean una vía de
comunicación con un cifrado único para las sesiones privadas a través de
Internet, la clave pública del servidor está al alcance de cualquier persona, por
ello se usa también una clave privada, siendo la clave pública para cifrar la
información y la privada para descifrarla.

A continuación una figura esquemática de como es el funcionamiento


de un Certifcado SSL,

Hola, configuremos una sesión SSL

Hola, este es mi Certificado

Se verifica que:
- Certificado es válido
- Firmado por alguien en
quien el usuario confia
Clave de encriptación de un solo uso para esta sesión
(encriptación usando la Clave Pública del Servidor)

El Servidor desencripta la Clave de Encriptación


usando su Clave Privada y establece la sesión segura

FIGURA 6.7 - FUNCIONAMIENTO CERTIFICADO SSL

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 56


Capítulo 6.4. - Seguridad

Al seleccionar un Certificado SSL se debe tener presente la finalidad


de la página o sistema web que se quiera proteger, el tipo de usuario al que
está destinada esta web o sistema, pues hay distintos tipos de certificados y
conviene instalar el más adecuado en función de estos factores.

6.4.2. Instalación de un Certificado SSL

Se ha buscado información comercial en la web de Interdominios


sobre sus opciones para la instalación de un Certificado SSL, tienen
básicamente tres productos denominados Alpha SSL, Domain SSL y
Extended SSL con precios de 44,90 €, 169,00 € y 649,00 € al año
respectivamente en función de los niveles de seguridad que ofrecen. Para
este Proyecto inicialmente se podría usar el más económico y en función del
éxito que se tuvieran se podría ir incrementando el nivel de seguridad
contratando los niveles de seguridad avanzados, sin embargo dada la
naturaleza que este Proyecto se procederá a la instalación de un Certificado
SSL Gratuito por un período de tres meses proporcionado por la empresa
Comodo, este certificado es totalmente funcional durante ese período de
prueba y ya ha sido instalado en las primeras versiones de las aplicaciones y
sistemas de este Proyecto.

Para la solicitud y posterior instalación de este Certificado SSL en el


servidor vamos al ANEXO 6 y realizamos los pasos indicados para su puesta
en marcha y configuración.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 57


Real Openvend - El Internet de las Máquinas de Vending

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 58


Capítulo 6.5. - Wordpress

6.5. WORDPRESS

Wordpress es un CMS (Content Management System), es decir un


Sistema de Gestión de Contenidos, aunque originalmente su función principal
era la creación de blogs principalmente, su enfoque desde hace unos años es
otro y es el de la creación de cualquier tipo de sitio, llegando a convertirse en
una de las principales herramientas para la creación de sitios web
comerciales.

Es un sistema desarrollado en PHP para entornos que ejecutan el


motor de bases de datos MySQL y servidores web Apache. Tiene Licencia
GPL y es software libre. Entre sus principales características destacan,
además de ser gratuito, su facilidad de uso y sus características como gestor
de contenidos, además de poseer una enorme comunidad de desarrolladores
y diseñadores, que mejoran día a día el núcleo de este sistema, y generar los
denominados Plugins que son componentes que amplian las funcionalidades
y características de este sistema.

Este sistema pone especial atención a la estética, estándares web y


usabilidad, se puede destacar de su estructura que su diseño visual depende
de un sistema de plantillas independientes del contenido pudiendo tener
varias opciones de personalización dependiento del autor, también los
Widgets que son bloques con funciones específicas por medio de
complementos. Se separa el contenido y el diseño en XHTML y CSS.

Destacan en sus funcionalidades la fácil instalación, actualización y


personalización, posibilidad de activar actualización automática, permite roles
de usuario, capacidad para crear páginas estáticas, editor WYSIWYG,
publicacíon mediante correo electrónico, importación desde otras plataformas

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 59


Real Openvend - El Internet de las Máquinas de Vending

de blogs y RSS, guardado automático de borradores, gestión de comentarios


y herramientas de comunicación entre blogs, uso permitido de permalinks,
gestión y distribución de enlaces, subida y gestión de datos adjuntos y
archivos multimedia.

También se puede configurar el modo multisitio, y hay muchas


opciones a la hora de gestionar el sitio en multilenguaje, destacando en este
sentido que las instalaciones que se realizarán en la implementación de este
proyecto tendrán como lenguaje principal el inglés.

6.5.1. Justificación de la elección

Todo lo indicado anteriormente sirve como fundamento principal para


la justificación de su uso en este proyecto, destacando principalmente los
siguientes factores:

- Es software libre con licencia GPL, con lo que cumplimos el objetivo de


generar sistemas de bajo coste pues aquí no será necesario pagar
licencias de uso.
- El núcleo de Wordpress está pensado para las más altas cotas de
Usabilidad, que era igualmente un objetivo fundamental.
- Posibilidad de ampliación de funcionalidades, con la enorme
comunidad de desarrolladores está garantizada la ampliación de
funcionalidades y actualizaciones de este sistema en un plazo medio
de tiempo.

Otra característica muy importante que destacamos en este momento


es que los desarrolladores de Wordpress han empezado a incluir en algunos
de los Plugins sus propios APIs como por ejemplo en el plugin de comercio

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 60


Capítulo 6.5. - Wordpress

electrónico Woocommerce, además para Wordpress ya existe un plugin que


proporciona una API para todo el entorno del sistema, y ya está informado que
en próximas versiones esta API formará parte del propio núcleo, lo que abrirá
un amplísimo espectro de opciones para nuevas funcionalidades de los
plugins que hagan unos de estas APIs y para la interconectividad con otros
sistemas o dispositivos pudiendo acceder a todos los aspectos de los
contenidos del sistema.

A continuación se muestra una gráfica de la evolución de uso de


Wordpress en comparación con otros CMS populares dentro del mundo del
desarrollo web, en ella se puede observar claramente como Wordpress se ha
convertido en el líder indiscutible de este tipo de sistemas,

FIGURA 6.8 - USO DE WORDPRESS

La popularidad y éxito de Wordpress origina también una serie de


problemática entre la que destacamos la relacionada con la seguridad, pues
al estar tan expandida se convierte automáticamente en un claro objetivo de
ataques de todo tipo para conseguir hackear el sistema y obtener accesos no
permitidos para obtener el control del sistema.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 61


Real Openvend - El Internet de las Máquinas de Vending

6.5.2. Instalación

Para la instalación de Wordpress se ha usado la versión 4.5.3.


procediendo en primer a realizar la instalación en un servidor local para hacer
las configuraciones y pruebas más adecuadas. Para ver el proceso de
instalación detallado se puede consultar el ANEXO 2 de esta memoria.

A la hora de realizar una instalación se recomiendan hacer unos


cambios mínimos en algunos parámetros para añadir un extra de seguridad,
relacionamos a continuación algunos de estos cambios,

- No usaremos el usuario de administración por defecto admin sino que


usaremos otro de nuestra invención.
- Usaremos una contraseña segura añadiendo caracteres en
mayúsculas y minúsculas, números, caracteres especiales, y una
longitud adecuada de al menos ocho o diez caracteres
- Editando el archivo wp-config.php que se encuentra en la raíz del
espacio de alojamiento web modificamos el prefijo de las tablas de la
base de datos que crearemos al realizar la instalación, sustituyendo el
prefjio por defecto wp_ por un de nuestra elección.
- Hay que revisar también permisos de las carpetas procurando dejar los
que se activan por defecto.

Finalmente, y como buena práctica podemos hacer una copia de


seguridad de la instalación finalizada antes de configurar nada más con el fin
de tener un punto controlado en caso de tener algún problema en los
siguientes pasos que siguen en la configuración, personalización e instalación
de plugins, para ello bastará con hacer una copia de la carpeta del Proyecto
en el servidor web local y una copia de la base de datos con la aplicación
phpmyadmin incluida en la instalación del servidor local Wampserver.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 62


Capítulo 6.5. - Wordpress

6.5.3. Configuración

Además de las opciones que se recomiendan en el apartado de


instalación se deberá proceder a adaptar algunos de los parámetros de la
instalación inicial de Wodpress, para ello accederremos a la dirección de
administración de Wordpress que es https://openvend.net/wp-admin
accediendo con un usuarios con privilegios de administración, algunos de
éstos cambios a realizar son,

- Identidad del Sitio, en el Menú Appareance > Customize y escribimos


el Title adecuado en este caso OPENVEND y el Tagline The Internet
of the Vending Machines.
- Permalinks, en el Menú Settings > Permalinks activamos la opción Post
name con lo que las entradas y las páginas del sistema tendrán como
direcciones la URL del sitio seguido del nombre del título de la entrada
o página separadas sus palabras con guiones "-" con el fin de hacer las
direcciones más accesibles y fáciles de recordar.

Esta es una configuración inicial básica, por supuesto se pueden


realizar configuraciones más detalladas, pero que como se ha comentado en
otros apartados no se consideran materia de esta memoria, puesto que si no
esta tendría una extensión enorme.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 63


Real Openvend - El Internet de las Máquinas de Vending

6.5.4. Plantillas de Diseño

Las plantillas o temas (Themes) de Wordpress son plantillas de diseño


que sirven para establecer la apariencia y el diseño del sitio construido con
este sistema, al igual que sucede con los Plugins hay una enorme comunidad
de diseñadores que crear nuevos Themes y actualizar los existentes, las
podemos conseguir gratuitamente en sitios oficiales donde se ofrecen
gratuitamente o bien pagando las licencias a las empresas que las distribuyen
comercialmente.

En las instalaciones por defecto de Wordpress vienen tres plantillas


preinstaladas, se han buscado en Internet dos más un poco más orientadas a
comercio electrónico, estos dos Themes son,

- E-commerce, que será la que usaremos por defecto, se ha descargado


desde la dirección web https://catchthemes.com/themes/e-commerce/
en su versión 1.2.
- Dazzling, descargada desde la dirección
https://colorlib.com/wp/themes/dazzling/ en su versión 2.0.4.

El proceso para instalar un nuevo Theme es muy sencillo, en primer


lugar debemos descargar un archivo comprimido con el Theme, bien sea
gratuito o bien sea de pago, a continuación podemos instalar el Theme
mediante dos métodos,

- Método 1, instalación desde el asistente, para ello vamos al Menú


Appareance > Themes pinchando en el botón Add new…, a
continuación Upload Theme y por último seleccionamos el archivo
comprimido descargado para pulsar en el botón Install now.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 64


Capítulo 6.5. - Wordpress

- Método 2, descomprimiendo el Theme y copiando la carpeta del Theme


y su contenido en la ubicación /wp-content/themes/ del espacio de
alojamiento web donde está instalado el sistema Wordpress.

Para terminar con el proceso de instalación y selección del Theme


que usaremos para este proyecto en el apartado de administración
Appareance > Themes sobre el Theme seleccionado pulsamos en el botón
Active,

FIGURA 6.9 - THEMES DE WORDPRESS

Ahora podemos configurar los detalles del Theme seleccionado


pulsando en el botón Customize, desde ahí podemos cambiar el título, los
colores, los iconos del logo, los menús, las páginas de inicio, blog, …

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 65


Real Openvend - El Internet de las Máquinas de Vending

6.5.5. Seguridad

A modo de recordatorio indicamos las medidas de seguridad que se


han ido adoptando a lo largo de la instalación y configuración de los elementos
previos a la instalación de Wordpress, que serían los siguientes

- Capa de Seguridad en plataforma física realizada por el proveedor de


Hosting, en este caso la empresa Interdominios
- Certificado SSL, instalado en el espacio de alojamiento del dominio
OPENVEND.NET dentro de servidor cloud contratado y que
gestionamos mediante el panel de control Plesk.
- Configuraciones extras durante la instalación de Wordpress, como
cambio de usuario genérico, uso de contraseña segura, cambio del
prefijo de las tablas de la base de datos, …

Siguiendo con la política de lograr la máxima seguridad posible del


sistema, y siempre con el objetivo en mente de conseguir una solución de bajo
o mínimo coste, se continuará con la instalación algunos Plugins que
proporcionarán capas añadidas de seguridad, siempre también teniendo en
cuenta que no por instalar más plugins de seguridad el sistema
necesariamente será más seguro, por lo que habrá que probar y configurar
adecuadamente los plugins que se instalen, en este caso de temas
relacionados con la seguridad y en los demás también.

FIGURA 6.10 - PLUGINS DE WORDPRESS


Grado en Ingeniería Informática - Proyecto Fin de Grado Página 66
Capítulo 6.5. - Wordpress

Se han seleccionado dos Plugins que han sido previamente probados


y verificada su reputación en los entornos de consulta de Wordpress, estos
plugins son los siguientes,

- Wordfence, proporciona una protección basada en elementos como


cortafuegos, actualización de amenazas conocidas para distribuciones de
Wordpress, detección de ataques en tiempo real con aviso por correo
electrónico, bloqueo de intentos de accesos no permitidos…, se instala la
versión 6.1.10.

- Two Factor Auth, proporciona una autenticación de doble canal,


mediante el algoritmo OTP (One Time Password) cuando un usuario se
autentica en el sistema introduciendo su nombre de usuario y contraseña
recibirá un código numérico de seis cifras en su correo electrónico, este código
es válido solo por unos segundos por lo que nos aseguraremos en este caso
que el cliente que usa este método de autenticación está físicamente en una
máquina de vending pues será el dispositivo instalado quien le pasará la
dirección de login a la página web de la máquina de vending. Este plugin se
puede aplicar por roles de usuarios por lo que en principio solo se activará
para los roles de usuario que usarán los servicios de venta de las máquinas
de vending, que al instalar el Plugin de comercio electrónico veremos que este
rol se denomina Customer. La versión de plugin instalada es la 4.4.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 67


Real Openvend - El Internet de las Máquinas de Vending

6.5.6. Respaldo

De igual modo que a la hora de configurar las opciones de seguridad


de nuestra infraestructura y aplicaciones contenidas disponemos que varias
capas de actuación de seguridad, para el respaldo y copia de seguridad se
procederá de la misma manera, activando en este caso dos capas de
aplicación para este respaldo,

- Backup servidor, El Hosting contratado cuenta con una copia de


seguridad diaria durante 10 días, es decir podemos recuperar cualquier
versión tanto de los archivos como de la base de datos de los últimos
diez días.
- WP-Migrate, Plugin para realizar copia de seguridad de la base de
datos bajo petición, no se ha instalado un Plugin que realice una copia
automatizada por la naturaleza de este Proyecto, se harán copias de
seguridad de la base de datos que es la parte más sensibles a
problemáticas de corrupción de datos o errores en actualizaciones, en
momentos críticos como pueden ser las actualizaciones del sistema o
cambios importantes en configuraciones de una o varias partes del
sistema.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 68


Capítulo 6.6. - Woocommerce

6.6. WOOCOMMERCE

Woocommerce es un Plugin de Comercio Electrónico para el CMS


Wordpress, es software abierto con licencia GPL, siguiendo los objetivos de
Wordpress de ser fácil de instalar y usar, y mantener las más altas cotas de
usabilidad y compatibilidad con los estándares web W3C, además de tener
también una enorme número de desarrolladores que crean nuevos Plugins o
actualizan los existentes.

Con todas estas características es un hecho que se ha convertido en


uno de los sistemas de comercio electrónico más usados en el mundo entero,
y con tendencia a incrementar aún más el número de instalaciones.

En la figura a continuación, podemos ver una gráfica en la que se


compara el uso de distintos sistemas de comercio electrónico, observando
que Woocommerce se ha convertido en líder en este campo, además con una
tendencia de ocupar más mercado aún,

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 69


Real Openvend - El Internet de las Máquinas de Vending

FIGURA 6.11 - USO DE WOOCOMMERCE

6.6.1. Justificación de la elección

Por lo comentado anteriormente, y por supuesto teniendo en cuenta


que se usa el mismo motor e interfaz que Wordpress, este Plugin resulta más
que conveniente para este Proyecto. Como ya indicamos para Wordpress se
están implementando APIs también para Woocommerce, de hecho en
Woocommerce ya existe desde hace tiempo y solo es necesario activarla para
poder usar todas sus posibilidades, que son muchas, pudiendo acceder a una
interconectividad sorprendente y que está en continúa evolución.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 70


Capítulo 6.6. - Woocommerce

6.6.2. Instalación

La instalación de este Plugin es básicamente como la de cualquier


Plugin de Wordpress, pero con una serie de opciones avanzadas que
conviene configurar adecuadamente por lo que en lugar de ir al Anexo 4
podemos ver la instalación paso a paso en el ANEXO 3.

6.6.3. Configuración

Como sucede con el panel de administración de Wordpress hay un


elevado número de parámetros a configurar, sin embargo con la configuración
inicial de instalación de Woocommerce el número de opciones que
configurarán en este apartado no será muy alto.

Empezamos por configurar los Permalinks pertenecientes a las


páginas de Woocommerce para ello accedemos a la opción dentro del panel
de administración de Wordpress y pinchamos en la opción Settings >
Permalinks y en Common Settings marcamos la opción Post name.

Creamos un nuevo usuario con el rol de Customer para realizar las


pruebas oportunas en lo que se refiere a la realización de compras de
productos en las máquinas de vending, llamamos genéricamente a este
usuario customer1 con los datos de contraseña Finishing@2016 y con el
correo electrónico customer1@openvend.net . Para la creación de este
usuario accedemos a la opción Users > Add new del panel de administración
de Worpdress.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 71


Real Openvend - El Internet de las Máquinas de Vending

6.6.4. MarketPlace

Introducimos el concepto de Marketplace, o si lo preferimos


Multitienda, es decir dentro de un mismo sistema de comercio electrónico
gestionaremos varios comercios al mismo tiempo, es decir tendremos
múltiples máquinas de vending, eso sí todas integradas dentro del mismo
sistema que es Woocommerce.

Procedemos por lo tanto a la instalación y activación de un Plugin


llamado WC Vendors, versión 1.9.1., que permitirá gestionar este concepto
de multitienda, para la instalación de un Plugin podemos ver el ANEXO 4.

Para para configurar este Plugin vamos al panel de administración de


Wordpress y pinchamos en la opción Woocommerce > WC Vendors y en la
pestaña General modificamos las siguientes opciones,

- Deshabilitar Allow users or guests to apply to become a vendor, de


esta manera solo podremos dar de alta multitiendas desde un usuario
con privilegios.
- Modificar el texto en Vendor Shop Page, en este caso pondremos
vending, de tal manera que si damos de alta una multtienda con la
Apikey de ocho caracteres (números, letras, caracteres especiales)
y&87cm/f (para mayor facilidad a la hora de acceder a ella la
renombramos como vendor1) la dirección de esa multienda será
http://localhost/openvend/vending/ y&87cm/f

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 72


Capítulo 6.6. - Woocommerce

Al instalar este Plugin se habrá habilitado un nuevo rol de usuario


llamado Vendor que es el que nos permitirá crear una multitienda, para
accedemos a la opción Users > Add new del panel de administración de
Wordpress y creamos nuestra primera multitienda que se llamará con la
Apikey que hemos generado antes y&87cm/f (recordando que para facilitar
su acceso la hemos renombrado como vendor1) y le asignamos el correo
electrónico vendor1@openvend.net

6.6.5. Módulos de Pago

El proceso de pago para los productos que se compren en las


máquinas de vending se realiza mediante un Plugin que gestionará un Crédito
o Saldo para cada uno de los usuarios que se registren como Clientes
(Customers) del sistema implementado en la web OPENVEND.NET. Este
Plugin se llama myCRED y se instalará la versión 1.6.

Para los casos de uso que se implementarán se habilitará la pasarela


de pago de Paypal con la que se podrá comprar Créditos (Euros) para
posteriormente pagar la compra en la multitienda en la que se encuentre el
Cliente. Adicionalmente, este Plugin permite ajustar los Saldos de cada
usuario para a modo de prueba realizar las transacciones oportunas en los
ejemplos que se plantearán en los casos de uso.

Procedemos a la instalación del Plugin myCRED siguiendo las


instrucciones habituales del ANEXO 4 para instalación de Plugins, una vez
instalado se ejecuta un asistente para configurar algunos aspectos como la
coma decimal de separación o el nombre que recibirán los créditos que nos
permitirán comprar, en este caso los llamaremos Euros como la moneda en
vigor en España y en Comunidad Económica Europea.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 73


Real Openvend - El Internet de las Máquinas de Vending

Para configurar algunos aspectos básicos de este Plugin iremos al


panel de administración de Wordpress a la opción myCRED > Add-ons y
habilitaremos dos de ellos que son los siguientes,

- El complemento (Add-on) llamado buyCRED con el que activamos las


pasarelas de pago para incrementar nuestro Saldo, nos interesa
principalmente la pasarela de Paypal
- El complemento llamado Gateway con el que habilitamos una forma de
pago en el Plugin Woocommerce llamado myCRED con el que
podremos realizar las compras deduciendo del saldo de Cliente el
importe de la compra realizada.

NOTA: se han obviado una serie de configuraciones que se han realizado


para que el Plugin Woocommerce quede completado como puede ser la
creación de los Productos, con sus imágenes, precios, tipos de productos, …,
porque no se cree conveniente y porque la extensión de su explicación haría
este memoria eterna de hacer y de leer.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 74


Capítulo 6.7. - Plugins adicionales

6.7. PLUGINS ADICIONALES

Llegados a este punto, tenemos instalados los sistemas principales


que son Wordpress y Woocommerce y algunos Plugins adicionales que
hemos nombrado y comentado de manera resumida cual es su principal
función dentro de todo el sistema, a continuación se enumeran, se describen
sus funciones y se comentan sus principales puntos a configurar.

6.7.1. WP REST API

La instalación de este Plugin se realiza principalmente por el hecho


de extender las funcionalidades y de acostumbrarnos a usar las APIs como
se hará con la que ya viene incluida en el Plugin de comercio electrónico
Woocommerce, y en cierto modo también porque este Plugin se integrará en
el núcleo de Wordpress en futuras e inmediatas versiones.

Para conseguirlo podemos acceder a la web oficial de Plugins de


Wordpress https://es.wordpress.org/plugins/rest-api/ o bien a la propia página
del Plugin en la dirección http://v2.wp-api.org/ en la que además
encontraremos abundante documentación de como interactuar con este API
con nuestro sitio de Wordpress

Una vez descargado y activado el Plugin y siguiendo el ANEXO 4 para


la instalación de Plugins ya tenemos instalado y accesible esta API, en la
configuración del Plugin no se hará ningún cambio de configuración y
podemos fácilmente hacer una prueba de funcionalidad escribiendo la
dirección http://localhost/openvend/wp-json/wp/v2 en el navegador de Internet
nos aparecerán los endpoints disponibles, sin embargo las pruebas de acceso
y modificación de datos mediante API se harán con la que está integrada en
Woocommerce.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 75


Real Openvend - El Internet de las Máquinas de Vending

6.7.2. WC-VENDORS

Este Plugin ya fue comentado en el apartado 6.6.5. MarketPlace y no


se requieren más modificaciones que las comentadas en ese apartado.

6.7.3. LOGIN WIDGET WITH SHORTCODE

Este Plugin tendrá la función de visualizar en pantalla en cada web de


venta de cada máquina de vending los datos del usuario que se ha conectado
a esta máquina una vez que el lector NFC situado en la máquina de vending
le ha trasmitido la dirección de la misma. No tiene más funcionalidad es un
Plugin utilitario para dotar de mayor usabilidad al sitio y mejorar la experiencia
de usuario

Para conseguir el Plugin podemos ir a la dirección y descargarlo


https://wordpress.org/plugins/login-sidebar-widget/ para posteriormente
siguiendo el ANEXO 4 instalarlo en nuestro sistema.

Una vez instalado y activado, solo hay que colocar el Widget


correspondiente desde la opción del panel de administración de Wordpress
Appareance > Widgets arrastrándolo a la zona denominada Sidebar,

CAPTURA 6.7.1.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 76


Capítulo 6.7. - Plugins adicionales

6.7.4. SHORTCODE REDIRECTOR

La funcionalidad de este Plugin es la de redirigir a un usuario que


accede al sistema tras recibir la dirección desde el lector NFC ubicado en la
máquina de vending a la multienda que corresponde dentro del sistema con
esa máquina de vending.

Para conseguir este Plugin accedemos a la dirección y descargamos


el Plugin, a continuación lo instalamos y activamos siguiendo las instrucciones
del ANEXO 4.

En este Plugin no se realiza ninguna modificación y lo único que hay


que conocer es la sintaxis que se usa para usarlo como Shortcode* que es la
siguiente,

[redirect url='http://localhost/openvend/vending/vendor1' sec='1']

* Un Shortcode es un pequeño código que se añade en el editor de una


entrada o página de Wordpress y que dotan de funcionalidades a los
contenidos de esas entradas o páginas para no tener que reescribir un script
de código cada vez que se quiera usar. Son parecidos a las tags de HTML
que usan corchetes [ ].

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 77


Real Openvend - El Internet de las Máquinas de Vending

6.7.5. TWO FACTOR AUTH

La funcionalidad de este Plugin ya se ha comentado anteriormente en


el apartado 6.5.5. Seguridad y básicamente se trata de proporcionar un nivel
más de seguridad a la hora de realizar compras en las máquinas de vending
mediante el uso de una OTP (One Time Password) que es enviada al correo
electrónico del cliente que está en la máquina de vending y que es válida solo
para unos segundos, de esta manera garantizamos que el cliente está situado
físicamente en esa máquina y realizamos una doble autenticación de una
manera rápida.

Para conseguir este Plugin nos dirigimos a la dirección web del sitio
oficial de plugins de Wordpress https://es.wordpress.org/plugins/two-factor-
auth/ y procedemos a descargarlo para posteriormente y siguiendo las
instrucciones del ANEXO 4 instalarlo y activarlo en el servidor local en el que
estamos implementando todo el sistema.

Procedemos ahora a configurar unos parámetros, para ello


accedemos a la opción Two Factor Auth del panel de administración de
Wordpress, en primer lugar seleccionamos la manera en la que se entregarán
los OTP a los clientes, seleccionamos vía correo electrónico y pulsamos el
botón Save Changes,

CAPTURA 6.7.2.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 78


Capítulo 6.7. - Plugins adicionales

Ahora desde la opción Plugins del panel de administración de


Wordpress hacemos clic en Settings del Plugin Two Factor Auth y marcamos
los roles de usuarios que recibirán estos códigos OTP, en ese caso solo hay
que marcar el rol Customer es decir los Clientes de las máquinas de vending.
Además en Email Settings indicamos la cuenta de correo que enviará los
mensajes que será la que hemos configurador para el rol de administrador del
sistema, es decir fpanos3@openvend.net y como nombre de escribimos
OPENVEND, pulsamos el botón Save Changes,

CAPTURA 6.7.3.

Por último, nos aseguramos que esté marcado el algoritmo TOTP


para que los códigos OTP sean enviados basados en intervalos de tiempo,

CAPTURA 6.7.4.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 79


Real Openvend - El Internet de las Máquinas de Vending

6.7.6. WOOCOMMERCE CHECKOUT MANAGER

La finalidad de este Plugin es la agilizar el proceso de compra en las


máquinas de vending, pues digamos no existe el flujo tradicional a la hora de
hacer un pedido que posteriormente se tendrá que enviar el producto
mediante agencia de transporte o correo postal, incluso no es una descarga
de software o un servicio, es una compra directa por lo que necesitamos que
sea ágil para mantener uno de los objetivos de este proyecto que era el de
garantizar la máxima usabilidad.

Para conseguir este Plugin nos dirigimos a la siguiente dirección de


Internet https://es.wordpress.org/plugins/woocommerce-checkout-manager/ y
procedemos a su descarga e instalación y activación de acuerdo con el
ANEXO 4.

Una vez realizada la actualización este Plugin solicita una


actualización de algunos parámetros de Woocommerce, esta operación se
realiza de manera automática, solo que es conveniente hacer una copia de
seguridad por si el proceso no finalizara correctamente.

CAPTURA 6.7.5.

Una vez ejecutado este proceso deshabilitamos las opciones del


proceso de finalización de la compra (Checkout) en especial las relaciones
con la facturación, y métodos de entrega y envío de los productos porque tal
y como se comentaba anteriormente no procede en este tipo de transacción
comercial.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 80


Capítulo 6.7. - Plugins adicionales

6.7.7. WP MIGRATE DB

La función de este Plugin es la de realizar copias de seguridad de la


base de datos del sistema completo, estas copias se realizarán bajo demanda,
no hay proceso de planificación automática, pues en este punto no se ha
creído conveniente, cabe recordar que el servicio de Hosting si realizar a diario
copias de seguridad de la base de datos y de todos los archivos y
configuraciones del servidor, este Plugin se usa principalmente para guardar
copias puntuales en momentos de cambios críticos en el sistemas y para la
migración del sistema entre distintos entornos (local -> remoto o remoto ->
local).

Para conseguir el plugin accedemos a la dirección siguiente


https://es.wordpress.org/plugins/wp-migrate-db/ y lo descargamos para
posteriormente instalarlo y activarlo siguiente el ANEXO 4.

No hay que realizar ningún tipo de configuración, solo hay que realizar
copias de la base de datos, como referencia en el ANEXO 7 se realiza un
proceso de copia que puede servir como ejemplo.

6.7.8. WORDFENCE SECURITY

Las funcionalidades de este Plugin se comentaron en el apartado de


Seguridad y es suficiente con esa descripción, no se realizarán
configuraciones adicionales excepto la activación del servicio gratuito de
actualización de amenazas.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 81


Real Openvend - El Internet de las Máquinas de Vending

Lo podemos conseguir dirigiéndonos a la web oficial de plugins de


Wordpress https://es.wordpress.org/plugins/wordfence/ para descargarlo y
posteriormente instalarlo y activarlo.

6.7.9. MYCRED

Este Plugin igualmente fue descrito con anterioridad y la descripción


fue también suficiente para entender su funcionamiento, por lo que
únicamente procedemos a indicar la dirección de descarga del plugin para su
posterior instalación y activación, https://es.wordpress.org/plugins/mycred/ .

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 82


Capítulo 6.8. - APIs REST

6.8 APIs REST

6.8.1. CONCEPTOS

Para entender la funcionalidad de las APIs hay conocer el concepto


de REST (Representational State Transfer) o Transferencia de Estado
Representacional que es un estilo de arquitectura de software para sistemas
distribuidos como puede ser la WWW, con ella se describe cualquier interfaz
entre sistemas que utilicen directamente HTTP para obtener datos o indicar la
ejecución de operaciones sobre los propios datos en diversos formatos como
XML, JSON, …, la web disfruta de escalabilidad como resultado de una serie
de diseños fundamentales clave como son,

- Protocolo Cliente - Servidor sin estado, cada mensaje HTTP contiene


toda la información necesaria para comprender la petición.
- Un conjunto de operaciones bien definidas que se aplican a todos los
recursos de información, de estas operaciones destacamos GET,
POST, PUT, DELETE
- Una sintaxis universal para identificar los recursos, que se pueden
direccionar a través de su URI.
- Uso de Hipermedios como HTML o XML

FIGURA 6.12 - FLUJO REST

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 83


Real Openvend - El Internet de las Máquinas de Vending

Entendamos ahora, brevemente, el concepto de API (Application


Programming Interface) o Interfaz de Programación de Aplicaciones que se
puede definir como el conjunto de funciones y procedimientos que ofrece
cierta biblioteca para ser usado por otro Software como una capa de
abstracción, dicho de otra manera representa la capacidad de comunicación
entre componentes de Software, son llamadas a ciertas bibliotecas que
ofrecen acceso a ciertos servicios desde los procesos para proporcionar unas
funciones de uso general.

Atendiendo a las dos breves definiciones anteriores podemos


entender que una API REST o API RESTful son aquellas APIs que nos
permiten realizar ciertas operaciones sobre ciertos datos a través de sistemas
distribuidos como puede ser el servicio WWW de Internet.

Esta definición de adapta perfectamente al caso de la API REST


incluida en el Plugin Woocommerce en el sentido que mediante ella podremos
realizar diversas operaciones que ya están predefinidas en esa API REST, al
igual que se proveen las herramientas necesarias para definir otras
operaciones de esta manera podremos comunicar fácilmente diversos
dispositivos electrónicos con el sistema central de comercio electrónico a
través de la inmejorable plataforma que es Internet.

En ediciones anteriores del proyecto inicial esta APIs REST se


construían desde la primera línea de código con todo lo que ello suponía en
tiempo y funcionalidades y se usando APIs como Slim Framework como base,
este fue el intento inicial, pero al documentarme para su realización descubrí
que muchos sistemas ya han desarrollados APIs muchos más completas y
con opciones de ampliación por lo que desarrollar una o ampliar las existentes
con el trabajo extra de ingeniería inversa a realizar hacían que el proyecto se
complicara en exceso por lo que se optó por usar las ya desarrolladas en este
caso y en mayor medida la API de Woocommerce y en menor medida la de
Wordress.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 84


Capítulo 6.8. - APIs REST

6.8.2. APIs REST DE WOOCOMMERCE Y WORDPRESS

Se hará especial énfasis en el funcionamiento de API REST de


Wooommerce pues guarda más relación con el objetivo principal de este
Proyecto que es provisionar soporte para venta electrónica más que una
plataforma de información de cualquier tipo en cuyo caso se atendería más a
la funcionalidad de API REST de Wordpress, en cualquier caso ya se ha
comentado brevemente sobre esta última.

La API REST de Woocommerce está completamente integrada con la


de Wordpress, de tal manera que podemos crear, leer, actualizar y borrar
datos usando peticiones JSON usando los métodos de autenticación HTTP
estándar desde la versión V1, sin embargo en las versiones superiores la API
REST de Woocommerce está separada de la de Wordpress.

La dirección de acceso a los recursos de la API REST será para


nuestro caso http://localhost/openvend/wc-api/v3

El formato de Petición - Respuesta por defecto es JSON retornando


un mensaje de estado,

200 OK HTTP

Errores devueltos pueden ser,

400 Bad Request

401 Unauthorized

404 Not found

500 Internal server error

Como paso de parámetros se usa el carácter ? para concatenar


parámetros se usará el carácter & y para acceder a campos la palabra clave
fields.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 85


Real Openvend - El Internet de las Máquinas de Vending

A título informativo podemos comprobar como la API REST está


integrada en el sistema, para ello accedemos a la opción Woocommerce >
Settings y luego en la pestaña API en el panel de administración de
Wordpress, y vemos como está activada la opción Enable the REST API,

CAPTURA 6.8.1.

Llegados a este punto planteamos el tema de la autenticación de


acceso a la API REST, si nos fijamos en la captura anterior hay una opción
con el nombre Keys/Apps, es aquí donde podemos establecer las claves
Consumer Key y Consumer Secret para cada una de las aplicaciones que
queramos permitir acceder a la API REST de Woocommerce, en este caso
permitiremos el acceso a los dispositivos electrónicos instalados en las
máquinas de vending, si recordamos la especificación de los nombres de las
multitiendas en nuestro sistema una máquina de vending tendría asociada una
dirección del tipo http://localhost/openvend/vending/vendor1 pues en este
caso habilitaríamos una Key/App para la máquina de vending vendor1.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 86


Capítulo 6.8. - APIs REST

Para ello, accedemos a la opción Keys/Apps y generamos una nueva


con el nombre vendor1 asignada al usuario con privilegios que tenemos
creado, en caso de que para cada máquina de vending se estableciera un
usuario se indicaría aquí también, damos los permisos oportunos (Read,
Write, Read/Write) y pulsamos el botón Generate API Key,

CAPTURA 6.8.2.

En la pantalla siguiente, podemos ver unos datos que solo serán


visibles una vez por lo que habría almacenarlos de alguna manera para
comunicarlos o configurarlos en las aplicaciones o sistemas que tendrán
acceso a esta Key, estos datos son,

- Consumer Key
- Consumer Secret
- QR Code

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 87


Real Openvend - El Internet de las Máquinas de Vending

Vemos una captura de la pantalla anterior,

CAPTURA 6.8.3.

Estos son los datos que se tienen que comunicar o configurar en las
aplicaciones o sistemas que quieran acceder a los datos de Woocommerce
usando la API REST, en el apartado siguiente se verán ejemplos usando la
barra de direcciones de un navegador de Internet, y usando una aplicación
como Postman, también el compañero de Proyecto David Díaz, encargado de
construir y configurar las tarjetas Arduino que controlan las máquinas de
vending ha hecho las pruebas oportunas confirmando el acceso a los datos
de Woocommerce.

Existen una amplísima documentación sobre los Endpoints* que están


configurados en esta API REST, podemos acceder a ella a través de la
siguiente dirección web http://woothemes.github.io/woocommerce-rest-api-
docs/ .

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 88


Capítulo 6.8. - APIs REST

6.8.3. EJEMPLOS

En un primer ejemplo, y actuando ya sobre el servidor remoto, es decir


la dirección https://www.openvend.net , vamos a consultar el correo
electrónico que se ha asignado al usuario customer1 con rol de Customer,
es decir Cliente de máquinas de vending, este correo asignado es
customer1@openvend.net , es decir realizaremos un GET, todo ello lo
intentaremos a través de un navegador de Internet por ejemplo Google
Chrome, para ello necesitaremos,

- Dirección base de la API REST que es https://www.openvend.net/wc-


api/v3/
- Endpoint de usuarios con rol Customer que es un rol generado en la
instalación del Plugin Woocommerce, buscamos en la documentación
y encontramos dos Endpoints que usaremos Retrieve a Customer y
Update a Customer siguiendo la sintaxis solicitamos listar el Customer
customer1 que tiene como código 2, formamos la siguiente dirección

https://www.openvend.net/wc-
api/v3/customers/2?consumer_key=ck_7ec05e60653037eea42ba707c4f94c
3c344d0a5d&consumer_secret=cs_273e54c37bbb37d3778eedb0576a2993
23253196

Que nos devolverá la siguiente respuesta,

{"customer":{"id":2,"created_at":"2016-06-
27T16:31:33Z","last_update":"2016-06-
28T20:50:51Z","email":"customer1@openvend.net","first_name":"Customer",
"last_name":"One","username":"customer1","role":"customer","last_order_id":
null,"last_order_date":null,"orders_count":0,"total_spent":"0.00","avatar_url":"
https:\/\/secure.gravatar.com\/avatar\/?s=96","billing_address":{"first_name":"
","last_name":"","company":"","address_1":"","address_2":"","city":"","state":"",
"postcode":"","country":"","email":"","phone":""},"shipping_address":{"first_na
me":"","last_name":"","company":"","address_1":"","address_2":"","city":"","sta
te":"","postcode":"","country":""}}}

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 89


Real Openvend - El Internet de las Máquinas de Vending

Concretamos la anterior dirección con filters para mostrar solo el


correo electrónico, la siguiente dirección,

https://www.openvend.net/wc-
api/v3/customers/2?fields=email&consumer_key=ck_7ec05e60653037eea42
ba707c4f94c3c344d0a5d&consumer_secret=cs_273e54c37bbb37d3778eed
b0576a299323253196

Nos devolverá la siguiente respuesta,

{"customer":{"email":"customer1@openvend.net"}}

Hemos usado los parámetro de la Key vendor1 creada en la API de


Woocommerce.

CONSUMER KEY

ck_7ec05e60653037eea42ba707c4f94c3c344d0a5d

CONSUMER SECRET
cs_273e54c37bbb37d3778eedb0576a299323253196

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 90


Capítulo 6.8. - APIs REST

Como segundo ejemplo, realizaremos una acción GET y la


completaremos con una acción PUT, para partiendo de los datos del anterior
ejemplo modificar la cuenta de correo electrónico del usuario customer1 a
test@openvend.net

Para este ejemplo usaremos una Extensión del explorador de Internet


Google Chrome llamado Postman, podemos consultar más información sobre
esta extensión en http://www.getpostman.com/

Una vez instalado accedemos a ella a través de la opción aplicaciones


de Chrome,

CAPTURA 6.8.4.

Abrimos la extensión Postman,

CAPTURA 6.8.5.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 91


Real Openvend - El Internet de las Máquinas de Vending

Seleccionamos en el desplegable GET y a continuación la dirección


siguiente,

https://www.openvend.net/wc-
api/v3/customers/2?consumer_key=ck_7ec05e60653037eea42ba707c4f94c
3c344d0a5d&consumer_secret=cs_273e54c37bbb37d3778eedb0576a2993
23253196

Obteniendo la siguiente salida en formato JSON que era el que


teníamos seleccionado,

CAPTURA 6.8.6.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 92


Capítulo 6.8. - APIs REST

Si concretamos en la dirección con filters y solicitando solo el campo


correo electrónico entonces la respuesta será solamente la información de ese
campo, por lo tanto con la dirección,

https://www.openvend.net/wc-
api/v3/customers/2?fields=email&consumer_key=ck_7ec05e60653037eea42
ba707c4f94c3c344d0a5d&consumer_secret=cs_273e54c37bbb37d3778eed
b0576a299323253196

Obtendremos la siguiente respuesta,

CAPTURA 6.8.7.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 93


Real Openvend - El Internet de las Máquinas de Vending

Para realizar un POST, es decir para modificar un dato, en concreto


el correo electrónico, indicamos esta dirección,

https://www.openvend.net/wc-
api/v3/customers/2?consumer_key=ck_7ec05e60653037eea42ba707c4f94c
3c344d0a5d&consumer_secret=cs_273e54c37bbb37d3778eedb0576a2993
23253196

En Headers indicamos la opción Content-Type como application/json,


en Body escribimos

CAPTURA 6.8.8.

{
"customer": {
"email": "customer1@openvend.net"
}
}

Y por último seleccionamos POST en el desplegable y pulsamos el


botón SEND,

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 94


Capítulo 6.8. - APIs REST

CAPTURA 6.8.9.

Si a continuación hacemos un GET sobre la dirección,

https://www.openvend.net/wc-
api/v3/customers/2?fields=email&consumer_key=ck_7ec05e60653037eea42
ba707c4f94c3c344d0a5d&consumer_secret=cs_273e54c37bbb37d3778eed
b0576a299323253196

Obtenemos la respuesta siguiente,

{"customer":{"email":"test@openvend.net"}}

Es decir, se ha conseguido modificar un dato en función de las


condiciones seleccionadas.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 95


Real Openvend - El Internet de las Máquinas de Vending

CONCLUSIONES

El hecho de poder acceder a los datos del sistema incluyendo el


sistema de comercio electrónico y poder modificar nos brinda un campo de
acción tremendo pues estableciendo los mecanismos y codificaciones
oportunas podremos gestionar los flujos de acciones para realizar las
operaciones que nos permitan realizar esas acciones que queramos.

Podremos por lo tanto configurar distintos dispositivos electrónicos


(smartphones, placas arduino, pcs, …) para poder gestionar la plataforma de
comercio electrónico que hemos creado.

En lugar de tener que construir una API con sus Endpoints ya la


tenemos construida y por lo tanto solo habrá que aprender a usar esos
Endpoints que cubren prácticamente todos los aspectos necesarios, además
es una plataforma con muchos desarrolladores trabajando en ella por lo que
a medio plazo está garantizada su continuidad, también se han creado las
estructuras necesarias para construir nuevos Endpoints con nuestras
necesidades.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 96


Capítulo 6.9. - Casos de Uso

6.9. CASOS DE USO

6.9.1. CICLO DE COMPRA COMPLETO

CONTEXTO, nos encontramos en la situación en la que el sistema de


comercio electrónico ya está en producción y se han realizado las pruebas
oportunas tanto de funcionalidad como de rendimiento y por lo tanto se podrá
operar satisfactoriamente.

De igual modo, se han creado las instancias necesarias para las


realización de las operaciones habituales como puede ser por ejemplo la
compra de un producto en una máquina de vending que es el caso que nos
ocupa, tenemos creados una multienda, esta multienda tiene asignados una
serie de productos que son bebidas en lata, un cliente que puede conectarse
al sistema y recibir correos electrónicos en su cuenta asociada.

La multitienda anteriormente mencionada tiene habilitadas unas claves


Consumer Key y Consumer Secret en el registro de Keys de la API REST de
Woocommerce, estas claves se han integrado en la placa de Arduino que
gobierna para habilitar la comunicación entre ambos sistemas.

Todas las operaciones de compra serán registradas por el sistema


incluido en el Plugin Woocommerce, de esta manera podremos hacer analítica
de datos sobre los pedidos de compra, productos, fechas y horas , cantidades,
que servirán para el Proyecto del compañero Javier Mira.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 97


Real Openvend - El Internet de las Máquinas de Vending

ESCENARIO, se quiere realizar la compra de un producto, en


concreto de un producto que provee la máquina de vending denominada
vendor1 (recodamos que este nombre se indica así para facilitar el recordar
este nombre en la realidad se habilitará un nombre codificado como se
menciona en apartados anteriores), se requiere que el Cliente esté
previamente registrado en el sistema y que tenga un saldo positivo en su
cuenta de usuario, además este Cliente debe ir provisto de un dispositivo
electrónico que posea un lector NFC, por ejemplo un Smartphone.

Con la descripción anterior quedan prácticamente definidos los


actores que participan en este caso de uso, los relacionamos a continuación,

- Cliente, usuario que se acerca a la máquina de vending con su


smartphone que dispone de lector NFC
- Máquina de vending, realmente el actor es la placa de Arduino que
tiene un lector NFC, aunque para mayor abstracción indicamos un todo
que sería la máquina de vending que engloba a esta placa y a la propia
máquina que contiene bebidas refrescantes en formato de lata.
- Servidor, realmente sería la API REST de Wordpress que permite la
comunicación entre la máquina de vending y los datos del Plugin de
comercio electrónico, pero como en el caso anterior denominamos al
conjunto completo.

En la figura que observamos a continuación, se describe el proceso de compra


numerando los pasos que se van realizando, a continuación de la figura
detallamos más formalmente los pasos que se realizan en la operación de
este caso de uso,

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 98


Capítulo 6.9. - Casos de Uso

4 2

FIGURA 6.13 - FLUJO CASO DE USO COMPRA PRODUCTO

Caso de Uso : un Cliente se acerca a la máquina de vending

Descripción El cliente quiere comprar una bebida se acerca con un


móvil a la máquina de vending

Actores Cliente, Máquina de vending

Precondición El móvil debe tener lector NFC y conexión a Internet

Flujo 1.- El móvil accede al radio de acción del lector NFC de


la máquina de vending
2.- La placa Arduino detecta el móvil
3.- Se trasmite al móvil la dirección de la multienda de la
máquina de vending,
https://www.openvend.net/vending/vendor1

Postcondición Se abre en el móvil un navegador de Internet con la


dirección anterior cargada

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 99


Real Openvend - El Internet de las Máquinas de Vending

Caso de Uso : un Cliente accede al sistema de comercio electrónico

Descripción El Cliente accede con sus datos de usuario al sistema

Actores Cliente, Servidor

Precondición El Cliente debe tener configurada la cuenta de correo


electrónico de su cuenta de cliente

Flujo 1.- El cliente escribe su nombre de usuario y contraseña


2.- Recibe en su correo electrónico el OTP
3.- El cliente escribe el OTP recibido

Postcondición Se accede desde el navegador de Internet a la pantalla


de productos de la máquina de vending

Caso de Uso : un Cliente compra un producto

Descripción El Cliente busca un producto y lo selecciona para su


compra

Actores Cliente, Servidor

Precondición El Cliente debe tener saldo en su cuenta

Flujo 1.- El cliente selecciona un producto


2.- Finaliza la compra

Postcondición Se registra el pedido en el Plugin Woocommerce

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 100


Capítulo 6.9. - Casos de Uso

Caso de Uso : comunicación de producto solicitado

Descripción la máquina de vending detecta el pedido realizado

Actores Servidor, máquina de vending

Precondición La comunicación entre Servidor y máquina de vending es


correcta

Flujo 1.- La máquina de vending detecta un pedido sin finalizar


2.- Se comprueba la existencia del producto
3.- Se confirma el pedido
4.- Se cambia del estado del pedido

Postcondición Se registra la venta en el sistema del producto

Caso de Uso : se sirve el producto

Descripción La máquina de vending libera el producto que se acaba


de comprar

Actores Cliente, Servidor

Precondición Los mecanismos de la máquina funcionan correctamente

Flujo 1.- El producto sale por el dispensador


2.- Se cambia el estado del pedido

Postcondición Se resetea a estado inicial para atender otra posible


compra

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 101


Real Openvend - El Internet de las Máquinas de Vending

6.9.2. INSTANCIAR UNA MAQUINA DE VENDING

CONTEXTO, en este caso la situación varia notablemente respecto al


anterior caso de uso, este caso es una tarea de administración del propio
sistema. Para fijar con mayor detalle el contexto de este caso, partimos de
una suposición, este sistema pertenece a una empresa que realiza la gestión
integral, por una parte mantiene el sistema actual de multitiendas mediante el
sistema de comercio electrónico y por otra parte instala y mantiene las
máquinas de vending, así a la hora de comenzar la instanciación de una
máquina de vending en Woocommerce, se debe fabricar la máquina de
vending con su correspondiente placa de Arduino.

Una vez que disponemos de la máquina de vending físicamente es


cuando instanciaríamos realmente la máquina en el sistema, este proceso se
ha descrito a lo largo de la memoria, por lo que aquí se detallará de manera
más formal.

ESCENARIO, obviando el proceso de fabricación de la máquina de


vending y de la instalación de la placa de Arduino en ella, definimos los actores
para el proceso de instanciación,

- Técnico, es un empleado que tiene un rol de administrador del sistema,


en este caso usaremos el usuario fpanos3
- Servidor, es el conjunto de todas las aplicaciones integradas, hace
referencia especialmente a Wordpress, pero como hay más factores
que intervienen lo denominamos Servidor
- Woocommerce, es el plugin de comercio electrónico y en concreto se
refiere a las operaciones de creación de roles de usuario Vendor y la
creación y asignación de productos a ese rolo de usuario

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 102


Capítulo 6.9. - Casos de Uso

- Wc Vendor, es el plugin que permite la creación de multitiendas,


permite configurar cada una de ellas de manera independiente aunque
siempre se haya usado el mismo formato para cada multienda.

En la figura a continuación, se describe el proceso de compra


numerando los pasos, a continuación de la figura detallamos más formalmente
los pasos que se realizan en la operación de este caso de uso,

1
3

FIGURA 6.14 - FLUJO CASO DE USO INSTANCIA MAQUINA DE


VENDING

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 103


Real Openvend - El Internet de las Máquinas de Vending

Caso de Uso : técnico autorizado se conecta al sistema

Descripción el técnico con privilegios se conecta al sistema con fines


de administración

Actores Técnico, Servidor

Precondición El técnico debe estar dado de alta como usuario con el rol
de administrador

Flujo 1.- El técnico accede al panel de administración


2.- Introduce sus datos de acceso

Postcondición Se permite el acceso al sistema

Caso de Uso : alta de un usuario con rol Vendor

Descripción se da de alta un usuario con el rol Vendor por lo que se


habilitará una nueva multitienda

Actores Técnico, WC Vendor

Precondición El plugin WC Vendor permite crear nuevas multitiendas

Flujo 1.- Se indica el nombre del nuevo usuario vendor /


multitienda
2.- Se indica la contraseña para este usuario

Postcondición Se registra el nuevo usuario

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 104


Capítulo 6.9. - Casos de Uso

Caso de Uso : creación de Keys en API REST y productos multitienda

Descripción se crean las claves de autenticación para la nueva


multienda creada y se asignan los productos disponibles
en esa multitienda

Actores Técnico, Woocommerce

Precondición La API REST de Woocommerce está habilitada

Flujo 1.- Se indica el nombre de la Key


2.- Se anotan las claves Consumer Key y Consumer
Secret
3.- Se comunican esos datos al departamento de
instalación de máquinas de vending
4.- Se asignan los productos a la multienda

Postcondición Se generan las Keys y se habilitan los productos en la


multitienda

Caso de Uso : configuración de la multitienda

Descripción se configura el aspecto o las condiciones de uso de la


multienda creada

Actores Servidor, WC Vendor

Precondición Está creada la multitienda

Flujo 1.- Se hacen las modificaciones que se estimen


oportunas

Postcondición Se registran los cambios realizados

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 105


Real Openvend - El Internet de las Máquinas de Vending

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 106


Capítulo 6.10. - Futuras mejoras

6.10. FUTURAS MEJORAS

La solución que se ha presentado, aunque cumpla con los objetivos,


no es ni mucho ni menos perfecta, por lo que se dejan anotadas en este
apartado algunas mejoras que se pueden llevar a acabo para conseguir un
sistema más compacto y funcional. Las mejoras que se proponen son las que
se han ido observando al desarrollar el sistema por lo que seguramente
aparecerían más necesidades si el Proyecto se pusiera en marcha en la
realidad, el uso real nos presentaría problemáticas que habría que resolver, y
el por supuesto el Feedack de los Clientes sería fundamental pues a buen
seguro presentarían también retos que se deberían superar, en un caso con
este serían los Clientes con su uso o no de la plataforma los que determinarían
el éxito o el fracaso de la misma.

MEJORA 1

Conseguir una plataforma más profesional y con mayores


prestaciones que el Hosting que se ha habilitado, intentar poner en marcha un
proyecto profesional con vistas a desarrollar una actividad comercial sería
inviable, necesitaríamos mucha más capacidad de proceso, almacenamiento,
conectividad,…

MEJORA 2

Automatizar en mayor medida el proceso de instanciación de una


multitienda, construir o buscar un Plugin que permita mediante un asistente la
creación de una multienda dentro del entorno MarketPlace del sistema de
comercio electrónico.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 107


Real Openvend - El Internet de las Máquinas de Vending

MEJORA 3

Minimizar en número y tamaño las comunicaciones entre los


dispositivos basados en Arduino instalados en las máquinas de vending y el
sistema de comercio electrónico para mejorar la usabilidad y conseguir una
verdadera experiencia de usuario, eso sí sin olvidar la seguridad, con esto se
conseguirá que usar este sistema sea rápido y seguro lo que facilitará que su
éxito esté garantizado.

MEJORA 4

Codificar y documentar los Endpoints de la API REST de


Woocommerce que se usarán en todas las operaciones necesarias para la
realización de las operaciones entre el sistema las máquinas de vending.
Ahora la documentación se consulta desde la página web de la API de
Woocommerce y sería más indicado crear una documentación específica de
las funciones que se necesitan y obviar aquellas que no son necesarias.

MEJORA 5

Implementar nuevos sistemas de autenticación entre el API REST de


Woocommerce y los dispositivos o aplicaciones que se conecten con él como
por ejemplo el método Oauth 1.1. para el que incluso ya hay publicados
Plugins que mejorar esta función. Implementando alguno de los métodos en
este sentido mejoraremos tanto la seguridad como el rendimiento de todo el
sistema

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 108


Capítulo 6.10. - Futuras mejoras

MEJORA 6

Mejorar el aspecto final de la parte pública de las aplicaciones del


sistema, conseguir un frontend más vistoso que el actual, si bien esto era uno
de los objetivos iniciales, en el desarrollo del Proyecto se fue quedando un
poco al margen pues el planteamiento inicial varió bastante de lo inicialmente
planificado, entre otras cosas porque no se dispuso de una plataforma y se
buscó la solución que se ha detallado en este Proyecto.

MEJORA 7

Buscar otro método de comunicación entre las máquinas de vending


y el sistema, actualmente se usa NFC, pero seguro que es posible establecer
otros canales o formas de comunicación, bien con tecnologías actuales o con
otras tecnologías que se estén desarrollando actualmente.

Como se decía al principio, hay muchas mejoras que se pueden


hacer, estas han sido algunas, pero seguro que analizando nuevamente el
sistema surgirán algunas más.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 109


Real Openvend - El Internet de las Máquinas de Vending

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 110


Capítulo 6.11. - Conclusiones

6.11. CONCLUSIONES

La realización de este Proyecto ha sido un verdadero reto personal,


por varios motivos, en primer lugar por incorporarme a un proyecto que ya
estaba en curso, lo que hace que al leer las propuestas que se han ido
realizando previamente entre en contacto con tecnologías que o conocía muy
poco o bien no conocía, y como se plantean soluciones que en un principio no
se me habrían pasado por la cabeza y que una vez analizadas se presentan
como muy lógicas, por otra parte abordar un proyecto que es tan
multidisciplinar haya hecho que me haya dado cuenta de los conocimientos
que he ido adquiriendo a lo largo de los cuatros cursos de este Grado, tocando
varios campos que van desde la gestión comercial, pasando por planificación
de un Proyecto, prueba de sistemas integrados, componentes Hardware, ,
sistemas de comunicación, diseño web, modificaciones en la codificación,
aspectos de seguridad, …, en definitiva muchas cosas aprendidas en distintas
asignaturas.

También por haber trabajado en el gran equipo que se ha formado


con el Director de Proyecto Antonio Solano y los compañeros David Díaz,
Javier Mira y Manuel García, viendo que hay que tener en cuenta las
aportaciones acertadas realizadas por ellos y debatiendo aquellas que no lo
eran tanto hasta llegar a fijar los objetivos de cada uno que finalmente se
convertirían en objetivos conjuntos. Creo que entre todos nos hemos ayudado
enormemente y hemos aprendido unos de otros.

Otro reto importante, aprender a usar herramientas y entornos que no


se conocían anteriormente, como los paneles Plesk, las APIs REST, sistemas
web como Wordpress, implementaciones de certificados SSL, …, y eso
siempre con el tiempo amenazando con pasar demasiado pronto y estar más
que apurado.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 111


Real Openvend - El Internet de las Máquinas de Vending

Ha sido muy gratificante ver como al ir pasando los meses, ver el que
parece aún cercano mes de octubre cuando empezamos y pensar que
realmente no es tan cercano y que ya han pasado nueve meses desde
entonces, se ha ido avanzando tanto y se han ido cambiado tantos puntos de
vista y valorando soluciones que se han ido probando y rechazando hasta dar
con la adecuada que parece mentira que ya se haya acabado el tiempo para
la realización de este Proyecto.

En definitiva, una gran experiencia, muy edificante, no exenta de


momentos duros, pues hasta que no se van atando cabos parece que
realmente no se tiene nada y todo son opciones inconexas que no sirven para
nada, pero cuando finalmente todo va tomando forma y funciona es entonces
cuando realmente uno se da cuenta que el esfuerzo ha merecido la pena y al
mirar atrás parezca que todo ha sido más fácil de lo que realmente ha sido, al
tiempo que puedes pensar, yo lo hice.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 112


Capítulo 7 - Anexos

7. ANEXOS

En los anexos que se presentan a continuación se detallan


operaciones de instalación y configuración de algunos de los aspectos
relevantes del implementación de este Proyecto, son una especie de guías
rápidas de instalación.

Se han separado del resto de los capítulos de la memoria para que la


lectura de estos capítulos sea más clara y no se pierda el foco de atención al
ver esas instrucciones de instalación y configuración de los distintos
componentes del sistema.

Todos los archivos, aplicaciones, distribuciones están disponibles en


el CD entregado adjunto a esta memoria, estando también esta cd comprimido
en un único archivo que se puede descargar desde la dirección web siguiente,
https://openvend.net/descargas/pfg-fpanos3.zip

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 113


Real Openvend - El Internet de las Máquinas de Vending

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 114


Capítulo 7 - Anexo 1 - Instalación WampServer Servidor Local

7.1. ANEXO 1 - Instalación WampServer - Servidor Local

Como se ha indicado en varios apartados de esta memoria para la


instalación de todo el sistema vamos a habilitar un servidor local que ponga
en marcha un servidor web Apache, un motor de bases de datos MySQL y
que soporte PHP, para lo que hemos elegido la aplicación que cumple con
estas condiciones y que se llama WampServer, es una aplicación de software
libre con licencia GPL por lo que cumplimos con el objetivo de evitar el pago
de licencias para generar sistemas de bajo coste.

Para conseguirlo, podemos descargarlo accediendo a su página web


a través de la siguiente dirección, http://www.wampserver.com/en/
localizándolo en la zona de descargas,

En el proceso anterior conseguiremos descargar el archivo


wampserver3.0.4_x86_apache2.4.18_mysql5.7.11_php5.6.19-7.0.4.exe
que nos indica las versiones que se instalarán que son éstas,

Apache 2.4.18.

MySQL 5.7.11.

PHP 5.6.19-7.0.4.

Hay que tener en cuenta estas versiones a la hora de hacer


actualizaciones o instalaciones de productos porque podríamos tener
incompatibilidades, por lo que es recomendable siempre mirar los requisitos
en la documentación de los sistemas a implementar.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 115


Real Openvend - El Internet de las Máquinas de Vending

Una vez obtenido el archivo, en este caso lo ejecutamos y se lanzará


el asistente de instalación, la única configuración que nos pedirá será la
ubicación de la instalación que por defecto es C:\wamp, dejamos esa ruta de
instalación e instalamos,

CAPTURA 7.1.1.

Al finalizar la instalación, para ejecutar el servidor local nos dirigimos


a la ubicación C:\wamp y ejecutamos la aplicación wampmanager.exe que
es un gestor que se abrirá en la bandeja del sistema (parte inferior derecha),
para que el sistema esté completamente operativo el icono de la aplicación

debe estar en color verde si por el contrario estuviera en color naranja

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 116


Capítulo 7 - Anexo 1 - Instalación WampServer Servidor Local

algún servicio no se habría iniciado correctamente y habría que reiniciarlo o


buscar en la documentación el posible motivo.

Para comprobar que el servidor esta operativo podemos probar a


acceder a la dirección http://localhost y deberíamos ver esta pantalla,

CAPTURA 7.1.2.

Una dirección de interés es http://localhost/phpmyadmin que nos da


acceso al panel de control de las bases de datos para crear nuevas, crear
usuarios, hacer importaciones o exportaciones o directamente editar datos.

A través del icono que se sitúa en la bandeja del sistema podemos


acceder a muchos parámetros de configuración tanto del servidor Apache
como PHP para cambiar parámetros por ejemplo del archivo PHP.ini o para
añadir módulos PHP, no se entra en detalle de estas configuraciones para no
extender más esta memoria.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 117


Real Openvend - El Internet de las Máquinas de Vending

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 118


Capítulo 7 - Anexo 2 - Instalación Wordpress Servidor Local

7.2. ANEXO 2 - INSTALACIÓN WORDPRESS

Descargamos la distribución de Wordpress más actual, en este caso


la versión 4.5.3., desde la web oficial, descargaremos la versión en inglés
desde esta dirección https://www.wordpress.org/download y si queremos la
versión en castellano entonces la podemos descargar desde esta otra
dirección https://es.wordpress.org, insistiendo en descargar siempre las
distribuciones desde el sitio oficial para evitar problemas de descargar
versiones que pudieran estar alteradas con código malicioso.

Como vamos a instalar Wordpress sobre un servidor local nos


aseguramos de lanzar el servidor local, es decir el servidor Apache y el motor
de base de datos MySQL, en esta memoria describimos el proceso con el
servidor local WampServer cuya instalación y arranque se muestra en el
ANEXO 1.

Una vez arrancado el servidor, accedemos en primer lugar a la


dirección web http://localhost/phpmyadmin para que se abra la pantalla de
gestión de bases de datos,

CAPTURA 7.2.1.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 119


Real Openvend - El Internet de las Máquinas de Vending

Haciendo clic sobre la opción Bases de datos procederemos a crear


una nueva base de datos que en el caso de la instalación en servidor la
llamaremos db_openvend,

CAPTURA 7.2.2.
Ahora crearemos una usuario para dar acceso a la base de datos
recién creada, para ello pinchamos en la opción Usuarios, y en la parte inferior
pulsamos sobre la opción Agregar nuevo usuario a este usuario lo llamaremos
usr_openvend y le asignamos la contraseña Finishing@2016 y le asignamos
todos los privilegios,

CAPTURA 7.2.3.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 120


Capítulo 7 - Anexo 2 - Instalación Wordpress Servidor Local

Ahora descomprimimos el archivo con la distribución de Wordpress


4.5.3. y copiamos todo el contenido de esa carpeta en
C:\wamp\www\openvend donde C:\wamp\www es la raíz del servidor local
y openvend en la carpeta para este Proyecto, en la captura siguiente
podemos ver el listado de directorios y archivos de la distribución de
Wordpress,

CAPTURA 7.2.4.
El siguiente paso es renombrar el archivo wp-config-sample.php a
wp-config.php y editamos las siguientes líneas con un editor de texto,
escribiendo lo que está en negrita,

Línea 23 -> define('DB_NAME', 'db_openvend');


Línea 26 -> define('DB_USER', 'usr_openvend');
Línea 29 -> define('DB_PASSWORD', 'SecDat15);
Línea 66 -> $table_prefix = 'ov_';

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 121


Real Openvend - El Internet de las Máquinas de Vending

Ahora iniciamos el asistente para la instalación de Wordpress para lo


que tenemos que acceder a la dirección http://localhost/openvend/ y
configurar los datos solicitados, entre los que destacan el Título del Sitio en
este caso OPENVEND, el nombre de usuario para el rol de Administrador que
recordamos no poner el genérico admin por motivos de seguridad, en este
caso escribimos fpanos3, escribimos una contraseña segura en este caso
Finishing@2016 y finalmente presionamos el botón Instalar Wordpress,

CAPTURA 7.2.5.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 122


Capítulo 7 - Anexo 2 - Instalación Wordpress Servidor Local

Si la instalación ha sido correcta veremos la siguiente pantalla en el


navegador de Internet,

CAPTURA 7.2.6.
Ahora podemos acceder a la parte pública de la web desde la
dirección del servidor local http://localhost/openvend,

CAPTURA 7.2.7.
O bien al panel de administración de Wordpress, donde tendremos
que iniciar sesión con el usuario de administración que hemos dado de alta
desde la dirección http://localhost/openvend/wp-admin

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 123


Real Openvend - El Internet de las Máquinas de Vending

CAPTURA 7.2.8.
Al introducir los datos de inicio de sesión correctamente accedemos
al panel de administración de Wordpress,

CAPTURA 7.2.9.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 124


Capítulo 7 - Anexo 3 - Instalación Woocommerce Servidor Local

7.3. ANEXO 3 - INSTALACIÓN WOOCOMMERCE

Igual que se indica en el Anexo 4 para la instalación de cualquier


Plugin de Wordpress, aunque se pueden instalar directamente desde el
apartado Plugins del panel de administración de Wordpress, esta opción la
recomendamos solo cuando el sitio está instalado en un servidor remoto, y
como el método inicial para la instalación configuración completa del sistema
ha sido elegido el método de instalación en servidor local, descargaremos
previamente los plugins en el servidor local e instalando posteriormente el
Plugin.

Así descargamos el Plugin Woocommerce desde la dirección web


https://www.woothemes.com/woocommerce/ en concreto la versión 2.6.1. una
vez finalizada la descarga guardamos el archivo comprimido descargado en
la ubicación que corresponda.

CAPTURA 7.3.1.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 125


Real Openvend - El Internet de las Máquinas de Vending

Ahora accedemos al panel de administración de Wordpress,


recordando que estamos instalando en el servidor local, si no está iniciado el
servidor local habrá que hacerlo, y por lo tanto la dirección de acceso será
http://localhost/openvend/wp-admin accediendo con un usuario con privilegios
de administración,

CAPTURA 7.3.2.

Una vez dentro del panel de administración hacemos clic sobre el


enlace que indica Plugins,

CAPTURA 7.3.3.

Ahora pinchamos en el botón Add New y luego en Upload Plugin,


localizando el archivo woocommerce.2.6.1.zip y pulsando el botón Install
Now, una vez finalizada hacemos clic en el enlace Activate Plugin.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 126


Capítulo 7 - Anexo 3 - Instalación Woocommerce Servidor Local

Al activar Woocommerce accedemos a un asistente para la


configuración del mismo, iniciando el proceso con el botón Let's Go!

CAPTURA 7.3.4.

En el siguiente apartado se crearán unas páginas necesarias para el


correcto funcionamiento de este Plugin, estas páginas son

- Shop, es la página que muestra los productos que estarán


disponibles para su compra.

- Cart, es la página conocida popularmente como "Carrito de la


Compra", es la página los productos que han sido seleccionados para
comprar.

- Checkout, es la página en la que se ultiman los detalles para la


finalización de la comprar como forma de pago, método de envío, …

- My Account, es la página en la que se muestra la configuración del


usuario que está comprando, es decir el Cliente (Customer).

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 127


Real Openvend - El Internet de las Máquinas de Vending

Pulsamos a continuación en el botón Continue,

CAPTURA 7.3.5.

Seleccionamos los parámetros de configuración local y pulsamos el


botón Continue,

CAPTURA 7.3.6.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 128


Capítulo 7 - Anexo 3 - Instalación Woocommerce Servidor Local

En el siguiente paso, apartado de envío e impuestos, dejamos


desmarcadas ambas opciones, pues no será necesario el proceso habitual de
compra online en el que al comprar un producto debe ser enviado a una
dirección postal, pues en este caso el producto se entrega in situ al realizar la
compra, para continuar pulsamos el botón Continue,

CAPTURA 7.3.7.

Ahora configuramos los métodos de pago, en este punto no


habilitaremos ningún método de pago pues necesitaremos un Plugin que
gestionará el saldo previo necesario de un cliente, será en ese Plugin donde
se configurarán los métodos de pago, pulsamos el botón Continue,

CAPTURA 7.3.8.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 129


Real Openvend - El Internet de las Máquinas de Vending

Terminó el proceso de instalación de Woocommerce, ahora podemos


colaborar en el proceso de mejor del Plugin habilitando el acceso por parte de
la distribuidora del Plugin de acceder a nuestros datos de comercio electrónico
dejando activada la opción Allow o si no queremos seleccionamos No thanks,
seleccionamos esta última pues no procede, hay también enlaces para ver
información tutorial, acabamos el proceso pulsando en el enlace inferior
Return to the Wordpress Dashboard con lo que regresamos al panel de
administración de Wordpress.

CAPTURA 7.3.9

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 130


Capítulo 7 - Anexo 4 - Instalación Plugins

7.4. ANEXO 4 - INSTALACIÓN PLUGINS

En este anexo se describe el proceso de instalación general de un


Plugin cualquiera, en concreto se instalará a modo de ejemplo el Plugin WP-
Migrate en su versión 0.8., y siempre teniendo en cuenta que instalamos estos
plugins sobre un servidor local por lo que previamente tendremos
descardamos los archivos desde la web de plugins que Wordpress, que es
una fuente de confianza con lo que evitamos riesgos de descargar software
malicioso, o en su defecto de la web del desarrollador oficial del Plugin,
recordando que para la instalación de plugins en un servidor web remoto el
proceso sería el mismo salvo que podemos usar el buscador incluido en el
panel de administración de Wordpress para buscar y descargar
automáticamente el Plugin en el que estamos interesados. Hay un tercer
método para instalar un Plugin que es guardando la carpeta descomprimida
en la ubicación wp-content/plugins/ y luego desde la opción Plugins del panel
de administración de Wordpress activar y configurar el Plugin.

Iniciamos el proceso, una vez identificado el Plugin que necesitamos


lo buscamos en la web oficial de Plugins de Wordpress, en este caso
accedemos a la web https://es.wordpress.org/plugins/wp-migrate-db , y
descargamos el Plugin obteniendo un archivo comprimido con el Plugin,

CAPTURA 7.4.1.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 131


Real Openvend - El Internet de las Máquinas de Vending

Accedemos al panel de administración de Wordpress mediante la


dirección http://localhost/openvend/wp-admin y nos conectamos con un
usuario con privilegios, y vamos a la opción Plugins, para posteriormente
pulsar en el botón Add New,

CAPTURA 7.4.2.

A continuación pulsamos en el botón Upload Plugin y seleccionamos


el archivo comprimido descargado anteriormente, y ahora en el botón Instal
Now,

CAPTURA 7.4.3.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 132


Capítulo 7 - Anexo 4 - Instalación Plugins

Ahora pulsamos en el enlace Activate Plugin si queremos activarlo,

CAPTURA 7.4.4.

Una vez activado accedemos a la pantalla de Plugins donde podemos


ver el listado de plugins instalados en el sistema, desde aquí podremos
Desactivar (Deactivate), Eliminar (Delete) o Configurar (Settings) los Plugins,
para acceder a ellos también podemos encontrarlo en la barra izquierda lateral
del panel de administración de Wordpress, algunos dentro de la opción Tools,
otros dentro de la opción Settings y otros incluso crean un propia opción con
su nombre en esta barra lateral,

CAPTURA 7.4.5.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 133


Real Openvend - El Internet de las Máquinas de Vending

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 134


Capítulo 7 - Anexo 5 - Configuración Plesk Hosting

7.5. ANEXO 5 - CONFIGURACIÓN HOSTING PLESK

Una vez que se ha realizado el registro del dominio correspondiente y


se ha contratado el servicio de alojamiento web con algún proveedor de
servicios, se procederá a la configuración en el panel de control de Plesk del
espacio web necesario para ello, además de la configuración de los
parámetros que se crean necesarios como punto de partida.

En primer lugar, accedemos a la dirección web proporcionada por el


proveedor de Hosting para acceder a la interfaz web de Plesk, en este caso
la podemos observar en la siguiente figura,

CAPTURA 7.5.1.

A continuación accedemos a la pantalla de Login de usuario,


introducimos los datos que nos han proporcionado, por supuesto modificando
la contraseña inicial por una nueva, usaremos el usuario admin y la
contraseña Finishing@2016, introducimos esos datos y pulsamos el botón
Acceder,

CAPTURA 7.5.2.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 135


Real Openvend - El Internet de las Máquinas de Vending

Accedemos a la pantalla principal del panel de control, como se puede


observar en la figura siguiente existen una infinidad de opciones y menús, todo
esto no se detallará en los anexos de esta memoria pues no es el objeto de la
misma,

CAPTURA 7.5.3.

Creamos un nuevo cliente dentro del panel Plesk,

FIGURA 7.5.4.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 136


Capítulo 7 - Anexo 5 - Configuración Plesk Hosting

Rellenamos los datos básicos del nuevo cliente, destacar que hay
que tener muy presente recordar o anotar el nombre de usuario, pues será
necesario para acceder por ejemplo a servicios como puede ser el acceso
mediante Cliente FTP para cargar archivos, además intentamos crear una
contraseña que sea lo más segura posible.

CAPTURA 7.5.5.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 137


Real Openvend - El Internet de las Máquinas de Vending

CAPTURA 7.5.6.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 138


Capítulo 7 - Anexo 5 - Configuración Plesk Hosting

Ya tendremos creado la nueva suscripción de cliente y su espacio web


asociado con acceso a los servicios como Correo Electrónico, Bases de
Datos, Estadísticas, …, como se observa en la figura siguiente se establecen
los parámetros por defecto (como cuotas de uso de disco, permitir sobreuso
de recursos del servidor, …),

CAPTURA 7.5.7.

Ya hemos creado el dominio OPENVEND.NET como podemos ver en


la figura siguiente,

CAPTURA 7.5.8.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 139


Real Openvend - El Internet de las Máquinas de Vending

Accedemos a la zona de administración de la suscripción creada


para el dominio,

CAPTURA 7.5.9.

Se puede ver igualmente que hay numerosas opciones, se van a


configurar solo las imprescindibles, empezando por crear tres cuentas de
correo, una con carácter de administración con el usuario fpanos3, otra para
el rol de vendedor que es una máquina de vending con el usuario vendor1 y
otra para el rol de comprador con el usuario customer1,

CAPTURA 7.5.10.
Grado en Ingeniería Informática - Proyecto Fin de Grado Página 140
Capítulo 7 - Anexo 5 - Configuración Plesk Hosting

Una vez creadas las cuentas de correo electrónico para las tres
cuentas de usuarios que necesitaremos para los casos de uso que se
establecerán en este Proyecto, podemos ver listadas esas cuentas,

CAPTURA 7.5.11.

A continuación crearemos una única base de datos MySQL donde se


instalarán los contenidos de Wordpress y Woocommerce, esta base de datos
tendrá el nombre de db_openvendnet y necesitará un usuario que tendrá el
nombre usr_openvendnet con la contraseña SecDat16, podemos verlo en la
figura siguiente,

CAPTURA 7.5.12.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 141


Real Openvend - El Internet de las Máquinas de Vending

CAPTURA 7.5.13.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 142


Capítulo 7 - Anexo 5 - Configuración Plesk Hosting

Ajustamos un parámetro de la memoria PHP para que no tengamos


la problemática como la ocurrida en el Hosting de 1and1, ampliamos este
parámetro a 196 MB, recordamos que esta es una de las ventajas principales
de este tipo de Hosting y es que podamos ajustar los parámetros de la
arquitectura física en función de los recursos demandados por las
aplicaciones implementadas,

CAPTURA 7.5.14.

Ya tenemos configurado el Hosting con la suscripción para el dominio


OPENVEND.NET, como se ha indicado se tendrían que configurar otra serie
de opciones y parámetros, pero quedan fuera del alcance de esta memoria.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 143


Real Openvend - El Internet de las Máquinas de Vending

A continuación, visitamos la dirección web http://openvend.net y la


web de creación de un nuevo sitio web en Plesk nos será mostrada,

CAPTURA 7.5.15.

Ahora accedemos mediante el Cliente FTP Filezilla (Ver ANEXO 8) al


espacio de este dominio para borrar todo el contenido de la carpeta httpdocs
(hay que tener en cuenta que el servidor es Linux y la ruta completa sería esta
/var/www/vhosts/openvend.net/httpdocs) y cargar en ella un archivo que
hemos creado llamado index.html que se mostrará de la siguiente manera en
un navegador de Internet,

FIGURA 7.5.16.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 144


Capítulo 7 - Anexo 6 - Instalación Certificado SSL

7.6. ANEXO 6 - INSTALACIÓN CERTIFICADO SSL

Para comenzar con este proceso lo primero es ir a la dirección web


http://www.comodo.com y pinchamos en el apartado SSL Certificates con lo
que accedemos a la siguiente pantalla,

CAPTURA 7.6.1.

Hacemos clic sobre el botón que indica Free Trial SSL y nos carga
una página donde tenemos que atender unos requerimientos previos, entre
los que destacan el CSR (Certificate Signing Request) que lo generaremos
desde el panel Plesk,

CAPTURA 7.6.2.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 145


Real Openvend - El Internet de las Máquinas de Vending

Iniciamos la generación de un Certificado SSL en el panel Plesk,


indicando los datos solicitados,

CAPTURA 7.6.3.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 146


Capítulo 7 - Anexo 6 - Instalación Certificado SSL

Una vez solicitado, podemos acceder a él y visualizar el CSR que


pondremos en el apartado correspondiente de la solicitud en la web de
Comodo,

CAPTURA 7.6.4.

CAPTURA 7.6.5.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 147


Real Openvend - El Internet de las Máquinas de Vending

Continuando con el proceso, podemos indicar los correos electrónicos


de gestión de certificado en la web de Comodo,

CAPTURA 7.6.6.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 148


Capítulo 7 - Anexo 6 - Instalación Certificado SSL

Ahora nos rellenamos los datos del dominio y la empresa que solicita
el certificado, además de los datos de contacto,

CAPTURA 7.6.7.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 149


Real Openvend - El Internet de las Máquinas de Vending

Se genera el pedido en la web, se aceptan las términos y las


condiciones del contrato, al ser un Certificado gratuito no se genera ningún
cargo, hay que tener en cuenta que en caso de emitir un certificado real,
normalmente se factura por años, y hay que renovar la licencia una vez
pasado ese año,

CAPTURA 7.6.8.

Se realiza la confirmación de la solicitud y nos indica las acciones


pendientes,

CAPTURA 7.6.9.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 150


Capítulo 7 - Anexo 6 - Instalación Certificado SSL

Recibiremos un correo electrónico en la cuenta indicada donde nos


facilitan un código que usaremos para validar la solicitud del Certificado,

CAPTURA 7.6.10.

Validamos con el código recibido y finalizamos el proceso de solicitud


de certificado, ahora solo falta recibir un correo electrónico confirmando la
emisión del certificado y el propio certificado,

CAPTURA 7.6.11.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 151


Real Openvend - El Internet de las Máquinas de Vending

Al recibir el correo electrónico (al final de este anexo podemos ver ese
Certificado, CSR, la clave privada y al hash) con el certificado lo copiamos en
apartado Certificado dentro del apartado correspondiente en el panel de
control Plesk, a continuación verificamos que todo funciona correctamente
accediendo a la dirección https://openvend.net , viendo que efectivamente el
certificado ha sido emitido e instalado correctamente,

CAPTURA 7.6.12.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 152


Capítulo 7 - Anexo 6 - Instalación Certificado SSL

CERTIFICADO DE COMODO (no es necesario usarlo)


-----BEGIN CERTIFICATE REQUEST-----
MIIDUDCCArkCAQAwdTEWMBQGA1UEAxMNdGVzdC50ZXN0LmNvbTES
MBAGA1UECxMJ
TWFya2V0aW5nMREwDwYDVQQKEwhUZXN0IE9yZzESMBAGA1UEBxMJ
VGVzdCBDaXR5
(more encoded data).......
Rq+blLr5X5iQdzyF1pLqP1Mck5Ve1eCz0R9/OekGSRno7ow4TVyxAF6J6oz
Daw7e
GisfZw40VLT0/6IGvK2jX0i+t58RFQ8WYTOcTRlPnkG8B/uV
-----END CERTIFICATE REQUEST-----

CSR (generado al solicitar el Certificado en el panel de control Plesk)


-----BEGIN CERTIFICATE REQUEST-----
MIICzjCCAbYCAQAwgYgxCzAJBgNVBAYTAkVTMRIwEAYDVQQIEwlTYWx
hbWFuY2Ex
EjAQBgNVBAcTCVNhbGFtYW5jYTERMA8GA1UEChMIT3BlblZlbmQxGTAX
BgNVBAMT
EHd3dy5vcGVudmVuZC5uZXQxIzAhBgkqhkiG9w0BCQEWFGZwYW5vczN
Ab3BlbnZl
bmQubmV0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0jaJ
UvC7jzvZ
Q94v0+h/E9LXSJDYoEaqARwyP3jKYOmIEYEpvQs854sxLk4Aj6FI8sRuTQn
BKHf9
ZwDV0Zz+fIr/F6/uCLtFXRjZe3OYadYvt+XXO5jr7GZCUVAGa3b33b9Lsuybq
VUv
d+PGX21CLR9a8t7vcItHCLWe9s1zKbttmEgnB3/OW7ZGgCIsYle+R5euysV
hL2AZ
n4lOf+2FutoKVbLQ19LtvKd0irexVS+xZhfUc4xJMFBzb40azcUQHqNmrj/OeA
64
8S8ac6XsJmujPKlROPWRM3yWBVX9WIVO9X/pZzHqw0R/t1+VGm21GW2
ZqZK6Wa9m
BWmzpOvoswIDAQABoAAwDQYJKoZIhvcNAQEFBQADggEBAC/QaUIz5IN
TqLZg8RUB
lr4UVb640opRwG8LWRvnOS51pV+Mo7M9BfrVYIqPm6DmjzesVeIfw1WJqh
JusKPW
XDm2yZfmOYsEUtWlAzJH+0+g2ig1k6jM+6KqZK5cHXNWZJF7779H4o/+nM
CIX7Yu
8RuvldT3w3A9aPQ5h+OSvoRJqIsPRDkeuWJTFjGuXZ23YFazaPgghOX7V
JQ9+tzV
UKj830qEZkAUKAGZEC2kAEGCATgP9rlQHkEiaQ/WWZguhMi5IfuPJ+Goz
mX1IcEU
Tn/eZtUSAl0UNo5nb0MCru/B0GuEApV0QgYCL4e9lircOZs7flUAqMj8cMZBg
QZH
J/Y=
-----END CERTIFICATE REQUEST-----

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 153


Real Openvend - El Internet de las Máquinas de Vending

CLAVE PRIVADA (generada al solicitar el Certificado en el panel Plesk)


-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDSNolS8
LuPO9lD
3i/T6H8T0tdIkNigRqoBHDI/eMpg6YgRgSm9CzznizEuTgCPoUjyxG5NCcEod
/1n
ANXRnP58iv8Xr+4Iu0VdGNl7c5hp1i+35dc7mOvsZkJRUAZrdvfdv0uy7JupV
S93
48ZfbUItH1ry3u9wi0cItZ72zXMpu22YSCcHf85btkaAIixiV75Hl67KxWEvYBmf
iU5/7YW62gpVstDX0u28p3SKt7FVL7FmF9RzjEkwUHNvjRrNxRAeo2auP85
4Drjx
Lxpzpewma6M8qVE49ZEzfJYFVf1YhU71f+lnMerDRH+3X5UabbUZbZmpkrp
Zr2YF
abOk6+izAgMBAAECggEAKW6QUGWcQhXks6i2OokHiuuyfN33pFdpKIDbM
oFnOgSt
Se3wQQ9W+LgJgHvlRmnei+LFbq+uf4Bu1H9opUDRM9DdiFinjNcES94a92c
IMkwB
6bgGXPu9/EEHbylbqpCvN+h9Tg2ufIiKq5GcRrCtK2GTtmzUOpVo8cGCTFig
CyhH
dnoEtr0c/mkK8UnnghIyvioB7I3Sy+VkdLigBwCkzkBMUL8RxRYU648SqtIJDz
O0
gLJRoHS/RH0DROjlbwyFDWq0gOdTN8IB0zPLg1mtoqrdc1A0O0Gp+hQdo5
kkAw6s
rsuXDbKLO38LCjc1tFTrC7PE6IQpdfzrToXb49W8WQKBgQDojQwJJm3dkC
p1C7hD
PVI3rQGyIiAAvtw2DbzakjG+Q2gNE2nlBp0m+hzSQl+IvFUfL2Xm/cLRSlbxbl
Vl
PZS+IxweUSzYqcMP5KKAWFulHiaTx0GGpMVmhDrVtarxgUX7nGA3CClE
W1i41kB6
iDKL9+x5io3KgTnnRX7/YXyllQKBgQDnaN6MVZu5/FHSPa1WpOscaEVSj/T
sMA+B
dsixN0SXqmW/9VcpIjZuKDFJPRfZTBSMD9V008fE+BpzmRYMzo9AIIPlLZJ
acbyy
CulrVMz2lK0liISEkc/cwxLnsmj1SHV0u8viyHA5hTpEyIqLF4UyRl8BUSjZXjV0
YCsvvaozJwKBgB45puTRj9oKUNphqZNjtvnxjJTghpRSOkD0TCWEdt6p2C5
K5aqU
z3wvaeuSIOSexdmFyZLaTKXzKZW7p3G/LUQBQDhYiKGofufj6ZMQ6OhvI
Mh4T3X2
mImYiiUYtZ0qFjR7wK2ma+askL2Fa2ABr8AtexjY/1DgtuvuRnFe9Fp5AoGBA
Jzi
hRahJ22E+bfOZsj6EAd3TaA2xralsq1z6YXz0UX9mPP2EfxqHHq8NwXPLG7
+XGPE
jFOjDKmmBtDeNYvDMm0oXiMurS0yNNqD+VHx8O8vRt/OWQFDlae2fQel9f
BtCmx0
sTpz51mn0CQ3zW2VKZE3EkvjSQ1tCFJ4rG62aEA7AoGAdWVl+ea7BQUe
e8md6jHL
wJMDv26kUQGVj0s0pn04FDcXRxIBcXRiRGFD8TRCorcAW35mA273I90+R
tE3PuDS

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 154


Capítulo 7 - Anexo 6 - Instalación Certificado SSL

5CpfmVpLdXo/J87D2rPz8kV+lVdQfGITxDCVMZ14pZNzOLa3aMdHpJeQNK
CSaq6q
LASiq3V1XgMoLN3xeDpBpq4=
-----END PRIVATE KEY-----

CERTIFICADO (enviado por Comodo al finalizar el proceso de emisión)


-----BEGIN CERTIFICATE-----
MIIFSTCCBDGgAwIBAgIQDkJboGRT5MhohW+OZ+kI5jANBgkqhkiG9w0BA
QsFADCB
kDELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3Rl
cjEQMA4G
A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0Z
WQxNjA0BgNV
BAMTLUNPTU9ETyBSU0EgRG9tYWluIFZhbGlkYXRpb24gU2VjdXJlIFNlcnZ
lciBD
QTAeFw0xNjA2MjUwMDAwMDBaFw0xNjA5MjMyMzU5NTlaMFExITAfBgNV
BAsTGERv
bWFpbiBDb250cm9sIFZhbGlkYXRlZDERMA8GA1UECxMIRnJlZSBTU0wxG
TAXBgNV
BAMTEHd3dy5vcGVudmVuZC5uZXQwggEiMA0GCSqGSIb3DQEBAQUAA4
IBDwAwggEK
AoIBAQC0L9qQJsQG5c7rvb6YoA+AzrWnuPSYPKBSJrFiGl+Ih/rBikeKTgYU
2f6l
O0KQzeS2JHdolElkldO8hPu2kU1B0X7ib2eVndH7MhD10mldY9dTTHGci5Q
Gc9Tp
6Lv68hz39JXrjgQ9avooeuqbXgdJXMkQZjtF1neJdy9VJnIYchyWgKjc7Gof/vt
H
/ulttqHBnDtgve06CqVx3ZIGxS6zed3qhCiGWVH6LIjn7TaZ4tQ20YmyjCk8eU
rV
EerdZG/Wu+9Bv8Ekn1OZC0Yl41/4Mvt++csmxCY5fLOGCx2C9IUpNcAsKC
EVGcWV
Y8BaIj5CLaQRWeuqh/MLI0ivekFDAgMBAAGjggHbMIIB1zAfBgNVHSMEGD
AWgBSQ
r2o6lFoL2JDqElZz30O0Oija5zAdBgNVHQ4EFgQUJBCOLvLTweHYBspnPS
8NY6B/
0QswDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR
0lBBYwFAYIKwYB
BQUHAwEGCCsGAQUFBwMCME8GA1UdIARIMEYwOgYLKwYBBAGyMQ
ECAgcwKzApBggr
BgEFBQcCARYdaHR0cHM6Ly9zZWN1cmUuY29tb2RvLmNvbS9DUFMwC
AYGZ4EMAQIB
MFQGA1UdHwRNMEswSaBHoEWGQ2h0dHA6Ly9jcmwuY29tb2RvY2EuY2
9tL0NPTU9E
T1JTQURvbWFpblZhbGlkYXRpb25TZWN1cmVTZXJ2ZXJDQS5jcmwwgYU
GCCsGAQUF
BwEBBHkwdzBPBggrBgEFBQcwAoZDaHR0cDovL2NydC5jb21vZG9jYS5jb
20vQ09N

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 155


Real Openvend - El Internet de las Máquinas de Vending

T0RPUlNBRG9tYWluVmFsaWRhdGlvblNlY3VyZVNlcnZlckNBLmNydDAkBg
grBgEF
BQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMCkGA1UdEQQiMCCC
EHd3dy5v
cGVudmVuZC5uZXSCDG9wZW52ZW5kLm5ldDANBgkqhkiG9w0BAQsFAA
OCAQEAVfeJ
eSNPPevjcnZbuSfXs+p9sXG0kgt14vycTzd1dLrKroSuuYNv+qFOLB1bqfkDR
Lku
kHcr7JkhI7wT79Olo7IP8VZ5xLHGs4tLHk9qTxvIypAa0r6s971dWTVxmxwZv
13T
Ctdv2b7Q77sEx0iXOQFXDXbYXbCAqrB3gH/GzZ+Q6L+vPcVXe/UdJiY4A1j
4lBm3
JhLXJrlGdLGdVfZdKu4xhedv/+38o1m2z33O9WWqFZIGs2AD1XyC0tViiDbut
v5Y
wYtCwg1EMYBqr/A+lDGiFw3IQZQkKO/raMmkJo3kHMKTCM3HWF1yAasio
BOGeKhj
EhUsosHt1WZtjjwHMg==
-----END CERTIFICATE-----

CSR HASHES (enviadas por Comodo al realizar la solicitud)


MD5 = 76CC5F1EA66AEE70BD7CB4552E4A0276

SHA-1 = 4066EA6379BD36B583FEA5DF68BC1381D10E26ED

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 156


Capítulo 7 - Anexo 7 - Instalación de Servidor Local a Remoto

7.7 ANEXO 7 - INSTALACIÓN DE SERVIDOR LOCAL A


REMOTO

Al finalizar la distribución inicial del sistema completo, y tras hacer las


pruebas oportunas procedemos a migrar el sistema creado desde el servidor
local al servidor remoto, es decir al Hosting contratado con la empresa
Interdominios.

Distinguimos en este momento dos apartados principalmente, la


migración de la base de datos y a continuación la migración de los directorios
y archivos que se encuentran en el servidor local dentro del Proyecto
Openvend.

MIGRACION BASE DE DATOS

Aunque disponemos de varios métodos usaremos el Plugin WP-


Migrate DB pues ajusta con mayor adecuación el formato de la base de datos
y alguna de las características intrínsecas de la base de datos de Wordpress
como es la serialización, por lo tanto vamos al panel de administración de
Wordpress y seleccionamos la opción Tools > WP Migrate indicando en la
dirección web y en la ruta absoluta en el sistema de almacenamiento los
nuevos destinos para el servidor remoto

Dirección Local Dirección Remota

//localhost/openvend //openvend.net

C:\wamp\openvend /var/www/vhosts/openvend.net/httpdocs

Como recordatorio, pasaremos de un entorno local basado en


sistemas Windows a un entorno remoto basado en sistemas Linux.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 157


Real Openvend - El Internet de las Máquinas de Vending

Introducimos estos cambios en el apartado correspondiente y


lanzamos el proceso de exportación de la base de datos, presionamos sobre
el botón Export,

CAPTURA 7.7.1.

Vemos como progresa esta exportación hasta que termine,


generando un archivo que tendremos que localizar para posteriormente usarlo
en la importación al servidor remoto,

CAPTURA 7.7.2.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 158


Capítulo 7 - Anexo 7 - Instalación de Servidor Local a Remoto

Accedemos al servidor remoto a través de la interfaz web del panel de


control Plesk, recordamos que la dirección es https://89.248.106.183:8443
iniciando la sesión con el usuario admin y la contraseña **********, accedemos
al apartado del dominio Openvend.net que se denomina bases de datos, este
proceso se ha realizado en el ANEXO 6 anteriormente,

CAPTURA 7.7.3.

Ahora hacemos clic sobre la opción Webadmin y accedemos a la


aplicación phpmyadmin del servidor para gestionar la base de datos donde
importaremos el volcado de la base de datos obtenido anteriormente,
accedemos a la opción Importar y seleccionamos el archivo en cuestión para
finalmente pulsar el botón Continuar en la parte inferior de la pantalla,

CAPTURA 7.7.4.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 159


Real Openvend - El Internet de las Máquinas de Vending

Si el proceso es correcto obtendremos un mensaje indicado que la


importación ha sido satisfactoria y este proceso habrá terminado,

CAPTURA 7.7.5.

MIGRACIÓN DE DIRECTORIOS Y ARCHIVOS

Realizamos una conexión mediante un Cliente FTP o SSH al servidor


remoto, podemos seguir el ANEXO 8 para hacer esta conexión teniendo en
cuenta que los datos de conexión son,

HOST: ftp.openvend.net

USUARIO: openvend16

CONTRASEÑA: Finishing@2016

RUTA SERVIDOR LOCAL: C:\wamp\openvend

RUTA SERVIDOR REMOTO: httpdocs

Hay que eliminar el contenido de la carpeta httpdocs en el servidor


remoto, en este caso solo hay un archivo que es index.html. Este proceso
puede durar varios minutos en función de la velocidad de conexión que
tengamos, pues se cargarán todos los archivos que componen este sistema.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 160


Capítulo 7 - Anexo 7 - Instalación de Servidor Local a Remoto

Iniciamos la transferencia de todos los archivos desde el Cliente FTP


hasta el servidor remoto,

CAPTURA 7.7.6.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 161


Real Openvend - El Internet de las Máquinas de Vending

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 162


Capítulo 7 - Anexo 8 - Cliente FTP

7.8. ANEXO 8 - CLIENTE FTP

Para cargar los archivos desde el servidor local hasta el espacio web
del servidor remoto hay varias opciones entre las que destacamos los Clientes
FTP, las conexiones SSH o la interfaz web disponible en el panel de control
Plesk del Hosting contratado en Interdominios.

De estas tres opciones, hemos seleccionado la primera que consiste


en usar una aplicación de tipo Cliente FTP, seleccionando la denominada
FTPZilla por ser software libre, podemos descargarla de la dirección web
siguiente https://filezilla-project.org/

Instalamos la aplicación y configuramos una conexión al servicio FTP


del servidor para lo que tendremos que indicar el Host de acceso, el usuario
y la contraseña de acceso, estos datos los cumplimentamos al realizar el alta
del Dominio en el Hosting de Interdominios.

Esta sería una configuración de conexión con la que se ha accedido


al directorio de archivos del servidor remoto,

CAPTURA 7.8.1.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 163


Real Openvend - El Internet de las Máquinas de Vending

Una vez accedido al directorio raíz hay que tener en cuenta que
debemos cargar, eliminar o modificar los archivos dentro de la carpeta
httpdocs,

CAPTURA 7.8.3.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 164


Capítulo 8 - Agradecimientos

8. AGRADECIMIENTOS

Quiero agradecer en primer lugar a la Universidad de Educación a


Distancia UNED que haga posible que gente que no tiene tiempo material para
acudir a una Universidad presencial pueda hacer estudios superiores con la
facilidad con la que se hace en esta Universidad, además con la amplísima
oferta de estudios de Grado, Postgrado, Idiomas, …, este es un
agradecimiento sincero, pues aunque como en todas las cosas de la vida haya
cosas que se pueden mejorar haya situaciones o procedimientos que no
comparta o que no vea bien, entiendo que se hacen desde la mejor de las
intenciones. Agradecer también al personal del Centro Asociado de Zamora,
los tutores, el personal de la secretaría, el personal que está en los exámenes
su generosa ayuda, excelente disposición y profesional atención que me han
brindado a lo largo de estos cinco años que ha durado mi experiencia
completando el Grado en Ingeniería Informática, espero compartir más
momentos de este tipo si realizo algún Master el curso próximo, muchas
gracias.

A las directoras de este Proyecto Natividad Duro Carralero y Raquel


Dormido Canto, por seleccionarnos y dejarnos participar de él sin poner
impedimento alguno y aunque no haya sido necesario contar con su consejo,
siempre ha quedado claro que cualquier cosa que pudiéramos necesitar
podíamos contar con ellas para lo que fuera, de hecho en las dos ocasiones
que hemos realizado videoconferencias con ellas lo ha dicho por activa y por
pasiva, de verdad que muy agradecido por todo.

Agradecimiento absoluto para Antonio Solano Tarroc, el Director y


Alma Mater de este Proyecto, muchas gracias por trasmitirme tu pasión por
todo lo relacionado con este campo de la informática, en cada una de las
sesiones de los miércoles por la noche se nos quedaba corto el tiempo para
escuchar tus propuestas o para ver las soluciones que habías ido dando a lo

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 165


Real Openvend - El Internet de las Máquinas de Vending

largo de todos los años que ha durado este Proyecto. También gracias por
dejarnos investigar nuevas opciones y poder planteártelas e incluso llevarlas
a cabo, cosa que ha significado que hacer este Proyecto no lo haya visto como
una obligación sino como una experiencia de descubrimiento y de reto
personal para de algo que no sabías que existiera puedas crear un sistema
que pueda quizá incluso en algún momento ser un realidad. Te deseo mucha
suerte en la presentación de tu tesis doctoral y de nuevo reitero mis
agradecimientos por aceptarme en tu Proyecto.

A mis compañeros de Proyecto, David, Javier y Manuel, desde aquel


ya lejano 7 de octubre de 2015 en el que tuvimos nuestra primera reunión
Scrum, os habéis convertido en los compañeros de estudio que cualquier
persona quisiera tener, nos hemos ayudado mutuamente, hemos compartido
alegrías con los aprobados, tristezas con algún suspenso, frustraciones por
no conseguir lo que estábamos intentando, y también momentos fugaces de
éxito cuando veíamos que conseguíamos alguno de los objetivos, ha sido un
placer poder compartir con vosotros esas videoconferencias en grupo con
Toni y esas conversaciones mediante chat a horas intempestivas, en las
previas de los exámenes, donde nos dábamos ánimo mutuamente o donde
nos quejábamos de todo aquello que no daba un poco de rabia. Espero
conoceos personalmente para charlar acerca de todo esto, o si no es posible
mantener de alguna manera el contacto o quien sabe seguir compartiendo
proyectos de estudios futuros. Muchas gracias por todo y espero haber
aportado algo también yo al grupo pues puedo garantizar que vosotros a mi si
que me habéis aportado más incluso de lo que podáis imaginas, hasta
siempre compañeros.

Por supuesto, no podía dejar de agradecer a mi familia y amigos su


apoyo y ánimo a lo largo de estos cinco años, y aunque en el propósito inicial
de emprender este estudio, una de las máximas era la de no dejar de estar
con ellos por estudiar o hacer ejercicios, cosa que creo que si que la he
conseguido, supongo que en algunos momentos no he podido estar con ellos,

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 166


Capítulo 8 - Agradecimientos

pero como la recompensa será muy grande, creo que todos estaremos muy
alegres de que esto haya sucedido.

Y por último, y como no podía ser de otra manera mi agradecimiento


infinito para mi mujer, Mar, gracias por animarme a seguir estudiando, verte a
ti empezar proyecto tras proyecto siempre estudiando en una cosa y en otra,
hizo que se despertara en mi la necesidad de nuevo de aventurarme a seguir
estudiando, gracias por ser como eres, por tu ánimo incondicional, por
acompañarme las veces que podías a los exámenes y leerme en el coche
algún resumen para ir con la mente fresca, de verdad que sin ti esto
seguramente no habría sucedido, muchas gracias.

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 167


Real Openvend - El Internet de las Máquinas de Vending

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 168


Capítulo 9 - Bibliografía

9. BIBLIOGRAFÍA

- Ingeniería del Software, un enfoque práctico, séptima edición

Roger S. Pressman

- Criptografía y seguridad en computadores, versión 4-0.9.0

Manuel José Lucena López

- Técnicas criptográficas de protección de datos, tercera edición

José María Fuster

- Trasmisión de datos y redes de comunicaciones, cuarta edición

Behrouz A. Forouzan

- Gestión de empresas informáticas

Eduardo Pérez Gorostegui y Carlos Cerrada Somolinos

- Introducción a la ingeniería del Software

José A. Cerrada Somolinos

- UML y patrones

Craig Larman

- Fundamentos del Sistema Operativo UNIX, segunda edición

José Manuel Díaz Martínez, Rocío Muñoz Mansilla y Dictino Chaos García

- Sistemas Distribuidos conceptos y diseño, tercera edición

George Coulouris, Jean Dollimore y Tim Kindberg

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 169


Real Openvend - El Internet de las Máquinas de Vending

- Seguridad en las comunicaciones y en la información

Gabriel Díaz, Francisco Mur, Elio Sancristóbal, Manuel Castro y Juan Peire

- Redes de computadoras, quinta edición

James F. Kurose y Keith W. Ross

- Programación orientada a objetos con Java, tercera edición

David J. Barnes y Michael Kölling

- Fundamentos de Bases de Datos, quinta edición

Silberschatz, Korth y Sudarshan

- PHP 6 y MySQL

Steve Suehring, Tim Converse y Joyce Park

- Presentaciones y apuntes distintas asignaturas del Grado

Varios profesores UNED

- Hosting

http://cloudtimes.org/2011/11/30/top-paas-saas-and-iaas-cloud-companies-
by-cloudtimes/

https://stack247.wordpress.com/2015/05/21/azure-on-premises-vs-iaas-vs-
paas-vs-saas/

- Wordpress

https://es.wikipedia.org/wiki/WordPress

https://es.wordpress.com/

https://es.wordpress.org/

http://v2.wp-api.org/

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 170


Capítulo 9 - Bibliografía

- Woocommerce
https://www.woothemes.com/woocommerce/
http://woothemes.github.io/woocommerce-rest-api-docs/
- Plesk
https://docs.plesk.com/en-US/12.5/

Otras direcciones de Internet…

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 171


Real Openvend - El Internet de las Máquinas de Vending

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 172


Capítulo 10 - Siglas, Acrónimos y Abreviaturas

10. SIGLAS, ABREVIATURAS Y ACRÓNIMOS

IoT: Internet of The Things

CMS: Content Management System

PHP:

MySQL: Pre HyperText Processor

Apache: Servidor HTTP

API: Application Programming Interface

REST: REpresentational State Transfer

GPL: General Public License

NFC: Near Field Communication

R: Lenguaje de Programación con enfoque de análisis estadístico

SaaS: Software as a Service

PaaS: Platform as a Service

IaaS: Infraestructure as a Service

Plesk: Panel de Gestión de Servidores de Hosting

SSD: Solid State Disk

HTTP: HyperText Transfer Protocol

HTTPS: HyperText Transfer Protocol Secure

WWW: World Wide Web

FTP: File Transfer Protocol

SSH: Secure SsHell

GET: Petición de representación del recurso especificado

POST: Envía datos para que sean procesados por el recurso identificado

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 173


Real Openvend - El Internet de las Máquinas de Vending

URL: Uniform Resource Locator

URI: Uniform Resource Identifier

HTML: HyperText Markup Language

JSON: JavaScript Object Notation

XML: eXtensible Markup Language

XHTML: eXtensible HyperText Markup Language

CSS: Cascading Style Sheets

WYSIWYG: What You See Is What You Get

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 174


Fin de la Memoria

Fin de la Memoria

30 de junio de 2016

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 175


Real Openvend - El Internet de las Máquinas de Vending

Grado en Ingeniería Informática - Proyecto Fin de Grado Página 176

Вам также может понравиться