Giter Club home page Giter Club logo

Comments (6)

nygma2004 avatar nygma2004 commented on July 17, 2024 1

OK, I see the problem. The issue is that it will be very difficult to make code changes without having the actual device and testing how it works. Also I am not really sure what is the best way of making the code work for the "old" devices and the MIC-TL-X as well. Maybe this new mapping is something they will roll out for all new models in the future?

from growatt2mqtt.

nygma2004 avatar nygma2004 commented on July 17, 2024

Hi Tom,

I also have a MIC-TL-X and the code works just fine there. There is a naming convention in modbus that the input registers are always number from 3000 and the holding registers from 4000 (or the other way around, I can never remember). This is done so when you look at the number you can immediately tell if it is a holding or input register. But in all the modbus software I used and also in the arduino library, you provide the address from the base 3000 or 4000. So what is addres 3000 in the documentation, in the program that is zero.
As I said this code is reading my small MIC 750 and it is fine.

from growatt2mqtt.

Kletternaut avatar Kletternaut commented on July 17, 2024

What you write makes perfect sense, but various totay and total values are still mixed up. Take a look above.
What irritates me now is that I can read out the total and today data via the 3049 with my own nodered flow (attachment) over an waveshare modbus-wlan converter. But not with this esp-script and your Grafana dashboard. All other data are coming in.
nodered_growatt

from growatt2mqtt.

Kletternaut avatar Kletternaut commented on July 17, 2024

I have checked the mqtt-mosquitto log file. {"fields":{"deratingmode":0,"energytoday":0,"energytotal":0.9,"faultbitcode":0,"faultcode":0,"gridfrequency":49.99,"gridvoltage":227.2,"ipf":20000,"opfullpowe r":0,"outputpower":21.5,"pv1current":0.3,"pv1energytoday":0,"pv1energytotal":0.9,"pv1power":22.1,"pv1voltage":58,"pv2current":0,"pv2energytoday":0,"pv2energyt otal":0,"pv2power":0,"pv2voltage":0,"realoppercent":0,"solarpower":22.1,"status":1,"tempboost":0,"tempinverter":26.5,"tempipm":26.5,"totalworktime":165833.5," warningbitcode":0},"name":"mqtt_consumer","tags":{"host":"raspberrypi","topic":"growatt600/data"},"timestamp":1700298901}
Any ideas?

from growatt2mqtt.

Kletternaut avatar Kletternaut commented on July 17, 2024

Hi Csongor,
i have checked it now multiple times. I am very sorry, also because i know that you have much more knowledge of the matter than i do. I have to say your code is not using the correct registers for the TL-X Series, because you've used the wrong register list documentation.

There is a naming convention in modbus that the input registers are always number from 3000 and the holding registers from 4000

I noticed this for some manufactures (i believe the Eastron SDM630/230) with 3000x (for holding) and 4000x (for input), but now after my review i know it has nothing to do with this. These in the documentation described 3000-registers are the right, real and only ones that worked correctly. You can't use register 0001 from a other device alternatively to the 3001 and so on. It is different address with different values in it, even if you get some values out of it and even many of them seems to be the right ones.

The documentation (site no: 48) says it very clear: The input register for TL-X begins at 3000-3124, (3125... right after the heading information:

Use for TL-X and TL-XH

and this means do not start at site no: 33 with input register no: 0. of an different device. In many cases the register are kind identical, but a few are different and others do not even exists. If you use 0001 it will bemapped to 3001 or vice versa.

I say it again: there are no input-register 0-124 for MIC-TL-X described in the documentation.

One example (then i'm done here):
In growattInterface.cpp @line 82:

modbusdata.pv1energytoday = ((growattInterface.getResponseBuffer(59) << 16) | growattInterface.getResponseBuffer(60)) * 0.1;

Here you want to get value of "energy PV1 of actual day", like it is described in input-register list no. 59, right? But instead it reads (with, or without the internal mapping function) the register 3059 | Epv2_today. There is no PV2 in a MIC-TL-X. And that is the reason why i am getting no value. I've found a few other mismatched addresses in your code. No question, it is a total mess what they have done in this documentation.

from growatt2mqtt.

Kletternaut avatar Kletternaut commented on July 17, 2024

i have sent you an email.

from growatt2mqtt.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.