Página 1 de 3

Monitorización Voltronic-Axpert-Must con ESP32 - Arduino

Publicado: 27 Ene 2019, 10:48
por Corazon_de_perro
visual.jpg
En este brico se monitoriza un inversor Axpert mediante un ESP-32. Es válido para la mayoría de inversores Axpert. Para el caso de inversores "Infini" el protocolo de comunicaciones es distinto, por lo que será necesaria una modificación.

El ESP32 es el modelo más apropiado para este brico, ya que se puede programar fácilmente con el IDE de Arduino, incluye WIFI y una cantidad considerable de pines digitales y analógicos. Si utilizamos una placa como Arduino UNO, aparte, necesitaremos un ESP01 para enviar los datos por WIFI. Si utilizamos una del tipo Nodemcu, sólo tenemos un pin analógico, lo que podría dificultar un desarrollo posterior del brico.

La lista de la compra podría ser ésta:

1 ESP32 Podemos adquirirlo por Amazon si tenemos prisa, o más barato por Aliexpress.
1 MAX3232 http://www.ti.com/lit/ds/symlink/max3232.pdf Yo adquirí unos cuantos en electronicaembajadores.com.
5 condensadores de 100 nF. También los adquirí en electronicaembajadores.com.
1 Protoboard
Cables y conectores. Podemos utilizar el RJ45-RS232 que suele venir con el inversor.

La idea es enviar el comando "QPIGS" por un UART del ESP32 al MAX3232 para adaptar los niveles y este ultimo comunica con el inversor. El MAX3232 recibe respuesta, adapta niveles y reenvía esos datos al ESP32. Una vez que tenemos esos datos, los enviamos por WIFI a un servidor. Esto último es bastante sencillo con Linux y puede convertirse en tedioso si utilizamos Windows, o al menos, esa fue mi experiencia.

El aspecto general del montaje en protoboard es así:
montaje.jpg
El esquema, bastante sencillo, es este:
Esquema.jpg

El código para utilizar IDE de Arduino es:

Código: Seleccionar todo

#include <ESP8266WiFi.h>
#include <WiFiUdp.h>

const char* ssid = "vodafone8DD8";
const char* password = "W524HUV8JHGGZD";

WiFiUDP Udp;
unsigned int localUdpPort = 4210;  // local port to listen on
char incomingPacket[255];  // buffer for incoming packets
char  replyPacket[] = "Hi there! Got the message :-)";  // a reply string to send back


void setup()
{
  Serial.begin(57600);
  //Serial.println();

  //Serial.printf("Connecting to %s ", ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    //Serial.print(".");
  }
  ///Serial.println(" connected");

  Udp.begin(localUdpPort);
  //Serial.printf("Now listening at IP %s, UDP port %d\n", WiFi.localIP().toString().c_str(), localUdpPort);
}


void loop()
{
  int packetSize = Udp.parsePacket();
  if (packetSize)
  {
    // receive incoming UDP packets
    //Serial.printf("Received %d bytes from %s, port %d\n", packetSize, Udp.remoteIP().toString().c_str(), Udp.remotePort());
    int len = Udp.read(incomingPacket, 255);
    
    if (len > 0)
    {
      incomingPacket[len] = 0;
    }
    Serial.write(incomingPacket);
    //Serial.printf("UDP packet contents: %s\n", incomingPacket);
    //Serial.write(incomingPacket);

    // send back a reply, to the IP address and port we got the packet from
    //Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
    //Udp.write(replyPacket);
    //Udp.endPacket();
  }
}
ESP32-Voltronic.ino

Si utilizáis Fritzing, tenéis toda la información del montaje en este archivo:

ESP32-Voltronic.fzz

Una vez que tenemos los datos de salida por WIFI en el ESP32, hemos de recepcionarlos de alguna manera.
Voy a insertar unos ejemplos de cómo lo tengo configurado.
Primero, conectamos con la base de datos:
config.rtf
Renombrados este archivo a config.php

Enviamos los datos con:
iot.rtf
Renombramos este archivo a iot.php


Si queremos que funciones tal cual está, hemos de definir una base de datos con el nombre de "sensores" y en ella una tabla "valores". Los campos se muestran a continuación:
base de datos.jpg

