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. Hardware
  4. Keba KeEnergy Heizungssteuerung (M-TEC WP) in Smarthome

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Keba KeEnergy Heizungssteuerung (M-TEC WP) in Smarthome

Geplant Angeheftet Gesperrt Verschoben Hardware
keba keenergy m-tec modbus
149 Beiträge 27 Kommentatoren 32.5k Aufrufe 24 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.
  • S Offline
    S Offline
    Sepp 1
    schrieb am zuletzt editiert von Sepp 1
    #141

    @antfab Hallo, hatte mal wieder Zeit und die WP gebootet und auch den Inbetriebnahmeassistent durchgeführt und vorher bzw. dabei den Modul Typ auf Virtual gesetzt. Und ich habe den WMZ Modus auf "Analog" gesezt. Denke dies war die wichtige Einstellung, ob die WP nun den S0-Impuls ("Impuls") und den Wert vom Register 1000 nehmen soll.
    Nun kann ich von meiner Homematic den entsprechenden PV-Überschuss Wert setzen und dabei mein PV-Überschussregelung optimieren - für Akku-Ladung, zusätzlicher Heizstab, kleines E-Auto. Vorher möchte ich aber noch die PV-Prognose für den aktuellen Tag und des nächsten Tages mit einbauen.

    1 Antwort Letzte Antwort
    0
    • E Offline
      E Offline
      ergi
      schrieb am zuletzt editiert von
      #142

      Hab hier im Beitrag mal einige Informationen gesammelt und mich mit ChatGPT mal um ein aktuelles Skript gekümmert. Vielen Dank für die Vorarbeit. Es hat jetzt auch schreibbare Datenpunkte für Normal und Absenktemperatur, Boiler Soll&Stütztemp, sowie Boiler Betriebsart erzeugt. Außerdem mit der Möglichkeit, für einen lokalen login. Einfach host, username und password ändern im ersten Abschnitt "Konfiguration"

      /**
       * Script für Mtec / Hautec / Keba Wärmepumpe
       * Verwendet AXIOS statt request 
       */
      const axios = require('axios');
      
      // ==== KONFIGURATION ====
      
      const heizung_host = '192.168.xxx.xxx';
      
      const username = 'BENUTZERNAME';
      const password = 'PASSWORT';
      
      // Konstanten
      const urlOfHeatpump    = 'https://' + heizung_host + '/var/readWriteVars';
      const urlWriteHeatpump = 'https://' + heizung_host + '/var/readWriteVars?action=set';
      
      // Variablen die wir lesen wollen
      const jsonRequest = [
          // bereits vorhandene
          { "name": "APPL.CtrlAppl.sParam.param.setControlMode" },
          { "name": "APPL.CtrlAppl.sParam.heatCircuit[0].tempRoom.values.actValue" },
          { "name": "APPL.CtrlAppl.sParam.hotWaterTank[0].topTemp.values.actValue" },
          { "name": "APPL.CtrlAppl.sParam.outdoorTemp.values.actValue" },
          { "name": "APPL.CtrlAppl.sParam.heatCircuit[0].values.setValue" },
          { "name": "APPL.CtrlAppl.sParam.heatCircuit[0].param.offsetRoomTemp" },
          { "name": "APPL.CtrlAppl.sParam.heatCircuit[0].values.selectedSetTemp" },
          { "name": "APPL.CtrlAppl.sParam.heatCircuit[0].values.heatRequest" },
          { "name": "APPL.CtrlAppl.sParam.heatCircuit[0].values.coolRequest" },
          { "name": "APPL.CtrlAppl.sParam.hotWaterTank[0].values.heatRequestTop" },
          { "name": "APPL.CtrlAppl.sParam.hotWaterTank[0].param.normalSetTempMax.value" },
          { "name": "APPL.CtrlAppl.sParam.heatCircuit[0].tempReflux.values.actValue" },
          { "name": "APPL.CtrlAppl.sParam.heatCircuit[0].values.flowSetTemp" },
          { "name": "APPL.CtrlAppl.sParam.hotWaterTank[0].param.operatingMode" },
          { "name": "APPL.CtrlAppl.sParam.heatCircuit[0].param.normalSetTemp" },
          { "name": "APPL.CtrlAppl.sParam.heatCircuit[0].param.reducedSetTemp" },
          { "name": "APPL.CtrlAppl.sParam.hotWaterTank[0].param.reducedSetTempMax.value" },
      
          // Quelle / WP-Temperaturen (Namen je nach Firmware, hier typische KEBA-Namen)
          { "name": "APPL.CtrlAppl.sParam.heatpump[0].TempSourceIn.values.actValue" },
          { "name": "APPL.CtrlAppl.sParam.heatpump[0].TempSourceOut.values.actValue" },
          { "name": "APPL.CtrlAppl.sParam.heatpump[0].TempHeatFlow.values.actValue" },
          { "name": "APPL.CtrlAppl.sParam.heatpump[0].TempCompressorIn.values.actValue" },
          { "name": "APPL.CtrlAppl.sParam.heatpump[0].TempCompressorOut.values.actValue" },
      
          // Pumpen- / Verdichter-Leistungen (skaliert, z.B. 0..1)
          { "name": "APPL.CtrlAppl.sParam.heatpump[0].CircPump.values.setValueScaled" },
          { "name": "APPL.CtrlAppl.sParam.heatpump[0].Source.values.setValueScaled" },
          { "name": "APPL.CtrlAppl.sParam.heatpump[0].Compressor.values.setValueScaled" },
      
          // WP-Zustand
          { "name": "APPL.CtrlAppl.sParam.heatpump[0].values.heatpumpState" },
      
          // Estrichprogramm aktiv?
          { "name": "APPL.CtrlAppl.sParam.screedDrying.values.active" },
      
          // PV-Überschuss aktiv?
          { "name": "APPL.CtrlAppl.sParam.photovoltaics.values.excessEnergyActive" }
      ];
      
      // ==== STATES ANLEGEN ====
      
      // Allgemeine Temperaturen
      createState('javascript.'+instance+'.Heizung.Aussentemperatur',      0, { type: 'number',  role: 'value.temperature', unit: '°C', read: true, write: false });
      createState('javascript.'+instance+'.Heizung.Boilertemperatur.ist',  0, { type: 'number',  role: 'value.temperature', unit: '°C', read: true, write: false });
      createState('javascript.'+instance+'.Heizung.Boilertemperatur.soll', 0, { type: 'number',  role: 'level.temperature', unit: '°C', read: true, write: true });
      createState('javascript.'+instance+'.Heizung.Boilertemperatur.reducedSoll', 0, { type: 'number', role: 'level.temperature', unit: '°C', read: true, write: true });
      
      // Heizkreis-Ordner (wie gewünscht)
      createState('javascript.'+instance+'.Heizung.Heizkreis.Raumtemperatur.soll',   0, { type: 'number',  role: 'level.temperature', unit: '°C', read: true, write: true });
      createState('javascript.'+instance+'.Heizung.Heizkreis.Heizung.aufheizen',     false, { type: 'boolean', role: 'indicator', read: true, write: false });
      createState('javascript.'+instance+'.Heizung.Heizkreis.NormalTemp.soll',       0, { type: 'number', role: 'level.temperature', unit: '°C', read: true, write: true });
      createState('javascript.'+instance+'.Heizung.Heizkreis.ReducedTemp.soll',      0, { type: 'number', role: 'level.temperature', unit: '°C', read: true, write: true });
      
      // Rücklauf
      createState('javascript.'+instance+'.Heizung.RuecklaufTemp.ist',     0, { type: 'number',  role: 'value.temperature', unit: '°C', read: true, write: false });
      createState('javascript.'+instance+'.Heizung.RuecklaufTemp.soll',    0, { type: 'number',  role: 'level.temperature', unit: '°C', read: true, write: false });
      
      // Boiler-Betriebsart
      createState('javascript.'+instance+'.Heizung.Boiler.aufheizen',      false, { type: 'boolean', role: 'indicator', read: true, write: false });
      createState('javascript.'+instance+'.Heizung.Boiler.Betriebsart', 0, {
          type: 'number',
          role: 'level',
          states: {
              "0": "Aus",
              "1": "Auto",
              "2": "Ein",
              "3": "ManAufheizen"
          },
          read: true,
          write: true
      });
      
      // Quelle / WP / Pumpen / Status
      createState('javascript.'+instance+'.Heizung.QuelleTemp.Ein',    0, { type: 'number', role: 'value.temperature', unit: '°C', read: true, write: false });
      createState('javascript.'+instance+'.Heizung.QuelleTemp.Aus',    0, { type: 'number', role: 'value.temperature', unit: '°C', read: true, write: false });
      createState('javascript.'+instance+'.Heizung.Heizkreis.VorlaufTemp.ist', 0, { type: 'number', role: 'value.temperature', unit: '°C', read: true, write: false });
      createState('javascript.'+instance+'.Heizung.WP.VerdichterTemp.Ein', 0, { type: 'number', role: 'value.temperature', unit: '°C', read: true, write: false });
      createState('javascript.'+instance+'.Heizung.WP.VerdichterTemp.Aus', 0, { type: 'number', role: 'value.temperature', unit: '°C', read: true, write: false });
      createState('javascript.'+instance+'.Heizung.Pumpe.Heizkreis.Soll',  0, { type: 'number', role: 'value', unit: '', read: true, write: false });
      createState('javascript.'+instance+'.Heizung.Pumpe.Quelle.Soll',     0, { type: 'number', role: 'value', unit: '', read: true, write: false });
      createState('javascript.'+instance+'.Heizung.WP.Verdichter.Soll',    0, { type: 'number', role: 'value', unit: '', read: true, write: false });
      createState('javascript.'+instance+'.Heizung.WP.Status',      0, { type: 'number', role: 'value', read: true, write: false });
      createState('javascript.'+instance+'.Heizung.WP.StatusText', '', { type: 'string', role: 'text', read: true, write: false });
      
      // Estrichprogramm / PV
      createState('javascript.'+instance+'.Heizung.Estrichprogramm.aktiv', false, { type: 'boolean', role: 'indicator', read: true, write: false });
      createState('javascript.'+instance+'.Heizung.PV.UeberschussAktiv',   false, { type: 'boolean', role: 'indicator', read: true, write: false });
      
      // Hilfsfunktion: WP-Statuscode in Text umwandeln (Beispiel-Mapping, je nach Doku anpassen)
      function mapHeatpumpStateToText(code) {
          switch (code) {
              case 0: return 'Standby';
              case 1: return 'Anforderung';
              case 2: return 'Heizen';
              case 3: return 'Abtauen';
              case 4: return 'Warmwasser';
              case 5: return 'Fehler';
              default: return 'Unbekannt (' + code + ')';
          }
      }
      
      // ==== FUNKTION: Daten lesen ====
      async function readHeatpump() {
          try {
              const response = await axios.post(urlOfHeatpump, jsonRequest, {
                  httpsAgent: new (require('https').Agent)({
                      rejectUnauthorized: false // Selbstsigniertes KEBA-Zertifikat akzeptieren
                  }),
                  auth: {
                      username: username,
                      password: password
                  },
                  headers: {
                      'Content-Type': 'application/json'
                  }
              });
      
              const data = {};
              response.data.forEach(item => data[item.name] = item.value);
      
              // Allgemeine Temperaturen
              setState('javascript.'+instance+'.Heizung.Aussentemperatur',
                  parseFloat(data["APPL.CtrlAppl.sParam.outdoorTemp.values.actValue"]) || 0, true);
              setState('javascript.'+instance+'.Heizung.Boilertemperatur.ist',
                  parseFloat(data["APPL.CtrlAppl.sParam.hotWaterTank[0].topTemp.values.actValue"]) || 0, true);
      
              // Heizkreis-Soll (berechneter Sollwert der WP)
              setState('javascript.'+instance+'.Heizung.Heizkreis.Raumtemperatur.soll',
                  parseFloat(data["APPL.CtrlAppl.sParam.heatCircuit[0].values.setValue"]) || 0, true);
      
              // Heizanforderung (Heizkreis) nur lesen
              setState('javascript.'+instance+'.Heizung.Heizkreis.Heizung.aufheizen',
                  data["APPL.CtrlAppl.sParam.heatCircuit[0].values.heatRequest"] == "1", true);
      
              // Boiler aufheizen nur lesen
              const heatRequestTop = data["APPL.CtrlAppl.sParam.hotWaterTank[0].values.heatRequestTop"];
              setState('javascript.'+instance+'.Heizung.Boiler.aufheizen',
                  heatRequestTop === "true" || heatRequestTop === "1" || heatRequestTop === true, true);
      
              // Rücklauf
              setState('javascript.'+instance+'.Heizung.RuecklaufTemp.ist',
                  parseFloat(data["APPL.CtrlAppl.sParam.heatCircuit[0].tempReflux.values.actValue"]) || 0, true);
              setState('javascript.'+instance+'.Heizung.RuecklaufTemp.soll',
                  parseFloat(data["APPL.CtrlAppl.sParam.heatCircuit[0].values.flowSetTemp"]) || 0, true);
      
              // Boiler-Betriebsart
              setState('javascript.'+instance+'.Heizung.Boiler.Betriebsart',
                  parseInt(data["APPL.CtrlAppl.sParam.hotWaterTank[0].param.operatingMode"]) || 0, true);
      
              // Normal- und Absenktemperatur (Heizkreis)
              setState('javascript.'+instance+'.Heizung.Heizkreis.NormalTemp.soll',
                  parseFloat(data["APPL.CtrlAppl.sParam.heatCircuit[0].param.normalSetTemp"]) || 0, true);
              setState('javascript.'+instance+'.Heizung.Heizkreis.ReducedTemp.soll',
                  parseFloat(data["APPL.CtrlAppl.sParam.heatCircuit[0].param.reducedSetTemp"]) || 0, true);
      
              // Boiler Soll-Temperaturen
              setState('javascript.'+instance+'.Heizung.Boilertemperatur.reducedSoll',
                  parseFloat(data["APPL.CtrlAppl.sParam.hotWaterTank[0].param.reducedSetTempMax.value"]) || 0, true);
              setState('javascript.'+instance+'.Heizung.Boilertemperatur.soll',
                  parseFloat(data["APPL.CtrlAppl.sParam.hotWaterTank[0].param.normalSetTempMax.value"]) || 0, true);
      
              // === neue Datenpunkte setzen ===
      
              // Quelle / WP Temperaturen
              setState('javascript.'+instance+'.Heizung.QuelleTemp.Ein',
                  parseFloat(data["APPL.CtrlAppl.sParam.heatpump[0].TempSourceIn.values.actValue"]) || 0, true);
              setState('javascript.'+instance+'.Heizung.QuelleTemp.Aus',
                  parseFloat(data["APPL.CtrlAppl.sParam.heatpump[0].TempSourceOut.values.actValue"]) || 0, true);
      
              setState('javascript.'+instance+'.Heizung.Heizkreis.VorlaufTemp.ist',
                  parseFloat(data["APPL.CtrlAppl.sParam.heatpump[0].TempHeatFlow.values.actValue"]) || 0, true);
      
              setState('javascript.'+instance+'.Heizung.WP.VerdichterTemp.Ein',
                  parseFloat(data["APPL.CtrlAppl.sParam.heatpump[0].TempCompressorIn.values.actValue"]) || 0, true);
              setState('javascript.'+instance+'.Heizung.WP.VerdichterTemp.Aus',
                  parseFloat(data["APPL.CtrlAppl.sParam.heatpump[0].TempCompressorOut.values.actValue"]) || 0, true);
      
              // Pumpen-/Verdichter-Sollwerte (skaliert)
              setState('javascript.'+instance+'.Heizung.Pumpe.Heizkreis.Soll',
                  parseFloat(data["APPL.CtrlAppl.sParam.heatpump[0].CircPump.values.setValueScaled"]) || 0, true);
              setState('javascript.'+instance+'.Heizung.Pumpe.Quelle.Soll',
                  parseFloat(data["APPL.CtrlAppl.sParam.heatpump[0].Source.values.setValueScaled"]) || 0, true);
              setState('javascript.'+instance+'.Heizung.WP.Verdichter.Soll',
                  parseFloat(data["APPL.CtrlAppl.sParam.heatpump[0].Compressor.values.setValueScaled"]) || 0, true);
      
              // WP-Status
              const hpState = parseInt(data["APPL.CtrlAppl.sParam.heatpump[0].values.heatpumpState"]) || 0;
              setState('javascript.'+instance+'.Heizung.WP.Status', hpState, true);
              setState('javascript.'+instance+'.Heizung.WP.StatusText', mapHeatpumpStateToText(hpState), true);
      
              // Estrichprogramm
              setState('javascript.'+instance+'.Heizung.Estrichprogramm.aktiv',
                  data["APPL.CtrlAppl.sParam.screedDrying.values.active"] == "true", true);
      
              // PV-Überschuss aktiv?
              setState('javascript.'+instance+'.Heizung.PV.UeberschussAktiv',
                  data["APPL.CtrlAppl.sParam.photovoltaics.values.excessEnergyActive"] == "true", true);
      
          } catch (err) {
              log("Fehler beim Lesen der Wärmepumpe: " + err, 'error');
          }
      }
      
      // ==== INTERVALL: alle 1 Minute lesen ====
      schedule("* * * * *", readHeatpump);
      
      // ==== SCHREIBEN: Boiler-Betriebsart ====
      on('javascript.'+instance+'.Heizung.Boiler.Betriebsart', async function (obj) {
          if (!obj || obj.state.ack) return;
      
          const newValue = String(obj.state.val);
      
          try {
              await axios.post(urlWriteHeatpump, [{
                  "name": "APPL.CtrlAppl.sParam.hotWaterTank[0].param.operatingMode",
                  "value": newValue
              }], {
                  httpsAgent: new (require('https').Agent)({
                      rejectUnauthorized: false
                  }),
                  auth: {
                      username: username,
                      password: password
                  },
                  headers: {
                      'Content-Type': 'application/json'
                  }
              });
      
              log("Betriebsart erfolgreich gesetzt auf: " + newValue);
      
          } catch (err) {
              log("Fehler beim Schreiben der Betriebsart: " + err, 'error');
          }
      });
      
      // ==== SCHREIBEN: Boilertemperaturen ====
      on('javascript.'+instance+'.Heizung.Boilertemperatur.soll', async function (obj) {
          if (!obj || obj.state.ack) return;
      
          const newValue = String(obj.state.val);
          log("Heizung: schreibe Boilertemperatur.soll = " + newValue, 'info');
      
          try {
              await axios.post(urlWriteHeatpump, [{
                  "name": "APPL.CtrlAppl.sParam.hotWaterTank[0].param.normalSetTempMax.value",
                  "value": newValue
              }], {
                  httpsAgent: new (require('https').Agent)({
                      rejectUnauthorized: false
                  }),
                  auth: {
                      username: username,
                      password: password
                  },
                  headers: {
                      'Content-Type': 'application/json'
                  }
              });
      
              log("Boilertemperatur.soll erfolgreich gesetzt auf: " + newValue, 'info');
      
          } catch (err) {
              log("Fehler beim Schreiben Boilertemperatur.soll: " + err, 'error');
          }
      });
      
      on('javascript.'+instance+'.Heizung.Boilertemperatur.reducedSoll', async function (obj) {
          if (!obj || obj.state.ack) return;
      
          const newValue = String(obj.state.val);
      
          log("Heizung: schreibe Boilertemperatur.reducedSoll = " + newValue, 'info');
      
          try {
              await axios.post(urlWriteHeatpump, [{
                  "name": "APPL.CtrlAppl.sParam.hotWaterTank[0].param.reducedSetTempMax.value",
                  "value": newValue
              }], {
                  httpsAgent: new (require('https').Agent)({ rejectUnauthorized: false }),
                  auth: { username: username, password: password },
                  headers: { 'Content-Type': 'application/json' }
              });
      
              log("Boilertemperatur.reducedSoll erfolgreich gesetzt auf: " + newValue, 'info');
      
          } catch (err) {
              log("Fehler beim Schreiben reducedSetTempMax.value: " + err, 'error');
          }
      });
      
      // ==== SCHREIBEN: Normal- und Absenktemperatur Heizkreis ====
      on('javascript.'+instance+'.Heizung.Heizkreis.NormalTemp.soll', async function (obj) {
          if (!obj || obj.state.ack) return;
          const newValue = String(obj.state.val);
      
          log("Schreibe Normal-Temperatur (Heizkreis) = " + newValue, 'info');
      
          try {
              await axios.post(urlWriteHeatpump, [{
                  "name": "APPL.CtrlAppl.sParam.heatCircuit[0].param.normalSetTemp",
                  "value": newValue
              }], {
                  httpsAgent: new (require('https').Agent)({ rejectUnauthorized: false }),
                  auth: { username: username, password: password },
                  headers: { 'Content-Type': 'application/json' }
              });
      
              log("NormalTemp erfolgreich gesetzt.", 'info');
      
          } catch (err) {
              log("Fehler beim Schreiben NormalTemp: " + err, 'error');
          }
      });
      
      on('javascript.'+instance+'.Heizung.Heizkreis.ReducedTemp.soll', async function (obj) {
          if (!obj || obj.state.ack) return;
          const newValue = String(obj.state.val);
      
          log("Schreibe Reduzierte Temperatur (Heizkreis) = " + newValue, 'info');
      
          try {
              await axios.post(urlWriteHeatpump, [{
                  "name": "APPL.CtrlAppl.sParam.heatCircuit[0].param.reducedSetTemp",
                  "value": newValue
              }], {
                  httpsAgent: new (require('https').Agent)({ rejectUnauthorized: false }),
                  auth: { username: username, password: password },
                  headers: { 'Content-Type': 'application/json' }
              });
      
              log("ReducedTemp erfolgreich gesetzt.", 'info');
      
          } catch (err) {
              log("Fehler beim Schreiben ReducedTemp: " + err, 'error');
          }
      });
      
      1 Antwort Letzte Antwort
      0
      • A Offline
        A Offline
        alexander_s
        schrieb am zuletzt editiert von
        #143

        Hallo zusammen,

        ich habe eine M-Tec WLPK412 Luft Wärmepumpe. Diese ist seit Herbst 2023 installiert.
        Ebenfalls habe ich eine 14,6 kWp PV Anlage mit ca 15kWh Speicher - der Speicher ist von M-Tec (4x Energy-Butler Module)

        Leider funktioniert noch nicht alles wie ich mir das vorstelle:

        1. Die WP zeigt wiederholt Fehlermeldungen, wie "Frequenzumrichter defekt" und "Ventilatorstörung" und "Kompressorkennlinie". Im Prinzip arbeitet die WP, Wasser ist warm, die Fehler bereiten mir aber Bauchschmerzen und ich befürchte, dass hier bereits irgendwo ein kleiner Defekt ist (z.B. Hauptplatine, wo beides angeschlossen ist?) der irgendwann sehr teuer werden kann. Die Fehler sind bereits kurz nach Inbetriebnahme aufgetaucht, habe ich festgestellt wenn man den Fehlerspeicher zurückverfolgt.

        Hat jemand ähnliche Fehlermeldungen? Kann man die irgendwie beheben oder sind dafür tiefere Diagnosen/ Eingriffe notwendig? Oder kann man anhand der Fehler bereits sagen, wo der Defekt ist?
        Auch gibt es haufenweise Fehlereinträge mit "no value set" Das werden wohl fehlerhafte Einstellungen sein?

        2a) Ich habe eine PV Anlage im April 2025 bekommen. Diese wurde auch in der M-Tec Steuerung eingepflegt, aber diese ist kein einziges Mal mit PV-Überschuss gelaufen. Auch nicht über den Sommer, wo es wirklich perfekte wolkenlose PV Tage gegeben hat.
        Welche Einstellungen sollten hier drin sein? Habe meine hier mal als Bilder angehängt.

        2b) Zusätzlich habe ich zwei Zusatzheizungen. Eine 9kW mir Vor- und Rücklauf sowie ein 6kW Heizstab im Boiler.
        Geplant war, dass PV Überschuss den 6kW Heizstab "befeuert" und die 9kW Zusatzheizung als Notfallheizung (WP fällt aus oder Außentemperatur zu niedrig) fungiert.
        Leider wurde die Konfiguration vom Installateur so gemacht, dass sie die Notfall-Funktion der 9kW Heizung deaktiviert haben und nun mit PV Überschuss betreiben und die 6kW Heizung nur als manuelle Notfallheizung genutzt werden kann, sonst aber ungenutzt bleibt. In der M-Tec eSmart App bleibt das Modul "Heizstab" deshalb auch immer bei 0 - wird ja nicht angesteuert.
        Ist die geplante Konfiguration (9kW = Notfallheizung, 6kW Heizstab wird mir PV Überschuss betrieben) überhaupt möglich? Ich habe einen Fronius Ohmpilot der den PV-Überschuss managed.

        1. Software-Updates vom AP440. Ich habe aktuell die 2.6.1 Gibt es da was aktuelleres? Kommt man an die SW Updates irgendwie ran oder kann das nur der Hersteller z.B. über Fernwartung machen?

        Bildschirmfoto 2025-11-28 um 16.43.08.jpg
        Bildschirmfoto 2025-11-28 um 16.43.17.jpg
        Bildschirmfoto 2025-11-28 um 16.41.33.jpg
        Bildschirmfoto 2025-11-28 um 16.41.39.jpg
        Bildschirmfoto 2025-11-28 um 16.41.46.jpg
        Bildschirmfoto 2025-11-28 um 16.41.53.jpg
        Bildschirmfoto 2025-11-28 um 16.42.01.jpg
        Bildschirmfoto 2025-11-28 um 16.42.05.jpg
        Bildschirmfoto 2025-11-28 um 16.42.12.jpg
        Bildschirmfoto 2025-11-28 um 16.42.23.jpg

        1 Antwort Letzte Antwort
        0
        • A Offline
          A Offline
          antfab
          schrieb am zuletzt editiert von
          #144

          Hallo Alexander, ich versuch mich mal an einer Antwort:

          1. Fehlermeldungen: definitiv nicht normal, würde ich dem Support melden.
            2a) PV ist falsch konfiguriert denke ich, "Modul Type" sollte "Virtual" sein und "WMZ Modus" auf "Analog".
            2b) Deine Konfiguration ist so glaub ich leider nicht umsetzbar, die M-Tec Steuerung kann nur 1 "Externe Wärmequelle", also Zusatzheizung. Das wäre dann Heizstab ODER Zusatzheizung. Ich finde auch dort die Konfigurationsmöglichkeiten sehr ungeschickt und steure Heizstab/Zusatzheizung komplett unabhängig von der M-Tec Steuerung mit meiner Smart Home Steuerung und Zusatzrelais (im Prinzip braucht mein Heizstab ein 24V Signal welches ihn aktiviert, das sende ich direkt über ein Modbus Relais falls das was für dich ist).
          fuzzy1955F 1 Antwort Letzte Antwort
          0
          • A Offline
            A Offline
            alexander_s
            schrieb am zuletzt editiert von
            #145

            Hi,

            vielen Dank für deine Antwort.

            1. Diese habe ich dem Support mitgeteilt, der meinte ich soll mich an meinen Installateur wenden. Der macht aber nichts. Stehe also hier recht alleine da.
              2a) Danke dir. Wie sind sonst die Einstellungen hinsichtlich Einschalt/ Ausschaltschwelle und Leistungsaufnahme?
              2b) Oh ok. D.h. PV-Überschuss --> Fronius Ohmpilot --> 6kW Heizstab + 9kW Zusatzheizung (ohne PV) sondern nur als automatische Notfallheizung geht nicht? D.h. mein Installateur hat mir etwas zugesichert, was nicht möglich ist, weshalb es nun zwangsläufig anders konfiguriert ist, als vereinbart.
              Puh, damit kenne ich mich noch gar nicht aus, interessiert wäre ich schon. Ich glaub ich nutze mal meinen Weihnachtsurlaub, um mich in das Thema Modbus und Smart Home einzulesen 8)

            Weißt du zufällig, ob diese Notallheizfunktion (zu kalt oder WP Ausfall) durch die PV-Überschussregelung trotzdem aktiv sein kann oder reaktiviert werden kann? Der Installateur meinte, dass die Notfallheizung nicht mehr ist, sondern durch PV-Überschuss-Funktion ersetzt wurde. Macht das Betreiben von der 9kW Notfallheizung (Hat eine Vor- und Rücklauf, ist ja kein Heizstab) mit PV-Überschuss überhaupt technisch sinn?

            Wie kann ist eigentlich testen, ob diese 9kW Zusatzheizung funktioniert? Also manuell und unabhängig davon welche Konfiguration gerade eingestellt ist. Ich habe nämlich auch das Gefühl, dass diese unabhängig der Konfiguration nicht funktioniert... (ist eine andere aber auch noch offene Baustelle)

            Anbei auch mal die Einstellungen von "Externe Wärmequelle".

            Vielen Dank.
            Viele Grüße

            Bildschirmfoto 2025-12-09 um 23.45.01.jpg
            Bildschirmfoto 2025-12-09 um 23.45.10.jpg
            Bildschirmfoto 2025-12-09 um 23.45.16.jpg
            Bildschirmfoto 2025-12-09 um 23.45.22.jpg
            Bildschirmfoto 2025-12-09 um 23.45.28.jpg

            A 1 Antwort Letzte Antwort
            0
            • A antfab

              Hallo Alexander, ich versuch mich mal an einer Antwort:

              1. Fehlermeldungen: definitiv nicht normal, würde ich dem Support melden.
                2a) PV ist falsch konfiguriert denke ich, "Modul Type" sollte "Virtual" sein und "WMZ Modus" auf "Analog".
                2b) Deine Konfiguration ist so glaub ich leider nicht umsetzbar, die M-Tec Steuerung kann nur 1 "Externe Wärmequelle", also Zusatzheizung. Das wäre dann Heizstab ODER Zusatzheizung. Ich finde auch dort die Konfigurationsmöglichkeiten sehr ungeschickt und steure Heizstab/Zusatzheizung komplett unabhängig von der M-Tec Steuerung mit meiner Smart Home Steuerung und Zusatzrelais (im Prinzip braucht mein Heizstab ein 24V Signal welches ihn aktiviert, das sende ich direkt über ein Modbus Relais falls das was für dich ist).
              fuzzy1955F Online
              fuzzy1955F Online
              fuzzy1955
              schrieb am zuletzt editiert von
              #146

              @antfab sagte in Keba KeEnergy Heizungssteuerung (M-TEC WP) in Smarthome:

              Konfigurationsmöglichkeiten sehr ungeschickt und steure Heizstab/Zusatzheizung komplett unabhängig von der M-Tec Steuerung mit meiner Smart Home Steuerung und Zusatzrelais

              Hallo,

              ich lese euren Austausch recht interessiert mit und stimme dem völlig zu. Diese Hersteller versuchen leider nur eine halbherzige Gesamtsteuerung von WP, PV, Wallbox etc.

              Meine Hausanlage sieht völlig anders aus, aber ich habe doch einige Erfahrungen mit Modbus und dem IOBroker gemacht. Wenn ich euch behilflich sein kann -- gerne!

              Grüße aus dem Mühlviertel, Hans F.

              Raspberry PI5 mit Linux Debian 13, IoBroker v7.7.22, VIS-2, MariaDB (MySQL)
              Shellies: 1G4, 1MiniG3, PlusI4DC, PlusPlugS, Pro0110PM, ProSmoke. Modbus: Waveshare Relay 8 Channels, Waveshare RS485-TO-ETH.
              PV: 10 kWp Module, 2 x Deye WR SUN-10K, 3 x 10 kWh MeritSun LiFe Speicher, KEBA P30 Wallbox, Fronius Wattpilot home 11

              1 Antwort Letzte Antwort
              0
              • A Offline
                A Offline
                alexander_s
                schrieb am zuletzt editiert von
                #147

                Hallo Hans,

                danke für deine Antwort und dein Angebot! Da komme ich womöglich gern darauf zurück ;)
                Im Urlaub hab ich ein wenig Zeit und kann mich dann auch mit Modbus und IOBroker auseinandersetzen

                Viele Grüße

                1 Antwort Letzte Antwort
                0
                • A alexander_s

                  Hi,

                  vielen Dank für deine Antwort.

                  1. Diese habe ich dem Support mitgeteilt, der meinte ich soll mich an meinen Installateur wenden. Der macht aber nichts. Stehe also hier recht alleine da.
                    2a) Danke dir. Wie sind sonst die Einstellungen hinsichtlich Einschalt/ Ausschaltschwelle und Leistungsaufnahme?
                    2b) Oh ok. D.h. PV-Überschuss --> Fronius Ohmpilot --> 6kW Heizstab + 9kW Zusatzheizung (ohne PV) sondern nur als automatische Notfallheizung geht nicht? D.h. mein Installateur hat mir etwas zugesichert, was nicht möglich ist, weshalb es nun zwangsläufig anders konfiguriert ist, als vereinbart.
                    Puh, damit kenne ich mich noch gar nicht aus, interessiert wäre ich schon. Ich glaub ich nutze mal meinen Weihnachtsurlaub, um mich in das Thema Modbus und Smart Home einzulesen 8)

                  Weißt du zufällig, ob diese Notallheizfunktion (zu kalt oder WP Ausfall) durch die PV-Überschussregelung trotzdem aktiv sein kann oder reaktiviert werden kann? Der Installateur meinte, dass die Notfallheizung nicht mehr ist, sondern durch PV-Überschuss-Funktion ersetzt wurde. Macht das Betreiben von der 9kW Notfallheizung (Hat eine Vor- und Rücklauf, ist ja kein Heizstab) mit PV-Überschuss überhaupt technisch sinn?

                  Wie kann ist eigentlich testen, ob diese 9kW Zusatzheizung funktioniert? Also manuell und unabhängig davon welche Konfiguration gerade eingestellt ist. Ich habe nämlich auch das Gefühl, dass diese unabhängig der Konfiguration nicht funktioniert... (ist eine andere aber auch noch offene Baustelle)

                  Anbei auch mal die Einstellungen von "Externe Wärmequelle".

                  Vielen Dank.
                  Viele Grüße

                  Bildschirmfoto 2025-12-09 um 23.45.01.jpg
                  Bildschirmfoto 2025-12-09 um 23.45.10.jpg
                  Bildschirmfoto 2025-12-09 um 23.45.16.jpg
                  Bildschirmfoto 2025-12-09 um 23.45.22.jpg
                  Bildschirmfoto 2025-12-09 um 23.45.28.jpg

                  A Offline
                  A Offline
                  antfab
                  schrieb am zuletzt editiert von
                  #148

                  @alexander_s sagte in Keba KeEnergy Heizungssteuerung (M-TEC WP) in Smarthome:

                  1. Diese habe ich dem Support mitgeteilt, der meinte ich soll mich an meinen Installateur wenden. Der macht aber nichts. Stehe also hier recht alleine da.

                  Da würde ich nicht locker lassen. Normal sind diese Meldungen nicht. Für mich muss eine WP 15-20 Jahre halten, Fehler gleich von Beginn sind für mich kein gutes Zeichen.

                  2a) Danke dir. Wie sind sonst die Einstellungen hinsichtlich Einschalt/ Ausschaltschwelle und Leistungsaufnahme?

                  Das hängt von deiner WP ab. Schau dir mal folgendes Dokument an, das hat mir am Anfang sehr weitergeholfen: Smartfox & M-Tec.
                  Ich habe das wie folgt konfiguriert: Leistungsaufnahme: 7.4kW (=ist die tatsächliche (elektrische) maximale Leistungsaufnahme unserer WP), Einschaltschwelle 0.5kW. Ausschaltschwelle 0.2kW.
                  Wichtig zu wissen! Die Parameter sind leider nicht so selbsterklärend wie es scheint, am Besten schaust du wirklich mal obiges Dokument durch. Und auch noch wichtig: die M-Tec Steuerung zieht vom via Modbus mitgeteilteten PV-Überschuss immer noch die Einschaltschwelle ab (wieso, wissen die Götter...). Klartext: du hast 2000W Überschuss und schickst das via Modbus, die Steuerung zieht davon 500W ab und regelt die WP als auf 1500W runter. Komplett sinnfrei für mich, ich addiere daher die Einschaltschwelle immer dazu (sende also 2500W statt 2000W).

                  2b) Oh ok. D.h. PV-Überschuss --> Fronius Ohmpilot --> 6kW Heizstab + 9kW Zusatzheizung (ohne PV) sondern nur als automatische Notfallheizung geht nicht? D.h. mein Installateur hat mir etwas zugesichert, was nicht möglich ist, weshalb es nun zwangsläufig anders konfiguriert ist, als vereinbart.

                  Weißt du zufällig, ob diese Notallheizfunktion (zu kalt oder WP Ausfall) durch die PV-Überschussregelung trotzdem aktiv sein kann oder reaktiviert werden kann? Der Installateur meinte, dass die Notfallheizung nicht mehr ist, sondern durch PV-Überschuss-Funktion ersetzt wurde. Macht das Betreiben von der 9kW Notfallheizung (Hat eine Vor- und Rücklauf, ist ja kein Heizstab) mit PV-Überschuss überhaupt technisch sinn?

                  Notfallheizung und PV-Überschussregelung haben primär nix miteinander zu tun. Du kannst - soweit ich weiss, die Software kann theoretisch mehr! - 1 externe Wärmequelle angeben, das ist dein Heizstab. Dieser wird - wenn richtig konfiguriert - als Notheizung eingeschaltet wenn gewisse Kriterien erfüllt sind (z.B. bei dir wenn die Aussentemperatur unter -10° und/oder wenn PV-Überschuss vorhanden ist (und die WP schon unter Volllast läuft, du kannst angegeben, was Priorität hat. Sinnvollerweise wohl die WP).

                  Wie kann ist eigentlich testen, ob diese 9kW Zusatzheizung funktioniert? Also manuell und unabhängig davon welche Konfiguration gerade eingestellt ist. Ich habe nämlich auch das Gefühl, dass diese unabhängig der Konfiguration nicht funktioniert... (ist eine andere aber auch noch offene Baustelle)

                  Wie gesagt: Zusatzheizungssteuerung ist komplett für den Arsch (Sorry). Ich mach das via meiner Smarthome-Steuerung und zwar wie folgt:
                  Wenn die WP Mühe hat, die gewünschte Temperatur zu erreichen (sie ist bei uns bewusst knapp dimensioniert), dann aktiviere ich meine "Zusatzheizungsautomatik": die schaltet die Zusatzheizung via Modbus-Relais (welches wiederum ein 24V Steuersignal auf das Schütz der Zusatzheizung freischaltet) ein solange die Soll-Vorlauftemperatur deutlich unterschritten wird, so quasi als Booster. Sobald die Vorlaufstemperatur fast erreicht wird, schaltet sie sich wieder ab. Effekt: wenn z.B. nach einem Abtauvorgang oder Sperrung durch das E-Werk (3x am Tag) die VL-Temperatur tief ist und die Räume auskühlen (wir haben Radiatoren) hilft die Zusatzheizung der WP, schneller wieder die Sollwerte zu erreichen.

                  WIr haben die WP jetzt knapp 4 Jahre. Seit 2 Jahren habe ich die Steuerung soweit im Griff, das alles automatisch läuft und sehr sehr intelligent, ein absoluter Traum! Wir haben so im Altbau sehr konstante Raumtemperatur um die 20.7° +/- 0.3° mit maximaler PV-Ausnutzung und JAZ zwischen 3.7-3.9. Ich muss nur noch sehr selten korrigierend eingreifen. Am Anfang bin ich auch beinahe die Wände darauf, die M-Tec Steuerung ist z.T. sehr sehr doof. Grosser Vorteil: dank Passwort kann man relativ viel ändern und die Software ist "für Techniker gemacht" und lässt einem sehr viel regeln.

                  Wir sind zufrieden mit unserer WP.

                  1 Antwort Letzte Antwort
                  0
                  • A Offline
                    A Offline
                    alexander_s
                    schrieb am zuletzt editiert von
                    #149

                    Danke dir!

                    Also zum Thema nicht locker lassen:
                    M-Tec reagiert nicht mehr auf meine Mails und am Telefon werde ich abgespeist, dass ich mich an den Installateur wenden muss. Da bleiben die ebenfalls recht stur in deren Haltung. M-Tec gibt keinen Endkunden-Service bzw. Hilfe. 3x schon versucht. Erst mit lieb und nett, später auch mit etwas mehr schärfe. Bin tatsächlich etwas ratlos, wer in einem Problemfall künftig meine Anlage betreuen kann...

                    Und die Situation mit dem Installateur ... da brauch ich gar nicht erst anfangen.

                    Wegen Notfallheizung und PV-Überschuss: Ja das dachte ich auch und so war es geplant: PV-Überschuss --> 6kW Heizstab.
                    Aktuell hat der Installateur aber meine 9kW Notfallheizung mit PV-Überschuss gekoppelt (was für mich aus mehreren Gründen keinen Sinn ergibt) und der 6kW Heizstab ist lahmgelegt (bzw. manuell über Drehregler zuschaltbar) Ob die Notfallheizung nun auch noch als Notfallheizung geht --> ? (Gemäß Installateur nicht, nur PV Überschuss)

                    Zusätzlich zum PV Überschuss im Heizstab, wollte ich die besagte Notfallheizug als Notfallheizung behalten. Dass das entweder oder ist, weil M-Tec nur eine externe Heizung kann, ist blöd. Hätt ich mir eine der beiden Heizungen sparen können. Oder ich mache es so wie du geschrieben hast mit Modbus.

                    Danke dir für das hochgeladene Dokument :) Das führ ich mir mal zu Gemüte

                    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

                    689

                    Online

                    32.6k

                    Benutzer

                    82.2k

                    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