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.
  • D Offline
    D Offline
    dtp
    schrieb am zuletzt editiert von
    #21

    Hallo Rainer,

    das macht's nicht unbedingt leichter für mich. Ehrlich gesagt würde ich lieber nach Java fliegen, als damit zu programmieren. 8-)

    So ein wenig hoffe ich ja noch auf den Support vom Eisbaeeern. winkewinke

    Bis dann,

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

      Ich habe die Hoffnung ja irgendwie noch nicht aufgegeben. Vielleicht findet sich ja noch jemand, der sich der Sache annehmen möchte. winkewinke

      Das würde den Schritt weg von CCU.IO hin zum ioBroker für mich dann absolut abrunden. Nur leider bin ich zumindest aktuell etwas zu "blöd" für die Adapter-Programmierung.

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

        @dtp:

        Eigentlich macht der Adapter nichts anderes, als die Datenpunkte einer xml-Datei (vito.xml) auszulesen sowie sie zu den einstellbaren Zeitintervallen abzufragen `
        Wie ich das sehe, ist vito.xml eine Konfigurationsdatei, die Kommandos enthält.

        Für das Abfragen bzw. Setzen von Werten kann http://openv.wikispaces.com/vclient dienen. Das kann man periodisch per Script ausführen und sich so die Werte in Datenpunkte holen:

        // Aussen- und Warmwassertemperatur auslesen
        function vito() {
            exec('vclient -h 127.0.0.1:3002 -c getVitoTempAussen,getVitoTempWWIst', function(err, stdout, stderr) {
            if (err) {
                log(stderr,'error');
                return;
                }
            log(stdout);
            stdout = stdout.split("\n");
            setState(wwtempid, parseFloat(stdout[3]));
            setState(aussentempid, parseFloat(stdout[1]));
            });
        }
        
        schedule("*/1 * * * *", vito);
        
        

        Erst einmal anschauen, wie das log(stdout) aussieht !

        EDIT: Noch besser: Erst einmal auf der Console eingeben
        > vclient -h 127.0.0.1:3002 -c getVitoTempAussen,getVitoTempWWIst
        und die Consolenausgabe posten.

        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
        • EisbaeeerE Offline
          EisbaeeerE Offline
          Eisbaeeer
          Developer
          schrieb am zuletzt editiert von
          #24

          Hallo Thorsten. Ich hab dich nicht vergessen. Bin gerade in den letzten Zügen mit meinem derzeitigen Projekt.

          In wie weit wäre es kritisch, wenn du die Schnittstelle nach aussen frei gibst? Damit ich debuggen kann? Gibt es eine Möglichkeit mit user/passwort abzusichern?

          Oder bist du fit in VPN einrichten? Hast du eine Fritzbox?

          Kein support per PM. Bitte im Forum Fragen stellen!

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

            Hallo paul53 und Eisbaeeer,

            vielen, vielen Dank schon mal für Eure Unterstützung.

            @paul53: Dein Javaskript bietet mir auf jeden Fall schon mal eine sehr gute Grundlage, falls es mit dem Adapter nichts werden sollte.

            @Eisbaeeer: Habe zwar eine FRITZ!Box mit eingerichetem VPN-Server, allerdings würde ich dessen Daten sehr ungerne weitergeben. Gibt es da eine Möglichkeit, eine separate VPN-Testverbindung einzurichten, mit der Du nur Zugriff auf meinen mit der Heizungsanlage verbundenen Raspi erhältst, ohne dass ich Dich als weiteren User auf der FRITZ!Box einrichten muss? Auf jeden Fall könnte ich sehr leicht einen Raspi 2 einrichten, auf dem vcontrold und ioBroker (ohne Zugriff auf meine CCU) installiert sind. Oder würde Dir schon ein Raspi genügen, auf dem unter Jessie nur vcontrold läuft?

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

              @paul53:

              EDIT: Noch besser: Erst einmal auf der Console eingeben
              > vclient -h 127.0.0.1:3002 -c getVitoTempAussen,getVitoTempWWIst
              und die Consolenausgabe posten.

              Hallo paul53,

              hier die Ausgabe:

              filename="2016-06-30_18h49_09.png" index="0">~~

              Passt soweit.

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

                Dann müsste auch das Setzen der Datenpunkte passen.

                Es lassen sich beliebig viele Kommandos mit einem vclient-Aufruf übergeben, d.h. alle zu lesenden Werte in einem Rutsch abfragen.

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

                  Hab jetzt mal folgendes Skript ausprobiert:

                  createState('VitoTempAussen', {
                      type: 'string',
                      name: 'Vitotronic Außentemperatur',
                      def: 'leer'
                  });
                  
                  var TempAussen = '';
                  
                  function vitotempaussen() {
                      exec('vclient -h 127.0.0.1:3002 -c getVitoTempAussen', function(err, stdout, stderr) {
                      if (err) {
                          log(stderr,'error');
                          return;
                          }
                      log(stdout);
                      stdout = stdout.split("\n");
                      TempAussen = parseFloat(stdout[1]);
                      });
                  }
                  
                  setInterval(function () {
                      vitotempaussen();
                      setState("javascript."+ instance + ".VitoTempAussen", TempAussen);
                  }, 10 * 1000); // alle 10 Sekunden
                  
                  

                  Das liefert mir dann zwar folgenden Output:

                  filename="2016-06-30_19h30_52.png" index="1">~~

                  Aber leider auch folgende Warnungen:

                  filename="2016-06-30_19h31_35.png" index="0">~~

                  Naja, ist immerhin ein Anfang. ;)

                  Bis dann,

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

                    Du hast den Datenpunkt "VitoTempAussen" als Typ "string" erstellt, schreibst aber Daten vom Typ "number" mit setState. Lass das parseFloat im Skript weg, dann klappt es auch ohne Warnung:

                        TempAussen = stdout[1];
                    
                    

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

                      Mit dem folgenden Skript sollte sich eine ganze Liste von Werten aus der Vitotronic in Datenpunkte übertragen lassen:

                      `// Werte aus Vitotronic auslesen
                      
                      var list = ['TempAussen','TempWWIst','TempKesselSoll','TempKesselIst',...];
                      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: ''
                      	});
                      }
                      
                      cmds = cmds.substr(1);  // erstes Komma raus
                      
                      function vito() {
                          exec('vclient -h 127.0.0.1:3002 -c ' + cmds, function(err, stdout, stderr) {
                      		if (err) {
                      			log(stderr,'error');
                      			return;
                              }
                      		stdout = stdout.split("\n");
                      		for(var i = 0; i < len; i++) {
                      			setState("javascript."+ instance + ".Vitotronic." + list[i], stdout[2 * i + 1]);
                      		}
                          });
                      }
                      
                      setInterval(vito, 20 * 1000); // alle 20 Sekunden` 
                      
                      EDIT: Korrigiert[/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
                        #31

                        Klasse, das ist schon mal ein guter Ansatz. Werde ich heute Abend mal ausprobieren.

                        Hier noch mal die original Javaskript-Dateien des vitotronic-Adapters von Axel Hoogestraat für CCU.IO. Vielleicht hilft's ja weiter.

                        Zunächst die vitotronicReadConfig.js:

                        ! ```
                        /* Includes */ var fs = require('fs'); var settings = require(__dirname + '/../../settings.js'); var xml2js = require("xml2js"); ! var arguments = process.argv.splice(2); if (arguments.length) { } else { process.exit(-1); } /* Classes */ function Dpoint() { this.access = 0; this.name = ''; this.description = ''; this.unit = ''; } Dpoint.READ = 1; Dpoint.WRITE = 2; function Unit() { this.abbrev = ''; this.name = ''; this.type = ''; this.entity = ''; } /* Commands aus vito.xml */ var datapoints = {}; /* units aus vcontrold.xml */ var units = {}; /* Port auf dem vcontrold läuft */ var port = 0; /* Pfad zur XML Datei */ var path = arguments[0]; ! fs.readFile(path + 'vcontrold.xml', function (err, data) { if(err) { process.send("Pfad nicht korrekt oder lesbar!"); process.exit(-1); } var options = { explicitArray: false, mergeAttrs: true }; var parser = new xml2js.Parser(options); parser.parseString(data, function (err, result) { if(err) { process.send("Konnte vcontrold.xml nicht parsen!"); process.exit(-1); } ! port = result["V-Control"].unix.config.net.port; ! var xmlunits = result["V-Control"].units.unit; for (var i = 0; i < xmlunits.length; i++) { var u = xmlunits[i]; ! var unit = new Unit(); ! unit.name = u.name; unit.abbrev = u.abbrev; unit.type = u.type; unit.entity = u.entity; units[u.abbrev] = unit; } ! getVito(); }); }); ! function getVito() { fs.readFile(path + 'vito.xml', function (err, data) { if(err) { process.send("Pfad nicht korrekt oder lesbar!"); process.exit(-1); } var options = { explicitArray: false, mergeAttrs: true }; var parser = new xml2js.Parser(options); parser.parseString(data, function (err, result) { if(err) { process.send("Konnte XML nicht parsen!"); process.exit(-1); } var commands = result.vito.commands.command; for (var i = 0; i < commands.length; i++) { var c = commands[i]; if(c.name.substring(0,3) != 'get' && c.name.substring(0,3) != 'set') { continue; } var name = c.name.substring(3); var unit = typeof c.unit == 'undefined' ? '' : c.unit; if(name.length == 0) continue; ! if(typeof(datapoints[name]) == 'undefined') { var dp = new Dpoint(); dp.id = settings.adapters.vitotronic.settings.firstId + i; dp.name = name; dp.description = c.description; dp.unit = unit; datapoints[name] = dp; } ! if(c.protocmd == 'getaddr') { datapoints[name].access |= Dpoint.READ; } else { datapoints[name].access |= Dpoint.WRITE; } ! } ! process.send({datapoints:datapoints, units:units, port:port}); process.exit(); }); }); }
                        ! Dann die vitotronic.js:
                        ! >! [spoiler]`[code]/* Includes /
                        var settings = require(__dirname + '/../../settings.js');
                        var logger = require(__dirname+'/../../logger.js');
                        var net = require('net');
                        var io = require('socket.io-client');
                        ! /
                        Settings für diesen Adapter /
                        var vitotronicSettings = settings.adapters.vitotronic.settings;
                        /
                        Alle commands aus der vcontrold Konfiguration /
                        var commands= vitotronicSettings.config.datapoints;
                        /
                        Alle commands, die geloggt werdne sollen /
                        var toPoll = [];
                        /
                        Index aus toPoll Array des aktuell abzufragenden commands /
                        var actual = -1;
                        /
                        Hilfsreferenz /
                        var commandMap = {};
                        /
                        Verbindung zu vcontrold /
                        var telnetSocket;
                        /
                        Log Mode /
                        var log = vitotronicSettings.log;
                        /
                        Buffer für Schreib-Commands */
                        var writeBuffer = [];
                        ! if (!settings.adapters.vitotronic || !settings.adapters.vitotronic.enabled) {
                        process.exit();
                        }

                        if (settings.ioListenPort) {
                        var socket = io.connect("127.0.0.1", {
                        port: settings.ioListenPort
                        });
                        } else if (settings.ioListenPortSsl) {
                        var socket = io.connect("127.0.0.1", {
                        port: settings.ioListenPortSsl,
                        secure: true
                        });
                        } else {
                        process.exit();
                        }

                        ! connectVcontrol();
                        function connectVcontrol() {
                        telnetSocket = net.createConnection({
                        port: vitotronicSettings.config.port,
                        host: vitotronicSettings.host
                        }, function() {
                        // Erste Eingabe führt immer zu einem Fehler
                        telnetSocket.write('dummy\n');
                        });
                        }
                        telnetSocket.on('close', function () {
                        myLog("adapter vitotronic disconnected from vcontrold");
                        });
                        ! telnetSocket.on('data', function (data) {
                        // Eingabeaufforderung von vcontrold können wir ignorieren
                        if(data == 'vctrld>') return;
                        ! if(actual == -1 || (""+data).substring(0,3) == 'ERR') {

                            if(actual != -1) {
                                toPoll[actual].lastPoll = Date.now();
                                myLog("vcontrold send error: " +toPoll[actual].name + ":"  + data);
                            } else {
                                myLog("vcontrol send message: " + data);
                            }
                            stepPolling();
                            return;
                        }
                        
                        data = (""+data).replace('vctrld>', '');
                        
                        // Einheit (z.B. "Grad Celcius") aus der Antwort entfernen
                        if(vitotronicSettings.config.units[toPoll[actual].unit]) {
                            data = (""+data).replace(vitotronicSettings.config.units[toPoll[actual].unit].entity, '').trim();	
                        }
                        
                        myLog("adapter vitotronic get data from vcontrold: " +toPoll[actual].name + ":"  + data);
                        
                        // Wert in ccu.io speichern
                        if(toPoll[actual]) {    
                            socket.emit("setObject", toPoll[actual].id, {
                                Name: toPoll[actual].name,
                                DPInfo: toPoll[actual].description,
                                TypeName: "VARDP"
                            }, function() {
                                toPoll[actual].value = data;
                                toPoll[actual].lastPoll = Date.now();
                                socket.emit("setState", [toPoll[actual].id, data]);
                                stepPolling();
                            });
                        }       
                        

                        });

                        ! //Wird aufgerufen bei Connect zu CCU.IO
                        socket.on('connect', function () {
                        myLog("adapter vitotronic connected to ccu.io ");
                        });
                        //Wird aufgerufen bei disconnect zu CCU.IO
                        socket.on('disconnect', function () {
                        myLog("adapter vitotronic disconnected from ccu.io");
                        });
                        //Wird aufgerufen bei Änderungen von Objekten in CCU.IO.
                        socket.on('event', function (obj) {
                        if (!obj || !obj[0]) {
                        return;
                        }
                        ! //ID des geänderten Objektes
                        var id = obj[0];
                        //Wert des geaenderten Objektes
                        var val = obj[1];
                        //Timestamp letzte Aenderung
                        var ts = obj[2];
                        //ACKnowledge letzte Aenderung
                        var ack = obj[3];

                        if(id >= vitotronicSettings.firstId && id < vitotronicSettings.firstId + 300) {
                            if(typeof(commands[commandMap[id]]) != 'undefined' && val != commands[commandMap[id]].value) {
                                if(commands[commandMap[id]].access & 2) {
                                    var cmd = 'set' + commands[commandMap[id]].name + ' ' + val;
                                    myLog('getting set command: ' + cmd);
                                    writeBuffer.push(cmd);
                                } else {
                                    myLog("adapter vitotronic changed NOT WRITEABLE data " + commandMap[id] + " " + val + " " + commands[commandMap[id]].value);
                                }
                            }
                        }
                        

                        });

                        ! /* zu loggende commands ermitteln /
                        Object.keys(commands).forEach(function(key) {
                        var c = commands[key];
                        commandMap[c.id] = key;
                        if(c.pollInterval > -1) {
                        toPoll.push(c);
                        }
                        });
                        ! /
                        Nächsten Wert zum Loggen holen */
                        function stepPolling() {
                        actual = -1;
                        if(writeBuffer.length > 0) {
                        var cmd = writeBuffer.shift();
                        myLog('calling set command '+cmd);

                            telnetSocket.write(cmd+"\n");
                            return;
                        }
                        
                        var actualMinWaitTime = 1000000;
                        var time = Date.now();
                        

                        ! for(var i = 0; i < toPoll.length; i++) {
                        if(typeof(toPoll[i].lastPoll) == 'undefined') {
                        toPoll[i].lastPoll = 0;
                        }

                            var nextRun = toPoll[i].lastPoll + (toPoll[i].pollInterval * 1000)
                            var nextDiff = nextRun - time;
                        

                        ! if(time < nextRun) {
                        actualMinWaitTime = nextDiff;
                        continue;
                        }

                            if(nextDiff < actualMinWaitTime) {
                                actualMinWaitTime = nextDiff;
                                actual = i;
                            }
                        }
                        
                        if(actual === -1) {
                            setTimeout(function () {
                                stepPolling();
                            }, actualMinWaitTime);
                        

                        ! } else {
                        myLog("Step to "+toPoll[actual].name);
                        telnetSocket.write('get' + toPoll[actual].name + '\n');
                        }
                        }
                        ! function myLog(message) {
                        if(log) {
                        logger.info(message);
                        }
                        } ! Und hier noch die settings.json: ! >! ~~[spoiler]~~[code]{
                        "enabled": false,
                        "settings": {
                        "firstId": 98000,
                        "host": "127.0.0.1",
                        "xmlpath": "/etc/vcontrold/",
                        "log" : true
                        }
                        }
                        [/code]! ...und die entsprechende HTML-Datei für die Anzeige des Adapters: ![code]
                        !
                        ! Enabled: |

                                <select id="vitotronic_enabled"><option value="false">false</option>
                                    <option value="true">true</option></select> 
                             |
                        

                        ! ccu.io.log schreiben?: |

                                <select id="vitotronic_log"><option value="false">false</option>
                                    <option value="true">true</option></select> 
                             |
                        
                        ! vcontrold - Host:
                        ! Pfad zu vcontrold Konfigurationen:

                        ! ## Commands:
                        !
                        [/code][/spoiler] ! Ich bin mir da leider nicht so ganz sicher, aber glaube, dass der CCU.IO-Adapter nicht den vclient verwendet, sondern eher auf [http://openv.wikispaces.com/vcontrold+mit+Raspberry+Pi](http://openv.wikispaces.com/vcontrold+mit+Raspberry+Pi) basiert: ! [quote]
                        7. Test
                        ! Wenn die obigen Schritte erfolgreich durchgeführt wurden, dann ist nach Aufruf von "sudo /etc/init.d/vcontrol start" der vcontrold-Server bereit.
                        ! Am besten wird das System einmal neu gestartet, damit man sicher ist, dass alles funktioniert.
                        ! Es empfiehlt sich, alle Dateien, welche man für das System angepasst hat auf dem Arbeits-PC zu sichern.
                        ! Die Einstellungen werden verloren gehen, wenn einmal die SD Karte nicht mehr lesbar ist, was z.B. durch ein unkontrolliertes Ausschalten des Raspi passieren kann.
                        ! Am einfachsten ist es, die Telnet Schnittstelle mit PuTTY zu testen.
                        ! PuTTY Telnet-Session Einstellungen:
                        ! Connection type = Telnet
                        ! Host = ip Adresse des Raspberry Pi
                        ! Port = 3002
                        ! Bei den Terminal Einstellungen sollte noch die Option „Implicit CR in every LF“ gesetzt werden, damit die Zeilenenden richtig interpretiert werden
                        ! Bei den Einstellungen unter „Connection – Telnet“ den Negitiation Mode = Passiv setzen
                        ! (andernfalls werden negotiation commands an vcontrold geschickt, welche von diesem nicht verarbeitet werden. Das führt bei der ersten Eingabe immer zu einem Command not found Fehler).
                        ! Man kann auch den SSH Zugang verwenden und in der Shell des Raspis das Command „telnet localhost 3002“ aufrufen.
                        ! Wenn der Kommando-Prompt vctrld> erscheint, dann hat alles geklappt!
                        ! Durch Eingabe von help werden die gültigen Befehle aufgelistet.
                        ! version zeigt die vcontrold Version an.
                        ! device den in vcontrold.xml konfigurierten device.
                        ! commands zeigt alle Befehle für die entsprechende Steuerung an.
                        ! Wenn nun getTempA oder getDevType funktioniert, dann ist auch die serielle Kommunikation in Ordnung.
                        ! Gratulation, du hast es geschafft!

                        ! Gruß,
                        ! Thorsten[/i][/i][/i][/i][/code][/spoiler][/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
                        • D Offline
                          D Offline
                          dtp
                          schrieb am zuletzt editiert von
                          #32

                          Hallo paul53,

                          @paul53:

                          Mit dem folgenden Skript sollte sich eine ganze Liste von Werten aus der Vitotronic in Datenpunkte übertragen lassen:

                          ! `// Werte aus Vitotronic auslesen ! var list = [TempAussen,TempWWIst,TempKesselSoll,TempKesselIst]; var len = list.length; var cmds = ''; ! for(var i = 0; i < len; i++) { cmds = ',getVito' + list[i]; createState('Vitotronic.' + list[i]), '', { type: 'string', read: true, write: true, desc: 'Vitotronic ' + list[i], def: '' }); } ! cmds = cmds.slice(0, 1); // erstes Komma raus ! function vito() { exec('vclient -h 127.0.0.1:3002 -c ' + cmds, function(err, stdout, stderr) { if (err) { log(stderr,'error'); return; } stdout = stdout.split("\n"); for(var i = 0; i < len; i++) { setState("javascript."+ instance + ".Vitotronic." + list[i], stdout[2 * i + 1]); } }); } ! setInterval(vito, 20 * 1000); // alle 20 Sekunden` ! Bekomme da leider zwei Fehlermeldungen. Die erste dürfte aus der Zeile ! `~~[code]~~createState('Vitotronic.' + list[i]), '', {` ! resultieren. Da schieint mir die geschlossene Klammer hinter "list_~~[i]~~" zu viel. Wenn ich die entferne, erhalte ich aber noch eine Fehlermeldung:_ ! `~~[code]~~[error] javascript.0 script.js.common.Vitotronic1: ReferenceError: TempAussen is not defined at script.js.common.Vitotronic1:3:13[/code]` ! Da scheint also was mit der Variablendeklaration im Argen zu sein. ! Gruß, ! Thorsten[/i][/i][/code][/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
                          • paul53P Offline
                            paul53P Offline
                            paul53
                            schrieb am zuletzt editiert von
                            #33

                            @dtp:

                            Ich bin mir da leider nicht so ganz sicher, aber glaube, dass der CCU.IO-Adapter nicht den vclient verwendet, `
                            Ja, das ist richtig.

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

                              @dtp:

                              Da schieint mir die geschlossene Klammer hinter "list__" zu viel.__ __Stimmt.

                              Das Array "list" muss mit strings gefüllt werden:_

                              var list = ['TempAussen','TempWWIst','TempKesselSoll','TempKesselIst'];
                              ````_ ` 

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

                                Jetzt bekomme ich leider einen Segmentierungsfehler angezeigt:

                                javascript.0 script.js.common.Vitotronic: Segmentation fault 
                                

                                Ne Idee?

                                Die Datenpunkte werden aber schon mal korrekt angelegt.

                                filename="2016-07-02_14h22_10.png" index="0">~~

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

                                  @dtp:

                                  Ne Idee? `
                                  Leider nicht :(

                                  Füge mal ein Log ein:

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

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

                                          462

                                          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