Hoy voy a hablar de algo que aun no he tocado directamente y es el tema de inversores solares. Como ya adelanté en mi Twitter, estoy instalando en casa Energía Solar Fotovoltaica, y para ello he usado un inversor Solax X1 Boost de 5kw. Obtendremos los datos a través de la API.
Vamos a ver sin entrar en detalle que son y como funcionan los inversores en general.
¿Qué es un Inversor Fotovoltáico?
Las placas colares fotovoltaicas generan electricidad en corriente continua en corriente alterna para ser consumida por los electrodomésticos de casa.
Inversores de conexión a red
Son aquellos inversores que son capaces de funcionar conectados a la red eléctrica de la compañía. Es el caso de mi Solax X1 Boost, pero también hay otros como Fronius, Sofar Solar, …
Inversores con baterías
Estos inversores son aquellos que tienen capacidad de funcionar con baterías. Estos inversores son conocidos normalmente con hybrid o híbridos. Estas baterías ayudan a almacenar la electricidad no consumida para ser consumida cuando no tengamos aporte solar o cuando necesitemos más de lo que las placas sean capaz de darnos.
Existen inversores que tienen que funcionar obligatoriamente con estas baterías conectadas, aunque ya son los menos, y otros, la mayoría de actuales, que pueden funcionar perfectamente sin estas baterías.
Estos inversores son los que se usan en conexiones aisladas, aquellos que no están conectados a una red de compañía, y por lo tanto no tienen electricidad más que las que ellos mismos generan.
En este tipo de inversores, podemos encontrar Solax Hybrid, Victron, Voltronic Axpert, MPP Solar, Huawei Sun, Goodwe, …
Monitorización de Inversores Solax
La mayoría de inversores tienen un sistema de monitorización. Solax no iba a ser menos y también tiene su plataforma de monitorización: https://www.solaxcloud.com/ y también tiene una app tanto para Android como para Iphone.
Desde la web podremos ver los datos del inversor y sus gráficas, al igual que desde la app.
En nuestro caso, lo que nos gustaría es obtener los datos para poder procesarlos con Grafana como ya vimos en otro post.
Acceso a la API de Solax
Lo primero es solicitar el acceso a la API. Para ello, desde la propia web, podemos solicitarlo.
Aunque el menú está en Español, el área de servicio está en Checo.
Desde ese menú nos da el acceso a la API y nos enlaza al manual.
Aquí nos da el acceso con nuestro TokenID y la URL que necesitaremos para hacer las peticiones. Como vemos, hay un apartado SN que está en blanco después del = . Ahí es donde tenemos que poner el número de serie del interface de red del inversor, no del propio inversor.
Estos datos, si no los conocemos, podemos obtenerlo dentro del menú de Inversores. Ahí obtenemos tanto el número de serie del inversor, como del módulo de comunicación que es el que nos interesa.
Petición de datos a la API
Con los datos anteriores, ya podemos realizar llamadas a la API y obtener los datos de nuestro Solax.
Para ello vamos a hacer una llamada con curl y obtendremos un json que procesaremos con jq. En mi caso, esto es lo que recibí:
curl -s 'https://www.eu.solaxcloud.com:9443/proxy/api/getRealtimeInfo.do?tokenId=XXXXXXTOKENIDXXXXXXXXX&sn=XXXXXXSNXXXXXXX' | jq
Interpretación de datos
Como hemos visto en la imagen anterior obtenemos 3 grupos:
- exception: Respuesta del server.
- result: Datos.
- sucess: Estado de la solicitud.
A nosotros lógicamente lo que nos interesa es el apartado de result.
ITEM | DESCRIPCIÓN | VALOR | UNIDAD |
---|---|---|---|
inverterSN | Número Serie del Inversor | - | - |
sn | Número Serie de la interface WiFi / Lan | - | - |
acpower | Total de potencia del Inversor | 1 | W |
yieldtoday | Energía AC generada hoy | 1 | KWh |
yieldtotal | Energía AC generada en total | 1 | KWh |
feedinpower | Energía consumida de Red | 1 | W |
feedinenergy | Energía de entrada total | 0.01 | KWh |
consumeenergy | Consumo total de energía | 0.01 | KWh |
feedinpowerM2 | Potencia de red | 1 | W |
soc | SOC de la batería | 1 | % |
peps1 | Potencia EPS en R (Trifasica) | 1 | W |
peps2 | Potencia EPS en S (Trifasica) | 1 | W |
peps3 | Potencia EPS en T (Trifasica) | 1 | W |
inverterType | Tipo de Inversor | - | |
inverterStatus | Estado del Inversor | - | |
uploadTime | Tiempo encendido | - |
Código de estado del inversor
Como hemos visto, el estado del inversor nos lo devuelve con un código. En esta tabla podemos ver que código pertenece a cada uno de los estados del inverso Solax:
Código | Estado |
---|---|
100 | Es espera |
101 | Comprobando |
102 | Normal |
103 | Fallo |
104 | Fallo Permanente |
105 | Actualización |
106 | Comprobando EPS |
107 | EPS |
108 | Autocomprobación |
109 | Esperando |
110 | Apagado |
111 | Batería |
112 | Comprobando Gen |
113 | Gen |
Código de tipo de inversor
Al igual que nos pasaba con el estado, Solax nos vuelve el tipo de inversor con un código. No es necesario una revisión, ya que nosotros sabemos que tipo de inversor tenemos, de todas formas esta tabla corresponde a los modelos de inversores Solax.
Código | Modelo |
---|---|
1 | X1-LX |
2 | X-Hybrid |
3 | X1-Hybiyd/Fit |
4 | X1-Boost/Air/Mini |
5 | X3-Hybiyd/Fit |
6 | X3-20K/30K |
7 | X3-MIC/PRO |
8 | X1-Smart |
9 | X1-AC |
10 | A1-Hybrid |
11 | A1-Fit |
12 | A1-Grid |
13 | J1-ESS |
Uso en la monitorización con Grafana
Una vez tenemos los datos y que valor es cada cosa, vamos a ver como integrar la API con Grafana para usarlo en el ejemplo del post anterior.
He adaptado el script para introducir los datos en Influx:
#!/bin/bash
IP=192.168.1.100
PUERTO=8086
BBDD=meter
API="NUMEROAPI"
SN="MISERIAL"
URL="https://www.eu.solaxcloud.com:9443/proxy/api/getRealtimeInfo.do?tokenId=${API}&sn=${SN}"
DATOS=$(curl -s $URL)
LOG=/tmp/meter.log
if [ "$(echo $DATOS | jq .success)" == "true" ]
then
/usr/bin/curl -s -i -XPOST "http://${IP}:${PUERTO}/write?db=${BBDD}" --data-binary "power,meter=solar value=$(echo $DATOS|jq .result.acpower)"
/usr/bin/curl -s -i -XPOST "http://${IP}:${PUERTO}/write?db=${BBDD}" --data-binary "power,meter=general value=$(echo $DATOS|jq .result.feedinpower)"
fi
El único problema que tenemos frente al Shelly es aquí tenemos menos datos y en una actualización de 5 minutos frente al minuto que teníamos antes.
Aquí lo único que hemos usado es la potencia que genera el Solax y la potencia que consumimos o inyectamos a la red.
Podríamos tomar un valor fijo para los Voltios y así obtener los Amperios consumidos.