Navigation

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

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    S
    • Profile
    • Following 0
    • Followers 0
    • Topics 1
    • Posts 9
    • Best 0
    • Groups 1

    socke

    @socke

    Starter

    0
    Reputation
    8
    Profile views
    9
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    socke Follow
    Starter

    Latest posts made by socke

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

      @manuel001 Einbauen geht über Javascript, Adapter "Script Engine" installieren, das ist der, wo man auch über Blockly programmieren kann. Ich nutze aber bislang nur Javascript, bin noch nicht so lange mit iobroker dran.

      ef518c6f-4490-42bc-b554-c0f6f8172a6e-2021-03-11 at 16.34.jpg

      Dann gibt es einen neuen Menupunkt Scripte

      da0a5fb5-99c4-4d76-b99c-6847ead137d2-2021-03-11 at 16.35.jpg

      Dann auf das ➕ Symbol klicken und ein Javascript erstellen:

      309459b8-ac47-4476-adca-d96b54eafc9f-2021-03-11 at 16.36.jpg

      Da muss man ein bisschen testen um das zu verstehen, ging mir auch so.

      posted in Hardware
      S
      socke
    • RE: 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.

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

      Übrigens, man kann hier auch die Temperatur wunderbar über einen Request setzen 😊

      So "simuliere" ich gerade mein Überschussladen, indem ich die Soll-Temp bei genug Energie auf 60 Grad setze... zack springt der Verdichter an. Da brauch ich das nicht über das Stromkabel triggern.

      Der Wert dafür ist: APPL.CtrlAppl.sParam.hotWaterTank[0].param.normalSetTempMax.value

      "ohne Gewähr", das ist auch nicht komplett, hab die PV erst seit kurzer Zeit....

      const desiredTemperature = 59.0;
      const heaterTempName = "APPL.CtrlAppl.sParam.hotWaterTank[0].param.normalSetTempMax.value";
      const jsonRequest = [{ name: heaterTempName, value: desiredTemperature.toString()}];
      
      const jsonAsString = JSON.stringify(jsonRequest);
      
      
      
      const doUeberschussLaden = (heaterUrl, json) => {
          request.post({
              url: heaterUrl,
              form: json
          }, function (error, response, body) {
              if (error) log(error, 'error');
              if (body) {
                  log("ueberschussladen aktiviert");
              }
          });
      };
      
      doUeberschussLaden(urlOfHeatpump, jsonAsString);
      
      posted in Hardware
      S
      socke
    • RE: Keba KeEnergy Heizungssteuerung (M-TEC WP) in Smarthome

      @ttjaden

      Ich pack hier mal meine "gebastelte" Lösung rein, das ist tatsächlich Vor- und Rücklauftemp dabei, aber ich speichere nicht alle Werte aktuell.

      Wenn ich mal Zeit habe 😊 mach ich das mal "schön".

      Heizung host mit IP ersetzen!

      Das unschöne ist, dass die Rückgabewerte in responseBody[]-array reinkommen, die Reihenfolge ist, soweit ich das aber erkenne, diesselbe wie die Anfrage, also im jsonRequest.

      /**
       * This script reads data from a hautec heater Keba controller.
       * www.hautec.eu
      */
      const request = require('request');
       
      const heizung_host = '192.168.100.99';
      
      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"}   
              
          ];
      
      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'});
      
      
      // 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) {
                     setState('javascript.'+instance+'.Heizung.Heizung.aufheizen', false);
                 } 
                 
                 setState('javascript.'+instance+'.Heizung.Boiler.aufheizen', JSON.parse(responseBody[20].value)); 
                 setState('javascript.'+instance+'.Heizung.RuecklaufTemp.ist', parseFloat(responseBody[21].value)); 
                 setState('javascript.'+instance+'.Heizung.RuecklaufTemp.soll', parseFloat(responseBody[22].value));          
             } 
          });
      });
      
      

      Wen es interessiert wie ich darauf gekommen bin?

      ➡Heizungscontroller im Browser aufrufen, Chrome, rechte Maustaste "Untersuchen"
      in den Menues kann man dann immer die Requests und Responses "sniffen". Da ist auch nix verschlüsselt.

      51b5e2e6-407f-424d-938f-2a1f088b497c-2021-03-09 at 16.28.jpg

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

      @manuel001 Die Realtime Leistung des Verdichters kommt tatsächlich nicht zurück, sondern wird von dem Regler 1,5kW als Leistung als fester Wert zurückgegeben. Das stimmt auch fast +-100 Watt.
      Meine Heizung ist von Hautec mit dem Keba-Regler.
      Wozu musst du eigentlich den genauen Wert haben? Du solltest sowieso nicht den Verdichter zig-mal an- und ausschalten. Sprich überleg dir genau wie du die Schwelle setzt.

      Aktuell hab ich noch keine präzise Strommessung im Haus, kommt in Kürze, aber ich mache das gerade so:

      • wenn Durchschnitt PV-Leistung der letzten 15 Minuten >3k => aktiviere Überschussladen.
      posted in Hardware
      S
      socke
    • RE: Keba KeEnergy Heizungssteuerung (M-TEC WP) in Smarthome

      @manuel001 Ich bin einen anderen Ansatz gegangen, die Weboberfläche lässt sich nett abfragen. Werden JSON zurückgeliefert. Ich schicke mal meine Ansatz dazu.

      posted in Hardware
      S
      socke
    • RE: (HILFE) Smartfox Pro in ioBroker integrieren

      @goetschhofer @SmartDidi
      Spiele aktuell auch damit herum, bin aber einen anderen Weg gegangen über ein Javascript. Die Weboberfläche des Smartfox ist über http://smartfox erreichbar. Nach ein wenig Request-anschauen, sieht man, das die Webberfläche die Daten von http://smartfox/values.xml lädt.

      Hier steht, soweit ich das beurteilen kann, alles drin.

      Hier mein aktueller Stand:

      const request = require('request');
      const parseString = require('xml2js').parseString;
      const urlOfFox = 'http://smartfox/values.xml';
      
      const loadSmartFoxData = (u) => {
          request.get({
              url: u
          }, function(error, response, body) {
              parseString(body, function (err, result) {
                 console.log(result); // alle Daten sichtbar
                 console.log(result.values.value[7]._); // Aktueller Verbrauch/Einspeisung
              });
          }); 
      };
      
      loadSmartFoxData(urlOfFox);
      

      Ihr müsst das Modul xml2js noch nachladen, diese Modul macht aus dem xml ein JSON file. Die Datenstruktur ist nicht gerade nett lesbar, aber so kommt man einfach an alles ohne über die komplexe Modbus Sache.

      Bei mir ist das gerade noch im Aufbau mit dem Smartfox und der weiteren Infrastruktur, aber sobald ich soweit bin, poste ich mal mein Script um alle Smartfox-Daten über die XML Schnittstelle zu einzuspeisen.

      Gruß

      posted in ioBroker Allgemein
      S
      socke
    • RE: zwave2 razberry auf zweiten Raspberrypi integrieren

      @UncleSam Danke! Werde das mal nachlesen wie das einzurichten ist.
      Hatte jetzt das hier probiert, funktioniert auch ganz prima: https://forum.iobroker.net/topic/33067/empfehlungen-für-autarke-z-wave-zentrale/2

      VG

      posted in ioBroker Allgemein
      S
      socke
    • zwave2 razberry auf zweiten Raspberrypi integrieren

      Hallo zusammen,

      erstmal hallo von mir als Neuling. Spiele schon seit einiger Zeit mit dem ioBroker herum und bin begeistert.

      Ich hoffe ich bin hier korrekt mit meiner Frage, habe bereits einige Zeit gesucht - leider ohne Erfolg.

      Habe den iobroker auf einem RaspberryPi3 installiert und komme jetzt auf die Idee razberry auf einem weiteren Pi zu integrieren. Allerdings steh ich auf dem Schlauch, wie kann ich zwave im iobroker integrieren wenn der nicht auf derselben Maschine läuft? Bei den Einstellungen steht: "Um einen gehosteten seriellen Port zu nutzen, einfach mittels 'tcp://hostname:port' verbinden."

      Schonmal danke für die Hilfe.

      VG

      posted in ioBroker Allgemein
      S
      socke
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo