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. ioBroker Allgemein
  4. Viessmann-Adapter

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.7k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

Viessmann-Adapter

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
viesmann
523 Beiträge 50 Kommentatoren 150.5k Aufrufe 19 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.
  • D Offline
    D Offline
    dtp
    schrieb am zuletzt editiert von
    #49

    Nee, in einem.

    ioBroker im Docker-Container auf Synology DiskStation DS718+, HomeMatic IP über CCU3, IKEA Dirigera inkl. Matter, Apple Homekit, Amazon Alexa.

    1 Antwort Letzte Antwort
    0
    • D Offline
      D Offline
      dtp
      schrieb am zuletzt editiert von
      #50

      @paul53:

      Das lässt sich auch in einem Skript (mit 2 Listen) machen… `

      Läuft super. Danke.

      ioBroker im Docker-Container auf Synology DiskStation DS718+, HomeMatic IP über CCU3, IKEA Dirigera inkl. Matter, Apple Homekit, Amazon Alexa.

      1 Antwort Letzte Antwort
      0
      • paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von
        #51

        @dtp:

        Nee, in einem. `
        Unter der Voraussetzung, dass alle Timer-Kommandos in der Liste mit "Timer" beginnen, sollte eine Erweiterung der setState-Schleife genügen:

         `for(var i = 0; i < len; i++) {
                 if(list[i].substr(0,5) == "Timer") {
                 setState("Vitotronic." + list[i], stdout[2*i+1]+" "+stdout[2*i+2]+" "+stdout[2*i+3]+" "+stdout[2*i+4]);
                 }
                 else setState("Vitotronic." + list[i], stdout[2 * i + 1]);
              }`
        
        EDIT: Das funktioniert so einfach leider nicht, da bei den Timern der Abstand von 2 Elementen im Array nicht zutrifft. Also besser mit 3\. Liste: Habe das Skript oben entsprechend abgewandelt.[/i][/i][/i]
        

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        1 Antwort Letzte Antwort
        0
        • paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #52

          Siehe http://forum.iobroker.net/viewtopic.php?f=23&t=3048&start=40#p29920 (3. Liste).

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          1 Antwort Letzte Antwort
          0
          • D Offline
            D Offline
            dtp
            schrieb am zuletzt editiert von
            #53

            Danke, werde es ausprobieren. Wirklich tollen Support, den Du hier leistest. Nochmals großen Dank dafür.

            Gruß,

            Thorsten

            ioBroker im Docker-Container auf Synology DiskStation DS718+, HomeMatic IP über CCU3, IKEA Dirigera inkl. Matter, Apple Homekit, Amazon Alexa.

            1 Antwort Letzte Antwort
            0
            • D Offline
              D Offline
              dtp
              schrieb am zuletzt editiert von
              #54

              Hallo paul53,

              bin gerade am Ausprobieren Deiner Timer-Zeilen. Allerdings verstehe ich da was nicht so ganz. Warum

              `if(timer) setState("Vitotronic." + list[i], stdout[5*i+1]+" "+stdout[5*i+2]+" "+stdout[5*i+3]+" "+stdout[5*i+4]);` 
              
              und nicht
              
              `~~[code]~~if(timer) setState("javascript."+ instance + ".Vitotronic." + list[i], stdout[5*i+1]+" "+stdout[5*i+2]+" "+stdout[5*i+3]+" "+stdout[5*i+4]);` 
              
              EDIT: Nun scheint's zu passen.
              
              >! ~~[spoiler]~~`~~[code]~~// 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','Systemzeit'];
              var list3 = ['StatusStoerung','Stoerung1','Stoerung2','Stoerung3','Stoerung4','Stoerung5','Stoerung6','Stoerung7','Stoerung8','Stoerung9','Stoerung10','Anlagenschema','Systemzeit'];
              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);
              }, 120 * 1000); // alle 2 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` 
              
              Gruß,
              
              Thorsten[/i][/i][/i][/i][/i][/code][/spoiler][/i][/code][/i]
              

              ioBroker im Docker-Container auf Synology DiskStation DS718+, HomeMatic IP über CCU3, IKEA Dirigera inkl. Matter, Apple Homekit, Amazon Alexa.

              1 Antwort Letzte Antwort
              0
              • paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von
                #55

                @dtp:

                Allerdings verstehe ich da was nicht so ganz. `
                Wenn man mit setState() oder getState() einen Datenpunkt innerhalb der JS-Instanz des Skriptes adressiert, muss nicht die gesamte ID angegeben werden, sondern es genügt der Teil, mit dem der Datenpunkt per createState() erzeugt wurde.

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                1 Antwort Letzte Antwort
                0
                • D Offline
                  D Offline
                  dtp
                  schrieb am zuletzt editiert von
                  #56

                  Ah. Danke für die Aufklärung.

                  Gruß,

                  Thorsten

                  ioBroker im Docker-Container auf Synology DiskStation DS718+, HomeMatic IP über CCU3, IKEA Dirigera inkl. Matter, Apple Homekit, Amazon Alexa.

                  1 Antwort Letzte Antwort
                  0
                  • D Offline
                    D Offline
                    dtp
                    schrieb am zuletzt editiert von
                    #57

                    Jetzt hätte ich doch noch ein paar weitere Frage.

                    Ist es möglich, direkt im Skript einzelne Datenpunkte (insb. Betriebsart, BetriebsartHK, BetriebParty, BetriebSpar) in entsprechend angelegte Systemvariable der CCU2 zu schreiben, oder sollte ich das doch lieber separat machen?

                    Zum Steuern per Skript:

                    Die weiter oben definierten Zustände

                    states: '0:Aus;1:WW;2:WW+Hzg;3:Reduziert;4:Normal'
                    

                    dürften zu einem Problem führen, da die Vitotronic gemäß der vcontrold.xml direkt die Werte

                    'Abschaltbetrieb', 'Nur Warmwasser', 'Heizen und Warmwasser', 'Dauernd red. Betrieb' und 'Dauernd Normalbetrieb' als Steuerparameter benötigt. Sind Leerschritte ein Problem?

                    Gruß,

                    Thorsten

                    ioBroker im Docker-Container auf Synology DiskStation DS718+, HomeMatic IP über CCU3, IKEA Dirigera inkl. Matter, Apple Homekit, Amazon Alexa.

                    1 Antwort Letzte Antwort
                    0
                    • paul53P Offline
                      paul53P Offline
                      paul53
                      schrieb am zuletzt editiert von
                      #58

                      @dtp:

                      Ist es möglich, direkt im Skript einzelne Datenpunkte (insb. Betriebsart, BetriebsartHK, BetriebParty, BetriebSpar) in entsprechend angelegte Systemvariable der CCU2 zu schreiben, oder sollte ich das doch lieber separat machen? `
                      Ich würde das separat machen.
                      @dtp:

                      da die Vitotronic gemäß der vcontrold.xml direkt die Werte

                      'Abschaltbetrieb', 'Nur Warmwasser', 'Heizen und Warmwasser', 'Dauernd red. Betrieb' und 'Dauernd Normalbetrieb' als Steuerparameter benötigt. `
                      Wozu gibt es das Kommando "setVitoBetriebsart" in der vito.xml, wenn man es nicht nutzen kann ?

                      Da der Datenpunkt "Betriebsart" bereits in list1 vorhanden ist und somit der Datenpunkt "Vitotronic.Betriebsart" bereits als Typ "string" existiert, muss der Datenpunkt zum Setzen der Betriebsart einen anderen Namen erhalten, z.B.

                      createState('Vitotronic.setBetriebsart', 0, {
                          type: 'number',
                          read: true,
                          write: true,
                          desc: 'Vitotronic Betriebsart setzen',
                          min: 0,
                          max: 4,
                          def: 0,
                          states: '0:Aus;1:WW;2:WW+Hzg;3:Reduziert;4:Normal'
                      });
                      
                      on("javascript." + instance + ".Vitotronic.setBetriebsart", function(dp) {
                         exec('vclient -h 127.0.0.1:3002 -c setVitoBetriebsart 0' + dp.state.val, function(err, stdout, stderr) {
                            if (err) log(stderr,'error');
                         });
                      });
                      

                      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                      1 Antwort Letzte Antwort
                      0
                      • D Offline
                        D Offline
                        dtp
                        schrieb am zuletzt editiert von
                        #59

                        @paul53:

                        Wozu gibt es das Kommando "setVitoBetriebsart" in der vito.xml, wenn man es nicht nutzen kann ? `

                        Kann man doch. Nur eben nicht mit den von Dir im Skript angegebenen Parametern "0:Aus;1:WW;2:WW+Hzg;3:Reduziert;4:Normal", da diese so nicht in der vcontrold.xml definiert sind:

                         <unit name="Betriebsart"><abbrev>BA</abbrev>
                        	<type>enum</type></unit> 
                        

                        Man muss also mit "Abschaltbetrieb;Nur Warmwasser;Heizen und Warmwasser;Dauernd red. Betrieb;Dauernd Normalbetrieb" arbeiten, die dann von der XML-Datei in die jeweiligen Hex-Werte 00 bis 04 übersetzt werden.

                        Die Frage war daher, ob ich in Deinem Skript die Zeile

                        states: '0:Aus;1:WW;2:WW+Hzg;3:Reduziert;4:Normal'
                        

                        durch die Zeile

                        states: 'Abschaltbetrieb;Nur Warmwasser;Heizen und Warmwasser;Dauernd red. Betrieb;Dauernd Normalbetrieb'
                        

                        ersetzen kann?

                        ioBroker im Docker-Container auf Synology DiskStation DS718+, HomeMatic IP über CCU3, IKEA Dirigera inkl. Matter, Apple Homekit, Amazon Alexa.

                        1 Antwort Letzte Antwort
                        0
                        • paul53P Offline
                          paul53P Offline
                          paul53
                          schrieb am zuletzt editiert von
                          #60

                          Muss man wirklich den Text (text='betriebsartxx') an das Kommando übergeben ? Das würde mich sehr wundern :o Meiner Meinung nach sollte der Hexwert (als 2-Zeichen-String) der mit bytes='0n' definiert ist, übergeben werden.@dtp:

                          Die Frage war daher, ob ich in Deinem Skript die Zeile

                          Code: Alles auswählen

                          states: '0:Aus;1:WW;2:WW+Hzg;3:Reduziert;4:Normal'

                          durch die Zeile

                          Code: Alles auswählen

                          states: 'Abschaltbetrieb;Nur Warmwasser;Heizen und Warmwasser;Dauernd red. Betrieb;Dauernd Normalbetrieb'

                          ersetzen kann? `
                          Nein, das funktioniert so nicht.

                          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                          1 Antwort Letzte Antwort
                          0
                          • paul53P Offline
                            paul53P Offline
                            paul53
                            schrieb am zuletzt editiert von
                            #61

                            Wenn das Kommando "setVitoBetriebsart" tatsächlich den Text übergeben haben will, muss man mit switch / case arbeiten:

                            createState('Vitotronic.setBetriebsart', 0, {
                                type: 'number',
                                read: true,
                                write: true,
                                desc: 'Vitotronic Betriebsart setzen',
                                min: 0,
                                max: 4,
                                def: 0,
                                states: '0:Aus;1:WW;2:WW+Hzg;3:Reduziert;4:Normal'
                            });
                            
                            on("javascript." + instance + ".Vitotronic.setBetriebsart", function(dp) {
                               var text;
                               switch(dp.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;
                               	default: text = '?';
                               }
                               exec('vclient -h 127.0.0.1:3002 -c setVitoBetriebsart ' + text, function(err, stdout, stderr) {
                                  if (err) log(stderr,'error');
                               });
                            });
                            

                            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                            1 Antwort Letzte Antwort
                            0
                            • paul53P Offline
                              paul53P Offline
                              paul53
                              schrieb am zuletzt editiert von
                              #62

                              @paul53:

                              Wenn das Kommando "setVitoBetriebsart" tatsächlich den Text übergeben haben will, muss man mit switch / case arbeiten `
                              oder mit einem Text-Array:

                              var texte = ['Abschaltbetrieb','Nur Warmwasser','Heizen und Warmwasser','Dauernd red. Betrieb','Dauernd Normalbetrieb'];
                              
                              on("javascript." + instance + ".Vitotronic.setBetriebsart", function(dp) {
                                 exec('vclient -h 127.0.0.1:3002 -c setVitoBetriebsart ' + texte[dp.state.val], function(err, stdout, stderr) {
                                    if (err) log(stderr,'error');
                                 });
                              });
                              
                              

                              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                              1 Antwort Letzte Antwort
                              0
                              • D Offline
                                D Offline
                                dtp
                                schrieb am zuletzt editiert von
                                #63

                                Danke. Werde es ausprobieren.

                                Gruß,

                                Thorsten

                                ioBroker im Docker-Container auf Synology DiskStation DS718+, HomeMatic IP über CCU3, IKEA Dirigera inkl. Matter, Apple Homekit, Amazon Alexa.

                                1 Antwort Letzte Antwort
                                0
                                • D Offline
                                  D Offline
                                  dtp
                                  schrieb am zuletzt editiert von
                                  #64

                                  Hm.

                                  Eigentlich hat das Skript soweit gut funktioniert. Doch seit den letzten ioBroker-Updates erhalte ich folgende Fehlermeldungen:

                                  filename="2016-07-17_10h47_52.png" index="0">~~

                                  EDIT: Ein Neustart des Raspi scheint das Problem gelöst zu haben.

                                  Gruß,

                                  Thorsten

                                  ioBroker im Docker-Container auf Synology DiskStation DS718+, HomeMatic IP über CCU3, IKEA Dirigera inkl. Matter, Apple Homekit, Amazon Alexa.

                                  1 Antwort Letzte Antwort
                                  0
                                  • stekS Offline
                                    stekS Offline
                                    stek
                                    schrieb am zuletzt editiert von
                                    #65

                                    Ich habe folgende script geschrieben:

                                    GET:

                                    `// 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: 'indicator',
                                            read: true,
                                            write: false,
                                            re: /^\W*(\w+\+*\w*)\W*$/,
                                            cmd: "getBetriebArtM1",
                                        }
                                    ];
                                    
                                    var getcmd ="";
                                    
                                    for (var i in vcontrolget) {
                                        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";
                                    console.log('cmd: '+getcmd);
                                    
                                    function vitoget () {
                                    var net = require('net');
                                    
                                    var client = new net.Socket();
                                    client.connect(srv_port, srv_ip, function() {
                                    	console.log('Connected');
                                    	client.write(getcmd);
                                    });
                                    
                                    var i=0;
                                    var readingOK=true;
                                    var data_tmp=[];
                                    
                                    client.on('data', function(data) {
                                        var data_str;
                                    	console.log('Received: ' + data);
                                        var dummyre=/^vctrld/;
                                        data_str=String(data);
                                        if (dummyre.test(data_str)) {
                                            console.log('ignored: ' + data);
                                    
                                        } else if (vcontrolget[i].re.test(data_str)) {
                                     	    data_tmp[i] = data_str.replace(vcontrolget[i].re, "$1");
                                      	    console.log('data ok: ' +data_tmp[i]);
                                    	    i++;
                                        } else {
                                            readingOK=false;
                                            console.log('faulty data: ' + data);
                                        }
                                    });
                                    
                                    client.on('close', function() {
                                        client.destroy();
                                    	console.log('Connection closed');
                                    	if (readingOK) {
                                            for (var i in vcontrolget) {
                                                console.log('store data: ' + vcontrolget[i].id +" = " +data_tmp[i]);
                                    	        setState(vcontrolget[i].id, data_tmp[i],true);
                                            }
                                    	} else {
                                    	    console.log('data faulty'); 
                                    	}
                                    });   
                                    }
                                    
                                    schedule("* * * * *", function () {vitoget();});  // ogni minuto` 
                                    
                                    SET:
                                    `~~[code]~~// 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: 'indicator',
                                            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) {
                                        console.log('vcontrolset[i].cmd' + vcontrolset[i].cmd); 
                                    
                                        param=getState(vcontrolset[i].id).val;
                                        getparam=getState(vcontrolset[i].getid).val;
                                        console.log('param: ' + param); 
                                        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";
                                    console.log('cmd: '+setcmd);
                                    
                                    var net = require('net');
                                    
                                    var client = new net.Socket();
                                    
                                    if (cmdflag) {
                                    client.connect(srv_port, srv_ip, function() {
                                    	console.log('Connected');
                                    	client.write(setcmd);
                                    });
                                    
                                    client.on('data', function(data) {
                                        var data_str;
                                    	console.log('Received: ' + data);
                                    });
                                    
                                    client.on('close', function() {
                                        client.destroy();
                                    	console.log('Connection closed');
                                    
                                    });   
                                    
                                    }
                                    
                                    }
                                    
                                    schedule("* * * * *", function () {vitoset();});  // ogni minuto` 
                                    
                                    Bei mit läuft vcontrold auf eine andere box und soll ich über tcp/ip zugreifen.
                                    
                                    Wass mich noch stört ist dass die object unter javascript erzeugt werden: javascript.0.vcontrold...bla bla
                                    
                                    Wie kann ich die auf dem root Baum erzeugen lassen (von javascript)?
                                    
                                    Danke für ein Tip, fileicht am schluss kann ich den Script in ein richtige Adapter umwandeln?!
                                    
                                    Grüsse
                                    
                                    Stek[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/code][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
                                    
                                    1 Antwort Letzte Antwort
                                    0
                                    • D Offline
                                      D Offline
                                      dtp
                                      schrieb am zuletzt editiert von
                                      #66

                                      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]

                                      ioBroker im Docker-Container auf Synology DiskStation DS718+, HomeMatic IP über CCU3, IKEA Dirigera inkl. Matter, Apple Homekit, Amazon Alexa.

                                      1 Antwort Letzte Antwort
                                      0
                                      • stekS Offline
                                        stekS Offline
                                        stek
                                        schrieb am zuletzt editiert von
                                        #67

                                        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 Antwort Letzte Antwort
                                        0
                                        • blauholstenB Offline
                                          blauholstenB Offline
                                          blauholsten
                                          Developer
                                          schrieb am zuletzt editiert von
                                          #68

                                          @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

                                          Entwickler vom: - Viessman Adapter
                                          - Alarm Adapter

                                          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
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          832

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          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