tobiasfaust / SolaxModbusGateway

Modbus RTU to MQTT Gateway
GNU General Public License v3.0
54 stars 17 forks source link

Anzeige der Raw Data ist kaputt (seit commits am 11.3.24) #60

Closed lattemacchiato closed 2 months ago

lattemacchiato commented 3 months ago

Hi,

in der aktuellen Version werden die Raw Data nicht mehr korrekt angezeigt. Soweit ich das verstehe sollten die (Solax-X3) beginnen mit ID Data: 0x01 0x03 0x28 ... Live Data: 0x01 0x04 0xEE ...

Aktuell steht da aber ID Data: 0x13 0x40 0x72 ... Live Data: 0x14 0x23 0x88 ...

Ich habe mich mal in den commits "zurückgetastet": Mit dem Codestand vom 29.2. war das noch OK, ab dem Codestand vom 11.3. ist die Raw Data Anzeige offenbar fehlerhaft. Es fehlen in der "Item Config" auch die on/off Schieber, bzw wurden ersetzt durch Checkboxen.

Sorry wenn ich da falsch hinschaue oder was übersehe....

Paul

tobiasfaust commented 3 months ago

Das es checkboxen jetzt (temporär) sind ist normal. Die RAW Data Anzeige schaue ich mir an

TheHexaMaster commented 3 months ago
Snímka obrazovky 2024-04-03 o 16 09 51

I can confirm, raw data are corrupted. Any idea what caused this issue for quickfix?

@tobiasfaust , your tool looks promising. I will study the core and structure, maybe i can help you to integrate the GROWATT SPF protocol (SPF 3500/5000/6000 off-grid) inverter.

PS - I actually tested SPF6000 with ESP32 + RS232 serial to Modbus module (connected directly to USB port of Growatt Inverter) and it works fine (the logic is same as connected RS485/TTL to RS485 port, bude USB port uses EXAR RS232 Modbus to TTL chip), this way its really easy to make ShineWifi stick alternative (self-powered directly from same USB interface when using less power hungry ESP8266/ESP32 Wroom. ESP32-S3 shall be problematic due current limitation).

PS2- Thobias, i suggest to use terminology for 0x03 registers as "Holding Registers" instead of "ID Data" and 0x04 registers as "Input Registers" instead of "Live Data", which is common Modbus terminology. Marking ID Data / Live Data are little bit confusing, because for example Growatt use few holding registers to view advaned real-time data too (BMS Data etc).

TigerGrey commented 3 months ago

Hallo Tobias, Danke für den Bugfix, suche auch schon einige Zeit an der Stelle rum. Blöde Frage: Müßte es nicht statt if (this->SaveLiveDataframe->at(i) <= 16) {s += "0";} eher heissen if (this->SaveLiveDataframe->at(i) < 16) {s += "0";} ?? Im Prinzip baust Du doch hier eine leading zero ein damit später chunk(...,2) funktioniert, oder? Für den Fall "=16" wäre aber die erste Stelle im String nicht mehr "0" oder? Gruß Andreas

TigerGrey commented 3 months ago

noch was ist mir aufgefallen: Jetzt stimmt zwar die Anzeige der raw data, aber leider funktionieren die "test it" Funktion und auch die Tooltips nur noch bei Zahlen kleiner gleich 9 (also ohne A..F).

TigerGrey commented 3 months ago

Vorschlag für rawdata.js: / helper function / function byte2int(bytestring) { //return parseInt(Number(bytestring), 16); return parseInt(bytestring,16); }

tobiasfaust commented 3 months ago

danke für die Info, ergänze ich noch.

Ich musste das gesamte Frontend umbauen, von serverseitige Generierung auf clientseitige Generierung da bei großem Webcontent der ESP32 beim Erreichen des Speicherlimits die Seite einfach abgeschnitten hat. Gleichzeitig aber so generisch halten, das ich die Basisfunktionalität in meinen anderen Projekten (zb. PumpControl) auch auf einem ESP8266 ebenso einsetzen kann.

Dieser Issue hier sind noch letzte "Nachwehen" ;)

lattemacchiato commented 2 months ago

Hi, Super wie schnell Du reagierst - und ganz herzlichen Dank für die SW und die Arbeit damit! Paul