[Sammelthread] Modbus - Best Practice

Willkommen auf Storion4you.de - der Community für Stromspeicher- und Backupsysteme von ALPHA-ESS!
Sie haben aktuell Lesezugriff auf den öffentlichen Bereich dieser Website. Um Themen zu starten oder Beiträge zu erstellen, müssen Sie sich zuerst registrieren.

  • ga_ba : Karlie hat den Wechselrichter SMILE-T10-HV-INV. Dem Irrtum sind wir Zwei ja mal aufgesessen, da das in der Cloud als System steht. Es ist aber eine HI-10, Du erinnerst Dich? :) Nur der Wechselrichter heißt so. Der Wechselrichter der alte T10 hatte das HV nicht im Namen.

    _______________________________________

    SMILE-HI 10 7,8 kWh Akku

    9,5 kWp - 27 x QCELLS 355Wp - 17 Dach S/W 10 Dach N/O

    DTSU 666 - 3-phasig

    _______________________________________

  • ga_ba : Karlie hat den Wechselrichter SMILE-T10-HV-INV. Dem Irrtum sind wir Zwei ja mal aufgesessen, da das in der Cloud als System steht. Es ist aber eine HI-10, Du erinnerst Dich? :) Nur der Wechselrichter heißt so. Der Wechselrichter der alte T10 hatte das HV nicht im Namen.

    Nicht nur in der Cloud heisst das Gerät so, Hier der Aufkleber:
     


    Nachtrag:
    Es ist aber wohl wirklich so, dass es sich um einen HI10 handelt, denn der T10 sieht ganz anders aus:


    Es ist schon etwas verwirrend, was Alpha ESS da macht....

    PV-Module: 25 Jinko JKM-425N-54HL4-V Tiger Neo N-Type : 10,625kWp

    Wechselrichter System-Modell : SMILE-T10-HV-INV

    Batterie: SMILE-BAT-8.2PH

    BackupBox Plus

  • bennohaf :Ich erinnere mich schon. Dann hilf doch Karlie mal bei seinem ModBus-Problem. Wenn er eine HI-Anlage hat und dennoch keinen Kontakt zu ioBroker bekommt, woran kann es dann liegen?

    7,2 kWp DC an HI5, 9,6 kWh Akku, über L3 ins Netz/Haus eingespeist.

    2,0 kWp an FOX 3000, AC über L2 ins Netz/Haus eingespeist

    DTSU 666 misst 3-phasig Netz und zusätzlich einphasig FOX

    Backup-Box klein

    4 qm Solarthermie als Heatpipe Röhrenkollektor mit 400 L Wasserspeicher

  • Nicht nur in der Cloud heisst das Gerät so, Hier der Aufkleber:
     


    Nachtrag:
    Es ist aber wohl wirklich so, dass es sich um einen HI10 handelt, denn der T10 sieht ganz anders aus:


    Es ist schon etwas verwirrend, was Alpha ESS da macht....

    Selbst mein Solateur hatte sich gewundert, dass auf dem Aufkleber die Bezeichnung des WR steht und nicht HI-10.

    _______________________________________

    SMILE-HI 10 7,8 kWh Akku

    9,5 kWp - 27 x QCELLS 355Wp - 17 Dach S/W 10 Dach N/O

    DTSU 666 - 3-phasig

    _______________________________________

  • bennohaf , ga_ba


    Das Zugangsproblem vom Modbus ist dank des nochmaligen Hinweises von bennohaf gelöst


    Der Fehler lag darin, dass ich beim herumprobieren die beiden oberen Kästchen zur Handhabung mit 'Alias' angekreuzt hatte. Beim Entfernen des oberen Häkchens wird die zweite Zeile (mit Häkchen) ausgegraut.

    Ich dachte, dass es dann auch keine Funktion mehr hätte:

    Nach dem erneuten Ankreuzen 'Aliases benutzen' wird das Feld darunter wieder aktiv und es kann das Häkchen entfernt werden. Danach das obere Hächen wieder entfernen und Speichern. --> Läuft!

    Danke für die Unterstützung!

    :)

    PV-Module: 25 Jinko JKM-425N-54HL4-V Tiger Neo N-Type : 10,625kWp

    Wechselrichter System-Modell : SMILE-T10-HV-INV

    Batterie: SMILE-BAT-8.2PH

    BackupBox Plus

  • Nach dem erneuten Ankreuzen 'Aliases benutzen' wird das Feld darunter wieder aktiv und es kann das Häkchen entfernt werden. Danach das obere Hächen wieder entfernen und Speichern. --> Läuft!

    Das wäre dann in meinen Augen ein Bug im Modbus Adapter. Ich schau mir das bei Gelegenheit mal an und schreibe ggfs. ein Issue dazu in Guthub.

  • Das wäre dann in meinen Augen ein Bug im Modbus Adapter. Ich schau mir das bei Gelegenheit mal an und schreibe ggfs. ein Issue dazu in Guthub.

    Hmm, ich hab das gerade mal ausprobiert und kann das Problem nicht nachvollziehen. In meinem Test spielt es keine rolle, ob "Direkte Adressen" angehakt ist oder nicht, solange "Aliases benutzen" nicht angehakt ist.

    Komisch. Kann es sein, dass du beim Herumprobieren noch irgendwo anders was relevantes geändert hattest? Kannst du mal nachsehen, ob du noch die Logs aus dieser Zeit hast? die werden standardmäßig einige Tage aufgehoben.

  • Gaspode

    Leider habe ich die Protokoll-Liste gelöscht. Und ich kann das aufgetretene und von mir beschriebene Verhalten auch nicht mehr provozieren. Meines Wissens hatte ich außer diesem Ausgegrauten Haken auch nichts anderes verändert.

    Ich finde das seltsam, aber im Endeffekt ist es ja wichtig, dass es nun so finktioniert, wie es soll.

    Hake den Punkt einfach ab - er gehört wohl in die Kategorie: 'Denn sie wissen nicht was sie tun....' :D

    Schöne Woche noch!

    PV-Module: 25 Jinko JKM-425N-54HL4-V Tiger Neo N-Type : 10,625kWp

    Wechselrichter System-Modell : SMILE-T10-HV-INV

    Batterie: SMILE-BAT-8.2PH

    BackupBox Plus

  • Vielen Dank, Gaspode.

    Auch Dir, Konni, lieben Dank. Ich hatte Deinen Beitrag leider falsch verstanden und angenommen, ich solle ioBroker in einem Container laufen lassen statt in einer VM.

    Aber Dein zitierter Artikel sagt natürlich etwas ganz anderes aus.

    Bei Gelegenheit werde ich das mal probieren.

    Schönen Sonntag noch.

    Gaspode hat es ja schon detailliert. Bei mir läuft modbus-proxy einwandfrei und man kann damit problemlos verschiedene Clients auf ein Gerät zugreifen lassen. :)

  • Hallo, ich habe mit Gaspode Hilfe SEIN berühmetes ;) ALPHA Adapter Summen-Script an die analogen ModBus Register angepasst.

    Ich (wir) teilen es gerne in der ModBus Gemeinde. Bitte natürlich die Namen anpassen, kein Alias Häkchen bei ModBus ;) und kein Häkchen im JS Adaper bei "nicht alle Zustände beim Start abonieren".


    let PV_values = [];
    let Grid_values = [];

    let pvTotal = 0;
    let gridTotal = 0;
    let batLoad = 0;

    const stateNamePVTotal = '0_userdata.0.Alpha-ESS(MB).PV_Total_Power';
    const stateNameGridTotal = '0_userdata.0.Alpha-ESS(MB).Grid_Total_Power';
    const stateNameLoadTotal = '0_userdata.0.Alpha-ESS(MB).Load_Total';
    const stateNameBatPower = '0_userdata.0.Alpha-ESS(MB).Battery_power';

    async function init() {
        await createStateAsync(stateNamePVTotal, 0, { read: true, write: true, type: 'number', unit: 'W' });
        await createStateAsync(stateNameGridTotal, 0, { read: true, write: true, type: 'number', unit: 'W' });
        await createStateAsync(stateNameLoadTotal, 0, { read: true, write: true, type: 'number', unit: 'W' });
        await createStateAsync(stateNameBatPower, 0, { read: true, write: true, type: 'number', unit: 'W' });

    batLoad = getState('modbus.0.holdingRegisters.294_Battery_Power').val;
    setState(stateNameBatPower, -batLoad);

        const PvResult = $('^modbus\.0\.holdingRegisters\.*_PV*_power');
        PvResult.each((id, i) => {
            PV_values[id] = getState(id).val;
            if (i === PvResult.length - 1) {
    sumPV();
    }
    });

        const GridResult = $('^modbus\.0\.holdingRegisters\.*_Active_power_of_*_phase_(Grid_Meter)');
        GridResult.each((id, i) => {
            Grid_values[id] = getState(id).val;
            if (i === GridResult.length - 1) {
    sumGrid();
    }
    });
    }

    on({ id: /^modbus\.0\.holdingRegisters\..*_PV.*_power/, change: 'ne' },
        function (obj) {
            PV_values[obj.id] = obj.state.val;
    sumPV();
    }
    );

    on({ id: /^modbus.0.holdingRegisters\..*_Active_power_of_.*_phase_\(Grid_Meter\)/, change: 'ne' },
        function (obj) {
            Grid_values[obj.id] = obj.state.val;
    sumGrid();
    }
    );

    on({ id: 'modbus.0.holdingRegisters.294_Battery_Power', change: 'ne' },
        function (obj) {
    batLoad = obj.state.val;
    setState(stateNameBatPower, -batLoad);
    sumLoad();
    }
    );

    function sumPV() {
    pvTotal = 0;
        for (const id in PV_values) {
    pvTotal += PV_values[id];
    }
    setState(stateNamePVTotal, pvTotal);
    sumLoad();
    }

    function sumGrid() {
    gridTotal = 0;
        for (const id in Grid_values) {
    gridTotal += Grid_values[id];
    }
    setState(stateNameGridTotal, gridTotal);
    sumLoad();
    }

    function sumLoad() {
    setState(stateNameLoadTotal, pvTotal + gridTotal + batLoad);
    }

    init();

    _______________________________________

    SMILE-HI 10 7,8 kWh Akku

    9,5 kWp - 27 x QCELLS 355Wp - 17 Dach S/W 10 Dach N/O

    DTSU 666 - 3-phasig

    _______________________________________

    Einmal editiert, zuletzt von bennohaf ()

  • Hallo zusammen,


    ich hab mal wieder eine Verständnisfrage:


    Mir ist eben aufgefallen, dass es 2 verschiedene Werte für den Gesamt-PV-Ertrag gibt.

    Welcher ist nun was genau?

    Ist der niedrigere Wert vielleicht ohne den heutigen Ertrag?

    PS: Und ja - ich habe tatsächlich herausgefunden wie ich die ModBus-Verbindung wieder aufbauen kann. (Aber die Hintergründe sind mir schleierhaft - es lag aber wohl an meiner Fritzbox)

    PV-Module: 25 Jinko JKM-425N-54HL4-V Tiger Neo N-Type : 10,625kWp

    Wechselrichter System-Modell : SMILE-T10-HV-INV

    Batterie: SMILE-BAT-8.2PH

    BackupBox Plus

  • Gaspode

    Ich habe im Energiediagramm den gesamten Zeitraum angegben - dann sieht man dort die Summenwerte über den Gesamtzeitraum (zumindest nehme ich das an)

    PV-Module: 25 Jinko JKM-425N-54HL4-V Tiger Neo N-Type : 10,625kWp

    Wechselrichter System-Modell : SMILE-T10-HV-INV

    Batterie: SMILE-BAT-8.2PH

    BackupBox Plus

  • Ich habe im Energiediagramm den gesamten Zeitraum angegben - dann sieht man dort die Summenwerte über den Gesamtzeitraum (zumindest nehme ich das an)

    Das konnte man aus deinem Bild aber beim Besten Willen nicht herauslesen. :D


    Dann sieht's bei mir ähnlich aus, beim Energiediagramm erscheint dann etwa die angezeigte "Gesamterzeugung" ohne die heutige Erzeugung. Ich würde die Zahlen aber sowieso nicht überbewerten.

  • ...Ich würde die Zahlen aber sowieso nicht überbewerten.

    Das tue ich schon nicht - ist mir halt nur aufgefallen, da ich im ModBus (nun) den tatsächlichen Gesamtertrag sehen kann.


    Gibt es eigentlich einen Weg, wie ich die history-Daten auslesen kann? Bislang kann ich sie lediglich im IoB sehen.

    PV-Module: 25 Jinko JKM-425N-54HL4-V Tiger Neo N-Type : 10,625kWp

    Wechselrichter System-Modell : SMILE-T10-HV-INV

    Batterie: SMILE-BAT-8.2PH

    BackupBox Plus

  • Nach meinen Beobachtungen entspricht die im Webportal angezeigte Gesamterzeugung, der Summe, die bis zum Ende des Vortages aufgelaufen ist. Wenn man nach Sonenuntergang die "heutige Erzeugung" zur Gesamterzeugung addiert, müsste dieser Wert am nächsten Morgen als Gesamterzeugung dort stehen.

    Alpha-ESS SMILE-T10 mit 15,6 kWh Batteriespeicher, Backup Box, Zappi 2.1 und SENEC.Solar 375M HC G2.1 mit 13,125 kWp


  • Hallo, nachdem nur auch meine HV-Box getauscht wurde überträgt mein T10 mittles Modbus RTU und einem RS485 Adapter Daten an mein Raspi. Ich arbeite hier mit EVCC für Überschussladen. Leider werden aber die Daten PV-Power, Grid und der SOC nur sehr schlecht übertragen, sodass ich in der Software ständig mit Timeouts und fehlenden Werte zu kämpfen habe. Ich bin mit meinem Latein mittlerweile am Ende. Wo kann ich hier noch ansetzen?

  • Wo kann ich hier noch ansetzen?

    Das Timing der Modbus Frames bzw. Zeichen ist bei Modbus RTU anscheinend nicht besonders gut/stabil. Ich hatte da mit meinem Smile 5 auch massive Probleme. Schau mal auf deinem Raspi, ob du da was einstellen kannst.

    Es geht darum, dass Pausen zwischen den einzelnen Zeichen auch etwas länger sein dürfen. Leider heißt das überall ein bisschen anders, Bei meinem USR W610 musste ich z.B. das "Default interval between 2 bytes" vergrößern. Manchmal wird das auch "GAP Supervision" genannt, manchmal auch wieder ganz anders. Hier hatte ich übrigens schon darauf hingewiesen.

  • Das Timing der Modbus Frames bzw. Zeichen ist bei Modbus RTU anscheinend nicht besonders gut/stabil. Ich hatte da mit meinem Smile 5 auch massive Probleme. Schau mal auf deinem Raspi, ob du da was einstellen kannst.

    Es geht darum, dass Pausen zwischen den einzelnen Zeichen auch etwas länger sein dürfen. Leider heißt das überall ein bisschen anders, Bei meinem USR W610 musste ich z.B. das "Default interval between 2 bytes" vergrößern. Manchmal wird das auch "GAP Supervision" genannt, manchmal auch wieder ganz anders. Hier hatte ich übrigens schon darauf hingewiesen.


    Vielen Dank für den Hinweis, diesen hatte ich bereits gelesen, kam damit aber leider auch nicht weiter. Besteht deiner Meinung nach also das Problem beim Adapter oder ist das EVCC-System auf dem Raspi nicht ausreichend "fehlertolerant" bei den Pausen zwischen den Zeichen? Ich arbeite mit diesem Adapter:

    https://www.waveshare.com/usb-to-rs485.htm


    und versuche gerade herauszubekommen, inwiefern ich den entsprechenden Wert anpassen könnte.

  • Besteht deiner Meinung nach also das Problem beim Adapter oder ist das EVCC-System auf dem Raspi nicht ausreichend

    Puh, keine Ahnung. Schreib doch mal den Support des Herstellers an und beschreibe das Problem, evtl. kennt er den Effekt.


    EVCC kenne ich so gar nicht. Gibt's da evtl. Timeouts, an denen du rumspielen könntest?


    Ansonsten kannst du ja mal versuchen, testweise mit deinem USB Adapter und einer anderen Software Daten von deinem T 10 abzufragen, z.B. mit https://pypi.org/project/pyModbusTCP/


    Sorry, sonst keine Idee. Das mit dem Timing ist ja auch nur meine Vermutung, weil ich genau deinen beschriebenen Effekt hatte und es da die Ursache war.


    Viel Erfolg!