Seite 14 von 35

Re: Einbindung vom SolaX Wechselrichter

Verfasst: Di Dez 07, 2021 7:01 am
von HSC
openWB hat geschrieben: Di Dez 07, 2021 6:56 am Wenn „einfach“ die Register geändert werden wird das aber in Folge in irgendeiner anderen Konstellation nicht mehr funktionieren.
Ich würde halt gerne wissen welche das ist.
Dann bleiben ja nur 2 Varianten als Möglichkeit, "alt" und "neu".

Noch ne' Frage zur Frequenz- Verarbeitung:
Steckt da im Modul eine Sicherheitsabfrage drin?
Also, "verarbeite nur die aktuellen Watt, wenn die Frequenz vorhanden ist"??
Vielen Dank

Re: Einbindung vom SolaX Wechselrichter

Verfasst: Di Dez 07, 2021 7:06 am
von Peete
openWB hat geschrieben: Di Dez 07, 2021 6:56 am Wenn „einfach“ die Register geändert werden wird das aber in Folge in irgendeiner anderen Konstellation nicht mehr funktionieren.
Ich würde halt gerne wissen welche das ist.
Das Problem ist, dass das Solax Modul für Bezug von Anfang an schon falsch war. Deshalb habe ich auch nie EVU Werte bekommen.

Es kann natürlich sein, dass die alten 1ph Solax WR das Register 189 gar nicht haben. Die bekommen dann wieder Wert 0 in die Ramdisk.

Die ganze Dongle Geschichte hat mit den Registern nichts zutun. Hier geht es grundlegend um die Tatsache, dass für die Frequenz ein falscher Wert benutzt wird und bei allen 3ph Wechselrichtern bei Evu nichts kommt.

Re: Einbindung vom SolaX Wechselrichter

Verfasst: Di Dez 07, 2021 7:11 am
von openWB
Ok, aber die Frequenz ist grundlegend absolut egal.

Re: Einbindung vom SolaX Wechselrichter

Verfasst: Di Dez 07, 2021 8:16 am
von arauhut
openWB hat geschrieben: Di Dez 07, 2021 5:53 am Lasst zunächst den zweiten WR bitte mal Weg, ich glaube der verwirrt nur und ist für die Funktion unerheblich.

@peete
Wenn ich dich richtig verstanden hab brauchen wir schlicht 2 Varianten, die derzeitige Auselsung und die mit den anderen Registern, korrekt?

Wäre es auch damit getan wenn die extra Dongle nicht genutzt würden?
Ich stimme zu, dass der zweite WR zur Anpassung des Moduls keine Beachtung finden sollte und auch die Dongles spielen hier wahrscheinlich keine Rolle.

Ich nehme sie anschließend ab, falls ich es nicht mehr als notwendig betrachte, sie für die SolaX Cloud und den Zugang für den Service zu behalten, oder bei Bedarf wieder anzustecken. Über die IP Adressen der beiden LAN/WLAN Dongle findet keine Kommunikation per modbus statt.
Einen offenen Port 502 für modbus finde ich nur an meinem LAN vom X3-Hybrid WR (blaues Kabel)

Um eine Rückwärtskompatibilität mit bereits im Feld befindlichen SolaX-WR sicherzustellen, kann eventuell durch die Abfrage eines bzw. mehrerer Registerwerte geprüft werden, ob es sich um einen 1- oder 3-phasigen WR handelt, bzw. alte neue Ausführung.

Re: Einbindung vom SolaX Wechselrichter

Verfasst: Di Dez 07, 2021 9:30 am
von derNeueDet
Fällt das Modul auf die Nase, wenn hier das falsche Frequenz Register abgefragt wird und deshalb kommen dann keine Leistungswerte an?

VG
Det

Re: Einbindung vom SolaX Wechselrichter

Verfasst: Di Dez 07, 2021 9:51 am
von HSC
derNeueDet hat geschrieben: Di Dez 07, 2021 9:30 am Fällt das Modul auf die Nase, wenn hier das falsche Frequenz Register abgefragt wird und deshalb kommen dann keine Leistungswerte an?

VG
Det
Das könnte auch eine Erklärung für den Fehler sein.
Kann mir auch nicht vorstellen, dass die Anzeige der Watt abhängig von der Auslesung der Frequenz sein soll.
VG

Re: Einbindung vom SolaX Wechselrichter

Verfasst: Di Dez 07, 2021 11:08 am
von Peete
derNeueDet hat geschrieben: Di Dez 07, 2021 9:30 am Fällt das Modul auf die Nase, wenn hier das falsche Frequenz Register abgefragt wird und deshalb kommen dann keine Leistungswerte an?

VG
Det
Ja vermute ich auch:

