SolarMobi
Introducción
Proxecto de innovación premiado na Resolución do 22 de maio de 2018 da Dirección Xeral de Educación, Formación Profesional e Innovación Educativa pola que se resolven os premios para o desenvolvemento de proxectos de innovación tecnolóxica ou científica e proxectos de innovación didáctica no ámbito da Formación Profesional en centros públicos dependentes da Consellería de Cultura, Educación e Ordenación Universitaria, onde se impartan ensinanzas de Formación Profesional, convocados na resolución do 4 de decembro de 2017.
Obxetivos do proxecto
No proxecto SolarMobi deseñouse e construíuse unha instalación de enerxía solar fotovoltaica que alimenta a un punto de recarga de vehículos eléctricos.
A instalación está xestionada por unha aplicación web propia deseñada para tal efecto e que é quen de xestionar un conxunto amplo de estacións, puntos de carga e clientes con un ou varios vehículos eléctricos. Esta aplicación web tamén da soporte informático para a xestión de quendas de recarga, así toda a comunidade educativa poderá darse de alta como usuario ao través da web, e solicitar unha quenda de recarga.
A recarga dos vehículos será totalmente gratuíta para toda a comunidade educativa sempre que estea dispoñible enerxía renovable.
Recursos
Fonte de enerxía fotovoltaica
Estructura
Materiais empregados
Consulta de enerxía e información
A enerxía fotovoltaica xerada, é xestionada a través do inversor. Neste inversor temos instalada unha Raspberry que se encarga de transmitir as medicións de enerxía xerada ó servidor central SolarMobi.
Na web de SolarMobi, as persoas encargada de administrar cada centro, poderán ver as gráficas de enerxía dende o menú: Admin. -> Gráficos Nesa opción poderemos seleccionar ano, mes e día que queremos consultar. Por defecto ó acceder amósase a gráfica do día actual.
Exemplo de gráfico de enerxía obtido en SolarMobi:
Tamén se poderán obter as medicións dende a API REST de SolarMobi: API REST SolarMobi
Cargador de coches eléctricos marca Legrand
Características
As características do cargador Legrand empregado en SolarMobi son as indicadas no seguinte gráfico: Trátase dunha borna monofásica de 230V cunha potencia de 3.7/4.6kW.
Dispón de 2 conectores:
- 1 de tipo doméstico
- 1 de tipo vehículos eléctricos EV (Modo 3)
Rexistros dispoñibles
O cargador Legrand facilita unha serie de rexistros que se poden consultar a través de modBus.
Eses rexistros dan diferentes tipos de información e permiten realizar diferentes tarefas como activar o cargador, parar a carga, consultar o estado, etc.
Aquí está unha lista completa en PDF dos rexistros dispoñibles no cargador Legrand: Archivo:Green-UP-Charging-Station-Registros.pdf
Metodoloxía empregada
Para a realización do proxecto contamos cun cargador Legrand monofásico de 230V ref.: 0590030 de 3.7 /4.6kW
Raspberry Pi en cargador Legrand
Para a toma de datos e activación/desactivación da carga, empregarase unha Raspberry Pi 3 conectaremos ao cargadador Legrand. A conexión farase cun adaptador USB RS485 e Modbus que irá, no lado da Raspberry conectado a un porto USB e, no lado do cargador, ao Modbus. Veremos nos seguintes apartados os pasos a seguir para acadar esta configuración.
Instalación básica
A configuración que se lle debe realizar á Raspberry que fai de enlace có cargador é a seguinte:
# Instalar a imaxen por defecto na microSD
# Conectarlle un monitor e teclado.
# Acceder có usuario: pi e contrasinal: raspberry
# Configuración de dirección IP:
# Editar el siguiente archivo:
nano /etc/dhcpcd.conf
# Añadir al final del archivo lo siguiente (ejemplo):
# Configuracion IP de Ejemplo:
interface eth0
static ip_address=10.0.0.15/16
static routers=10.0.0.254
static domain_name_servers=8.8.8.8
#static ip6_address=fd51:42f8:caae:d92e::ff/64
# Para habilitar la wifi:
sudo raspi-config
2 Network Options (Configure network settings)
N2 Wi-fi (Enter SSID and passphrase)
# Configuración xenérica de raspberry:
sudo raspi-config
# Ver interfacing-options para habilitar SSH
# Configuración de IP estática:
nano /etc/dhcpcd.conf
# Editar os parámetros correspondentes:
# Actualización da Raspberry:
nano /home/pi/updates.sh
#!/bin/bash
clear
apt update
apt upgrade
apt dist-upgrade
apt auto-remove
rpi-update
# Cambiar permisos:
chmod 755 /home/pi/updates.sh
# Executar o script como sudo para actualizar a Raspbery
sudo /home/pi/updates.sh
Instalación software adicional y aplicación
Necesitaremos instalar algunhas librerías máis para traballar có adaptador USB RS485 e Modbus:
# Como root:
sudo su
# Python xa aparece instalado por defecto:
# Instalamos python-pip
apt-get install python-pip
# Instalamos o módulo minimalmodbus:
pip install minimalmodbus
# Copiaremos os arquivos do .zip á carpeta /home/pi:
# Consultaremos có administrador do centro para que nos envíe o arquivo estacion.json correspondente á nova estación.
# O arquivo é necesario para que a Raspberry poida comunicar coa central:
# Exemplo de arquivo específico para unha estación:
{
"idestacion":"35",
"nombreestacion":"Estación Legrand",
"codigoseccom":"7382xr5",
"servidor_ws":"solarmobi.iessanclemente.net",
"puerto_ws":"8080"
}
# Permisos ó script de arrancar node:
chmod 755 /home/pi/legrand/arrancarnode.sh
# Editaremos a tarea do cron para que se arranque o proceso arrancarnode.sh no reboot:
crontab -e
# Engadiremos a seguinte liña:
# Arranque de client.js en reboot
@reboot /home/pi/legrand/arrancarnode.sh
# Instalación de Node.js versión 11 como root:
curl -sL https://deb.nodesource.com/setup_11.x | bash -
apt-get install -y nodejs
# Instalación de forever:
npm install -g forever
# Instalación de módulos adicionais (xa incluídos no .zip), pero si queremos executaremos o seguinte:
cd /home/pi/legrand
npm install log-timestamp
npm install socket.io-client
Conexión do conversor RS485 ó cargador eléctrico Legrand
Aspecto da conexión do adaptador USB RS485 para a comunicación có cargador eléctrico LEGRAND:
Interacción con aplicación SolarMobi y cargador Legrand
Cada vez que se da de alta un Centro en solarMobi (tenemos un inversor y varias estaciones). El inversor será el que envíe los datos a la central SolarMobi y para ello hay que copiar un fichero de configuración específico para cada inversor de cada centro. Ese fichero lo genera la aplicación y se llama inversor.json
Hay que leer ese fichero y procesarlo ya que ahí están varios de los datos necesarios para hacer la petición de envío de datos a SolarMobi.
Contenido de ese fichero:
{
"idcentro":"1",
"centronombre":"Universidade Laboral",
"codigoseccom":"6cf232342sdfasd",
"api":"https://solarmobi.iessanclemente.net/api/v1/mediciones/1"
}
Para enviar las mediciones a SolarMobi, hay que leer ese fichero inversor.json (procesarlo para sacar de ahí parte de la información que se necesita para enviar los datos). El envío de datos se puede hacer con una petición CURL de tipo POST.
Información de la petición:
Método de envío POST
URL de envío, es la dirección que aparece en el campo "api" (se saca de inversor.json)
Campos a enviar:
codigoseccom: (se saca de inversor.json)
medicion: Será una cadena JSON con los siguientes campos:
{"fechahora":"2019-03-20 06:55:02","potenciatotalac":"8500","energiadiaria":"105000","energiatotal":"2500","pool":"7200"}
Como respuesta de la petición a SolarMobi podemos obtener:
Si se han grabado correctamente los datos obtendremos un mensaje .json con este contenido (cabecera 201 Created):
{"status":"ok","datos":"Energia recibida correctamente."}
Si faltan datos en la petición (cabecera 422 Unprocessable Entity):
{"status":"error","datos":"Faltan datos de medicion."}
Si el códigoseccom (código de seguridad de la comunicación) es incorrecto (cabecera 403 Forbidden):
{"status":"error","datos":"Codigo de seguridad de comunicacion es incorrecto"}
Comunicación con servidor Web
Raspberry Pi en Inversor SMA
Instalación básica
Instalación software adicional e aplicación
Programación de aplicación web
Tecnoloxías empregadas
A aplicación web foi programada empregando as seguintes linguaxes:
- PHP (backend)
- HTML5, CSS, JavaScript, jQuery (frontend)
- NodeJs (Backend cargador Legrand e servidor central)
- Python (backend cargador Legrand)
A comunicación entre as diferentes estructuras amósase no seguinte gráfico:
GRAFICO DE INTERCONEXIONADO
Comunicación con Raspberry Pi
Servizo de notificacións a través do Bot de Telegram @SolarMobiBot
Aplicación web SolarMobi
Aspecto da aplicación
Cómo rexistrarse na aplicación
1.- Para poder facer uso da aplicación hai que rexistrarse a través do enlace Rexistro. Cubriremos o formulario seguinte e seleccionaremos o centro ó cal pertencemos.
2.- Ó pulsar en Rexistrarse recibiremos unha mensaxe como ésta:
3.- A continuación teremos que consultar o noso correo para validar o rexistro. Recibiremos un correo similar a éste:
4.- Pulsaremos no enlace para confirmar o noso correo e mostrarásenos algo similar a:
5.- Agora teremos que esperar a confirmación por parte do administrador do centro para que nos permita acceder á web. Cando confirme a nosa conta recibiremos unha mensaxe no correo similar a:
Menú de Cliente de SolarMobi
Cando accedemos á web de SolarMobi (unha vez validada a nosa conta polo administrador do centro), teremos as seguintes opcións:
Opción Idioma
Dende aquí poderemos seleccionar o idioma da interfaz, en Galego ou Español.
Opción Xestión
As opcións de xestión que temos como usuarios son as seguintes:
Control de carga
Dende aquí poderemos controlar a carga do noso vehículo. Si temos unha reserva feita e está activa (estamos dentro do horario de comenzo e de final da reserva), entón dende aquí poderemos Activar a Carga, Parar a Carga ou Consultar o estado da mesma e Tempo restante da reserva ou ver o historial de cargas feitas.
As miñas reservas
Nesta sección poderemos facer reservas de carga, tendo en conta as seguintes características das reservas:
- Soamente se permite unha reserva activa por cliente.
- Non se poderá facer outra reserva ata que a reserva activa caduque ou sexa borrada antes de que comece.
- Nas reservas activas (aquela que xa comenzou e non rematou), poderemos parar a carga ou activar a carga cando o desexemos.
- As cargas pararanse automaticamente cando chegue a hora de remate.
- Antes de comezar a reserva o cliente recibirá unha notificación (por correo electrónico e Telegram) 1 hora e 30 minutos antes da reserva, para recordarlle que ten unha reserva.
- Cando remate a reserva o cliente recibirá unha notificación (por correo electrónico e Telegram) informando do remate da reserva e da carga do vehículo (si estivera cargando).
- Exemplo de creación dunha reserva:
- Exemplo dunha reserva activa:
- Exemplo dunha reserva programada:
Estacións de carga
Aquí poderemos ver todas as estacións de carga dispoñibles no noso centro.
Nese listado amósase a dirección onde se atopa a estación, así como as coordenadas e o estado da mesma. Na parte inferior do listado temos unha lenda có significado das iconas.
Vehículos
Para poder facer unha reserva é necesario ter dado de alta polo menos 1 vehículo.
Na sección de vehículos poderemos dar de alta novos vehículos dos que somos propietarios/as, editar a información dos mesmos ou ben borrar o automóvil.
Para dar de alta un novo vehículo teremos que facer click na icona có simbolo +
Telegram
- A sección Telegram permítenos rexistrarnos no Bot SolarMobiBot. A través deste bot poderemos xestionar a carga do noso vehículo eléctrico, así como parar a carga, ver o estado da mesma, etc.
Os meus datos
- Para editar os nosos datos persoais, poderemos facelo dende esta opción:
Administrador de Centros en SolarMobi
Menú Administración
- Este menú aparecerá cando somos administradores/as de Centros.
- As opcións dispoñibles son as seguintes:
Gráficos
- Permítenos ver un gráfico coa enerxía xerada polos paneis solares do Centro.
- Ademáis poderemos seleccionar unha data específica para visualizar os datos.
Estacións
- Permítenos dar de alta novas estacións de carga pertencentes ó Centro que administramos.
- Tamén poderemos Editar/Borrar as estacións e tamén descarga o aquivo de configuración que se deberá instalar na Raspberry da estación.
- Pulsando na latitude e lonxitude da estación abriráse un mapa coa localización da estación.
Medicións
- Nesta sección podemos ver as derradeiras medicións recibidas dende o Inversor que recibe a enerxía dos paneis solares.
Usuarios
- Listado dos usuarios dados de alta no noso centro:
- Para cada un dos usuarios, a Aplicación permite editar (validar o e-mail, bloquear o acceso)/borrar os usuarios pertencentes ó noso centro:
Autorizacións
- Nesta sección o administrador/a do Centro autorizará a darse de alta aos usuarios pendentes de confirmación de acceso.
- Cando hai usuarios pendentes de confirmación aparecerán neste listado, cunha icona dunha chave azul.
- Ademáis se o usuario tamén confirmou o seu correo aparecerá un sobre de cor verde.
- Ó facer click na chave autorízase o usuario para poder acceder á web.
Admin. Reservas
- A sección de Admin. reservas permítenos ver o listado de todas as reservas pasadas e futuras.
- O único que nos deixaría facer é borrar cada reserva de xeito individual.
Super-administrador en SolarMobi
- Como super-administrador/a da aplicación SolarMobi, poderemos tamén dar de alta Novos Centros e xestionar os que xa temos.
Menú Centros
- Aquí podemos ver o listado de Centros rexistrados na aplicación SolarMobi.
- Podemos tamén, editar/borrar e descargar a configuración do Centro que teremos que colocar na Raspberry instalada no Inversor dos paneis solares da central.
SolarMobiBot en Telegram
Cómo rexistrarse no bot de Telegram
Temos dúas opcións de rexistro no bot @SolarMobiBot de Telegram:
- Rexistro via aplicación web
- - A través do menú Gestión -> Telegram, poderemos rexistrarnos prácticamente de xeito automático no Bot. O único requisito é que teñamos instalado un cliente de Telegram no dispositivo (PC/Tablet/móvil, etc..)
- Rexistro dende Telegram
- - Accedemos ó cliente de Telegram e buscamos o bot: SolarMobiBot
- Pulsamos no botón Iniciar
- Pulsamos no botón Registro
- Recibiremos un correo coa solicitude de rexistro en Telegram.
- Confirmación de rexistro en Telegram
- Pulsaremos o botón chequeo de Activación no cliente de Telegram e entón amosarase o Texto de benvida e opcións dispoñibles
Comandos e opcións dispoñibles no Bot
- Dende Telegram podemos usar os botóns de comandos ou teclealos.
- Un comando dun bot comezará coa barra /
- Listado de comandos dispoñibles:
BOTÓNS de comandos do Bot SolarMobiBot
Unha vez dados de alta poderemos realizar as seguintes accións empregando os "botóns de comandos".
Mis Datos
Fecha
Reservas
- Se non temos ningunha reserva:
- Se xa temos algunha reserva feita:
Borrar Reserva
Elimina a reserva e mostra a mensaxe de que xa non temos ningunha reserva programada.
Activar
Permítenos iniciar unha carga, se a carga está activa.
Parar Carga
Progreso
Amosa o progreso dunha carga, indicando o estado da mesma.
NOVIDADE:
- Cando falten 15 minutos para terminar a cargar, si pulsamos no botón de Progreso, comprobará si podemos ampliar a carga, e amosará os botóns correspondentes para ampliar a +30 minutos, +60 minutos, etc..
Histórico
Mostra o histórico de cargas.
Cercanas
- Permítenos localizar as estacións de carga máis preto á nosa localización actual.
Status
- Amosará o estado de todas as estacións pertencentes ó nos Centro de referencia.
Info.
- Amosa a información do proxecto
Activar Notificacións
- Se pulsamos este botón recibiremos por Telegram os avisos previos á carga e á finalización da mesma.
Desactivar Notificacións
- Se pulsamos este botón desactivaremos as notificacións por Telegram. Deste xeito deixaremos de recibir os avisos previos á carga e á finalización da mesma.
Estadísticas dp proxecto
- 7000 lineas de código PHP
- 1500 lineas de código JavaScript
- + Python, CSS, HTML ...