Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Viessmann-Adapter

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

Viessmann-Adapter

Scheduled Pinned Locked Moved ioBroker Allgemein
viesmann
523 Posts 50 Posters 157.7k Views 19 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • paul53P Offline
    paul53P Offline
    paul53
    wrote on last edited by
    #46

    @dtp:

    Du hast nicht zufällig noch ne Idee bzgl. der mehrzeiligen Timer-Ausgaben? Es sind immer vier Zeilen. `
    Was ist der Inhalt der 4 Zeilen ? Welche Kommandos gehören dazu ?

    Da wird man nach Kommandos in der Auswertung selektieren müssen. Oder man macht eine 3. Liste (nur Timer-Kommandos) und wertet dann in einer abgewandelten Funktion anders aus als für den Rest.

    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 Reply Last reply
    0
    • D Offline
      D Offline
      dtp
      wrote on last edited by
      #47

      Hallo paul53,

      die Ausgabe sieht z.B. so aus:

      vctrld>getVitoTimerSoWW

      1:An:06:30 Aus:09:00

      2:An:12:00 Aus:14:00

      3:An:17:00 Aus:20:00

      4:An:– Aus:--

      Ist bei allen Timer-Einstellungen derselbe Aufbau.

      Gruß,

      Thorsten

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

      1 Reply Last reply
      0
      • paul53P Offline
        paul53P Offline
        paul53
        wrote on last edited by
        #48

        Möchtest Du die 4 Zeitspannen in einem Datenpunkt darstellen oder in 4 DP ?

        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 Reply Last reply
        0
        • D Offline
          D Offline
          dtp
          wrote on last edited by
          #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 Reply Last reply
          0
          • D Offline
            D Offline
            dtp
            wrote on last edited by
            #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 Reply Last reply
            0
            • paul53P Offline
              paul53P Offline
              paul53
              wrote on last edited by
              #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 Reply Last reply
              0
              • paul53P Offline
                paul53P Offline
                paul53
                wrote on last edited by
                #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 Reply Last reply
                0
                • D Offline
                  D Offline
                  dtp
                  wrote on last edited by
                  #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 Reply Last reply
                  0
                  • D Offline
                    D Offline
                    dtp
                    wrote on last edited by
                    #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 Reply Last reply
                    0
                    • paul53P Offline
                      paul53P Offline
                      paul53
                      wrote on last edited by
                      #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 Reply Last reply
                      0
                      • D Offline
                        D Offline
                        dtp
                        wrote on last edited by
                        #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 Reply Last reply
                        0
                        • D Offline
                          D Offline
                          dtp
                          wrote on last edited by
                          #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 Reply Last reply
                          0
                          • paul53P Offline
                            paul53P Offline
                            paul53
                            wrote on last edited by
                            #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 Reply Last reply
                            0
                            • D Offline
                              D Offline
                              dtp
                              wrote on last edited by
                              #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 Reply Last reply
                              0
                              • paul53P Offline
                                paul53P Offline
                                paul53
                                wrote on last edited by
                                #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 Reply Last reply
                                0
                                • paul53P Offline
                                  paul53P Offline
                                  paul53
                                  wrote on last edited by
                                  #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 Reply Last reply
                                  0
                                  • paul53P Offline
                                    paul53P Offline
                                    paul53
                                    wrote on last edited by
                                    #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 Reply Last reply
                                    0
                                    • D Offline
                                      D Offline
                                      dtp
                                      wrote on last edited by
                                      #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 Reply Last reply
                                      0
                                      • D Offline
                                        D Offline
                                        dtp
                                        wrote on last edited by
                                        #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 Reply Last reply
                                        0
                                        • stekS Offline
                                          stekS Offline
                                          stek
                                          wrote on last edited by
                                          #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 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

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

                                          315

                                          Online

                                          32.6k

                                          Users

                                          82.3k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe