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.8k

  • 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.
  • paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von
    #37

    Ich habe wohl slice() falsch angewendet. Korrigiere bitte:

    cmds = cmds.slice(1, cmds.length);  // erstes Komma raus
    

    oder besser:

    cmds = cmds.substr(1);  // erstes Komma raus
    

    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
      #38

      Hallo Paul,

      damit ist die Fehlermeldung zwar verschwunden, allerdings steht in cmds immer nur der letzte Parameter drin. Also im vorliegenden Fall "getVitoTempKesselIst".

      Hatte es mit

      `cmds[i] = ',getVito' + list[i];`
      
      versucht, aber das klappt leider nicht.
      
      Gruß,
      
      Thorsten[/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
      • paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von
        #39

        @dtp:

        …allerdings steht in cmds immer nur der letzte Parameter drin. `
        Sorry, mein Fehler. In der for-Schleife muss es richtig lauten:

         `cmds = cmds + ',getVito' + list[i];`
        Das hatte ich auch vor und deshalb _~~[i]~~cmds[/i]_ mit einem Leerstring initialisiert. Habe dann wohl zu schnell getippt  ;)[/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
        • D Offline
          D Offline
          dtp
          schrieb am zuletzt editiert von
          #40

          Hi paul53,

          exakt. Hatte es gerade eben selbst rausgefunden. Nachdem ich gestern weiter oben ja noch geschrieben hatte, dass Javascript und das HomeMatic-Scripting durchaus Parallelen haben, ist es mir dann vorhin wie Schuppen von den Haaren gefallen. ;)

          Auf jeden Fall danke für Deinen Support. Nun funzt das Skript.

          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
            #41

            @dtp:

            Nun funzt das Skript. `
            Das freut mich zu lesen :D
            @dtp:

            Allerdings fände ich es sehr hilfreich, wenn ich … meine Heizungsanlage in den Heizung- und Warmwasser-, Nur-Warmwasser-, Abschalt-, Spar- oder Ferienbetrieb versetzen könnte. `
            Das sollte funktionieren, wenn Du das Script um das Setzen der Betriebsart ergänzt:

            createState('Vitotronic.Betriebsart', 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.Betriebsart", function(dp) {
            	exec('vclient -h 127.0.0.1:3002 -c setVitoBetriebsart ' + 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
            • S Offline
              S Offline
              Solear
              schrieb am zuletzt editiert von
              #42

              Es macht Spaß, auch beim zaubern zuzusehen :)

              @dtp

              Könntest du am Ende bitte das ganze Skript bereitstellen, damit sich nicht jeder durchwühlen muss?

              Gerne im Beitrag 1 mit einfügen. :geek:

              iobroker als LXC unter Proxmox

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

                Hallo,

                die Nacht hat das Skript gut überstanden. ;) Eigentlich sind's zwei Skripte, da ich ca. 40 bis 50 Parameter auslese und ich feststellen musste, dass dann irgendwann Feierabend war. Hab's daher einfach zweigeteilt. Vermutlich ist sogar noch ein drittes Skript erforderlich, weil die ausgegebenen Timer-Werte für die Zeitsteuerung der Heizung und des Warmwassers jeweils aus vier Zeilen bestehen, die im aktuellen Skript noch nicht korrekt ausgelesen werden. Daher habe ich die erst mal raus genommen. Da macht die Zeile

                stdout = stdout.split("\n");
                

                noch Schwierigkeiten.

                @paul53:

                Danke für Dein "Set"-Skript. Werde ich mal ausprobieren.

                @Solear:

                Wird gemacht. Allerdings werde ich da wohl besser einen neuen Thread im "Skripte"-Unterforum aufmachen, weil es hier ja eigentlich um den Adapter ging. Da hoffe ich auch noch so ein wenig auf die Unterstützung von @Eisbaeeer, auch wenn dank @paul53 schon mal ein gut funktionierender Workaround gefunden wurde.

                Der Adapter soll ein paar Dinge universeller gestalten, wie z.B. das automatische Auslesen der getaddr- und setaddr-Parameter und die einfache Möglichkeit, individuelle Polling-Zeiten für jeden Parameter setzen zu können.

                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
                  #44

                  @dtp:

                  Eigentlich sind's zwei Skripte, da ich ca. 40 bis 50 Parameter auslese und ich feststellen musste, dass dann irgendwann Feierabend war. Hab's daher einfach zweigeteilt. `
                  Das lässt sich auch in einem Skript (mit 2 Listen) machen, wobei man dann gleich in eine Liste für schnelle Abfrage (z.B. Kessel-, Vorlauftemperaturen) und für langsame Abfrage (z.B. Aussen-, Warmwassertemperatur) unterscheiden sollte.

                  `// Werte aus Vitotronic auslesen
                  
                  var list1 = ['TempKesselIst',...];  // schnell veränderliche Werte
                  var list2 = ['TempAussen','TempWWIst','TempKesselSoll',...];  // träge Werte
                  var list3 = ['TimerSoWW',...];  // Timer
                  
                  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 raus
                  }
                  
                  // Script start
                  var cmds1 = init(list1);
                  var cmds2 = init(list2);
                  var cmds3 = init(list3);
                  
                  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("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]);
                        }
                     });
                  }
                  
                  setInterval(function() {
                     vito(cmds1, list1, false);
                  }, 20 * 1000); // alle 20 Sekunden
                  
                  setInterval(function() {
                     vito(cmds2, list2, false);
                  }, 300 * 1000); // alle 5 Minuten
                  
                  setInterval(function() {
                     vito(cmds3, list3, true);
                  }, 300 * 1000); // alle 5 Minuten` [/i][/i][/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
                  • D Offline
                    D Offline
                    dtp
                    schrieb am zuletzt editiert von
                    #45

                    Danke. Werde ich mal testen.

                    Du hast nicht zufällig noch ne Idee bzgl. der mehrzeiligen Timer-Ausgaben? Es sind immer vier Zeilen.

                    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
                      #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 Antwort Letzte Antwort
                      0
                      • D Offline
                        D Offline
                        dtp
                        schrieb am zuletzt editiert von
                        #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 Antwort Letzte Antwort
                        0
                        • paul53P Offline
                          paul53P Offline
                          paul53
                          schrieb am zuletzt editiert von
                          #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 Antwort Letzte Antwort
                          0
                          • 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
                                          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

                                          895

                                          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