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. Tester
  4. Test Adapter luxtronik2 v0.4.x

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    876

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Test Adapter luxtronik2 v0.4.x

Geplant Angeheftet Gesperrt Verschoben Tester
adapterluxtronik wpwebsocket
289 Beiträge 52 Kommentatoren 74.2k Aufrufe 49 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.
  • L Offline
    L Offline
    lessthanmore
    schrieb am zuletzt editiert von lessthanmore
    #281

    Evlt. ist das hier für den ein oder anderen interessant. Auch weil sich am Adapter offensichtlich nichts mehr tut.

    AIT hat mit der Firmware V3.90.3 einen einfachen Modbus TCP in der Steuerung integriert, über den ausgelesen und auch geschrieben werden kann.
    Bspw. kann die Pumpe nun auch über EVCC eingebunden und bei Überschuss entsprechend über Offset gesteuert werden.

    Siehe auch: https://github.com/evcc-io/evcc/issues/20760

    1 Antwort Letzte Antwort
    0
    • Bernd 0B Offline
      Bernd 0B Offline
      Bernd 0
      schrieb am zuletzt editiert von
      #282

      Hi zusammen,
      bei mir wurde eine Wartung an der WP durchgeführt und der Techniker hat natürlich gleich ein Firmwareupdate gemacht. Nun habe ich die V3.91.0 auf meiner LADV 9.1-1/3.
      Es haben sich alle Datenpunkte in Luxtronic geändert. Zuvor war es deutsch nun ist es englisch und man muss auch bei vielen raten. (Beispiel das AV-Abtauventil ist so nicht mehr vorhanden. Nun ist es wahrscheinlich das VD1)
      Aber das ist alles garnicht so schlimm bisher. Was wirklich ein Problem darstellt, dass der Datenpunkt Leistungsaufnahme nicht mehr vorhanden ist. Zuvor konnte ich via
      luxtronik2.0.Informationen.Eingesetzte-Energie.Heizung
      luxtronik2.0.Informationen.Eingesetzte-Energie.Warmwasser
      die Leistungsaufnahme nachvollziehen. Beides ist nicht mehr vorhanden.
      Habt ihr eine Lösung dafür?
      Total schade, dass der Adapter nicht mehr aktualisiert wird :-(
      Gruß

      Bernd 0B 1 Antwort Letzte Antwort
      0
      • B Offline
        B Offline
        Borsti84
        schrieb am zuletzt editiert von Borsti84
        #283

        Hi. Ich habe auch jetzt die V3.91.0 drauf. Die Datenpunkte sind nun halt Englisch. Ich denke das findet sich alles wieder. Was genau fehlt konnte ich noch nicht prüfen. Ich habe das Problem das der Adapter sich alle 30sek. rot wird und neu startet. wenn ich den Websocket-Port 8214 rein nehme kommt diese fehlermeldung:


        2025-07-12 19:29:39.149 error Couldn't handle message: Error: Non-whitespace before first tag.Line: 0Column: 1Char: { Error: Non-whitespace before first tag.Line: 0Column: 1Char: { at error (/opt/iobroker/node_modules/sax/lib/sax.js:658:10) at strictFail (/opt/iobroker/node_modules/sax/lib/sax.js:684:7) at beginWhiteSpace (/opt/iobroker/node_modules/sax/lib/sax.js:958:7) at SAXParser.write (/opt/iobroker/node_modules/sax/lib/sax.js:1013:11) at Parser.exports.Parser.Parser.parseString (/opt/iobroker/node_modules/iobroker.luxtronik2/node_modules/xml2js/lib/parser.js:323:31) at Parser.parseString (/opt/iobroker/node_modules/iobroker.luxtronik2/node_modules/xml2js/lib/parser.js:5:59) at /opt/iobroker/node_modules/iobroker.luxtronik2/node_modules/xml2js/lib/parser.js:338:24 at new Promise (<anonymous>) at Parser.exports.Parser.Parser.parseStringPromise (/opt/iobroker/node_modules/iobroker.luxtronik2/node_modules/xml2js/lib/parser.js:336:14) at Parser.parseStringPromise (/opt/iobroker/node_modules/iobroker.luxtronik2/node_modules/xml2js/lib/parser.js:5:59)

        Wenn nur der Luxtronic-Port 8889 aktiv ist kommen zwar Daten rein, aber das Problem mit dem neustarten des Adapters bleibt. Hier die Fehlermeldung von 8889:

        2025-07-12 19:31:56.843 error Didn't receive data from WebSocket after 3 retries, restarting adapter

        Das SHI Modbus habe ich am laufen und man bekommt eigentlich die nötigsten Datenpunkte raus. Es ist halt ein etwas beschnittenes Modbus. Das komplette Modbus (GLT) kostet. Man benötigt dazu eine Lizenz. Mit dem Adapter bekommt man doch einige Datenpunkte mehr die schon recht informativ sein können.
        Vielleicht hat ja jemand eine idee wie man den Adapter wieder zum laufen bekommt. Schade das er nicht mehr gepflegt wird. bin über jede hilfe dankbar. Beste Grüße

        1 Antwort Letzte Antwort
        0
        • Bernd 0B Bernd 0

          Hi zusammen,
          bei mir wurde eine Wartung an der WP durchgeführt und der Techniker hat natürlich gleich ein Firmwareupdate gemacht. Nun habe ich die V3.91.0 auf meiner LADV 9.1-1/3.
          Es haben sich alle Datenpunkte in Luxtronic geändert. Zuvor war es deutsch nun ist es englisch und man muss auch bei vielen raten. (Beispiel das AV-Abtauventil ist so nicht mehr vorhanden. Nun ist es wahrscheinlich das VD1)
          Aber das ist alles garnicht so schlimm bisher. Was wirklich ein Problem darstellt, dass der Datenpunkt Leistungsaufnahme nicht mehr vorhanden ist. Zuvor konnte ich via
          luxtronik2.0.Informationen.Eingesetzte-Energie.Heizung
          luxtronik2.0.Informationen.Eingesetzte-Energie.Warmwasser
          die Leistungsaufnahme nachvollziehen. Beides ist nicht mehr vorhanden.
          Habt ihr eine Lösung dafür?
          Total schade, dass der Adapter nicht mehr aktualisiert wird :-(
          Gruß

          Bernd 0B Offline
          Bernd 0B Offline
          Bernd 0
          schrieb am zuletzt editiert von Bernd 0
          #284

          @bernd-0 Ich habe mir jetzt in IObroker ein Java-Script erstellt, welches die Leistungswerte aus der Weboberfläche zieht und diese als Datenpunkt in IOBroker zur Verfügung stellt. Ebenso lasse ich mir die Daten via UDP an Loxone senden. Wer das gebrauchen kann, kann sich gerne melden.

          PS.: Ich nutze nicht mehr Luxtronik für die Datenpunkte sondern nun die Anbindung via MyUplink, was mit der V3.91.0 möglich ist und auch stabil läuft. Einzig die Leistungsdaten kommen nicht rein - weder via Luxtronik noch über myUplink. Daher der Umweg über die Weboberflächen-Abfrage. :confounded:

          B 1 Antwort Letzte Antwort
          0
          • Bernd 0B Bernd 0

            @bernd-0 Ich habe mir jetzt in IObroker ein Java-Script erstellt, welches die Leistungswerte aus der Weboberfläche zieht und diese als Datenpunkt in IOBroker zur Verfügung stellt. Ebenso lasse ich mir die Daten via UDP an Loxone senden. Wer das gebrauchen kann, kann sich gerne melden.

            PS.: Ich nutze nicht mehr Luxtronik für die Datenpunkte sondern nun die Anbindung via MyUplink, was mit der V3.91.0 möglich ist und auch stabil läuft. Einzig die Leistungsdaten kommen nicht rein - weder via Luxtronik noch über myUplink. Daher der Umweg über die Weboberflächen-Abfrage. :confounded:

            B Offline
            B Offline
            Borsti84
            schrieb am zuletzt editiert von
            #285

            @bernd-0

            Hallo. Ja ich habe den Luxtronic Adapter nun auch abgeschaltet. Hab auch keine Lust mich da durchzuprobieren usw. Hab mit ChatGPT usw. auch alles mögliche versucht zu probieren. Vergebens.

            Wie gesagt, jetzt bekomme ich viele Werte über Modbus (SmartHomeInterface).
            MyUplink habe ich auch laufen. Da bekomt man auch so einiges aber eben noch nicht alles und vor allem in etwas längerem Intervall (1 min). Was rein theoretisch auch reicht.

            Wenn Du dein Script zur Verfügung stellen kannst wäre das natürlich super. Das würde mich freuen.
            Das Webinterface ist ja quasi fast LIVE.

            M Bernd 0B 2 Antworten Letzte Antwort
            0
            • B Borsti84

              @bernd-0

              Hallo. Ja ich habe den Luxtronic Adapter nun auch abgeschaltet. Hab auch keine Lust mich da durchzuprobieren usw. Hab mit ChatGPT usw. auch alles mögliche versucht zu probieren. Vergebens.

              Wie gesagt, jetzt bekomme ich viele Werte über Modbus (SmartHomeInterface).
              MyUplink habe ich auch laufen. Da bekomt man auch so einiges aber eben noch nicht alles und vor allem in etwas längerem Intervall (1 min). Was rein theoretisch auch reicht.

              Wenn Du dein Script zur Verfügung stellen kannst wäre das natürlich super. Das würde mich freuen.
              Das Webinterface ist ja quasi fast LIVE.

              M Offline
              M Offline
              Michi2322
              schrieb am zuletzt editiert von Michi2322
              #286

              @borsti84 Ich habe vor 3 Tagen von iOBroker auf Home Assistant umgestellt und da gibt es im HACS eine Luxtronic Lösung. https://github.com/BenPru/luxtronik

              klappt gut und das Dashboard im groben ist gleich dabei. Ich muss sagen beste Entscheidung. Viel einfacher und integrativer und mehr support durch größere Community. Hier tut sich ja leider nix :-| btw. Die Installation auf meinem Raspi 4 und weitere Konfiguration ging mit Chat GPT sehr gut und ich habe bisher nur auf die Schnelle HA getestet und keine eigenen Dashboards gebaut bisher aber ich bin echt begeistert über die Funktionalität. Die Einbindung einzelner Geräte dauert teilweise keine 5 Minuten.

              1128a3ce-dc9a-4ffa-ae4e-c49476771a7d-image.png

              B 1 Antwort Letzte Antwort
              0
              • B Borsti84

                @bernd-0

                Hallo. Ja ich habe den Luxtronic Adapter nun auch abgeschaltet. Hab auch keine Lust mich da durchzuprobieren usw. Hab mit ChatGPT usw. auch alles mögliche versucht zu probieren. Vergebens.

                Wie gesagt, jetzt bekomme ich viele Werte über Modbus (SmartHomeInterface).
                MyUplink habe ich auch laufen. Da bekomt man auch so einiges aber eben noch nicht alles und vor allem in etwas längerem Intervall (1 min). Was rein theoretisch auch reicht.

                Wenn Du dein Script zur Verfügung stellen kannst wäre das natürlich super. Das würde mich freuen.
                Das Webinterface ist ja quasi fast LIVE.

                Bernd 0B Offline
                Bernd 0B Offline
                Bernd 0
                schrieb am zuletzt editiert von Bernd 0
                #287

                @borsti84 here you go :rocket: - IOBroker JavaScript. Einmal via Datenpunkt und ebenso UDP send to Loxone

                // === Konfiguration ===
                const ip = '192.168.178.xx';
                const port = 8214;
                const password = '999999';
                const abfrageIntervall = 10 * 1000; // 10 Sekunden
                
                // === UDP-Konfiguration für Loxone ===
                const udpHost = '192.168.178.xx';
                const udpPort = 7000;
                
                // === interner Zustand zum Vergleich bei Änderungen ===
                const lastValues = {
                    Heizung: null,
                    Warmwasser: null,
                    Gesamt: null
                };
                
                // === UDP-Funktion ===
                function sendeUDP(name, wert) {
                    const dgram = require('dgram');
                    const client = dgram.createSocket('udp4');
                    const formatted = wert.toFixed(2); // Punkt als Dezimaltrennzeichen
                    const befehl = `WP.${name}=${formatted}`;
                    const message = Buffer.from(befehl);
                    client.send(message, 0, message.length, udpPort, udpHost, (err) => {
                        if (err) {
                            console.error(`❌ Fehler beim Senden an Loxone (${name}):`, err.message);
                        } else {
                            console.log(`📤 UDP gesendet: ${befehl}`);
                        }
                        client.close();
                    });
                }
                
                let leistungsaufnahmeId = null;
                
                // === WebSocket einrichten ===
                const WebSocket = require('ws');
                const ws = new WebSocket(`ws://${ip}:${port}`, 'Lux_WS');
                
                ws.on('open', () => {
                    console.log('✅ WebSocket verbunden – Sende Login...');
                    ws.send(`LOGIN;${password}`);
                });
                
                ws.on('message', async (data) => {
                    let raw = "";
                    if (Buffer.isBuffer(data)) {
                        raw = data.toString('utf8');
                    } else if (typeof data === "string") {
                        raw = data;
                    } else {
                        console.error("❌ Unbekannter Nachrichtentyp:", typeof data);
                        return;
                    }
                
                    try {
                        const msg = JSON.parse(raw);
                
                        if (msg.type === "Navigation") {
                            leistungsaufnahmeId = findIdByName(msg.items, "Leistungsaufnahme");
                
                            if (leistungsaufnahmeId) {
                                ws.send(`GET;${leistungsaufnahmeId}`);
                                setInterval(() => {
                                    ws.send(`GET;${leistungsaufnahmeId}`);
                                }, abfrageIntervall);
                            } else {
                                console.error("❌ Konnte ID für 'Leistungsaufnahme' nicht finden!");
                            }
                        }
                
                        if (msg.type === "Content" && msg.name === "Leistungsaufnahme" && msg.items) {
                            for (const item of msg.items) {
                                const name = item.name.trim(); // z. B. "Gesamt"
                                const rawValue = item.value.trim(); // z. B. "5000.0 kWh"
                                const numericValue = parseFloat(rawValue.replace(",", "."));
                                const id = `javascript.0.Wärmepumpe.Leistungsaufnahme.${name}`;
                
                                // Datenpunkt anlegen, falls nicht vorhanden
                                if (!existsObject(id)) {
                                    await createStateAsync(id, 0, {
                                        name: `Leistungsaufnahme ${name}`,
                                        unit: 'kWh',
                                        read: true,
                                        write: true,
                                        type: 'number'
                                    });
                                }
                
                                // Schreiben in ioBroker nur bei Änderung oder null
                                const oldVal = getState(id)?.val;
                                if (oldVal !== numericValue) {
                                    await setStateAsync(id, { val: numericValue, ack: true });
                                }
                
                                // UDP nur bei Änderung senden
                                if (lastValues[name] !== numericValue) {
                                    sendeUDP(name, numericValue);
                                    lastValues[name] = numericValue;
                                }
                            }
                        }
                
                    } catch (err) {
                        console.error("❌ Fehler beim Parsen:", err.message);
                        console.error(raw);
                    }
                });
                
                ws.on('close', () => {
                    console.warn('🔌 Verbindung zur Wärmepumpe getrennt!');
                });
                
                // === Funktion zur ID-Suche ===
                function findIdByName(items, targetName) {
                    for (const item of items) {
                        if (item.name === targetName && item.id) {
                            return item.id;
                        }
                        if (item.items && item.items.length > 0) {
                            const result = findIdByName(item.items, targetName);
                            if (result) return result;
                        }
                    }
                    return null;
                }
                
                
                
                B 1 Antwort Letzte Antwort
                0
                • Bernd 0B Bernd 0

                  @borsti84 here you go :rocket: - IOBroker JavaScript. Einmal via Datenpunkt und ebenso UDP send to Loxone

                  // === Konfiguration ===
                  const ip = '192.168.178.xx';
                  const port = 8214;
                  const password = '999999';
                  const abfrageIntervall = 10 * 1000; // 10 Sekunden
                  
                  // === UDP-Konfiguration für Loxone ===
                  const udpHost = '192.168.178.xx';
                  const udpPort = 7000;
                  
                  // === interner Zustand zum Vergleich bei Änderungen ===
                  const lastValues = {
                      Heizung: null,
                      Warmwasser: null,
                      Gesamt: null
                  };
                  
                  // === UDP-Funktion ===
                  function sendeUDP(name, wert) {
                      const dgram = require('dgram');
                      const client = dgram.createSocket('udp4');
                      const formatted = wert.toFixed(2); // Punkt als Dezimaltrennzeichen
                      const befehl = `WP.${name}=${formatted}`;
                      const message = Buffer.from(befehl);
                      client.send(message, 0, message.length, udpPort, udpHost, (err) => {
                          if (err) {
                              console.error(`❌ Fehler beim Senden an Loxone (${name}):`, err.message);
                          } else {
                              console.log(`📤 UDP gesendet: ${befehl}`);
                          }
                          client.close();
                      });
                  }
                  
                  let leistungsaufnahmeId = null;
                  
                  // === WebSocket einrichten ===
                  const WebSocket = require('ws');
                  const ws = new WebSocket(`ws://${ip}:${port}`, 'Lux_WS');
                  
                  ws.on('open', () => {
                      console.log('✅ WebSocket verbunden – Sende Login...');
                      ws.send(`LOGIN;${password}`);
                  });
                  
                  ws.on('message', async (data) => {
                      let raw = "";
                      if (Buffer.isBuffer(data)) {
                          raw = data.toString('utf8');
                      } else if (typeof data === "string") {
                          raw = data;
                      } else {
                          console.error("❌ Unbekannter Nachrichtentyp:", typeof data);
                          return;
                      }
                  
                      try {
                          const msg = JSON.parse(raw);
                  
                          if (msg.type === "Navigation") {
                              leistungsaufnahmeId = findIdByName(msg.items, "Leistungsaufnahme");
                  
                              if (leistungsaufnahmeId) {
                                  ws.send(`GET;${leistungsaufnahmeId}`);
                                  setInterval(() => {
                                      ws.send(`GET;${leistungsaufnahmeId}`);
                                  }, abfrageIntervall);
                              } else {
                                  console.error("❌ Konnte ID für 'Leistungsaufnahme' nicht finden!");
                              }
                          }
                  
                          if (msg.type === "Content" && msg.name === "Leistungsaufnahme" && msg.items) {
                              for (const item of msg.items) {
                                  const name = item.name.trim(); // z. B. "Gesamt"
                                  const rawValue = item.value.trim(); // z. B. "5000.0 kWh"
                                  const numericValue = parseFloat(rawValue.replace(",", "."));
                                  const id = `javascript.0.Wärmepumpe.Leistungsaufnahme.${name}`;
                  
                                  // Datenpunkt anlegen, falls nicht vorhanden
                                  if (!existsObject(id)) {
                                      await createStateAsync(id, 0, {
                                          name: `Leistungsaufnahme ${name}`,
                                          unit: 'kWh',
                                          read: true,
                                          write: true,
                                          type: 'number'
                                      });
                                  }
                  
                                  // Schreiben in ioBroker nur bei Änderung oder null
                                  const oldVal = getState(id)?.val;
                                  if (oldVal !== numericValue) {
                                      await setStateAsync(id, { val: numericValue, ack: true });
                                  }
                  
                                  // UDP nur bei Änderung senden
                                  if (lastValues[name] !== numericValue) {
                                      sendeUDP(name, numericValue);
                                      lastValues[name] = numericValue;
                                  }
                              }
                          }
                  
                      } catch (err) {
                          console.error("❌ Fehler beim Parsen:", err.message);
                          console.error(raw);
                      }
                  });
                  
                  ws.on('close', () => {
                      console.warn('🔌 Verbindung zur Wärmepumpe getrennt!');
                  });
                  
                  // === Funktion zur ID-Suche ===
                  function findIdByName(items, targetName) {
                      for (const item of items) {
                          if (item.name === targetName && item.id) {
                              return item.id;
                          }
                          if (item.items && item.items.length > 0) {
                              const result = findIdByName(item.items, targetName);
                              if (result) return result;
                          }
                      }
                      return null;
                  }
                  
                  
                  
                  B Offline
                  B Offline
                  Borsti84
                  schrieb am zuletzt editiert von
                  #288

                  @bernd-0

                  Vielen Dank. Das ist echt Klasse. Funktioniert Prima. DANKE DANKE DANKE :slightly_smiling_face:

                  1 Antwort Letzte Antwort
                  0
                  • M Michi2322

                    @borsti84 Ich habe vor 3 Tagen von iOBroker auf Home Assistant umgestellt und da gibt es im HACS eine Luxtronic Lösung. https://github.com/BenPru/luxtronik

                    klappt gut und das Dashboard im groben ist gleich dabei. Ich muss sagen beste Entscheidung. Viel einfacher und integrativer und mehr support durch größere Community. Hier tut sich ja leider nix :-| btw. Die Installation auf meinem Raspi 4 und weitere Konfiguration ging mit Chat GPT sehr gut und ich habe bisher nur auf die Schnelle HA getestet und keine eigenen Dashboards gebaut bisher aber ich bin echt begeistert über die Funktionalität. Die Einbindung einzelner Geräte dauert teilweise keine 5 Minuten.

                    1128a3ce-dc9a-4ffa-ae4e-c49476771a7d-image.png

                    B Offline
                    B Offline
                    bounty01
                    schrieb am zuletzt editiert von
                    #289

                    @michi2322 für die Grundsatzdiskussion ioBroker vs. HA gibt es sicher geeignetere Threads, aber so stehen lassen will ich das hier auch nicht.
                    HA ist genau so lange schick, bis man die erste wenn-dann Beziehung selber definieren möchte. Man ist sofort im Texteditor unterwegs und der ist in der RaspberryPi-Version nichtmals aus der GUI aufrufbar. Sprich: ab in die shell, das richtige file öffnen, neu laden...

                    Ich hatte HA vor einigen Monaten mal testweise aufgesetzt und bin jetzt sehr froh, dass ich bei ioBroker so viele Freiheiten habe.
                    Aber ja, wer nur Daten sammeln will, für den ist HA tiptop.

                    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

                    784

                    Online

                    32.6k

                    Benutzer

                    82.1k

                    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