Das hier ist das modul bezug_solax/solax.py

Code: Alles auswählen

#!/usr/bin/python
import sys
# import os
# import time
# import getopt
# import socket
# import struct
# import binascii
from pymodbus.client.sync import ModbusTcpClient
from pymodbus.factory import ClientDecoder

def unsigned32(result, addr):
   low  = result.registers[addr]
   high = result.registers[addr + 1]
   val = low +( high << 16)
   return val

def unsigned16 (result, addr):
    return result.registers[addr]

def signed16(result, addr):
    val = result.registers[addr]
    if val > 32767:
        val -= 65535
    return val

def signed32(result, addr):
    val = unsigned32(result, addr)
    if val > 2147483647:
        val -=  4294967295
    return val

ipaddress = str(sys.argv[1])
client = ModbusTcpClient(ipaddress, port=502)

resp=client.read_input_registers(0, 114)

value = signed32(resp, 70)
# for SolaX negative means get power from grid
value = -value

f = open('/var/www/html/openWB/ramdisk/wattbezug', 'w')
f.write(str(value))
f.close()

frequenz = unsigned16(resp,7) / 100
print (frequenz)
f = open('/var/www/html/openWB/ramdisk/evuhz', 'w')
f.write(str(frequenz))
f.close()

consumed = unsigned32(resp,74) / 100
print (consumed)
f = open('/var/www/html/openWB/ramdisk/bezugkwh', 'w')
f.write(str(consumed))
f.close()

einspeisung = unsigned32(resp,72) / 100
f = open('/var/www/html/openWB/ramdisk/einspeisungkwh', 'w')
f.write(str(einspeisung))
f.close()
Wenn ich die letzten 3 Abfragen entferne, geht es auch:

Code: Alles auswählen

frequenz = unsigned16(resp,7) / 100
print (frequenz)
f = open('/var/www/html/openWB/ramdisk/evuhz', 'w')
f.write(str(frequenz))
f.close()

consumed = unsigned32(resp,74) / 100
print (consumed)
f = open('/var/www/html/openWB/ramdisk/bezugkwh', 'w')
f.write(str(consumed))
f.close()

einspeisung = unsigned32(resp,72) / 100
f = open('/var/www/html/openWB/ramdisk/einspeisungkwh', 'w')
f.write(str(einspeisung))
f.close()
resp=client.read_input_registers(0, 114) besagt ja, dass er beim Register 0 startet und bis 114 ausliest. Richtig?
Weil die 189 geht dann natürlich nicht.

Re: Einbindung vom SolaX Wechselrichter

Verfasst: Di Dez 07, 2021 11:11 am
von derNeueDet
Nimm mal nur den Block frequenz raus und die anderen beiden bitte drin lassen.

VG
Det

Re: Einbindung vom SolaX Wechselrichter

Verfasst: Di Dez 07, 2021 11:15 am
von Peete
derNeueDet hat geschrieben: Di Dez 07, 2021 11:11 am Nimm mal nur den Block frequenz raus und die anderen beiden bitte drin lassen.
Sofort wieder 0 Watt.
Wenn nur das drin ist nach den Definitionen, geht es.

Code: Alles auswählen

ipaddress = str(sys.argv[1])
client = ModbusTcpClient(ipaddress, port=502)

resp=client.read_input_registers(0, 114)

value = signed32(resp, 70)
# for SolaX negative means get power from grid
value = -value

f = open('/var/www/html/openWB/ramdisk/wattbezug', 'w')
f.write(str(value))
f.close()

Re: Einbindung vom SolaX Wechselrichter

Verfasst: Di Dez 07, 2021 12:14 pm
von HSC
Peete hat geschrieben: Di Dez 07, 2021 11:15 am
derNeueDet hat geschrieben: Di Dez 07, 2021 11:11 am Nimm mal nur den Block frequenz raus und die anderen beiden bitte drin lassen.
Sofort wieder 0 Watt.
Wenn nur das drin ist nach den Definitionen, geht es.

Code: Alles auswählen

ipaddress = str(sys.argv[1])
client = ModbusTcpClient(ipaddress, port=502)

resp=client.read_input_registers(0, 114)

value = signed32(resp, 70)
# for SolaX negative means get power from grid
value = -value

f = open('/var/www/html/openWB/ramdisk/wattbezug', 'w')
f.write(str(value))
f.close()
Verstehe ich es richtig, dass jetzt die aktuellen Watt gelesen werden, aber dafür keine Zählerstände und Frequenz mehr?
Welchen Zusammenhang könnte es zw. den Im- und Ex- kWh und den aktuellen Watt im SolaX- Modul geben?
Blockiert sich da gegenseitig etwas über eine Berechnung?