Modbus. Obtén los datos de tu Inversor Solar. Huawei. Node Red.
Mqtt. Obtén los datos de tu Inversor Solar. Node Red. Victron Multiplus.
En el capítulo de hoy aprendemos como funciona el protocolo de comunicación Modbus para los inversores Huawei. De esta manera vamos a ser capaces de obtener toda la información de nuestro Inversor Solar de una manera fácil y sencilla. En este capítulo realizamos las operaciones con un inversor Huawei.
Descargas adicionales solo para miembros!!!!
Aquí tenéis la lista de los componentes necesarios para montar tu propia instalación:
¡También te pueden interesar estos otros vídeos!
Instala el software en la raspberry
Una introducción a NodeRed
Hola Luis, yo tengo un huwai sun 2000 monitorizado con raspberry y puedo sacar los datos desde nodered con Id0. El truco esta en quitar la opcion “queue command” en la configuracion del cliente modbus. Pruebalo.
Un saludo
comprobado…manda narices….que cerca esabamos jajajaja gracias!
De nada, me pegue un rato bueno hasta que di con ello. Me daba rabia no poder sacar los datos directamente desde modbus con nodered. Despues tus videos me ayudaron en ganar tiempo a la hora de sacar los datos y pintarlos en grafana, asi que un placer en poder ayudar en algo.
Gracias a ti por tu trabajo!
Hola Victor y Luis, tengo un inversor Solar Huawei SUN 2000 4.6 Cuando intento conectar por Modbus me dice Error: «Port not open», Eta claro que el puerot 502 no está abierto. LE tengo que poner otro puerto? o tencog que abrir este puerto en el huawei, sabeis como? Gracias de antemano!!
Hola, desde la version 117 de firmware Huawei a dejado de soportar Modbus Tcp por la wifi integrada. Hay que comprar un dongle o sacar los datos por modbus RTU directamente por el puerto RS452 del inversor.
Gracias a ambos!
A mí también me ha funcionado el truki y leo por ModBus TCP directamente (por wifi) sin problemas.
Agradecería que dejaras un enlace par poder descargar el documento de Huawei de la definición del interface, porque no lo encuentro.
Gracias y Saludos
Hola Fede, dices que lo haces por Wifi. Así deberia hacerlo yo, ya que no he pasado cable de red.. Usas también el puerto 502?
a mi me da error…
Gracias de antemano.
me auto-respondo. Solucionado. Hoy ya funciona.
Gracias de todos modos
Hola, estoy empezando con la monitorización con Node red del Huawei L1, pero no consigo leer nada, podéis pasarme la configuración para leer algún campo.
Me salen estos errores… tanto con Id0 o id1, y quitando lo de la opcion “queue command”
5/10/2021 22:38:44node: Huawei
msg : error
«Error: Client Not Ready To Read At State init»
5/10/2021 22:38:44node: b2ee24d007e4bd1e
polling : msg.payload : string[0]
«»
Muchas gracias.
estas configurando bien la ip del inversor en el modbus? tienes activado modbus en el inversor?
Gracias Luis, he probado sin Pyton con el truquito de desconectar lo de la opcion “queue command” y también siguiendo el video con Pyton, y me dice conectado pero no me sale nada, también he probado el mosquitto en la Raspberryy , y me funciona mandando y recibiendo cosas, pero no consigo traer nada del inversor. Entré la otra noche por la web al inverso y no he encontrado nada para poder activar o ver si esta activado el modbus, podria ser algo de activar en el inversor? o alguna cosa que hago mal?, no se como comprobar lo que me esta fallando…
Gracias, encontré el problema, tema de cambios de ip–, la cosa mas tonta es la más difícil de ver, un saludo, sigo con el video..
Hola, me pasa exactamente lo mismo. ¿como lo solucionastes?
Recién instalado un inversor Huawei. Confirmar que puedo conectarme por modbus, con ld0 quitando queue command.
Buenas Luis,
Tengo un lío considerable. En el archivo que has adjuntado de registros modbus de Huawei, indica que es para el smartlogger? El «smartlogger» está dentro del inversor Huawei ? O es un medidor de potencia aparte? Actualmente en mi instalación tengo: Un inversor SUN2000-4.6KTL-L1 + Smart Power Sensor DDSU666-H HUAWEI. No encuentro por ejemplo cual debería ser el registro que me permita saber el consumo de casa. Según este link:
https://javierin.com/wp-content/uploads/sites/2/2021/09/Solar-Inverter-Modbus-Interface-Definitions.pdf
Debería ser el registro 37113, pero cuando rescato este valor en nodered, no me cuadra con el valor de consumo de casa que me da la app fusión solar ¿Alguna idea? ¿Qué registros son los correctos? los que salen en el documento de smartlogger o los del link que he puesto?
Jesús, te paso una lectura del registro 37113 ( INT 32, dos registros y dependiendo del primero es el segundo, inyectando o cogiendo de red, >0 Vierte a la red, si <0 consumo de red.
37113 13: 0 o Inyeccion 13: 65535 cogiendo de la red-
37114 14: 813 ( -813W) 14: 65142 393W de la calle (13-14)
he leído los datos del inversor de las tres maneras , con Modbus directo, con Mqtt con pyton, y la otra con el SP32 activando el MQTT y leer desde el Nodered, con los videos del "Jefe" se aprende bastante, un saludo y gracias a todos, siempre se aprende, y que conste que seré de los últimos en conocimientos, pero me gustan estos temas, no se si estará bien explicado pero de esta forma lo tengo yo.
Buenas Juan,
Gracias por la respuesta, pero no acabo de ver como funciona.
1. No se que lista de registro elegir si la que puse el link o la que está en este video. En el ejemplo que pones 37113 si que lo veo en la lista que puse el link, pero no en la del video. La 37114 que indicas no la veo en ninguna de las 2 listas.
2. Siguiendo con el ejemplo usando modbus con nodered, si quiero implementar el registro 37113 (que según info es la energía que está consumiendo la casa) que datos pondrías en el buffer-parser?
Type: INT32 Name: Nombre Generico Length:2 Offset: (Aqui es lo que no se que poner exactamente???)
Exactamente el mismo caso que el de Juan Garcia:
22/11/2021 19:37:24node: huawei 3ktl l1
msg : error
«Error: Client Not Ready To Read At State init»
22/11/2021 19:37:24node: 8b76c66826a0eae2
polling : msg.payload : string[0]
«»
Ni poniendo id0 o id1 o nada. con el puerto 502 ó 1502 y con queue commands desactivado.
ip del inversor correcta y activo, al menos asi me lo dice el fing.
No se que mas probar!
Podrías Juan García enviarme copia de la configuración de tu nodo Edit «modbus-client node» para ver que estoy haciendo mal.
Te lo agradecería.
Buenas tardes Luis.
Ante todo gracias por tus vídeos, son la caña. No se encuentra nada igual por ningún sitio, también quiero decirte dónde puedo encontrar los mapas de memoria ver inversor Huawei, te lo agradecería mucho si me puedes ayudar.
Un saludo.
Hola gente. Me pasa lo mismo. Quitando la opción queue commands y la IP bien. Me dice que no está listo para leer en state init.
Hola,
Gracias por el video, estoy empezando con estas cosas y vuestro canal es genial.
Quiero sacar los datos desde windows 10 ya que no tengo raspberry. Instalé node red y la paleta de modbus y me da problemas con el puerto le ponga el unit id 0 o 1, en el módulo me dice que conectado y cuando hace la petición de lectura me dice :
{«topic»:»polling»,»from»:»PV1 Voltage 32016″,»payload»:»»,»unitId»:0,»error»:»Error: Port Not Open»,»_msgid»:»ce02a007ccfc5fbf»}
He comprobado el puerto del inversor y me dice que está abierto
tnc 192.168.1.130 -port 502
ComputerName : 192.168.1.130
RemoteAddress : 192.168.1.130
RemotePort : 502
InterfaceAlias : Wi-Fi
SourceAddress : 192.168.1.171
TcpTestSucceeded : True
En windows he desabilitado el firewall pero me sigue diciendo lo mismo, creo que la configuración del node red no está bien y me estoy volviendo un poco loco ¿algún consejo? ¿hay algún post donde pueda ver como se puede hacer esta configuración sin raspberry?
Gracias
Hola, he tratado de implementar con mqtt, la configuración que he puesto es :
broker_url = «192.168.1.171»
broker_port = 1883
base_topic_huawei= «/huawei/SUN2000»
ip_del_inversor = «192.168.1.130»
y me falla al conectar :
Connecting to broker 192.168.1.171
Traceback (most recent call last):
File «C:\Users\Usuario\Documents\py_para_sun2000\Modbus-TCP_Huawei_to_MQTT_DOMOTICA_SOLAR.py», line 187, in
clientMQTT.connect(broker_url, broker_port) #connect to broker
File «C:\Python310\lib\site-packages\paho\mqtt\client.py», line 914, in connect
return self.reconnect()
File «C:\Python310\lib\site-packages\paho\mqtt\client.py», line 1044, in reconnect
sock = self._create_socket_connection()
File «C:\Python310\lib\site-packages\paho\mqtt\client.py», line 3685, in _create_socket_connection
return socket.create_connection(addr, timeout=self._connect_timeout, source_address=source)
File «C:\Python310\lib\socket.py», line 845, in create_connection
raise err
File «C:\Python310\lib\socket.py», line 833, in create_connection
sock.connect(sa)
ConnectionRefusedError: [WinError 10061] No se puede establecer una conexión ya que el equipo de destino denegó expresamente dicha conexión
Parece que no conecta con el servidor mqtt, hay algo que tenga que instalar para que la máquina actue como servidor?
¿es ?
Se ha resuelto actualizando el firmware del inversor y el Dongle, saludos
Buenos días, voy a hacerlos una consulta, a ver si alguien puede echarme una mano, que ya estoy un poco desesperado:
Tengo mi Raspberry conectada a mi router por cable e intento conectarla al inversor por Wifi. Para ello, lo que he hecho (tras mirar un poco por itnternet) ha sido ejecutar en Putty el comando sudo nano /etc/wpa_supplicant/wpa_supplicant.conf e introducir el siguiente texto:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
ap_scan=1
update_config=1
country=ES
network={
ssid=»SUN2000-102140113242″
psk=»Changeme»
id_str=»AliasRed2″
}
¿Es este texto correcto? Un poco más adelante indico cuáles son los parámetros de mis conexiones
Ahora mismo, esto es lo que me sale al ejecutar el comando ip addr
aaaitsi@raspberrypi:~ $ ip addr
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether e4:5f:01:ac:3d:c9 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.27/24 brd 192.168.0.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::89a2:8af3:bc9b:bb53/64 scope link
valid_lft forever preferred_lft forever
3: wlan0: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether e4:5f:01:ac:3d:ca brd ff:ff:ff:ff:ff:ff
inet 192.168.0.25/24 brd 192.168.0.255 scope global deprecated noprefixroute wlan0
valid_lft forever preferred_lft forever
inet6 fe80::7826:8608:c496:f4ae/64 scope link
valid_lft forever preferred_lft forever
Si ejecuto el comando ifconfig obtengo:
eth0: flags=4163 mtu 1500
inet 192.168.0.27 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::89a2:8af3:bc9b:bb53 prefixlen 64 scopeid 0x20
ether e4:5f:01:ac:3d:c9 txqueuelen 1000 (Ethernet)
RX packets 11921 bytes 2676638 (2.5 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 20468 bytes 3774825 (3.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (Local Loopback)
RX packets 158 bytes 15401 (15.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 158 bytes 15401 (15.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4163 mtu 1500
inet 192.168.0.25 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::7826:8608:c496:f4ae prefixlen 64 scopeid 0x20
ether e4:5f:01:ac:3d:ca txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 67 bytes 15203 (14.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Como se observa, no aparece el inversor por ningún lado, aunque sí puedo verlo ejecutando el comando sudo iwlist wlan0 scan | grep ESSID
aaaitsi@raspberrypi:~ $ sudo iwlist wlan0 scan | grep ESSID
ESSID:»vodafoneBA1219″
ESSID:»SUN2000-102140113242″
ESSID:»REDCASA_2_PLUS»
ESSID:»REDCASA_2″
ESSID:»vodafoneBA1219″
ESSID:»REDCASA_2″
ESSID:»vodafoneEA00″
No sé si estoy tratando de conectarme de forma correcta al inversor. También he tratado de hacerlo usando VNC Server y aunque parece que sí me conecto (ya que así lo indica el símbolo del Wifi, al hacer un ifconfig en la Raspberry, tampoco veo la IP del inversor (192.1.200.1) por ningún lado
¿Alguna idea?
Gracias de antemano!!
Buenas, creo que a partir de cierta versión de SW del inversor esto ya no es posible por wifi, no?