Los datos recibidos tendrán este aspecto:
datos.jpg
Finalmente, podemos ver los datos de forma gráfica con el archivo que sigue, que renombramos a hibrid.php
hibrid.rtf
Tendríamos algo con este aspecto:
visual.jpg

Si no estás acostumbrado a manejar servidores, puedes enviar los datos a "thingspeaks" que es muy sencillo. Sería necesario modificar el código para introducir las claves que nos proporcionen.

No es muy complicado, hace unos meses no tenía ni idea de todo esto, pero tuve buenos maestros, @nikitto y @mleon, pese a que no era buen alumno...

Re: Monitorización Voltronic-Axpert con ESP32

Publicado: 27 Ene 2019, 11:19
por Homo_non_sapiens
Gabriel_2018 escribió: 27 Ene 2019, 10:48En este brico se monitoriza un inversor Axpert mediante un ESP-32 ...
Muy buen hilo, Gabriel; puede ser útil para muchos propietarios de un Axpert ...

Re: Monitorización Voltronic-Axpert con ESP32

Publicado: 27 Ene 2019, 12:33
por Corazon_de_perro
Homo_non_sapiens escribió: 27 Ene 2019, 11:19
Gabriel_2018 escribió: 27 Ene 2019, 10:48En este brico se monitoriza un inversor Axpert mediante un ESP-32 ...
Muy buen hilo, Gabriel; puede ser útil para muchos propietarios de un Axpert ...
A ver si te animas!

Re: Monitorización Voltronic-Axpert con ESP32

