Hola estimados, tengo ahora mismo un script de python (Pymodbus) que se logra conectar con el inversor ingeteam 30 tl 3play, y le estoy haciendo consultas, sin embargo, las respuestas son algo ambiguas segun la documentación que entrega ingeteam.

Les dejo aquí la documentación:
el _G es el protocolo de los inputs

Start Address = 0 | 1
MB Modicon Address = 30001 | 30002 | 30003
Display order = 1
Show when = always
Description = Actual Date. Year (Uint16). | Actual Date. Month of the Year.(Uint16). | Actual Date. Day of the month.(Uint16).
Magnitude = Year | Month | Day


Aqui les dejo el codigo: Este segun la documentación, extrae el año el mes y el dia que tiene el inversor pero me arroja numeros cambiantes cada ves que lo ejecuto, desde 6543 a 228 raro

Código:
from pymodbus.client.sync import ModbusTcpClient as ModbusClient
from pymodbus.constants import Endian
from pymodbus.payload import BinaryPayloadDecoder as Decoder
import datetime as dt
import time
​
fecha = dt.datetime.now()
​
fecha = fecha.strftime("%Y-%m-%d %H:%M:%S")
​
intentos = 3
cont_intentos = 0
​
# Conexion a Inversor xxx.xxx.xx.xxx
client1 = ModbusClient('xxx.xxx.xx.xxx', port=502)
​
try:
	print('Conectando a Ingeteam xxx.xxx.xx.xxx')
	c1=client1.connect()
	print('Estado conexion: ' + str(c1) + ', a IP: xxx.xxx.xx.xxx')
	while (c1 == True and cont_intentos < intentos):
		try:
			print('Obteniendo datos de inversor')
			result = client1.read_input_registers(30001, 1, unit=1)
			decoder = Decoder.fromRegisters(result.registers, wordorder=Endian.Little, byteorder=Endian.Little)
			ano = decoder.decode_16bit_uint()
​
			result = client1.read_input_registers(30002, 1, unit=1)
			decoder = Decoder.fromRegisters(result.registers, wordorder=Endian.Little, byteorder=Endian.Little)
			mes = decoder.decode_16bit_uint()
​
			result = client1.read_input_registers(30003, 1, unit=1)
			decoder = Decoder.fromRegisters(result.registers, wordorder=Endian.Little, byteorder=Endian.Little)
			dia = decoder.decode_16bit_uint()
​
			print('Ano: '+str(ano) +' Mes: ' + str(mes) + ' Dia: ' + str(dia))
		except Exception as e:
			print('Error al obtener datos: ' + str(e))
			cont_intentos = cont_intentos + 1
		break
	print('Desconectando de Inversor xxx.xxx.xx.xxx')
	close=client1.close()
except Exception as e:
	print('Error al conectar: ' + str(e))