Naar aanleiding van mijn geniale

idee om een Modbus scan te doen en de opzet van @
rtlvandeven, kon ik het niet laten om dit ook uit te voeren. Ik heb wat hardware in elkaar geknutseld en een scan uitgevoerd op alle adressen (wist niet of rtlvandeven dat ook al had gedaan, of alleen tussen 30000-49999). Ik heb de gegevens kunnen verifiëren en verder geen nieuwe ranges gevonden.
Van veel ranges is het nog niet bekend wat er op zit. Dan zou ik ze even moeten gaan loggen tijdens gebruik van de batterij, maar zover ben ik nog niet gekomen. Het lastige is dat een range kan bestaan uit meerdere adressen, of 1 adres met veel data.
Technisch paragraafje (mag je overslaan):
Normaal bevat een Modbus adres 2 bytes. Je kunt natuurlijk meer dan 2 bytes aan data willen, normaal gebruik je dan meerdere adressen. Je kunt echter wel meerdere adressen tegelijk uitvragen waardoor je data netjes achter elkaar krijgt. Het gekke bij de Venus, is dat als een adres meer dan 2 bytes bevat (en dus eigenlijk meer adressen nodig heeft om dit op te slaan) je deze uit moet vragen met 1 uitvraag. De data is niet correct wanneer je het doet met twee opeenvolgende uitvragen. Voorbeeld: het apparaatnaam is altijd: "BI_2.5_2.5". Normaal bevat adres 1 'BI', adres 2 '_2', adres 3 '.5' etc. Als je het allemaal uitvraagt vanaf adres 1 met een lengte die groot genoeg is, krijg je netjes achtereenvolgend de naam terug. Echter als je met de hand adres 2 zou opvragen, antwoordt de Venus in dit geval 'I_' etc. Er gaat dus wat mis met uitvragen en als je handmatig adres 1,2,3 etc. achter elkaar zou plakken, krijg je niet het goede resultaat. Maar, vanwege deze gekkigheid, is het dus wel mogelijk om te bepalen wanneer een range bestaat uit losse registers, of uit 1 register met meer data of een combinatie daarvan zolang er maar iets van data aanwezig is. Als de registers leeg zijn (nullen bevatten) kan je natuurlijk niet zien wanneer de data opschuift en dus incorrect is.
Met bovenstaande gekkigheid heb ik afgeleid wanneer ranges eigenlijk losse registers zijn. Er is 1 geval waar zich dit niet voordoet en dat is de WiFi SSID. Hoe dat komt zou ik niet weten. Misschien klopt bovenstaande niet altijd? Het klopte echter wel voor alle registers waarvan we de waardes al wisten.
Maar goed, dat terzijde, nu we steeds meer wijzigingen gaan maken aan de bekende Modbus specificatie heb ik deze overgenomen in een Sheet zodat we makkelijker wijzigingen kunnen doorvoeren. Deze vind je hier:
https://docs.google.com/s...gid=319238506&single=true
Wat dingen die we nu al extra kunnen uitlezen via Modbus:
* Device MAC address (rtlvandeven)
* Communication module firmware version (rtlvandeven)
* WiFi SSID (misschien ook wijzigen?) (rtlvandeven)
* Mogelijk Current cell temperature?? (rtlvandeven)
* Mogelijk Current voltage of highest cell?? (x0.001) (rtlvandeven)
* Mogelijk Current voltage of lowest cell?? (x0.001) (rtlvandeven)
* BMS version (dus 213 o.i.d)
* Firmware version (dus 153 o.i.d)
* Eerste twee karakters van het WiFi password (ja echt

hoe dat werkt zou ik niet weten, misschien ook wijzigen?)
Mocht iemand hier mee aan de slag gaan en nog suggesties hebben voor onbekende adressen, laat maar weten dan pas ik het aan! Ook als er dingen zijn die we opgemerkt hebben op het bestaande document wat incorrect was, maar nog niet aangepast zijn, hoor ik het graag! Ook handig om het naast de MQTT te leggen als je dat gebruikt!
De error codes zijn daar 1 van, misschien dat bovenstaande theorie wat licht kan schijnen op dat probleem.
Het slechte nieuws: individuele cell voltages zitten er gegarandeerd niet in. Dat patroon had wel opgevallen voor 16 cellen.