Navigation

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

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Viessmann-Adapter

    This topic has been deleted. Only users with topic management privileges can see it.
    • blauholsten
      blauholsten Developer @bahnuhr last edited by

      @bahnuhr sagte in Viessmann-Adapter:

      @blauholsten sagte in Viessmann-Adapter:

      Für dein Fall wäre es Sinninger und einfacher einfach ein kleines Skript laufen zu lassen und dann dein Pi neu starten zu lassen. Falls du dabei Hilfe brauchst, einfach bescheid geben....

      Ja, ich glaube ich brauche da Hilfe.

      Denn dies habe ich schon mal versucht.

      anbei mal meine Versuche:

      
      // Wenn der Viessmann Adapter keine Daten mehr bekommt (Verbindung nicht geschlossen) dann force_reload beim raspi und Adapter nach 2 Min. neu starten
      
      
      /* Ablauf
      - PC wird neu gestartet oder Adapter ist nicht grün
      - nach 30 Sek. prüfen ob immer noch false
      - 3 Min. warten
      - Adapter ausschalten
      - Raspi force-reload durchführen
      - 2 Min. warten
      - Adapter starten
      - 1 Min. warten -> prüfen ob Adapter true ist -> wenn ja, dann Telegram "gestartet"
        wenn nein dann Telegram Nachricht "nicht erfolgreich"
      */
      
      var logging = true;
      var idTest = ["system.adapter.viessmann.0.connected", "viessmann.0.info.connection"];
      
      on({id: idTest, change: "ne", val: false, ack: true}, function(obj){
          if (logging) log("Adapter ist false");
          setTimeout(function() {     // 30 Sek. warten
              if (getState("system.adapter.viessmann.0.connected").val === false || getState("viessmann.0.info.connection").val === false) {
                  if (logging) log("nach 30 Sek. Adapter ist weiterhin false");
                  setTimeout(function() {     // 3 Min. warten
                      stopviessmann();        // Adapter gestoppt !
                      raspi();                // Raspi force-reload durchführen
                      setTimeout(function() { // 2 Min. warten
                          startviessmann();   // Adapter neu gestartet !
                          setTimeout(function() {  // 1 Min. warten
                              if (getState("system.adapter.viessmann.0.connected").val === true & getState("viessmann.0.info.connection").val === true) {
                                  log ('Viessmann war nicht mehr verbunden; Raspi und Adapter wurden neu gestartet!');
                                  sendTo('telegram', {user: 'Dieter',text: "Viessmann war nicht mehr verbunden; Raspi und Adapter wurden neu gestartet!", parse_mode: 'HTML'}); 
                              } else {
                                  log ('Viessmann war nicht mehr verbunden; Raspi und Adapter konnten nicht neu gestartet werden!');
                                  sendTo('telegram', {user: 'Dieter',text: "Viessmann war nicht mehr verbunden; Raspi und Adapter konnten nicht neu gestartet werden!", parse_mode: 'HTML'}); 
                              }
                          }, 60000);  // 1 Min.
                      }, 120000);     // 2 Min.
                  }, 180000);         // 3 Min.
              } else {
                  if (logging) log("nach 30 Sek. Adapter ist true");
              }
          }, 30000);          // 30 Sek.
      });
      
      
      
      function raspi() {
          const Client = require('ssh2').Client;      //ssh2 muss vorher beim Adapter javascript eingebunden werden.
          var conn = new Client();
          conn.on('ready', function() {
              conn.exec('sudo /etc/vcontrold/force_reload.sh', function(err, stream) {
                  if (err) throw err;
                  stream.on('close', function(code, signal) {
                      conn.end();
                  }).on('data', function(data) {
                      log('Ausgabe: ' + data);
                  }).stderr.on('data', function(data) {
                      log('Fehler: ' + data);
                  });
              });
          }).connect({
              host: '192.168.xxx.xx', // IP des RPi
              port: 22,
              username: 'xxx',
             password: 'xxx'
          });
      }
      
      function stopviessmann() {
          var obj = getObject('system.adapter.viessmann.0');
          obj.common.enabled = false;
          setObject('system.adapter.viessmann.0', obj);
          log ('Viessmann Adapter gestoppt!');
      }
      
      function startviessmann() {
          var obj = getObject('system.adapter.viessmann.0');
          obj.common.enabled = true;
          setObject('system.adapter.viessmann.0', obj);
          log ('Viessmann Adapter neu gestartet!');
      }
      
      
      
      
      
      /*  // alter on
      on({id: "viessmann.0.info.connection", change:"ne", val: false, ack: true}, function(obj){
              log ('Viessmann war nicht mehr verbunden; Raspi und Adapter neu gestartet!');
              raspi();
              setTimeout(function() {
                  setState('system.adapter.viessmann.0.alive', false);
              }, 60000);
              setTimeout(function() {
                  if (getState('system.adapter.viessmann.0.alive').val === false) {
                      setState('system.adapter.viessmann.0.alive', true);
                  }
              }, 120000);    
      });
      */
      
      
      /*  // Werte holen mit ssh2  ---------------------------------------------------
      
      const Client = require('ssh2').Client;      //ssh2 muss vorher beim Adapter javascript eingebunden werden.
      
      function raspi() {
        var conn = new Client();
        conn.on('ready', function() {
          conn.exec('vclient -h 127.0.0.1:3002 -c getTempA', function(err, stream) {
            if (err) throw err;
            stream.on('close', function(code, signal) {
              conn.end();
            }).on('data', function(data) {
              log('Ausgabe: ' + data);
            }).stderr.on('data', function(data) {
              log('Fehler: ' + data);
            });
          });
        }).connect({
          host: '192.168.xxx.xx', // IP des RPi
          port: 22,
          username: 'xxx',
          password: 'xxx'
        });
      }
      
      raspi();
      
      //, getTempWWist, getTempWWsoll, getTempKist, getTempKsoll
      
      */
      

      Das force-reload.sh auf dem raspi sah wie folgt aus:

      # force-reload ausfuehren und Text an telegram
      curl -s -k "https://api.telegram.org/botabcde:xcyA-ExGV8/sendMessage" -d text="<b>Pi-Heizung: force-reload ausgefuehrt !</b>" -d chat_id=257abcde -d parse_mode=html
      sleep 3
      sudo /etc/init.d/vcontrol force-reload
      
      

      Fazit:
      Meine Versuche haben immer irgendwo gehakt.
      Was bräuchte ich:

      1. connection steht nicht (entweder ist der Adapter gelb oder die Werte kommen eben nicht an)
      2. Intanz ausschalten
      3. nach x Sek. reboot bei dem raspi
      4. nach x Sek. Instanz wieder an.

      mfg
      Dieter

      Hi,

      Auf die schnelle vom Handy. Das mit dem Adapters stoppen usw. Kannst du dir schenken.

      Mache folgendes.......

      Stelle dein Skript so um, dass du nur auf den Connection Datenpunkt des Adapters triggerst. Sollte das passieren, lässt du bei
      Wert false Zeit x (ich würde min 10m wählen)laufen, dann führst du einen Befehl aus der den Pi neu starten lässt. Bei true den timer wieder löschen. Mehr brauchst du eigentlich nicht zu machen. Bei weitere Hilfe einfach melden....

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

        @martinschm das musst du ein wenig testen, allerdings sollte man relativ unwichtige Werte wie Brennerstarts und erros nicht zu klein wählen. Sowas Frage ich alle fünf Minuten ab. Temperaturen im Sekunden Bereich.

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

          Übrigens, das Sortieren bzgl. des Abfrageintervalls klappt noch nicht so richtig. Ein Sortieren nach Name und Beschreibung funktioniert dagegen.

          Würde mir noch wünschen, dass man für die Abfrageintervalle einzelne Abfragepunkte markieren kann, um dann für diese einheitlich das Abfrageintervall ändern zu könnnen. Außerdem wäre ein Filterfunktion toll, so dass man z.B. "temp" eingeben kann, um nur noch die Temperatur-Abfragepunkte angezeigt zu bekommen.

          1 Reply Last reply Reply Quote 1
          • P
            passuff last edited by passuff

            Es gibt ja bereits einen Dp "connection", der die Verbindung überwacht.
            Soweit ich nachvollziehen kann, ist dieser an den Log Eintrag " Connection with Viessmann system disconnected" geknüpft. Wenn ich beispielsweise die Heizung kurz ausschalte, oder den USB Stecker entferne, erhalte ich diesen Eintrag.

            Ich benötige einen zweiten dp, der auf viessmann.0 Timeout connection error! Triggert. Bei mir der Fall, wenn sich vcontrold oder der raspi aufgehängt hat. Ist dies der Fall würde ich den raspi gerne neustarten. Auf ein Log Eintrag zu triggern, ist vermutlich schwierig. Daher die Bitte für einen zusätzlichen Datenpunkt.

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

              @passuff sagte in Viessmann-Adapter:

              Es gibt ja bereits einen Dp "connection", der die Verbindung überwacht.
              Soweit ich nachvollziehen kann, ist dieser an den Log Eintrag " Connection with Viessmann system disconnected" geknüpft. Wenn ich beispielsweise die Heizung kurz ausschalte, oder den USB Stecker entferne, erhalte ich diesen Eintrag.

              Ich benötige einen zweiten dp, der auf viessmann.0 Timeout connection error! Triggert. Bei mir der Fall, wenn sich vcontrold oder der raspi aufgehängt hat. Ist dies der Fall würde ich den raspi gerne neustarten. Auf ein Log Eintrag zu triggern, ist vermutlich schwierig. Daher die Bitte für einen zusätzlichen Datenpunkt.

              Neue Version erstellt, bitte testen....

              P 1 Reply Last reply Reply Quote 0
              • P
                passuff @blauholsten last edited by

                @blauholsten
                installiert (1.2.2.)
                Finde keinen Unterschied (neuer DP?)

                blauholsten 1 Reply Last reply Reply Quote 0
                • C
                  C1500 last edited by

                  Servus
                  ich verzweifle gerade etwas.
                  Es hatte alles schon mal super funktioniert, daher kann ich die Hardware ausschließen.

                  Bis vor kurzem hatte ich nur das Probelm, das ich keine Zahlenwerte schreiben konnte. Lesen ging problemlos.
                  Das umschalten von WW auf H+WW klappte hingegen.

                  Ich hab es jetzt gerade geschafft, das gr nichts mehr geht. Weder schreiben noch lesen.
                  Den PI neu zu starten bringt nix.
                  Hab alle Updates auf dem PI gemacht.
                  Hab auch versucht, vcontrold vom GIT neu zu installieren.

                  Aktuell kann ich die Telnet-Verbindung herstellen.
                  "vctrld>commands" bringt auch die möglichen Befehle.
                  Sobald ich aber einen davon eingebe, (z.B. getTempA) schließt sich Putty.

                  ioBroker kann auch nichts abfragen, die vito.xml vcontrold.xml wurden aber richtig eingelesen.
                  Im LOG steht folgenes:
                  viessmann.png

                  Mir gehen die Ideen aus 😞
                  Könnte mir bitte jemand helfen?

                  Danke und Gruß
                  Peer

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

                    @passuff sagte in Viessmann-Adapter:

                    @blauholsten
                    installiert (1.2.2.)
                    Finde keinen Unterschied (neuer DP?)

                    Das sollte eigentlich du sein, habe aber festgestellt das dieser bei Adapter Start wieder weg ist?

                    P 1 Reply Last reply Reply Quote 0
                    • P
                      passuff @blauholsten last edited by

                      @blauholsten
                      verstehe deinen Satz nicht...

                      1 Reply Last reply Reply Quote 0
                      • C
                        C1500 last edited by

                        Er meint vermutlich folgendes:
                        Der DP sollte eigentlich da sein
                        Er hat aber festgestellt, dieser DB bei Adapter Start wieder weg ist.

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

                          so jetzt sollte er da sein (1.2.3)

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

                            In letzter Zeit musste ich den ioBroker recht häufig wegen Aktualisierung des js-controllers neu starten. Nach dem Neustart wurde auch immer der Viessmann-Adapter mit grüner Ampel angezeigt. Aber kann es sein, dass er dann trotzdem nicht die Werte von vcontrold ausgelesen bekommt? Bei mir wird da jedenfalls regelmäßig nichts in Flot angezeigt und ich muss den Viessmann-Adapter manuell neu starten, bis es wieder funktioniert.

                            1 Reply Last reply Reply Quote 0
                            • bahnuhr
                              bahnuhr Forum Testing Most Active last edited by

                              Ist bei mir auch so.
                              Nur Adapter neu starten reicht bei mir nicht.
                              Ich muss zusätzlich manuell einen reboot beim raspi machen.
                              Und nur das hilft dann.

                              Deshalb ja auch meine Anforderung, dass man einstellen könnte dass der Adapter den raspi neu starten soll.

                              mfg
                              Dieter

                              P D 2 Replies Last reply Reply Quote 0
                              • P
                                passuff @bahnuhr last edited by

                                @bahnuhr

                                So auch bei mir neuerdings...daher meine Anfrage nach dem zusätzlichen DP...

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

                                  @bahnuhr sagte in Viessmann-Adapter:

                                  Ist bei mir auch so.

                                  Nee, ist bei dir was anderes.

                                  Ich habe keinerlei Probleme damit, dass der Viessmann-Adapter nach einem ioBroker-Neustart meinen Raspi mit vcontrold findet. Der wird immer sofort gefunden. Ich muss also nie meinen Raspi neustarten.

                                  Mir geht es darum, dass ich den Viessmann-Adapter nach einem ioBroker-Neustart noch mal extra neu starten muss, damit er sich die aktuellen Werte holt. Wenn ich dagegen bei laufendem ioBroker den Rapsi neu starte, dann werden die Werte vom Viessmann-Adapter automatisch nach einer gewissen Zeit eingelesen, ohne dass ich den Adapter neu starten müsste.

                                  1 Reply Last reply Reply Quote 0
                                  • J
                                    joefarm last edited by

                                    Hallo zusammen,

                                    ich hab den Viessmann-Adapter zusammen mit vcontrold am laufen und schalte darüber meine Heizung an und aus. Soweit so gut, funktioniert eigentlich auch ganz gut. Allerdings passiert es nach ein paar Stunden, dass der Adapter die Verbindung zum vcontrold verliert und dann ca. alle 7-8 Minuten ein zusätzlicher vcontrold geforkt wird. Es werden dann immer mehr, aber die Verbindung zum Adapter kommt nicht mehr zustande. Wenn ich dann per Hand alle vcontrold Prozesse kille und den vcontrold neu starte, geht wieder alles. Und dann geht das Spiel wieder von vorne los...
                                    Ich versuch jetzt schon seit ein paar Tagen dem Problem auf die Spur zu kommen, bin aber nicht erfolgreich... Jemand eine Idee?

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

                                      Hallo zusammen,
                                      wie kann ich nach einer programmierten Zustandsänderung meiner Heizung (z.B setBetriebArtM2) in Javascript forcieren, dass gleich anschließen ein getBetriebArtM2 ausgeführt wird. Gerne auch aus Javascript heraus.
                                      Ich rufe die Betriebsart z.B. nur alle 2 Stunden auf und damit wird der neue Zustand u.U erst 2 Stunden später aktualisiert.
                                      Danke schon mal vorab.

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

                                        @sonusfaber lass doch die states alle 2min o.ä. abfragen

                                        S 1 Reply Last reply Reply Quote 0
                                        • S
                                          sonusfaber @blauholsten last edited by

                                          @blauholsten Genau das wollte ich vermeiden, da ich das dann mit allen Datenpunkten machen muss, die ich steuere, bzw. automatisiere. Aber ja, genau das ist dann die Alternative, falls ein aktives Abfragen/Aktualisieren nicht möglich ist.

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

                                            @sonusfaber warum willst du das vermeiden? Solange du keine "hunderte" von Werten im Sekunden Bereich abfragst, sollte das kein Problem darstellen.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

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

                                            597
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

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