Publicado: 27 Ene 2019, 15:02
por Homo_non_sapiens
Gabriel_2018 escribió: 27 Ene 2019, 12:33A ver si te animas!
Como sabes, soy muy aficionado al WiFi con sandalias - no obstante tendré que animarme. Es que quiero que mi Infini esté en modo SbU (parám. #01) durante el período punta, pero en modo SUb durante el período valle. Es decir, que en período punta chupe de batería la energía que le falta, en caso de no bastar el sol, pero que en período valle apoye con energía de la red. Esta configuración no es posible con las opciones de fábrica, es necesario el acceso remoto a los parámetros (con Arduino o ESP32)

Re: Monitorización Voltronic-Axpert con ESP32

Publicado: 27 Ene 2019, 17:12
por Corazon_de_perro
Homo_non_sapiens escribió: 27 Ene 2019, 15:02
Gabriel_2018 escribió: 27 Ene 2019, 12:33A ver si te animas!
Como sabes, soy muy aficionado al WiFi con sandalias - no obstante tendré que animarme. Es que quiero que mi Infini esté en modo SbU (parám. #01) durante el período punta, pero en modo SUb durante el período valle. Es decir, que en período punta chupe de batería la energía que le falta, en caso de no bastar el sol, pero que en período valle apoye con energía de la red. Esta configuración no es posible con las opciones de fábrica, es necesario el acceso remoto a los parámetros (con Arduino o ESP32)
Supongo que no será difícil cambiar de SBU a Utility o viceversa en función de la hora u otros condicionantes.

Re: Monitorización Voltronic-Axpert con ESP32

Publicado: 28 Ene 2019, 09:31
por Homo_non_sapiens
Gabriel_2018 escribió: 27 Ene 2019, 17:12Supongo que no será difícil cambiar de SBU a Utility o viceversa en función de la hora u otros condicionantes
Tampoco creo que sea difícil. Pero como no lo he hecho nunca, leeré atentamente lo que vas a poner en este hilo
Al decir que el control de los Axpert es diferente al de los InfiniSolar, supongo que te refieres a los Infini "de pata negra"
Yo tengo el Infini V, que es como un Axpert "tuneado" - supongo que se controla casi igual que a un Axpert

Re: Monitorización Voltronic-Axpert con ESP32

Publicado: 02 Feb 2019, 02:00
por Mleon
Una posible variante podría ser utilizar MQTT para publicar los valores que se lean del Híbrido

Esto permitiría por ejm tener muy rápidamente el híbrido monitorizado desde el móvil descargandote una apps de MQTT y utilizando un Broker MQTT en la nube o en local si tenemos por ejm una RPI

Si ademas se quiere persistencia en BD, siempre se puede como indicas crear una BD e ir guardando los registros

Re: Monitorización Voltronic-Axpert-Must con ESP32

Publicado: 04 Feb 2019, 23:37
por Vitriolo
Más adelante, aprpovechando que tengo que hacer algun PCB para mí, os puedo diseñar uno simple para esto de la monitorización con ESP32, que os parece ?
Componentes SMD o de inserción ?

Re: Monitorización Voltronic-Axpert-Must con ESP32

Publicado: 04 Feb 2019, 23:47
por Corazon_de_perro
[mention]Vitriolo[/mention]

En un adjunto .fzz, que se abre con Fritzing hay algo hecho, pero sin acabar. Si controlas, puedes perfeccionar ese.

Re: Monitorización Voltronic-Axpert-Must con ESP32 - Arduino

Publicado: 21 May 2019, 03:54
por clopez
buenas, desde Argentina, soy Cesar, tengo un infinisolar V 4kw ( en realidad un mppsolar hybrid V 4k ) el protocolo es el 18, creo que el mismo, tengo un raspberry con debian, mosquito MQTT, influxdb y grafana para graficar. Actualmente tengo conectado un sdm230 ( http://www.eastrongroup.com/productsview/72.html ) a un Nodemcu a traves de un adaptador modbus de esos de 1 dolar y medio... conclusion: el esp lee a traves del sdm230 todos tos parametros de energia importada y exportada y los guarda en el rpi. Ahora quiero integrar el inversor a la base de datos... no hay mucha gente que haya tenido exito con los infinisolar V, asi, que estoy a entera disposicion de ustedes para compartir mi proyecto y a la vez recibir ayuda de quien pueda y tenga voluntad de hacelo. Muy buen foro, gracias de antemano.

Re: Monitorización Voltronic-Axpert-Must con ESP32 - Arduino

Publicado: 21 May 2019, 10:09
por Homo_non_sapiens
Quiero que mi Infini V esté en modo "red" hasta las 19:00h y en modo "batería" desde las 19:00h hasta las 23:00h, cuando empieza el período valle de la TDH
Para eso me vendría genial, cambiar el parámetro #01 del Infini con un Arduino, a las horas programadas - y lo voy a hacer!
Si, Gabriel_2018, abandonaré el "WiFi con sandalias" (solo para este parámetro) y me animo a ser más "moderno". Bueno, pienso colocar el Arduino al lado del híbrido y comunicar por cable, nada de WiFi ... :oops:

Estoy seguro, que con los enlaces de este hilo lo conseguiré. Pero como soy vago por naturaleza y no disfruto mucho, optimizando código de programación, pregunto:
Alguna/o de vosotras/os ya ha conseguido controlar un Axpert (u otro híbrido) de Voltronic con un Arduino o NodeMCU? (me refiero a Arduino, no a la RPi)
En caso afirmativo, que sea tan amable de publicar aquí el código para Arduino, por favor ... :amigos

Re: Monitorización Voltronic-Axpert-Must con ESP32 - Arduino

Publicado: 21 May 2019, 15:58
por Corazon_de_perro
¿Tienes a mano el protocolo?

En primer lugar, si quieres utilizar un Arduino o un ESP32, o similares, necesitas un conversor TTL-RS232, ya que el inversor no es host USB, por lo que necesitas comunicar por la entrada RS-232.

Re: Monitorización Voltronic-Axpert-Must con ESP32 - Arduino

Publicado: 21 May 2019, 16:23
por Homo_non_sapiens
Gabriel_2018 escribió: 21 May 2019, 15:58¿Tienes a mano el protocolo?
No lo tengo a mano; pero es sencillo; intentaré sacármelo de la manga. Básicamente, son solo 4 líneas de código:

(0) El Infini duerme desde las 01:00h hasta las 09:00h (parámetros #32 y #33) y el sistema conmuta a red; este paso no requiere control por Arduino

(1) A las 09:05h, parámetro #01 = SbU (modo batería) y parámetro #18 = 58.0 (Vflot = 58.0V). Nota: Vabs = 58.0V siempre
Para que el regulador externo pueda hacer la absorción y el regulador del Infini entregue toda la producción de placa. Lo que falte, que sea de la red (p.valle)

(2) A las 12:00h, parámetro #01 = SUb (modo red) y parámetro #18 = 54.5 (Vflot = 54.5V)
Para que el Infini pueda sumar FV y red (lo menos posible, por ser período punta) y para que el Infini permita la flotación a 54.5V

(3) A las 19:00h, parámetro #01 = SbU (modo batería)
Ya no hay sol! El Infini, que chupe de batería, porque hasta las 23:00h sigue siendo período punta ... que para algo tengo la batería

(4) A las 23:00h, parámetro #01 = SUb (modo red)
A las 23:00h empieza el período valle, y el Infini puede chupar de red

(0) Entre las 01:00h y las 09:00h, el Infini duerme (parámetros #32 y #33) y el sistema está directamente a red; este paso no requiere control por Arduino

- El Arduino puede estar apagado entre las 23:05h y las 09:05h (con un temporizador), con lo que se resetaría su contador interno
- En vez de un reloj para identificar la hora del día, se podría usar el contador del Arduino, y programar interrupts

Nota 1: En un día todo nublado, cargaré la batería desde la red en p.valle, y que el Infini chupe de batería en p.punta. Esto lo haré manualmente

Nota 2: Me podría ahorrar el paso (4) y que el parámetro #33 apague el Infini a las 23:00h. Pero la conmutación automática, al apagarse el Infini, a veces va acompañada de un pequeño apagón de luz, y no quiero que éste sea a las 23:00h. Si es a las 01:00h, todos dormimos y el apagoncito no molesta


Gabriel_2018 escribió: 21 May 2019, 15:58En primer lugar ... necesitas un conversor TTL-RS232, ya que el inversor no es host USB, por lo que necesitas comunicar por la entrada RS-232
Vale; creo que es facil conseguir un conversor TTL-RS232 apropiado

Por ejemplo, este: https://www.cetronic.es/sqlcommerce/dis ... gIZ7fD_BwE

O este (que parece ser igual): https://www.aliexpress.com/item/MAX3232 ... 52700.html

Re: Monitorización Voltronic-Axpert-Must con ESP32 - Arduino

Publicado: 21 May 2019, 18:11
por nikitto
@Homo_non_sapiens, ¿ Te importaría publicar una imagen con los puertos de comunicación de tu híbrido ?

Re: Monitorización Voltronic-Axpert-Must con ESP32 - Arduino

Publicado: 21 May 2019, 18:18
por Homo_non_sapiens
nikitto escribió: 21 May 2019, 18:11@Homo_non_sapiens, ¿Te importaría publicar una imagen con los puertos de comunicación de tu híbrido?
Con mucho gusto, nikitto! Ahi va ...
Es el modelo de 4kW; los puertos #15 (USB) y #16(RS232). Creo que es la misma tarjeta de comunicación, que ha petado Mleon un día de estos
.
Infini_Ports.JPG

Re: Monitorización Voltronic-Axpert-Must con ESP32 - Arduino

Publicado: 21 May 2019, 19:57
por nikitto
Homo_non_sapiens escribió: 21 May 2019, 18:18
nikitto escribió: 21 May 2019, 18:11@Homo_non_sapiens, ¿Te importaría publicar una imagen con los puertos de comunicación de tu híbrido?
Con mucho gusto, nikitto! Ahi va ...
Es el modelo de 4kW; los puertos #15 (USB) y #16(RS232). Creo que es la misma tarjeta de comunicación, que ha petado Mleon un día de estos
.
Infini_Ports.JPG
Siento ser un pesado, pero lo tienes a huevo para conectar una Raspberry a dicho híbrido.

Es más, puedes probarlo usando el programa Voltron que subimos al foro: viewtopic.php?f=22&t=314

Re: Monitorización Voltronic-Axpert-Must con ESP32 - Arduino

Publicado: 21 May 2019, 20:23
por Invitado
nikitto escribió: 21 May 2019, 19:57
Homo_non_sapiens escribió: 21 May 2019, 18:18
nikitto escribió: 21 May 2019, 18:11@Homo_non_sapiens, ¿Te importaría publicar una imagen con los puertos de comunicación de tu híbrido?
Con mucho gusto, nikitto! Ahi va ...
Es el modelo de 4kW; los puertos #15 (USB) y #16(RS232). Creo que es la misma tarjeta de comunicación, que ha petado Mleon un día de estos
.
Infini_Ports.JPG
Siento ser un pesado, pero lo tienes a huevo para conectar una Raspberry a dicho híbrido.

Es más, puedes probarlo usando el programa Voltron que subimos al foro: viewtopic.php?f=22&t=314
Tu aprieta que igual conseguimos que se compre un móvil, con el mismo paquete... :P

Re: Monitorización Voltronic-Axpert-Must con ESP32 - Arduino

Publicado: 21 May 2019, 21:13
por Mleon
Yo también animo a enchufar una Rpi al híbrido por USB en lugar de usar un arduino

Si no quieres tener control remoto via Wifi o Lan (Web, Telegram, etc) por el motivo que sea, al menos en local es bastante fácil mandar los comandos al Híbrido con la lógica que se quiera y poder guardar cada X seg los valores significativos del Híbrido (Vbat, Ibat etc) y ver las distintas gráficas localmente en la Rpi si se utiliza una pantalla/teclado que se tenga sobrante enchufada a la Rpi

A mi al menos me da tranquilidad ver cuando quiera por ejm la gráfica diaria de carga para analizar evolución del SOC, periodo de absorción, Icola, uso de excedentes, etc
2019_05_21.JPG
Es verdad que una RPI+Tarjeta SD es algo mas cara que un arduino pero a mi entender no es significativo en una inversión FV

Re: Monitorización Voltronic-Axpert-Must con ESP32 - Arduino

Publicado: 21 May 2019, 22:04
por Homo_non_sapiens
nikitto escribió: 21 May 2019, 19:57Siento ser un pesado, pero lo tienes a huevo para conectar una Raspberry a dicho híbrido. Es más, puedes probarlo usando el programa Voltron que subimos al foro: ...
Mleon escribió: 21 May 2019, 21:13Yo también animo a enchufar una Rpi al híbrido por USB en lugar de usar un arduino
Sé que habéis creado un control completo para sistemas FV genial, en base a una RPi, y que muchos foreros ya lo usan - y están muy satisfechos y agradecidos. Creo que vuestro PVControl+ es mejor que cualquier control comercial disponible. Chapeau, de verdad!
También sé que hace poco, habéis publicado el programa Voltron para RPi, que hace exactamente lo que yo quiero - genial !! Yo diría que no hay nada mejor - si uno ya tiene el PVControl+ instalado

Mleon escribió: 21 May 2019, 21:13Es verdad que una RPI+Tarjeta SD es algo mas cara que un arduino pero a mi entender no es significativo en una inversión FV
Totalmente de acuerdo, Mleon: Para un sistema FV no importa, si el control por micro cuesta 20€ o 100€. Pero soy minimalista y creo, que para un control tan "primitivo" como yo lo quiero, un Arduino es más que suficiente. Sin quitar nada de mérito a vuestro brico -que es verdaderamente admirable y altruista- lo veo interesante, conseguir un control de los híbridos Voltronic en base a Arduino, si es posible. Creo que muchos propietarios de estos híbridos podrían interesarse por el proyecto - y para un control del sistema FV más completo tendríamos vuestro PVControl+

Re: Monitorización Voltronic-Axpert-Must con ESP32 - Arduino

Publicado: 21 May 2019, 22:08
por Homo_non_sapiens
jeopardize escribió: 21 May 2019, 20:23Tu aprieta que igual conseguimos que se compre un móvil, con el mismo paquete... :P
Seguro, un móvil con sistema operativo Android de Google, para que todo el mundo sepa el color de las bragas que llevo en cada momento ... :down

Huawei saldrá ganando, si ahora lanza su propio sistema operativo, sin los inconvenientes de Android ...