Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Viessmann-Adapter

    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

    Viessmann-Adapter

    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      dtp last edited by

      Also meine Skripte sehen derzeit folgendermaßen aus.

      Für get ("Vitotronic_get"):

      ! ```
      `// Werte aus Vitotronic auslesen
      ! var list1 = ['Betriebsart','BetriebsartHK','BetriebParty','BetriebSpar','TempAussen','TempWWIst','TempSpeicher','TempWWAuslauf','TempKesselIst','TempRLIst','TempRaumHK','TempSolarkol','TempSolarspeicher','StatusPumpeSpeicher','StatusFlamme','StatusPumpeIntern','DrehzahlPumpeIntern','StatusPumpeHK','StatusPumpeZirku','StatusUmschaltventil','Systemzeit'];
      var list2 = ['BetriebFerien','BeginnFerien','EndeFerien','TempRaumNorSoll','TempRaumRedSoll','TempPartySoll','TempWWSoll','TempKesselSoll','TempVLSoll','KennlinieNeigung','KennlinieNiveau','LaufzeitBrenner','StartsBrenner','LaufzeitSolar','LeistungSolar','ErtragTagSolar'];
      var list3 = ['StatusStoerung','Stoerung1','Stoerung2','Stoerung3','Stoerung4','Stoerung5','Stoerung6','Stoerung7','Stoerung8','Stoerung9','Stoerung10','Anlagenschema'];
      var list4 = ['TimerMoHeizen','TimerDiHeizen','TimerMiHeizen','TimerDoHeizen','TimerFrHeizen','TimerSaHeizen','TimerSoHeizen','TimerMoWW','TimerDiWW','TimerMiWW','TimerDoWW','TimerFrWW','TimerSaWW','TimerSoWW','TimerMoPumpeZirku','TimerDiPumpeZirku','TimerMiPumpeZirku','TimerDoPumpeZirku','TimerFrPumpeZirku','TimerSaPumpeZirku','TimerSoPumpeZirku'];
      ! // Objekte setzen
      function init(list) {
      var len = list.length;
      var cmds = '';
      for(var i = 0; i < len; i++) {
      cmds = cmds + ',getVito' + list[i];
      createState('Vitotronic.' + list[i], '', {
      type: 'string',
      read: true,
      write: true,
      desc: 'Vitotronic ' + list[i],
      def: ''
      });
      }
      return cmds.substr(1); // erstes Komma löschen
      }
      ! // Skript starten
      var cmds1 = init(list1);
      var cmds2 = init(list2);
      var cmds3 = init(list3);
      var cmds4 = init(list4);
      ! function vito(cmds, list, timer) {
      exec('vclient -h 127.0.0.1:3002 -c ' + cmds, function(err, stdout, stderr) {
      if (err) {
      log(stderr,'error');
      return;
      }
      stdout = stdout.split("\n");
      var len = list.length;
      for(var i = 0; i < len; i++) {
      if(timer) setState("javascript."+ instance + ".Vitotronic." + list[i], stdout[5 * i + 1]+" "+stdout[5 * i + 2]+" "+stdout[5 * i + 3]+" "+stdout[5 * i + 4]);
      else setState("javascript."+ instance + ".Vitotronic." + list[i], stdout[2 * i + 1]);
      }
      });
      }
      ! // Zeitintervalle definieren
      setInterval(function() {
      vito(cmds1, list1, false);
      }, 180 * 1000); // alle 3 Minuten

      setInterval(function() {
      vito(cmds2, list2, false);
      }, 1800 * 1000); // alle 30 Minuten

      ! setInterval(function() {
      vito(cmds3, list3, false);
      }, 3600 * 1000); // alle 60 Minuten
      ! setInterval(function() {
      vito(cmds4, list4, true);
      }, 7200 * 1000); // alle 120 Minuten ! Für set ("Vitotronic_set"): ! >! ~~[spoiler]~~[code]// Werte in Vitotronic schreiben
      ! on("hm-rega.0.3903", function(obj) { // Betriebsart
      var text;
      switch(obj.state.val) {
      case 0: text = 'Abschaltbetrieb';
      break;
      case 1: text = 'Nur Warmwasser';
      break;
      case 2: text = 'Heizen und Warmwasser';
      break;
      case 3: text = 'Dauernd red. Betrieb';
      break;
      case 4: text = 'Dauernd Normalbetrieb';
      break;
      }
      log("setVitoBetriebsart: " + text);
      exec('vclient -h 127.0.0.1:3002 -c "setVitoBetriebsart ' + text + '"', function(err, stdout, stderr) {
      if (err) log(stderr,'error');
      });
      });
      ! on("hm-rega.0.2883", function(obj) { // Partybetrieb
      var text;
      switch(obj.state.val) {
      case 0: text = 'aus';
      break;
      case 1: text = 'an';
      break;
      }
      log("setVitoBetriebParty: " + text);
      exec('vclient -h 127.0.0.1:3002 -c "setVitoBetriebParty ' + text + '"', function(err, stdout, stderr) {
      if (err) log(stderr,'error');
      });
      });
      ! on("hm-rega.0.4221", function(obj) { // Sparbetrieb
      var text;
      switch(obj.state.val) {
      case 0: text = 'aus';
      break;
      case 1: text = 'an';
      break;
      }
      log("setVitoBetriebSpar: " + text);
      exec('vclient -h 127.0.0.1:3002 -c "setVitoBetriebSpar ' + text + '"', function(err, stdout, stderr) {
      if (err) log(stderr,'error');
      });
      });
      [/code][/spoiler] ! Zusätzlich habe ich noch ein Skript, mit dem ich die auf der CCU2 angelegten Systemvariablen schreibe ("Vitotronic_CCU_set"): ! >! ~~[spoiler]~~[code]// Werte in CCU Systemvariablen schreiben
      ! on('javascript.0.Vitotronic.Betriebsart', function (obj) { // Vitotronic Betriebsart
      log("UG HWR SV Heizungsanlage Betriebsart: " + obj.newState.val);
      switch (obj.newState.val) {
      case "Abschaltbetrieb":
      setState('hm-rega.0.3903', 0);
      break;
      case "Nur Warmwasser":
      setState('hm-rega.0.3903', 1);
      break;
      case "Heizen und Warmwasser":
      setState('hm-rega.0.3903', 2);
      break;
      case "Dauernd red. Betrieb":
      setState('hm-rega.0.3903', 3);
      break;
      case "Dauernd Normalbetrieb":
      setState('hm-rega.0.3903', 4);
      break;
      }
      });
      ! on('javascript.0.Vitotronic.BetriebParty', function(obj) { // Vitotronic Partybetrieb
      log("UG HWR SV Heizungsanlage Partybetrieb: " + obj.newState.val);
      switch (obj.newState.val) {
      case "aus":
      setState('hm-rega.0.2883', 0);
      break;
      case "an":
      setState('hm-rega.0.2883', 1);
      break;
      }
      });
      ! on('javascript.0.Vitotronic.BetriebSpar', function(obj) { // Vitotronic Sparbetrieb
      log("UG HWR SV Heizungsanlage Sparbetrieb: " + obj.newState.val);
      switch (obj.newState.val) {
      case "aus":
      setState('hm-rega.0.4221', 0);
      break;
      case "an":
      setState('hm-rega.0.4221', 1);
      break;
      }
      });
      ! on('javascript.0.Vitotronic.BetriebFerien', function(obj) { // Vitotronic Ferienbetrieb
      log("UG HWR SV Heizungsanlage Ferienbetrieb: " + obj.newState.val);
      switch (obj.newState.val) {
      case "inaktiv":
      setState('hm-rega.0.4905', 0);
      break;
      case "aktiv":
      setState('hm-rega.0.4905', 1);
      break;
      }
      });[/code]`[/spoiler]
      ! Wenn Du die Datenpunkte nicht in javascript.0 schreiben willst, dann müsstest Du doch eigentlich nur den createState und den nachfolgenden setState-Befehl entsprechend anpassen. Bin mir da aber mangels ausreichender Javascript-Kenntnisse nicht so ganz sicher.
      ! Gruß,
      ! Thorsten
      ! PS.: Das Ändern des Party- und des Sparbetriebs will aber im Moment noch nicht so richtig. Das Ändern der Betriebsart funktioniert dagegen einwandfrei. Da bin ich mir noch nicht so sicher, woran es liegt. Evtl. sind die entsprechenden Adressen zum Schreiben in die Vitotronic nicht korrekt. Müssten sie aber eigentlich. Im Log erhalte ich zumindest keine Fehlermeldungen.[/i][/i][/i][/i][/i]

      1 Reply Last reply Reply Quote 0
      • stek
        stek last edited by

        Unten meine Aktuelle skripte, die functionieren sehr gut.

        ich habe bei mir zwei "BetriebArtM1" eine für get und eine für set. ich werde nur setzen wenn get un set unterschidlich sind, dann mache ich ein setState, in nächste getstate werden beide gleich sein.

        ich habe auch node-red script geschrieben um den valve state + set temperature zu lese, und anhand von dem werde ich WW, NORM oder RED setzen.

        lesen un sezen im path vontrold.0.get funtkioniert, das creatState funktioniert "nur" unten javascript.0.

        Dann habe ich alles dort gelassen..

        vcontrold-get

        ! ```
        `//vcontrold-get
        ! var debug=false;
        ! // NETWORK PARAMS
        var srv_ip = 'vcontrol';
        var srv_port = 3002;
        ! // VCONTROLD VARIABLES TO GET
        var vcontrolget = [
        {
        id:'vcontrold.0.get.TempA',
        type: 'number',
        name: 'Vitotronic Temperatura Esterna',
        role: 'value.temperature',
        read: true,
        write: false,
        def: 0,
        min: -50,
        max: 100,
        re: /^(\d+.\d+) Grad Celsius\s*$/,
        cmd: "getTempA",
        },
        {
        id:'vcontrold.0.get.TempWWist1',
        type: 'number',
        name: 'Vitotronic Temperatura acqua calda bassa',
        role: 'value.temperature',
        read: true,
        write: false,
        def: 0,
        min: -50,
        max: 100,
        re: /^(\d+.\d+) Grad Celsius\s*$/,
        cmd: "getTempWWist1",
        },
        {
        id:'vcontrold.0.get.TempWWist2',
        type: 'number',
        name: 'Vitotronic Temperatura acqua calda alta',
        role: 'value.temperature',
        read: true,
        write: false,
        def: 0,
        min: -50,
        max: 100,
        re: /^(\d+.\d+) Grad Celsius\s*$/,
        cmd: "getTempWWist2",
        },
        {
        id:'vcontrold.0.get.TempKist',
        type: 'number',
        name: 'Vitotronic Temperatura Puffer basso (riscaldamento)',
        role: 'value.temperature',
        read: true,
        write: false,
        def: 0,
        min: -50,
        max: 100,
        re: /^(\d+.\d+) Grad Celsius\s*$/,
        cmd: "getTempKist",
        },
        {
        id: 'vcontrold.0.get.TempVListM1',
        type: 'number',
        name: 'Vitotronic Temperatura di mandata',
        role: 'value.temperature',
        read: true,
        write: false,
        def: 0,
        min: -50,
        max: 100,
        re: /^(\d+.\d+) Grad Celsius\s*$/,
        cmd: "getTempVListM1",
        },
        {
        id:'vcontrold.0.get.BetriebArtM1',
        type: 'string',
        name: 'Vitotronic Modalità funzionamento',
        role: 'state',
        read: true,
        write: false,
        re: /^\W*(\w++\w)\W*$/,
        cmd: "getBetriebArtM1",
        }
        ];
        ! var dMAX=10;
        var dMIN=-10;
        ! var getcmd ="";
        ! for (var i in vcontrolget) {
        if (debug) {console.log('vcontrolget[i].cmd' + vcontrolget[i].cmd);}
        getcmd += vcontrolget[i].cmd + "\r\n";
        createState(vcontrolget[i].id, {
        type: vcontrolget[i].type,
        name: vcontrolget[i].name,
        role: vcontrolget[i].role,
        read: vcontrolget[i].read,
        write: vcontrolget[i].write,
        def: vcontrolget[i].def,
        min: vcontrolget[i].min,
        max: vcontrolget[i].max
        });
        }
        getcmd += "quit\r\n";
        if (debug) {console.log('cmd: '+getcmd);}
        ! function vitoget () {
        var net = require('net');
        ! var client = new net.Socket();
        client.connect(srv_port, srv_ip, function() {
        if (debug) {console.log('Connected');}
        client.write(getcmd);
        });
        ! var i=0;
        var readingOK=true;
        var data_tmp=[];
        ! client.on('data', function(data) {
        var data_str;
        if (debug) {console.log('Received: ' + data);}
        var dummyre=/^vctrld/;
        data_str=String(data);
        if (debug) {console.log('i ' + i);}
        if (i < vcontrolget.length) {

            if (debug) {console.log('RE: ' + vcontrolget[i].re);}
            if (dummyre.test(data_str)) {
                if (debug) {console.log('ignored: ' + data);}
        
           } else if (vcontrolget[i].re.test(data_str)) {
                if (vcontrolget[i].type === 'number') {
        

        ! data_tmp[i] = Number(data_str.replace(vcontrolget[i].re, "$1"));
        if (debug) {console.log('data ok: ' +data_tmp[i]);}
        ! // test plausibilità
        var dval = data_tmp[i] - getState(vcontrolget[i].id).val;
        if (debug) {console.log('Plausibility test (data_tmp[i]) ' + data_tmp[i]);}
        if (debug) {console.log('Plausibility test (getState(vcontrolget[i].id).val) ' + getState(vcontrolget[i].id).val);}
        if (debug) {console.log('Plausibility test (dval) ' + dval);}
        if ((dval > dMAX) || (dval < dMIN)) {
        readingOK=false;
        if (debug) {console.log('ignored dval (dMAX/dMIN) ' + dval);}
        }
        } else {
        data_tmp[i] = data_str.replace(vcontrolget[i].re, "$1");
        }

               i++;
            } else {
                readingOK=false;
                if (debug) {console.log('faulty data: ' + data);}
            }   
        } else {
            if (debug) {console.log('ignored' + data);}
        }
        

        ! });
        ! client.on('close', function() {
        client.destroy();
        if (debug) {console.log('Connection closed');}
        if (readingOK) {
        if (debug) {console.log('readingOK');}
        for (var i in vcontrolget) {
        if (debug) {console.log('store data: ' + vcontrolget[i].id +" = " +data_tmp[i]);}
        setState(vcontrolget[i].id, data_tmp[i],true);
        }
        } else {
        if (debug) {console.log('reading faulty');}
        }
        });
        }
        ! schedule("* * * * *", function () {vitoget();}); // ogni minuto ! vcontrold-set ! >! ~~[spoiler]~~[code]// vcontrold-set
        ! debug=false;
        ! // NETWORK PARAMS
        var srv_ip = 'vcontrol';
        var srv_port = 3002;
        ! // VCONTROLD VARIABLES TO SET
        var vcontrolset = [
        {
        id:'vcontrold.0.set.BetriebArtM1',
        getid: 'vcontrold.0.get.BetriebArtM1',
        type: 'string',
        name: 'Vitotronic Modalità funzionamento',
        role: 'state',
        read: true,
        write: true,
        cmd: "setBetriebArtM1",
        }
        ];
        ! for (var i in vcontrolset) {
        createState(vcontrolset[i].id, {
        type: vcontrolset[i].type,
        name: vcontrolset[i].name,
        role: vcontrolset[i].role,
        read: vcontrolset[i].read,
        write: vcontrolset[i].write,
        def: vcontrolset[i].def,
        min: vcontrolset[i].min,
        max: vcontrolset[i].max
        });

        }

        ! function vitoset() {

        var setcmd ="";
        var param = "";
        var getparam = "";
        var cmdflag=false;

        ! for (var i in vcontrolset) {
        if (debug) {console.log('vcontrolset[i].cmd' + vcontrolset[i].cmd);}

        param=getState(vcontrolset[i].id).val;
        getparam=getState(vcontrolset[i].getid).val;
        if (debug) {console.log('param: ' + param);}
        if (debug) {console.log('getparam: ' + getparam);}
        

        ! if (param === null) {
        setState(vcontrolset[i].id,getparam,true);
        } else if (param != getparam) {
        setcmd += vcontrolset[i].cmd + " " + param +"\r\n";
        cmdflag=true;
        }
        }
        ! setcmd += "quit\r\n";
        if (debug) {console.log('cmd: '+setcmd);}
        ! var net = require('net');
        ! var client = new net.Socket();
        ! if (cmdflag) {
        client.connect(srv_port, srv_ip, function() {
        if (debug) {console.log('Connected');}
        client.write(setcmd);
        });
        ! client.on('data', function(data) {
        var data_str;
        if (debug) {console.log('Received: ' + data);}
        });
        ! client.on('close', function() {
        client.destroy();
        if (debug) {console.log('Connection closed');}
        ! });
        ! }
        ! }
        ! schedule("* * * * *", function () {vitoset();}); // ogni minuto`
        ! grüsse
        ! Stek[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/code][/spoiler][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]

        1 Reply Last reply Reply Quote 0
        • blauholsten
          blauholsten Developer last edited by

          @dtp:

          // Werte in Vitotronic schreiben

          on("hm-rega.0.3903", function(obj) {  // Betriebsart
            var text;
            switch(obj.state.val) {
              case 0: text = 'Abschaltbetrieb';
                break;
              case 1: text = 'Nur Warmwasser';
                break;
              case 2: text = 'Heizen und Warmwasser';
                break;
              case 3: text = 'Dauernd red. Betrieb';
                break;
              case 4: text = 'Dauernd Normalbetrieb';
                break;
            }
            log("setVitoBetriebsart: " + text);
            exec('vclient -h 127.0.0.1:3002 -c "setVitoBetriebsart ' + text + '"', function(err, stdout, stderr) {
              if (err) log(stderr,'error');
            });
          });
          
          on("hm-rega.0.2883", function(obj) {  // Partybetrieb
            var text;
            switch(obj.state.val) {
              case 0: text = 'aus';
                break;
              case 1: text = 'an';
                break;
            }
            log("setVitoBetriebParty: " + text);
            exec('vclient -h 127.0.0.1:3002 -c "setVitoBetriebParty ' + text + '"', function(err, stdout, stderr) {
              if (err) log(stderr,'error');
            });
          });
          
          on("hm-rega.0.4221", function(obj) {  // Sparbetrieb
            var text;
            switch(obj.state.val) {
              case 0: text = 'aus';
                break;
              case 1: text = 'an';
                break;
            }
            log("setVitoBetriebSpar: " + text);
            exec('vclient -h 127.0.0.1:3002 -c "setVitoBetriebSpar ' + text + '"', function(err, stdout, stderr) {
              if (err) log(stderr,'error');
            });
          });
          
          

          PS.: Das Ändern des Party- und des Sparbetriebs will aber im Moment noch nicht so richtig. Das Ändern der Betriebsart funktioniert dagegen einwandfrei. Da bin ich mir noch nicht so sicher, woran es liegt. Evtl. sind die entsprechenden Adressen zum Schreiben in die Vitotronic nicht korrekt. Müssten sie aber eigentlich. Im Log erhalte ich zumindest keine Fehlermeldungen. `

          Hi,

          erstmal Lob an alle Beteiligten (explizit Paul53)!

          Ich nutze das Grund Skript von Paul53 jetzt auch.

          Zum Thema Werte SCHREIBEN:

          Nach einiges probieren in der Konsole habe ich herausgefunden das set Befehle an VCLIENT zwingend mit ' Hochkommas ' abgegeben werden müssen.

          Ich habe mein Set- Skipt dann wie folgt geändert.:

          function sparbetrieb(soll) {
          
              var setzen = 'setBetriebSpar ' + soll;
              exec('vclient -h 192.168.2.xxx:3002 -c ' + "\'" + setzen + "\'" , function(err, stdout, stderr) {
              if (err) {
                log(stderr,'error');
                        }
              });
          }
          

          Haut soweit hin.

          Wichtig hierbei:

          \'
          

          vor und nach dem Setzbefehl

          1 Reply Last reply Reply Quote 0
          • D
            dtp last edited by

            Danke für den Hinweis. Werde ich bei Gelegenheit mal testen und Rückmeldung geben.

            Gruß,

            Thorsten

            1 Reply Last reply Reply Quote 0
            • D
              dtp last edited by

              Also mit den zusätzlichen Hochkommota bekomme ich eine Fehlermeldung beim P300-Protokoll:

              [506] Sat Oct 29 11:50:58 2016 : Client verbunden 127.0.0.1:52518 (FD:2)
              [506] Sat Oct 29 11:50:58 2016 : Child Prozess mit pid:1284 gestartet
              [1284] Sat Oct 29 11:50:58 2016 : Befehl: 'setVitoBetriebParty an'
              [1284] Sat Oct 29 11:50:58 2016 : Befehl: quit
              [1284] Sat Oct 29 11:50:58 2016 : Process 1284 released lock
              [1284] Sat Oct 29 11:50:58 2016 : Verbindung beendet (fd:2)
              [1284] Sat Oct 29 11:50:58 2016 : Child Prozess pid:1284 beendet
              

              Ohne Hochkommata sieht's so aus:

              [506] Sat Oct 29 11:54:03 2016 : Client verbunden 127.0.0.1:52696 (FD:2)
              [506] Sat Oct 29 11:54:03 2016 : Child Prozess mit pid:1290 gestartet
              [1290] Sat Oct 29 11:54:03 2016 : Befehl: setVitoBetriebParty an
              [1290] Sat Oct 29 11:54:03 2016 : Process 1290 tries to aquire lock
              [1290] Sat Oct 29 11:54:03 2016 : Process 1290 got lock
              [1290] Sat Oct 29 11:54:03 2016 : >FRAMER: open device /dev/ttyUSB0 ProtocolID 41
              [1290] Sat Oct 29 11:54:03 2016 : konfiguriere serielle Schnittstelle /dev/ttyUSB0
              [1290] Sat Oct 29 11:54:03 2016 : >SEND: 04
              [1290] Sat Oct 29 11:54:04 2016 : <recv: 29/2016/len="1" 05/(840.0/ms)/[1290]/sat/oct/11:54:04/:/<recv:/received="">FRAMER: closed
              [1290] Sat Oct 29 11:54:04 2016 : >SEND: 16
              [1290] Sat Oct 29 11:54:04 2016 : >SEND: 00
              [1290] Sat Oct 29 11:54:04 2016 : >SEND: 00
              [1290] Sat Oct 29 11:54:04 2016 : <recv: 29/2016/len="1" 06/(20.0/ms)/[1290]/sat/oct/11:54:04/:/<recv:/received="">FRAMER: opened
              [1290] Sat Oct 29 11:54:04 2016 : an -> 01
              [1290] Sat Oct 29 11:54:04 2016 : >SEND: 41
              [1290] Sat Oct 29 11:54:04 2016 : >SEND: 06
              [1290] Sat Oct 29 11:54:04 2016 : >SEND: 00
              [1290] Sat Oct 29 11:54:04 2016 : >SEND: 02
              [1290] Sat Oct 29 11:54:04 2016 : >SEND: 23
              [1290] Sat Oct 29 11:54:04 2016 : >SEND: 03
              [1290] Sat Oct 29 11:54:04 2016 : >SEND: 01
              [1290] Sat Oct 29 11:54:04 2016 : >SEND: 01
              [1290] Sat Oct 29 11:54:04 2016 : >SEND: 30
              [1290] Sat Oct 29 11:54:04 2016 : <recv: 29/2016/len="1" 06/(40.0/ms)/[1290]/sat/oct/11:54:04/:/<recv:/received="">FRAMER: addr was still active FE06
              [1290] Sat Oct 29 11:54:04 2016 : >FRAMER: Command send
              [1290] Sat Oct 29 11:54:04 2016 : >FRAMER: no preset result
              [1290] Sat Oct 29 11:54:04 2016 : <recv: 23/29/41/2016/len="1" (0.0/ms)/[1290]/sat/oct/11:54:04/:/<recv:/received/05/(10.0/01/02/03/2f/00/-=""> OK
              [1290] Sat Oct 29 11:54:04 2016 : OK
              [1290] Sat Oct 29 11:54:04 2016 : Befehl: quit</recv:></recv:></recv:></recv:>
              

              Nur leider wird der Befehl trotzdem nicht von der Heizung umgesetzt:

              [1395] Sat Oct 29 12:04:53 2016 : Befehl: getVitoBetriebParty
              [1395] Sat Oct 29 12:04:53 2016 : >SEND: 41
              [1395] Sat Oct 29 12:04:53 2016 : >SEND: 05
              [1395] Sat Oct 29 12:04:53 2016 : >SEND: 00
              [1395] Sat Oct 29 12:04:53 2016 : >SEND: 01
              [1395] Sat Oct 29 12:04:53 2016 : >SEND: 23
              [1395] Sat Oct 29 12:04:53 2016 : >SEND: 03
              [1395] Sat Oct 29 12:04:53 2016 : >SEND: 01
              [1395] Sat Oct 29 12:04:53 2016 : >SEND: 2D
              [1395] Sat Oct 29 12:04:53 2016 : <recv: 29/2016/len="1" 06/(80.0/ms)/[1395]/sat/oct/12:04:53/:/<recv:/received="">FRAMER: Command send
              [1395] Sat Oct 29 12:04:53 2016 : >FRAMER: no preset result
              [1395] Sat Oct 29 12:04:53 2016 : <recv: 23/29/41/2016/len="1" (0.0/ms)/[1395]/sat/oct/12:04:53/:/<recv:/received/06/01/(10.0/03/00/2f/-=""> aus</recv:></recv:>
              
              1 Reply Last reply Reply Quote 0
              • D
                dtp last edited by

                Hier mal zum Vergleich die angenommene Änderung der Betriebsart.

                Einmal das Setzen:

                [506] Sat Oct 29 12:25:10 2016 : Client verbunden 127.0.0.1:54822 (FD:2)
                [506] Sat Oct 29 12:25:10 2016 : Child Prozess mit pid:1576 gestartet
                [1576] Sat Oct 29 12:25:10 2016 : Befehl: setVitoBetriebsart Heizen und Warmwasser
                [1576] Sat Oct 29 12:25:10 2016 : Process 1576 tries to aquire lock
                [1576] Sat Oct 29 12:25:10 2016 : Process 1576 got lock
                [1576] Sat Oct 29 12:25:10 2016 : >FRAMER: open device /dev/ttyUSB0 ProtocolID 41
                [1576] Sat Oct 29 12:25:10 2016 : konfiguriere serielle Schnittstelle /dev/ttyUSB0
                [1576] Sat Oct 29 12:25:10 2016 : >SEND: 04
                [1576] Sat Oct 29 12:25:12 2016 : <recv: 29/2016/len="1" 05/(1440.0/ms)/[1576]/sat/oct/12:25:12/:/<recv:/received="">FRAMER: closed
                [1576] Sat Oct 29 12:25:12 2016 : >SEND: 16
                [1576] Sat Oct 29 12:25:12 2016 : >SEND: 00
                [1576] Sat Oct 29 12:25:12 2016 : >SEND: 00
                [1576] Sat Oct 29 12:25:12 2016 : <recv: 29/2016/len="1" 06/(10.0/ms)/[1576]/sat/oct/12:25:12/:/<recv:/received="">FRAMER: opened
                [1576] Sat Oct 29 12:25:12 2016 : Heizen und Warmwasser -> 02
                [1576] Sat Oct 29 12:25:12 2016 : >SEND: 41
                [1576] Sat Oct 29 12:25:12 2016 : >SEND: 06
                [1576] Sat Oct 29 12:25:12 2016 : >SEND: 00
                [1576] Sat Oct 29 12:25:12 2016 : >SEND: 02
                [1576] Sat Oct 29 12:25:12 2016 : >SEND: 23
                [1576] Sat Oct 29 12:25:12 2016 : >SEND: 23
                [1576] Sat Oct 29 12:25:12 2016 : >SEND: 01
                [1576] Sat Oct 29 12:25:12 2016 : >SEND: 02
                [1576] Sat Oct 29 12:25:12 2016 : >SEND: 51
                [1576] Sat Oct 29 12:25:12 2016 : <recv: 29/2016/len="1" 06/(40.0/ms)/[1576]/sat/oct/12:25:12/:/<recv:/received="">FRAMER: addr was still active FE06
                [1576] Sat Oct 29 12:25:12 2016 : >FRAMER: Command send
                [1576] Sat Oct 29 12:25:12 2016 : >FRAMER: no preset result
                [1576] Sat Oct 29 12:25:12 2016 : <recv: 23/29/41/2016/len="1" (0.0/ms)/[1576]/sat/oct/12:25:12/:/<recv:/received/05/01/02/(10.0/4f/00/-=""> OK
                [1576] Sat Oct 29 12:25:12 2016 : OK
                [1576] Sat Oct 29 12:25:12 2016 : Befehl: quit
                [1576] Sat Oct 29 12:25:12 2016 : >SEND: 04
                [1576] Sat Oct 29 12:25:12 2016 : <recv: 29/2016/len="1" 06/(10.0/ms)/[1576]/sat/oct/12:25:12/:/<recv:/received="">FRAMER: closed
                [1576] Sat Oct 29 12:25:12 2016 : Process 1576 released lock
                [1576] Sat Oct 29 12:25:12 2016 : Verbindung beendet (fd:2)
                [1576] Sat Oct 29 12:25:12 2016 : Child Prozess pid:1576 beendet</recv:></recv:></recv:></recv:></recv:>
                

                Und das nachfolgende Auslesen:

                [506] Sat Oct 29 12:25:51 2016 : Client verbunden 127.0.0.1:54860 (FD:2)
                [506] Sat Oct 29 12:25:51 2016 : Child Prozess mit pid:1579 gestartet
                [1579] Sat Oct 29 12:25:51 2016 : Befehl: getVitoBetriebsart
                [1579] Sat Oct 29 12:25:51 2016 : Process 1579 tries to aquire lock
                [1579] Sat Oct 29 12:25:51 2016 : Process 1579 got lock
                [1579] Sat Oct 29 12:25:51 2016 : >FRAMER: open device /dev/ttyUSB0 ProtocolID 41
                [1579] Sat Oct 29 12:25:51 2016 : konfiguriere serielle Schnittstelle /dev/ttyUSB0
                [1579] Sat Oct 29 12:25:51 2016 : >SEND: 04
                [1579] Sat Oct 29 12:25:52 2016 : <recv: 29/2016/len="1" 05/(1190.0/ms)/[1579]/sat/oct/12:25:52/:/<recv:/received="">FRAMER: closed
                [1579] Sat Oct 29 12:25:52 2016 : >SEND: 16
                [1579] Sat Oct 29 12:25:52 2016 : >SEND: 00
                [1579] Sat Oct 29 12:25:52 2016 : >SEND: 00
                [1579] Sat Oct 29 12:25:52 2016 : <recv: 29/2016/len="1" 06/(20.0/ms)/[1579]/sat/oct/12:25:52/:/<recv:/received="">FRAMER: opened
                [1579] Sat Oct 29 12:25:52 2016 : >SEND: 41
                [1579] Sat Oct 29 12:25:52 2016 : >SEND: 05
                [1579] Sat Oct 29 12:25:52 2016 : >SEND: 00
                [1579] Sat Oct 29 12:25:52 2016 : >SEND: 01
                [1579] Sat Oct 29 12:25:52 2016 : >SEND: 23
                [1579] Sat Oct 29 12:25:52 2016 : >SEND: 23
                [1579] Sat Oct 29 12:25:52 2016 : >SEND: 01
                [1579] Sat Oct 29 12:25:52 2016 : >SEND: 4D
                [1579] Sat Oct 29 12:25:52 2016 : <recv: 29/2016/len="1" 06/(20.0/ms)/[1579]/sat/oct/12:25:52/:/<recv:/received="">FRAMER: addr was still active FE06
                [1579] Sat Oct 29 12:25:52 2016 : >FRAMER: Command send
                [1579] Sat Oct 29 12:25:52 2016 : >FRAMER: no preset result
                [1579] Sat Oct 29 12:25:52 2016 : <recv: 23/29/41/51/2016/len="1" (0.0/ms)/[1579]/sat/oct/12:25:52/:/<recv:/received/06/(10.0/01/02/-=""> Heizen und Warmwasser
                [1579] Sat Oct 29 12:25:52 2016 : Heizen und Warmwasser</recv:></recv:></recv:></recv:>
                
                1 Reply Last reply Reply Quote 0
                • D
                  dtp last edited by

                  Ha,

                  dank @blauholsten tut sich was in Sachen https://github.com/misanorot/iobroker.viessmann für den ioBroker.

                  Gruß,

                  Thorsten

                  1 Reply Last reply Reply Quote 0
                  • B
                    Blue14 last edited by

                    Hallo Zusammen

                    Bekomme in ein Paar wochen auch eine Viessmann Heizung und wollte mich schon mal Informieren hier.

                    Ich habe bei Github gesehn das es einen Adapter dort für iobroker git ist der mit dem hier geposten skripten gleich zu setzten oder etwas anderes?

                    https://github.com/misanorot/iobroker.viessmann

                    Lg

                    1 Reply Last reply Reply Quote 0
                    • blauholsten
                      blauholsten Developer last edited by

                      @Blue14:

                      Hallo Zusammen

                      Bekomme in ein Paar wochen auch eine Viessmann Heizung und wollte mich schon mal Informieren hier.

                      Ich habe bei Github gesehn das es einen Adapter dort für iobroker git ist der mit dem hier geposten skripten gleich zu setzten oder etwas anderes?

                      https://github.com/misanorot/iobroker.viessmann

                      Lg `
                      Hi,

                      macht Quasi nichts anderes…

                      1 Reply Last reply Reply Quote 0
                      • D
                        dtp last edited by

                        Das ist der Adapter von Sebastian aka @blauholsten/@misanrot, den ich weiter oben bereits verlinkt hatte.

                        Sebastian hat ihn programmiert, und ich durfte ihn parallel an meinem System on the fly testen. Läuft soweit 1 a und ist recht einfach zu konfigurieren, sofern eine lauffähige vcontrold-Installation samt vito.xml und vcrontrold.xml vorhanden ist.

                        Es gibt zwar noch ein paar kleinere Baustellen, aber ich denke, Bluefox kann den Adapter in Kürze freigeben.

                        Man kann ihn aber auch schon jetzt testen. Dazu einfach auf der Admin-Seite von ioBroker auf das Github-Symbol klicken, den Link "https://github.com/misanorot/iobroker.viessmann" in das Textfeld eingeben und bestätigen. Der Adapter wird dann binnen weniger Sekunden installiert. Danach eine Instanz installieren und den Adapter konfigurieren.

                        Gruß,

                        Thorsten

                        1 Reply Last reply Reply Quote 0
                        • S
                          Smokey last edited by

                          Hallo Zusammen,

                          hat das alles was hier geschrieben wurde noch mal jemand (evtl. in einem anderen Threat) als HowTo so zusammengefasst, dass es auch jemand mit wenig Erfahrung Schritt für Schritt umsetzen kann? Wäre sehr klasse. Also ich habe halt den Optolink via WLAN direkt in meinem Netz daheim. Und irgendwie weiß ich jetzt doch nicht was ich machen muss. Wenn ich hier nur falsch bin, verziehe ich mich auch sofort wieder und entschuldige mich. Aber fündig geworden bin ich trotz Suche bisher nicht.

                          Gruß

                          Markus

                          1 Reply Last reply Reply Quote 0
                          • blauholsten
                            blauholsten Developer last edited by

                            @Smokey:

                            Hallo Zusammen,

                            hat das alles was hier geschrieben wurde noch mal jemand (evtl. in einem anderen Threat) als HowTo so zusammengefasst, dass es auch jemand mit wenig Erfahrung Schritt für Schritt umsetzen kann? Wäre sehr klasse. Also ich habe halt den Optolink via WLAN direkt in meinem Netz daheim. Und irgendwie weiß ich jetzt doch nicht was ich machen muss. Wenn ich hier nur falsch bin, verziehe ich mich auch sofort wieder und entschuldige mich. Aber fündig geworden bin ich trotz Suche bisher nicht.

                            Gruß

                            Markus `

                            Hallo,

                            Die hier beschriebenen Sachen sind vermutlich eine andere als du sie benutzt. Du benutzt anscheinend das originale von Viessmann vertriebene Modul mit dem man seine Heizungsanlage und die viessmann App steuern kann. Mir ist momentan keine Lösung bekannt, um damit eine Schnittstelle mit iobroker herzustellen.

                            Die hier beschriebenen Variante ist eine wo man zusätzlich einen Rechner braucht, worauf das Programm vcontrold läuft. Infos findest du hier

                            https://openv.wikispaces.com/vcontrold

                            1 Reply Last reply Reply Quote 0
                            • D
                              dtp last edited by

                              Wäre schön, wenn Bluefox den Adapter "offiziell" machen würde. Er läuft bei mir seit Wochen absolut zuverlässig. Woran hapert es?

                              Gruß,

                              Thorsten

                              1 Reply Last reply Reply Quote 0
                              • P
                                Pep last edited by

                                Hallo Leute,

                                ich habe den Adapter vom Github installiert https://github.com/misanorot/iobroker.viessmann

                                Installation und Einrichtung auch ohne Probleme. Nur bekomme ich im Log folgenden Eintrag:

                                error instance system.adapter.viessmann.0 terminated with code 8 (node.js: Cannot find module) 
                                

                                Auf der Vcontrold läuft lokal auf dem selben PI. Ist per Telnet erreichbar:

                                root@raspberrypi:~# service vcontrol status
                                [ ok ] vcontrold is running.
                                root@raspberrypi:~# telnet localhost 3002
                                Trying 127.0.0.1...
                                Connected to localhost.
                                Escape character is '^]'.
                                vctrld>getTempWWist
                                69.300003 Grad Celsius
                                vctrld>
                                

                                Einstellung (vito.xml) ging auch ohne Probleme:

                                ID der Anlage: 2098

                                Name der Anlage: V200KW2

                                Verwendetes Protokoll: KW2

                                Fehlt noch etwas?

                                1 Reply Last reply Reply Quote 0
                                • blauholsten
                                  blauholsten Developer last edited by

                                  @Pep:

                                  error instance system.adapter.viessmann.0 terminated with code 8 (node.js: Cannot find module) 
                                  ```` `  
                                  

                                  Hi,

                                  Ich habe zwar den Adapter geschrieben, aber dies sind meine ersten Gehversuche….

                                  Wie geht die Fehlermeldung weiter? Der Adapter benötigt das NPM Modul net-socket.

                                  Ich dachte aber das installiert sich selbst mit :roll:

                                  Welche node Version benutzt du?

                                  EDIT: In der Version 0.2.4 war auch ein kleiner Fehler drin, also bitte 0.2.5 installieren

                                  1 Reply Last reply Reply Quote 0
                                  • S
                                    Sineos last edited by

                                    @Pep:

                                    error instance system.adapter.viessmann.0 terminated with code 8 (node.js: Cannot find module) 
                                    ```` `  
                                    

                                    Kann es sein, dass in der package.json

                                      "dependencies": {
                                        "net-socket": "^1.1.0"
                                    },
                                    

                                    das net-socket dazwischen funkt? So wie es es sehe wird net-socket gar nicht verwendet und net selber ist ja schon Bestandteil von node.js

                                    1 Reply Last reply Reply Quote 0
                                    • blauholsten
                                      blauholsten Developer last edited by

                                      @Sineos:

                                      Kann es sein, dass in der package.json

                                      das net-socket dazwischen funkt? `

                                      Bin zwar absoluter newbee, aber warum sollte der broker meckern wenn man ein Modul lädt, aber nicht benutzt :?
                                      @Sineos:

                                      So wie es es sehe wird net-socket gar nicht verwendet und net selber ist ja schon Bestandteil von node.js `

                                      Danke für die Anmerkung! Kann ich dependencies dann komplett aus der package.json löschen?

                                      Oder bloß das Modul austragen?

                                      1 Reply Last reply Reply Quote 0
                                      • P
                                        Pep last edited by

                                        @blauholsten:

                                        @Pep:

                                        error instance system.adapter.viessmann.0 terminated with code 8 (node.js: Cannot find module) 
                                        ```` `  
                                        

                                        Hi,

                                        Ich habe zwar den Adapter geschrieben, aber dies sind meine ersten Gehversuche….

                                        Wie geht die Fehlermeldung weiter? Der Adapter benötigt das NPM Modul net-socket.

                                        Ich dachte aber das installiert sich selbst mit :roll:

                                        Welche node Version benutzt du?

                                        EDIT: In der Version 0.2.4 war auch ein kleiner Fehler drin, also bitte 0.2.5 installieren `
                                        Ok danke, mit der 0.2.5 läuft es jetzt, nur wird meine vito.xml nicht mehr Importiert – es kommt immer: Einlesen FEHLGESCHLAGEN!!!

                                        JSON Konverter wird natürlich genutzt.

                                        Als Beispiel:

                                        {
                                          "vito": {
                                            "devices": {
                                              "device": [
                                                {
                                                  "-ID": "2098",
                                                  "-name": "V200KW2",
                                                  "-protocol": "KW2"
                                                },
                                                {
                                                  "-ID": "2053",
                                                  "-name": "GWG_VBEM",
                                                  "-protocol": "GWG"
                                                }
                                              ]
                                            },
                                            "commands": {
                                              "command": [
                                                {
                                                  "-name": "getTempA",
                                                  "-protocmd": "getaddr",
                                                  "addr": "0800",
                                                  "len": "2",
                                                  "unit": "UT",
                                                  "error": "05 05",
                                                  "description": "Ermittle die Aussentemeratur in Grad C",
                                                  "device": {
                                                    "-ID": "2053",
                                                    "addr": "6F",
                                                    "unit": "UT1",
                                                    "len": "1"
                                                  }
                                                },
                                                {
                                                  "-name": "getTempWWist",
                                                  "-protocmd": "getaddr",
                                                  "addr": "0804",
                                                  "len": "2",
                                                  "unit": "UT",
                                                  "error": "05 05",
                                                  "description": "Ermittle die Warmwassertemperatur in Grad C",
                                                  "device": {
                                                    "-ID": "2053",
                                                    "addr": "42",
                                                    "unit": "UT1U",
                                                    "len": "1"
                                                  }
                                                },
                                                {
                                                  "-name": "getTempWWsoll",
                                                  "-protocmd": "getaddr",
                                                  "addr": "6300",
                                                  "len": "1",
                                                  "unit": "ST",
                                                  "description": "Ermittle die Warmwassersolltemperatur in Grad C",
                                                  "device": {
                                                    "-ID": "2053",
                                                    "addr": "5C",
                                                    "unit": "UT1",
                                                    "len": "1"
                                                  }
                                                }
                                              ]
                                            }
                                          }
                                        }
                                        

                                        Dieser Import führt zu einem Fehler 😞

                                        1 Reply Last reply Reply Quote 0
                                        • S
                                          Sineos last edited by

                                          Na, ich bin auch nur nen Hobby-Rum-Script-JS-Bastler :lol:

                                          Nachdem das package m.E. nicht gebraucht wird, das dependencies Element in package.json einfach leer lassen. Wie ich es sehe hat der Adapter keine externen Abhängigkeiten

                                          1 Reply Last reply Reply Quote 0
                                          • blauholsten
                                            blauholsten Developer last edited by

                                            @Pep:

                                            JSON Konverter wird natürlich genutzt.

                                            Als Beispiel:

                                            {
                                              "vito": {
                                                "devices": {
                                                  "device": [
                                                    {
                                                      "-ID": "2098",
                                                      "-name": "V200KW2",
                                                      "-protocol": "KW2"
                                                    },
                                                    {
                                                      "-ID": "2053",
                                                      "-name": "GWG_VBEM",
                                                      "-protocol": "GWG"
                                                    }
                                                  ]
                                                },
                                                "commands": {
                                                  "command": [
                                                    {
                                                      "-name": "getTempA",
                                                      "-protocmd": "getaddr",
                                                      "addr": "0800",
                                                      "len": "2",
                                                      "unit": "UT",
                                                      "error": "05 05",
                                                      "description": "Ermittle die Aussentemeratur in Grad C",
                                                      "device": {
                                                        "-ID": "2053",
                                                        "addr": "6F",
                                                        "unit": "UT1",
                                                        "len": "1"
                                                      }
                                                    },
                                                    {
                                                      "-name": "getTempWWist",
                                                      "-protocmd": "getaddr",
                                                      "addr": "0804",
                                                      "len": "2",
                                                      "unit": "UT",
                                                      "error": "05 05",
                                                      "description": "Ermittle die Warmwassertemperatur in Grad C",
                                                      "device": {
                                                        "-ID": "2053",
                                                        "addr": "42",
                                                        "unit": "UT1U",
                                                        "len": "1"
                                                      }
                                                    },
                                                    {
                                                      "-name": "getTempWWsoll",
                                                      "-protocmd": "getaddr",
                                                      "addr": "6300",
                                                      "len": "1",
                                                      "unit": "ST",
                                                      "description": "Ermittle die Warmwassersolltemperatur in Grad C",
                                                      "device": {
                                                        "-ID": "2053",
                                                        "addr": "5C",
                                                        "unit": "UT1",
                                                        "len": "1"
                                                      }
                                                    }
                                                  ]
                                                }
                                              }
                                            }
                                            

                                            Dieser Import führt zu einem Fehler 😞 `

                                            Bitte lösche unter device das nicht verwendete Gerät.

                                            Z.b.

                                             {
                                                      "-ID": "2053",
                                                      "-name": "GWG_VBEM",
                                                      "-protocol": "GWG"
                                                    }
                                            
                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            721
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            viesmann
                                            50
                                            523
                                            132024
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo