SolarMobi

De Manuais Informática - IES San Clemente.
Ir a la navegación Ir a la búsqueda

Introducción

Información sobre o Proxecto.

Obxetivos do proxecto

Recursos

Fonte de enerxía fotovoltaica

Estructura

Materiais empregados

Consulta de enerxía e información

Cargador de coches eléctricos marca Legrand

Características

Rexistros dispoñibles

Raspberry PI en cargador Legrand

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:

Conexion-USB-RS485-Cargador-Legrand-1.jpg Conexion-USB-RS485-Cargador-Legrand-2.jpg Conexion-USB-RS485-Cargador-Legrand-3.jpg Conexion-USB-RS485-Cargador-Legrand-4.jpg

Raspberry Pi en inversor SMA

Metodoloxía empregada

Raspberry Pi en cargador Legrand

Instalación básica

# Instalar a imaxen por defecto na microSD
# Conectarlle un monitor e teclado.
# Acceder có usuario: pi e contrasinal: raspberry

# 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

Interacción con cargador Legrand

Comunicación con servidor Web

Raspberry Pi en Inversor SMA

Instalación básica

Instalación software adiciona e aplicación

Interacción con aplicación SolarMobi

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

Lo tendrás que leer y procesar ya que ahí están varios de los datos necesarios para hacer la petición de envío de datos a SolarMobi.

En el fichero que te envío está el siguiente contenido:

{
    "idcentro":"1",
    "centronombre":"Universidade Laboral",
    "codigoseccom":"6cf78965",
    "api":"https://solarmobi.iessanclemente.net/api/v1/mediciones/1"
}


Para enviar las mediciones a SolarMobi, tienes que leer ese fichero inversor.json (procesarlo para sacar de ahí parte de la información que necesitas para enviar los datos). El envío de datos lo puedes hacer con una petición CURL de tipo POST.

Te pongo aquí la informació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 puedes obtener:

Si se han grabado correctamente los datos obtendrás 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"}

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

Continuará