Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Einsteigerfragen
  4. Abfrage Daten MyPV AC ELWA 2 mit ioBroker?

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.2k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.5k

Abfrage Daten MyPV AC ELWA 2 mit ioBroker?

Geplant Angeheftet Gesperrt Verschoben Einsteigerfragen
5 Beiträge 3 Kommentatoren 1.3k Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • hruH Online
    hruH Online
    hru
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    ich würde gerne die Daten meiner AC ELWA 2 (Heizstab zur Erwärmung des Brauchwassers) mit ioBroker auslesen.

    Kurz zur Installation:
    Die AC ELWA 2 hängt im Netzwerk und hat eine eigene IP-Adresse.
    In der Konfiguration hat sie IP-Adresse des Wechselrichters Sungrow SH10RT (LAN-Port) in den Steuerungs-Einstellungen eingetragen. (Ansteuerungstyp = "Sungrow Manual").
    Ich möchte mit der AC ELWA 2 nur den überschüssigen Strom "verheizen".
    Das funktioniert auch prima.

    Es gibt von MyPV eine Cloud (https://www.live.my-pv.com/).
    Dort sind die Daten schön zu sehen (aktuelle Wassertemperatur, Min und Max von heute, aufgewendete kWh, ...)

    Diese Daten würde ich gerne mit dem ioBroker abfragen.

    Mein erster Ansatz war, dazu den Modbus-Adapter zu verwenden.
    Die Verbindung kommt immer nur ganz kurz zustande und wird dann wieder unterbrochen.

    Eine Anfrage bei Support von MyPV hat mir folgende Antwort gebracht:

    Es kann immer nur eine Abfrage vorhanden sein.
    Entweder Sungrow Manual oder Modbus TCP
    
    

    Das bedeutet wohl dass die AC ELWA 2 wenn sie mit dem SH10RT per Modbus kommuniziert, keine weitere Kommunikation (z.B. mit dem ioBroker) über den Modbus durchführen kann.

    Es geht mir nicht um die Steuerung der AC ELWA 2, das funktioniert alles super.
    Es geht mir nur darum die Daten auszulesen, um sie im Monitoring zur Verfügung zu haben.
    Wie kommen denn die Daten der AC ELWA 2 in die MyPV-Cloud?

    Der MyPV Support hat mir empfohlen das JSON (<IP-Adresse>/data.jsn) auszuwerten.
    Da kann man den aktuellen Zustand der AC ELWA 2 auch abfragen.
    Dort ist aber beispielweise keine Angabe zu finden, wie viele kWh heute schon "verheizt" wurden.
    Nur die aktuelle Wassertemperatur und die aktuell eingesetzte Heizenergie (in dem Moment wo geheizt wird).

    Gibt es einen Parser für ein JSON im Kontext von ioBroker?
    Die Seite <IP-Adresse>/data.jsn liefert wirklich ein valides JSON.

    Würde es ggfs. etwas bringen einen Modbus-Proxy dazwischen zu schalten?
    Momentan holt sich die AC ELWA 2 die Steuerdaten direkt vom SH10RT.
    Wenn ich einen Modbus-Proxy dazwischen schalten würde, könnte ich dann Modbus-Anfragen an die AC ELWA stellen?

    Was ich auch noch nicht verstanden habe:
    Ist die Information, wieviel kWh heute für das Aufheizen des Wassers aufgewendet wurden in den Registern überhaupt enthalten?
    Kann bitte mal ein Fachmann über die Liste anbei drüber schauen?
    AC_ELWA_2_Documentation-Controls_EN231110.pdf

    Danke und Gruß

    Hartmut

    PV-Anlage:
    13,5 kWp, WR: Sungrow SH10RT, Speicher: Sungrow SBR128, Heizstab: MyPV AC ELWA2
    Sonstige Geräte:
    ShellyPlusSmoke Rauchwarnmelder, Shelly Gas Warnmelder, IR-Leseköpfe für Stromzähler

    HomoranH D 2 Antworten Letzte Antwort
    0
    • hruH hru

      Hallo zusammen,

      ich würde gerne die Daten meiner AC ELWA 2 (Heizstab zur Erwärmung des Brauchwassers) mit ioBroker auslesen.

      Kurz zur Installation:
      Die AC ELWA 2 hängt im Netzwerk und hat eine eigene IP-Adresse.
      In der Konfiguration hat sie IP-Adresse des Wechselrichters Sungrow SH10RT (LAN-Port) in den Steuerungs-Einstellungen eingetragen. (Ansteuerungstyp = "Sungrow Manual").
      Ich möchte mit der AC ELWA 2 nur den überschüssigen Strom "verheizen".
      Das funktioniert auch prima.

      Es gibt von MyPV eine Cloud (https://www.live.my-pv.com/).
      Dort sind die Daten schön zu sehen (aktuelle Wassertemperatur, Min und Max von heute, aufgewendete kWh, ...)

      Diese Daten würde ich gerne mit dem ioBroker abfragen.

      Mein erster Ansatz war, dazu den Modbus-Adapter zu verwenden.
      Die Verbindung kommt immer nur ganz kurz zustande und wird dann wieder unterbrochen.

      Eine Anfrage bei Support von MyPV hat mir folgende Antwort gebracht:

      Es kann immer nur eine Abfrage vorhanden sein.
      Entweder Sungrow Manual oder Modbus TCP
      
      

      Das bedeutet wohl dass die AC ELWA 2 wenn sie mit dem SH10RT per Modbus kommuniziert, keine weitere Kommunikation (z.B. mit dem ioBroker) über den Modbus durchführen kann.

      Es geht mir nicht um die Steuerung der AC ELWA 2, das funktioniert alles super.
      Es geht mir nur darum die Daten auszulesen, um sie im Monitoring zur Verfügung zu haben.
      Wie kommen denn die Daten der AC ELWA 2 in die MyPV-Cloud?

      Der MyPV Support hat mir empfohlen das JSON (<IP-Adresse>/data.jsn) auszuwerten.
      Da kann man den aktuellen Zustand der AC ELWA 2 auch abfragen.
      Dort ist aber beispielweise keine Angabe zu finden, wie viele kWh heute schon "verheizt" wurden.
      Nur die aktuelle Wassertemperatur und die aktuell eingesetzte Heizenergie (in dem Moment wo geheizt wird).

      Gibt es einen Parser für ein JSON im Kontext von ioBroker?
      Die Seite <IP-Adresse>/data.jsn liefert wirklich ein valides JSON.

      Würde es ggfs. etwas bringen einen Modbus-Proxy dazwischen zu schalten?
      Momentan holt sich die AC ELWA 2 die Steuerdaten direkt vom SH10RT.
      Wenn ich einen Modbus-Proxy dazwischen schalten würde, könnte ich dann Modbus-Anfragen an die AC ELWA stellen?

      Was ich auch noch nicht verstanden habe:
      Ist die Information, wieviel kWh heute für das Aufheizen des Wassers aufgewendet wurden in den Registern überhaupt enthalten?
      Kann bitte mal ein Fachmann über die Liste anbei drüber schauen?
      AC_ELWA_2_Documentation-Controls_EN231110.pdf

      Danke und Gruß

      Hartmut

      HomoranH Nicht stören
      HomoranH Nicht stören
      Homoran
      Global Moderator Administrators
      schrieb am zuletzt editiert von
      #2

      @hru warum noch ein Thread?
      https://forum.iobroker.net/post/1153828

      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      hruH 1 Antwort Letzte Antwort
      1
      • HomoranH Homoran

        @hru warum noch ein Thread?
        https://forum.iobroker.net/post/1153828

        hruH Online
        hruH Online
        hru
        schrieb am zuletzt editiert von
        #3

        @homoran
        Hallo homoran,
        ich wollte die aktuellen Kenntnisse (und Antworten des MyPV-Supportes) noch einmal zusammen fassen und dem Thread einen passenderen Titel geben.

        Ggfs. heißt die Lösung ja Auswerten des JSON (und nicht Modbus-Abfrage).

        Gruß Hartmut

        PS: Einen schönen 1. Mai;-)

        PV-Anlage:
        13,5 kWp, WR: Sungrow SH10RT, Speicher: Sungrow SBR128, Heizstab: MyPV AC ELWA2
        Sonstige Geräte:
        ShellyPlusSmoke Rauchwarnmelder, Shelly Gas Warnmelder, IR-Leseköpfe für Stromzähler

        HomoranH 1 Antwort Letzte Antwort
        0
        • hruH hru

          @homoran
          Hallo homoran,
          ich wollte die aktuellen Kenntnisse (und Antworten des MyPV-Supportes) noch einmal zusammen fassen und dem Thread einen passenderen Titel geben.

          Ggfs. heißt die Lösung ja Auswerten des JSON (und nicht Modbus-Abfrage).

          Gruß Hartmut

          PS: Einen schönen 1. Mai;-)

          HomoranH Nicht stören
          HomoranH Nicht stören
          Homoran
          Global Moderator Administrators
          schrieb am zuletzt editiert von
          #4

          @hru sagte in Abfrage Daten MyPV AC ELWA 2 mit ioBroker?:

          nicht Modbus-Abfrage

          hmm, hatte das hier gelesen.

          @hru sagte in Abfrage Daten MyPV AC ELWA 2 mit ioBroker?:

          könnte ich dann Modbus-Anfragen an die AC ELWA stellen?

          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

          1 Antwort Letzte Antwort
          0
          • hruH hru

            Hallo zusammen,

            ich würde gerne die Daten meiner AC ELWA 2 (Heizstab zur Erwärmung des Brauchwassers) mit ioBroker auslesen.

            Kurz zur Installation:
            Die AC ELWA 2 hängt im Netzwerk und hat eine eigene IP-Adresse.
            In der Konfiguration hat sie IP-Adresse des Wechselrichters Sungrow SH10RT (LAN-Port) in den Steuerungs-Einstellungen eingetragen. (Ansteuerungstyp = "Sungrow Manual").
            Ich möchte mit der AC ELWA 2 nur den überschüssigen Strom "verheizen".
            Das funktioniert auch prima.

            Es gibt von MyPV eine Cloud (https://www.live.my-pv.com/).
            Dort sind die Daten schön zu sehen (aktuelle Wassertemperatur, Min und Max von heute, aufgewendete kWh, ...)

            Diese Daten würde ich gerne mit dem ioBroker abfragen.

            Mein erster Ansatz war, dazu den Modbus-Adapter zu verwenden.
            Die Verbindung kommt immer nur ganz kurz zustande und wird dann wieder unterbrochen.

            Eine Anfrage bei Support von MyPV hat mir folgende Antwort gebracht:

            Es kann immer nur eine Abfrage vorhanden sein.
            Entweder Sungrow Manual oder Modbus TCP
            
            

            Das bedeutet wohl dass die AC ELWA 2 wenn sie mit dem SH10RT per Modbus kommuniziert, keine weitere Kommunikation (z.B. mit dem ioBroker) über den Modbus durchführen kann.

            Es geht mir nicht um die Steuerung der AC ELWA 2, das funktioniert alles super.
            Es geht mir nur darum die Daten auszulesen, um sie im Monitoring zur Verfügung zu haben.
            Wie kommen denn die Daten der AC ELWA 2 in die MyPV-Cloud?

            Der MyPV Support hat mir empfohlen das JSON (<IP-Adresse>/data.jsn) auszuwerten.
            Da kann man den aktuellen Zustand der AC ELWA 2 auch abfragen.
            Dort ist aber beispielweise keine Angabe zu finden, wie viele kWh heute schon "verheizt" wurden.
            Nur die aktuelle Wassertemperatur und die aktuell eingesetzte Heizenergie (in dem Moment wo geheizt wird).

            Gibt es einen Parser für ein JSON im Kontext von ioBroker?
            Die Seite <IP-Adresse>/data.jsn liefert wirklich ein valides JSON.

            Würde es ggfs. etwas bringen einen Modbus-Proxy dazwischen zu schalten?
            Momentan holt sich die AC ELWA 2 die Steuerdaten direkt vom SH10RT.
            Wenn ich einen Modbus-Proxy dazwischen schalten würde, könnte ich dann Modbus-Anfragen an die AC ELWA stellen?

            Was ich auch noch nicht verstanden habe:
            Ist die Information, wieviel kWh heute für das Aufheizen des Wassers aufgewendet wurden in den Registern überhaupt enthalten?
            Kann bitte mal ein Fachmann über die Liste anbei drüber schauen?
            AC_ELWA_2_Documentation-Controls_EN231110.pdf

            Danke und Gruß

            Hartmut

            D Offline
            D Offline
            denjo
            schrieb am zuletzt editiert von
            #5

            @hru hier ein script, du musst nur deine ip eintragen bzw ändern:

            // =====================================
            // my-PV AC ELWA 2 – Daten auslesen
            // ioBroker JavaScript-Skript
            // =====================================
            
            // >>> HIER IP deiner ELWA eintragen <<<
            const ELWA_IP = '192.168.178.145';   // aus deinem JSON: "cur_ip":"192.168.178.145"
            
            // Abfrage-Intervall in Sekunden
            const POLL_SECONDS = 10;
            
            // Basis-Pfad der States
            const base = 'mypv.acelwa2';
            
            // ===============================
            // States anlegen
            // ===============================
            createState(base + '.rawJson', '', {
                name: 'Rohdaten JSON',
                type: 'string',
                role: 'json',
                read: true,
                write: true
            });
            
            // „einfache“ Temperatur / Leistung (für VIS usw.)
            createState(base + '.temperature', 0, {
                name: 'Speichertemperatur oben',
                type: 'number',
                role: 'value.temperature',
                read: true,
                write: true
            });
            
            createState(base + '.power', 0, {
                name: 'Heizleistung ELWA',
                type: 'number',
                role: 'value.power',
                read: true,
                write: true
            });
            
            // Detail-States
            createState(base + '.temperature_tank', 0, {
                name: 'Speichertemperatur oben (temp2)',
                type: 'number',
                role: 'value.temperature',
                read: true,
                write: true
            });
            
            createState(base + '.temperature_inlet', 0, {
                name: 'Temperatur unten / Zulauf (temp1)',
                type: 'number',
                role: 'value.temperature',
                read: true,
                write: true
            });
            
            createState(base + '.temperature_ps', 0, {
                name: 'Elektronik-Temperatur (temp_ps)',
                type: 'number',
                role: 'value.temperature',
                read: true,
                write: true
            });
            
            createState(base + '.power_elwa2', 0, {
                name: 'Heizleistung ELWA (power_elwa2)',
                type: 'number',
                role: 'value.power',
                read: true,
                write: true
            });
            
            createState(base + '.power_solar', 0, {
                name: 'PV-Leistung (power_solar)',
                type: 'number',
                role: 'value.power',
                read: true,
                write: true
            });
            
            createState(base + '.power_grid', 0, {
                name: 'Netzleistung (power_grid)',
                type: 'number',
                role: 'value.power',
                read: true,
                write: true
            });
            
            createState(base + '.surplus', 0, {
                name: 'Überschussleistung (surplus)',
                type: 'number',
                role: 'value.power',
                read: true,
                write: true
            });
            
            createState(base + '.freq', 0, {
                name: 'Netzfrequenz',
                type: 'number',
                role: 'value.frequency',
                read: true,
                write: true
            });
            
            createState(base + '.wifi_signal', 0, {
                name: 'WLAN-Signalstärke',
                type: 'number',
                role: 'value',
                read: true,
                write: true
            });
            
            createState(base + '.ctrlstate', '', {
                name: 'Status-Text (ctrlstate)',
                type: 'string',
                role: 'text',
                read: true,
                write: true
            });
            
            createState(base + '.date', '', {
                name: 'Datum',
                type: 'string',
                role: 'date',
                read: true,
                write: true
            });
            
            createState(base + '.time', '', {
                name: 'Uhrzeit',
                type: 'string',
                role: 'text',
                read: true,
                write: true
            });
            
            // ===============================
            // Funktion: Daten holen
            // ===============================
            const http = require('http');
            
            function fetchElwaData() {
                const url = `http://${ELWA_IP}/data.jsn`;
                log(`Hole Daten von ${url}`, 'debug');
            
                http.get(url, (res) => {
                    let body = '';
            
                    res.on('data', (chunk) => {
                        body += chunk;
                    });
            
                    res.on('end', () => {
                        try {
                            const json = JSON.parse(body);
            
                            // Roh-JSON speichern
                            setState(base + '.rawJson', JSON.stringify(json), true);
            
                            // Zum Debuggen einmal ins Log
                            log('ELWA JSON: ' + JSON.stringify(json), 'debug');
            
                            // ===============================
                            // Werte umrechnen und mappen
                            // ===============================
            
                            // Temperaturen sind in Zehntel-Grad
                            const t_inlet = (json.temp1 != null) ? json.temp1 / 10 : null;
                            const t_tank  = (json.temp2 != null) ? json.temp2 / 10 : null;
                            const t_ps    = (json.temp_ps != null) ? json.temp_ps / 10 : null;
            
                            if (t_inlet !== null) {
                                setState(base + '.temperature_inlet', Number(t_inlet), true);
                            }
                            if (t_tank !== null) {
                                setState(base + '.temperature_tank', Number(t_tank), true);
                                // „Haupt-Temperatur“:
                                setState(base + '.temperature', Number(t_tank), true);
                            }
                            if (t_ps !== null) {
                                setState(base + '.temperature_ps', Number(t_ps), true);
                            }
            
                            // Leistungen (in Watt)
                            const p_elwa2 = json.power_elwa2 != null ? json.power_elwa2 : 0;
                            const p_solar = json.power_solar != null ? json.power_solar : 0;
                            const p_grid  = json.power_grid != null ? json.power_grid : 0;
                            const surplus = json.surplus != null ? json.surplus : 0;
            
                            setState(base + '.power_elwa2', Number(p_elwa2), true);
                            setState(base + '.power_solar', Number(p_solar), true);
                            setState(base + '.power_grid', Number(p_grid), true);
                            setState(base + '.surplus', Number(surplus), true);
            
                            // „Haupt-Leistungs“-State:
                            setState(base + '.power', Number(p_elwa2), true);
            
                            // Netzfrequenz (49979 → 49.979 Hz)
                            if (json.freq != null) {
                                const freqHz = json.freq / 1000;
                                setState(base + '.freq', Number(freqHz), true);
                            }
            
                            // WLAN-Signal (0–3)
                            if (json.wifi_signal != null) {
                                setState(base + '.wifi_signal', Number(json.wifi_signal), true);
                            }
            
                            // Status-Text
                            if (json.ctrlstate != null) {
                                setState(base + '.ctrlstate', String(json.ctrlstate), true);
                            }
            
                            // Datum / Zeit
                            if (json.date != null) {
                                setState(base + '.date', String(json.date), true);
                            }
                            if (json.loctime != null) {
                                setState(base + '.time', String(json.loctime), true);
                            }
            
                        } catch (e) {
                            log('Fehler beim Auswerten der ELWA-Daten: ' + e, 'error');
                        }
                    });
            
                }).on('error', (err) => {
                    log('Fehler beim HTTP-Aufruf der ELWA: ' + err, 'error');
                });
            }
            
            // ===============================
            // Zyklisches Polling
            // ===============================
            schedule(`*/${POLL_SECONDS} * * * * *`, fetchElwaData);
            
            // Direkt beim Start einmal ausführen
            fetchElwaData();
            
            
            1 Antwort Letzte Antwort
            0
            Antworten
            • In einem neuen Thema antworten
            Anmelden zum Antworten
            • Älteste zuerst
            • Neuste zuerst
            • Meiste Stimmen


            Support us

            ioBroker
            Community Adapters
            Donate

            565

            Online

            32.5k

            Benutzer

            81.7k

            Themen

            1.3m

            Beiträge
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
            ioBroker Community 2014-2025
            logo
            • Anmelden

            • Du hast noch kein Konto? Registrieren

            • Anmelden oder registrieren, um zu suchen
            • Erster Beitrag
              Letzter Beitrag
            0
            • Home
            • Aktuell
            • Tags
            • Ungelesen 0
            • Kategorien
            • Unreplied
            • Beliebt
            • GitHub
            • Docu
            • Hilfe