Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. peete

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    P
    • Profile
    • Following 0
    • Followers 0
    • Topics 0
    • Posts 5
    • Best 0
    • Groups 1

    peete

    @peete

    Starter

    0
    Reputation
    10
    Profile views
    5
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    peete Follow
    Starter

    Latest posts made by peete

    • RE: Keba KeEnergy Heizungssteuerung (M-TEC WP) in Smarthome

      @socke said in Keba KeEnergy Heizungssteuerung (M-TEC WP) in Smarthome:

      @manuel001 😂 Das sieht so aus. Das ist schon etwas seltsam, dass alle Passwörter einfach so einem zugesendet werden. 🤷
      Das Interface erlaubt nur Zahlen einzutragen, nehme aber an, man kann am PC über Web einfach auf der Tastatur die Buchstaben eintippen... mal bei Gelegenheit ausprobieren.

      Ich hatte soeben diese Gelegenheit. Bei mir werden die exakt gleichen Userlevels geschickt:

      [{"level":1,"group":1},{"pwd":"100","level":2,"group":2},{"pwd":"dd1040hh","level":3,"group":3},{"pwd":"dd1886hh","level":4,"group":4}]
      

      Nachdem ich ein bisschen rumprobiert habe bin ich dann doch recht schnell auf die Lösung gekommen: Bei der Installation damals hat mich mein Haustechniker nämlich gefragt, welcher Tag heute sei, bevor er das Passwort eingegeben hat. Damals ging sein Passwort dann nicht, was ihn selber gewundert hat - nachdem er geschaut hat welches Datum und welche Uhrzeit am Gerät eingestellt sind ging sein Passwort dann doch. Das klingt jetzt etwas kryptisch aber ich glaube mit diesen Informationen kommt man echt schnell selber drauf, ohne dass ich es hier direkt beschreiben muss.

      posted in Hardware
      P
      peete
    • RE: Keba KeEnergy Heizungssteuerung (M-TEC WP) in Smarthome

      @manuel001 Einfach zurückschreiben geht nicht. Du musst das Objekt, das du zum WP steuern setzen willst, per Script überwachen und bei Änderung mit der richtigen Methode (z.B. als HTTP PUT Request) gescriptet genau das tun, was das WebHMI von Keba tut, wenn du die gewünschte Änderung im Browser machst. Das Tracen über die Devtools vom Browser ist da unerlässlich, um draufzukommen was d da passiert. Leider kann ich dir da nicht abschließend weiterhelfen, ich müsste selber rumprobieren bis es irgendwie geht..

      posted in Hardware
      P
      peete
    • RE: Keba KeEnergy Heizungssteuerung (M-TEC WP) in Smarthome

      @manuel001 Bitte gern! Ich habe auch lang genug auf den Hersteller (Bartl) nervend eingewirkt, bis ich die Listen bekommen habe 🙂 Die in der WP verbaute Steuerung ist eine KEBA KeEnergy. Die Oberfläche sieht exakt aus wie andere hier im Forum erwähnte Wärmepumpensteuerungen, nur dass eben rechts oben das Bartl-Logo steht. Hatte aufgrund dieser Tatsache erst bei KEBA versucht, die Liste zu bekommen (leider erfolglos, man spricht dort nicht mit Endkunden). Erst beim Hersteller konnte ich mich dann durchbeißen.

      Habe gestern noch versucht, alle für mich interessant klingenden Register einzukonfigurieren. Auch bei mir funktionieren einige Register nicht (was ja nicht sein sollte), daher bin ich auf die Scriptlösung von weiter oben ausgewichen und habe die erweritert. Sieht nun wie folgt aus bei mir:

      
      /**
       * This script reads data from a hautec heater Keba controller.
       * www.hautec.eu
      */
      const request = require('request');
       
      const heizung_host = '192.168.178.18';
       
      const urlOfHeatpump = 'http://' + heizung_host + '/var/readWriteVars'; 
      const jsondata = [{"name":"APPL.CtrlAppl.sParam.outdoorTemp.values.actValue"}];
       
      // all values I want to receive
      const jsonRequest = [
              {"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.heatCircuit[0].humidityRoom.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.outdoorTemp.state.msgId"},
              {"name":"APPL.CtrlAppl.sParam.hotWaterTank[0].topTemp.state.msgId"},
              {"name":"APPL.CtrlAppl.sParam.heatCircuit[0].humidityRoom.state.msgId"},
              {"name":"APPL.CtrlAppl.sParam.heatCircuit[0].param.operatingMode"},
              {"name":"APPL.CtrlAppl.sParam.heatCircuit[0].tempRoom.state.msgId"},
              {"name":"APPL.CtrlAppl.sParam.screedDrying.values.active"},
              {"name":"APPL.CtrlAppl.sParam.param.operatingMode"},
              {"name":"APPL.CtrlAppl.sParam.hmiRetainData.ctrlSessionId"},
              {"name":"APPL.CtrlAppl.sParam.hotWaterTank[0].param.normalSetTempMax.value"},
              {"name": "APPL.CtrlAppl.sParam.hotWaterTank[0].values.heatRequestTop"},
              {"name": "APPL.CtrlAppl.sParam.heatCircuit[0].tempReflux.values.actValue"},
              {"name": "APPL.CtrlAppl.sParam.heatCircuit[0].values.flowSetTemp"},
              {"name":"APPL.CtrlAppl.sParam.heatpump[0].TempSourceIn.values.actValue"},
              {"name":"APPL.CtrlAppl.sParam.heatpump[0].TempSourceOut.values.actValue"},
              {"name":"APPL.CtrlAppl.sParam.heatpump[0].values.heatpumpState","value":"0"}
          ];
       
      const jsonAsString = JSON.stringify(jsonRequest);
       
      // create all the states in broker
      createState('javascript.'+instance+'.Heizung.Aussentemperatur', 0, {type: 'number', role: 'value', unit: '°C'});
      createState('javascript.'+instance+'.Heizung.Boilertemperatur.ist', 0, {type: 'number', role: 'value', unit: '°C'});
      createState('javascript.'+instance+'.Heizung.Boilertemperatur.soll', 0, {type: 'number', role: 'value', unit: '°C'});
      createState('javascript.'+instance+'.Heizung.Raumtemperatur.ist', 0, {type: 'number', role: 'value', unit: '°C'});
      createState('javascript.'+instance+'.Heizung.Raumtemperatur.soll', 0, {type: 'number', role: 'value', unit: '°C'});
      createState('javascript.'+instance+'.Heizung.Boiler.aufheizen', 0, {type: 'boolean', role: 'value', unit: ''});
      createState('javascript.'+instance+'.Heizung.Heizung.aufheizen', 0, {type: 'boolean', role: 'value', unit: ''});
      createState('javascript.'+instance+'.Heizung.RuecklaufTemp.ist', 0, {type: 'number', role: 'value', unit: '°C'});
      createState('javascript.'+instance+'.Heizung.RuecklaufTemp.soll', 0, {type: 'number', role: 'value', unit: '°C'});
      createState('javascript.'+instance+'.Heizung.QuelleTempEingang', 0, {type: 'number', role: 'value', unit: '°C'});
      createState('javascript.'+instance+'.Heizung.QuelleTempAusgang', 0, {type: 'number', role: 'value', unit: '°C'});
      createState('javascript.'+instance+'.Heizung.WP-Status', 0, {type: 'boolean', role: 'value', unit: ''});
      createState('javascript.'+instance+'.Heizung.WP-StatusText', 0, {type: 'string', role: 'value', unit: ''});
       
       
      // every minute read the data from the heater and save it
      schedule("* * * * *", function() { 
          request.post({
            url:     urlOfHeatpump,
            form:    jsonAsString
          }, function(error, response, body) {
             if (error) log(error, 'error');
             if (body) {
                 //log(body);
                 var responseBody = JSON.parse(body);
                 setState('javascript.'+instance+'.Heizung.Aussentemperatur', parseFloat(responseBody[4].value), true);
                 setState('javascript.'+instance+'.Heizung.Boilertemperatur.ist', parseFloat(responseBody[2].value), true);
                 setState('javascript.'+instance+'.Heizung.Boilertemperatur.soll', parseFloat(responseBody[19].value), true);
                 setState('javascript.'+instance+'.Heizung.Raumtemperatur.ist', parseFloat(responseBody[1].value), true);
                 setState('javascript.'+instance+'.Heizung.Raumtemperatur.soll', parseFloat(responseBody[5].value), true);
                 if (parseInt(responseBody[8].value) == 1) {
                     setState('javascript.'+instance+'.Heizung.Heizung.aufheizen', true);
                 } 
                 // if (parseInt(responseBody[8].value) == 2) {
                  else {
                     setState('javascript.'+instance+'.Heizung.Heizung.aufheizen', false);
                 } 
                 
                 setState('javascript.'+instance+'.Heizung.Boiler.aufheizen', JSON.parse(responseBody[20].value), true); 
                 setState('javascript.'+instance+'.Heizung.RuecklaufTemp.ist', parseFloat(responseBody[21].value), true); 
                 setState('javascript.'+instance+'.Heizung.RuecklaufTemp.soll', parseFloat(responseBody[22].value), true);        
                 setState('javascript.'+instance+'.Heizung.QuelleTempEingang', parseFloat(responseBody[23].value), true);  
                 setState('javascript.'+instance+'.Heizung.QuelleTempAusgang', parseFloat(responseBody[24].value), true);    
                 setState('javascript.'+instance+'.Heizung.WP-Status', parseFloat(responseBody[25].value), true);    
                 if (parseInt(responseBody[25].value) == 0) {
                     setState('javascript.'+instance+'.Heizung.WP-StatusText', 'Standby', true);    
                 }
                 else if (parseInt(responseBody[25].value) == 1) {
                     setState('javascript.'+instance+'.Heizung.WP-StatusText', 'Vorlauf', true);    
                 }
                 else if (parseInt(responseBody[25].value) == 2) {
                     setState('javascript.'+instance+'.Heizung.WP-StatusText', 'Heizbetrieb', true);    
                 }
                 else if (parseInt(responseBody[25].value) == 3) {
                     setState('javascript.'+instance+'.Heizung.WP-StatusText', 'Abtaubetrieb', true);    
                 }
                 else if (parseInt(responseBody[25].value) == 4) {
                     setState('javascript.'+instance+'.Heizung.WP-StatusText', 'Kühlbetrieb', true);    
                 }
                 else if (parseInt(responseBody[25].value) == 5) {
                     setState('javascript.'+instance+'.Heizung.WP-StatusText', 'Nachlauf', true);    
                 }
                 else if (parseInt(responseBody[25].value) == 7) {
                     setState('javascript.'+instance+'.Heizung.WP-StatusText', 'Sicherheitsabschaltung', true);    
                 }
                 else if (parseInt(responseBody[25].value) == 8) {
                     setState('javascript.'+instance+'.Heizung.WP-StatusText', 'Störung', true);    
                 }
             } 
          });
      });
      

      Die gewonnenen Werte speichere ich in meiner InfluxDB und lasse sie in Grafana
      9d32b3c7-c188-46d9-a94c-6f759ffc225a-image.png
      sowie iQontrol
      0d39e320-d61c-4765-a122-3a5e354f56d3-image.png
      anzeigen. Vorsicht übrigens bei Zeile 79/80 im Script, das habe ich angepasst weil mir der Wert falsch vorkam.

      posted in Hardware
      P
      peete
    • RE: Keba KeEnergy Heizungssteuerung (M-TEC WP) in Smarthome

      @manuel001 Folgende Werte finde ich in meinen fünf PDFs:

      • Warmwasser Sollwert bei PV Nutzung (Adresse 405, read/write, Faktor 10)
      • PV Überschussnutzung (Adresse 406, read/write, Faktor 1)
      • (Bei Tandem-WP) Status der Verdichterstufe 1 (713, read, Faktor 1)
      • (Bei Tandem-WP) Status der Verdichterstufe 2 (714, read, Faktor 1)

      Mehr zu PV steht auch in meinen Listen leider nicht. Dank deinen Screenshots konnte ich nun meinen ersten Wert erfolgreich abholen - VIELEN DANK dafür! Ein paar Adressen unterscheiden sich etwas (z.B. Quelle Eingang ist bei mir 707 statt bei dir 708), eventuell verschieben sich die o.g. Adressen also bei dir auch. Falls du dennoch interessiert bist melde dich gern via PN, dann schicke ich dir die Listen per Mail.

      posted in Hardware
      P
      peete
    • RE: Keba KeEnergy Heizungssteuerung (M-TEC WP) in Smarthome

      Moin,

      bin gerade per Zufall auf dieses Thema gestoßen und habe mich extra für die Antwort hier registriert, weil ich auch gerade an meiner KEBA-Steuerung eines anderen Herstellers tüftle. Ich bekomme die nicht im Modbus-Adapter verbunden und weiß nicht, was ich falsch mache..

      @manuel001 said in Keba KeEnergy Heizungssteuerung (M-TEC WP) in Smarthome:

      (Oder hat mittlerweile jemand umfangreichere Modbuslisten erhalten?)

      Ich habe von meinem WP-Hersteller, der auch diese KEBA-Steuerung einbaut, eine relativ umfangreiche Sammlung mit Adressen, Faktoren und Beschreibungen bekommen. Die kann ich dir gerne zukommen lassen. Kannst du mir im Gegenzug verraten, wie ich den Modbus-Adapter konfigurieren muss, um (zumindest lesend) an die Werte zu kommen? Meine bisherigen Versuche waren nicht von Erfolg gekrönt und scripten möchte ich vorerst nicht..

      posted in Hardware
      P
      peete
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo