Forum

Unterstützte das Deye Forum

 Deye Hybrid Angebote   Deye Zubehör Produkte

1phasige Deye Wechs...
 
Benachrichtigungen
Alles löschen

1phasige Deye Wechselrichter nachts in Sleep Mode schicken

1 Beiträge
1 Benutzer
0 Reactions
311 Ansichten
(@dyinstaller)
Neuling Neues Mitglied
Mitglied seit: Vor 10 Monaten
Beiträge: 33
Themenstarter  

Ich habe ein python3 Script programmiert, das meinen deye sun 5k sg03lp1 nachts abschaltet im Winter. Sonst habe ich 1,4kWh Verlustleistung über 24h. Die im Winter tagsüber häufig nicht wieder aufgeladen wird.

Früh wird ab einer Startspannung der Wechselrichter geweckt, daraufhin bricht die Spannung ein, da das MPPT-Tracking beginnt, deshalb warten wir dann WaitMorningLightStableForMPPTPwrCheck in Sekunden. Danach wird alle 2 Minuten Zukluszeit geschaut, ob die PV-Leistung unter 10Watt liegt (Sonnenuntergang, Abschaltung)

Der Load Anschluss bleibt durch geschaltet (on-grid). Im Sleep Mode zieht der Wechselrichter ca. 17...25W? aus dem Akku. Das BMS erkennt das in der Regel nicht, da der Strom zu klein ist und bleibt bei 100% SOC. Eingeschaltet wären es 62W aus dem Akku oder 90W aus dem Netz.

Das Skript läuft unter Linux/Raspi. Auf anderen Plattformen PathToUsbRS485Dongle anpassen, hab ich nicht getestet.

Es muss python3 und libmodbus installiert sein.

Mein Raspi ist über einen USB-zu-RS485(~10€) Adapter direkt über 2 Busdrähte zum BMS 485 Port (A/B Pins) des Wechselrichters verbunden.

Nutzung auf eigene Gefahr, es wird nur Register 43 geschrieben.

Läuft das auch bei euch?

#!/bin/phython3
#winter script to set the inverter sleeping

from pymodbus.client.sync import ModbusSerialClient as ModbusClient
from time import sleep, time

#Setup parameters
PathToUsbRS485Dongle='/dev/ttyUSB0'
#time in seconds
WaitMorningLightStableForMPPTPwrCheck=0.2*60*60
SleepTimeCycle=2*60 #2Min
#deye modbus Device address (default 0)?
devID = 0
IsLightVoltage=170 #switch on Voltage, must be under your max. stringVoltage ~60%
sunsetWatt=10 #PVwatt shutdown if smaller

def writeReg(devID, regNr, value):
    listValues = [value]
    #fct code 0x10 == 16 multi ->write registers (other write function code methode deye does'nt know)
    return client.write_registers(regNr, listValues, unit=devID)

def readReg(devID, regNr):
    while True:
        read = client.read_holding_registers(address = regNr, count =1 ,unit=devID)
        if read.isError() == True:
            print("Err - try again")
            continue;
        else:
            val = read.registers[int(0)]
            #handle negativ int16 values
            if(val > 32767):
                val = val - 65536
            return val

def readRegFloat(devID, regNr):
    return round(float(readReg(devID, regNr))*0.1,1)

client = ModbusClient(method='rtu', port=PathToUsbRS485Dongle, baudrate=9600, retries=30, bytesize=8,
    parity="N", stopbits=1, timeout=9)

if ( client.connect() == False ):
    print("can't open rs485 bus")
    quit()

#start?
pvV = readRegFloat(devID, 109)
if(pvV > IsLightVoltage):
    print(f" switch on pvVolt={pvV}")
    writeReg(devID, 43, 1)
    switchedOn=1
    sleep(WaitMorningLightStableForMPPTPwrCheck)
else:
    print(f" switch off pvVolt={pvV}")
    writeReg(devID, 43, 0)
    switchedOn=0

while True:
    pvVolt = readRegFloat(devID, 109)
    pvWatt = readRegFloat(devID, 186) * 10.0
    gridV = readRegFloat(devID, 150)

    errNum = readReg(devID, 103)

    print( f"PvVolt={ pvVolt } pvWatt={pvWatt} gridV={gridV}" )

    if((switchedOn==1) & (pvWatt < sunsetWatt)):
        print(" switch off")
        writeReg(devID, 43, 0)
        switchedOn = 0
        sleep(WaitMorningLightStableForMPPTPwrCheck)
    else:
        if(switchedOn == 0) & (pvVolt > IsLightVoltage):
                print(" switch on and wait for stable mppt pwr")
                writeReg(devID, 43, 1)
                switchedOn = 1
                sleep(WaitMorningLightStableForMPPTPwrCheck)
        else:
            print(f"  idle FaultCode={errNum}") #=128 if off, =0 running

    sleep(SleepTimeCycle)

 

Dieses Thema wurde geändert Vor 9 Monaten von dyinstaller

   
Zitat