Skip to content
  • 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
  1. ioBroker Community Home
  2. Deutsch
  3. Tester
  4. Test ViessmannAPI v2.0.0

NEWS

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

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

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

Test ViessmannAPI v2.0.0

Geplant Angeheftet Gesperrt Verschoben Tester
802 Beiträge 127 Kommentatoren 279.9k Aufrufe 124 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.
  • B Bastler52

    @m4rgott Kannst Du uns dann die Lösung zeigen bitte. (vor {"mon" .. ist gemeint oder?)

    M Offline
    M Offline
    m4rgott
    schrieb am zuletzt editiert von
    #691

    Hi @bastler52

    die obenstehenden Blocklys sind genau so bei mir im Einsatz. Deshalb weiß ich nicht welche Lösung Du suchst.

    Ich habe nur die Anlagennummer durch "xxx" ersetzt.

    Wie oben beschrieben habe ich für den neuen Zeitplan den bestehenden Wert aus dem Datenpunkt viessmannapi.0.xxx.0.features.heating.dhw.pumps.circulation.schedule.properties.entries.value geholt und den nach meinen Vorstellungen angepasst.

    Ich hoffe das hilft Dir weiter.

    B 1 Antwort Letzte Antwort
    0
    • M m4rgott

      Hi @bastler52

      die obenstehenden Blocklys sind genau so bei mir im Einsatz. Deshalb weiß ich nicht welche Lösung Du suchst.

      Ich habe nur die Anlagennummer durch "xxx" ersetzt.

      Wie oben beschrieben habe ich für den neuen Zeitplan den bestehenden Wert aus dem Datenpunkt viessmannapi.0.xxx.0.features.heating.dhw.pumps.circulation.schedule.properties.entries.value geholt und den nach meinen Vorstellungen angepasst.

      Ich hoffe das hilft Dir weiter.

      B Offline
      B Offline
      Bastler52
      schrieb am zuletzt editiert von
      #692

      @m4rgott Danke scheinbar habe ich etwas übersehen oder wurde nicht angezeigt. Wollte nur sicher gehen dass ich deinen Beitrag richtig verstanden habe f8471e71-0515-46c9-99b4-1a2c8887705f-image.png

      genau das habe ich nicht gesehen und danach hatte ich gefragt ob och das richtig verstanden habe.

      Ich habe an sich die Lösung auch um Einsatz aber als Java Skript.

      DANKE für deine Reaktion

      1 Antwort Letzte Antwort
      0
      • ? Ein ehemaliger Benutzer

        @juggi1962

        Hi,
        noe, bei mir laeuft alles wie gehabt... polle alle 5minuten..
        hast du das mal gemacht, was in der Fehlermeldung steht?

        M Offline
        M Offline
        MAXI885
        schrieb am zuletzt editiert von
        #693

        @ilovegym
        Hallo,
        aktuell nutze ich den Adapter noch nicht, hätte aber eine Frage zur Anschaffung der Hardware.
        Es gibt für den VITOCONNECT 100 OPT01 auch einen Nachfolger, den OPTO2, ist das für die Verwendung mit iobroker egal,
        welches Gerät man benutzt ?

        Vielen Dank & Grüße !

        ? T 2 Antworten Letzte Antwort
        0
        • M MAXI885

          @ilovegym
          Hallo,
          aktuell nutze ich den Adapter noch nicht, hätte aber eine Frage zur Anschaffung der Hardware.
          Es gibt für den VITOCONNECT 100 OPT01 auch einen Nachfolger, den OPTO2, ist das für die Verwendung mit iobroker egal,
          welches Gerät man benutzt ?

          Vielen Dank & Grüße !

          ? Offline
          ? Offline
          Ein ehemaliger Benutzer
          schrieb am zuletzt editiert von
          #694

          @maxi885

          Hallo,
          kann dir nicht 100% bestaetigen, da ich auch nur den Vitoconnect 100 habe.
          Aber, rein von der Logik des Adapters aus, sollte es funktionieren, da dieser die Daten ja von dem Viessmann-Server von der API holt.
          Wie die Daten dahin kommen, ob mit Modul-1 oder 2 oder X ist eigentlich egal....

          1 Antwort Letzte Antwort
          0
          • M MAXI885

            @ilovegym
            Hallo,
            aktuell nutze ich den Adapter noch nicht, hätte aber eine Frage zur Anschaffung der Hardware.
            Es gibt für den VITOCONNECT 100 OPT01 auch einen Nachfolger, den OPTO2, ist das für die Verwendung mit iobroker egal,
            welches Gerät man benutzt ?

            Vielen Dank & Grüße !

            T Offline
            T Offline
            tombox
            schrieb am zuletzt editiert von
            #695

            @maxi885 Kompatibilitätsliste: https://documentation.viessmann.com/static/compatibility

            M 1 Antwort Letzte Antwort
            0
            • T tombox

              @maxi885 Kompatibilitätsliste: https://documentation.viessmann.com/static/compatibility

              M Offline
              M Offline
              MAXI885
              schrieb am zuletzt editiert von
              #696

              @tombox said in Test ViessmannAPI v2.0.0:

              @maxi885 Kompatibilitätsliste: https://documentation.viessmann.com/static/compatibility

              super, vielen Dank !
              Die Liste bezieht sich schon auf den neuen OPTO2, da steht meine etwas ältere Vitotronic 200 KW1 sogar dabei 🙂

              1 Antwort Letzte Antwort
              0
              • B Offline
                B Offline
                Backes
                schrieb am zuletzt editiert von
                #697

                Guten Morgen,

                ist es normal, dass wenn das RateLimit einmal erreicht wurde, das der Adapter manuell neugestartet werden muss damit er wieder funktioniert am nächsten Tag? Hab das RateLimit letzte Woche einmal überschritten und er hat seitdem gehangen und keine Daten mehr gezogen.

                Beste Grüße!

                Dominik F.D 1 Antwort Letzte Antwort
                0
                • B Backes

                  Guten Morgen,

                  ist es normal, dass wenn das RateLimit einmal erreicht wurde, das der Adapter manuell neugestartet werden muss damit er wieder funktioniert am nächsten Tag? Hab das RateLimit letzte Woche einmal überschritten und er hat seitdem gehangen und keine Daten mehr gezogen.

                  Beste Grüße!

                  Dominik F.D Offline
                  Dominik F.D Offline
                  Dominik F.
                  schrieb am zuletzt editiert von
                  #698

                  Hallo zusammen,

                  ich habe heute den Adapter installiert und soweit ich das überblicken kann funktioniert alles.

                  Ich nutze bei meiner Heizung die geofencing Funktion. Gibt es dazu Datenpunkte wo ich sehen kann wer im Umkreis ist und wer nicht?

                  1 Antwort Letzte Antwort
                  0
                  • I Offline
                    I Offline
                    io2345
                    schrieb am zuletzt editiert von io2345
                    #699

                    Jetzt bräuchte ich doch nochmal Hilfe von Spezialisten:
                    Wollte das Script verbessern, dass es den eingestellten Zirkulationspumpen-Schedule aus der WP zunächst ausliest und ganz am Schluss wieder zurückschreibt.
                    Das klappt aber nicht so recht. Es kommt beim Schreiben von Werten immer der Hinweis:

                    State value to set for ... has to be one of type "string", "number", "boolean" but received type "object"

                    Nun habe ich schon einige Forumseinträge hierzu gelesen, wo es um "stringify" oder "toString" geht, oder auch, dass der Adapter selbst das regeln muss. Vermutlich bin ich einfach nicht helle genug, bisher habe ich jedenfalls nicht verstanden, was ich nun konkret tun muss, um das Problem zu umgehen. Könnt ihr mir helfen?

                    Hier der Code:

                    async function start_zirk() {
                        // Schedule wird zum Einschalten der Pumpe temporär verändert, so dass die Pumpe
                        // zwischen 00:00 und 23:59 Uhr zuverlässig eingeschaltet ist. Das in der Wärmepumpe 
                        // vorhandene Zeitprogramm der Zirkulationspumpe wird in einen eigenen Datenpunkt gesichert
                        
                        var pump_on = '{"mon":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"tue":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"wed":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"thu":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"fri":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"sat":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"sun":[{"start":"00:00","end":"23:59","mode":"on","position":0}]}';
                        var schedule_sichern = getState('viessmannapi.0.133000.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue').val;
                        
                        setState('0_userdata.0.EigeneDatenpunkte.Heizung.ZwischenspeicherZirkulationspumpeSchedule', schedule_sichern.val);
                        setState("viessmannapi.0.133000.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue", JSON.parse(pump_on)); // oder pump_off
                    }
                    
                    async function stop_zirk() {
                        // Der urspüngliche Schedule wird zurückgeschrieben. 
                        
                        var schedule_wiederherstellen = getState('0_userdata.0.EigeneDatenpunkte.Heizung.ZwischenspeicherZirkulationspumpeSchedule').val;
                        setState("viessmannapi.0.133000.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue", schedule_wiederherstellen.val);
                    }
                    
                    
                    on({ id: [].concat(['0_userdata.0.EigeneDatenpunkte.Heizung.ZirkulationAn_']), change: 'ne' }, async (obj) => {
                      let value = obj.state.val;
                      let oldValue = obj.oldState.val;
                      if ((obj.state ? obj.state.val : "") == true) {
                        await start_zirk();
                        log ("Zirkulationspumpe läuft für zwei Minuten");
                        await wait(120000);
                        setState('0_userdata.0.EigeneDatenpunkte.Heizung.ZirkulationAn_' /* EigeneDatenpunkte.Heizung.ZirkulationAn  */, false, true);
                        await stop_zirk();
                      }
                    });
                    
                    M 1 Antwort Letzte Antwort
                    0
                    • I io2345

                      Jetzt bräuchte ich doch nochmal Hilfe von Spezialisten:
                      Wollte das Script verbessern, dass es den eingestellten Zirkulationspumpen-Schedule aus der WP zunächst ausliest und ganz am Schluss wieder zurückschreibt.
                      Das klappt aber nicht so recht. Es kommt beim Schreiben von Werten immer der Hinweis:

                      State value to set for ... has to be one of type "string", "number", "boolean" but received type "object"

                      Nun habe ich schon einige Forumseinträge hierzu gelesen, wo es um "stringify" oder "toString" geht, oder auch, dass der Adapter selbst das regeln muss. Vermutlich bin ich einfach nicht helle genug, bisher habe ich jedenfalls nicht verstanden, was ich nun konkret tun muss, um das Problem zu umgehen. Könnt ihr mir helfen?

                      Hier der Code:

                      async function start_zirk() {
                          // Schedule wird zum Einschalten der Pumpe temporär verändert, so dass die Pumpe
                          // zwischen 00:00 und 23:59 Uhr zuverlässig eingeschaltet ist. Das in der Wärmepumpe 
                          // vorhandene Zeitprogramm der Zirkulationspumpe wird in einen eigenen Datenpunkt gesichert
                          
                          var pump_on = '{"mon":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"tue":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"wed":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"thu":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"fri":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"sat":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"sun":[{"start":"00:00","end":"23:59","mode":"on","position":0}]}';
                          var schedule_sichern = getState('viessmannapi.0.133000.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue').val;
                          
                          setState('0_userdata.0.EigeneDatenpunkte.Heizung.ZwischenspeicherZirkulationspumpeSchedule', schedule_sichern.val);
                          setState("viessmannapi.0.133000.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue", JSON.parse(pump_on)); // oder pump_off
                      }
                      
                      async function stop_zirk() {
                          // Der urspüngliche Schedule wird zurückgeschrieben. 
                          
                          var schedule_wiederherstellen = getState('0_userdata.0.EigeneDatenpunkte.Heizung.ZwischenspeicherZirkulationspumpeSchedule').val;
                          setState("viessmannapi.0.133000.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue", schedule_wiederherstellen.val);
                      }
                      
                      
                      on({ id: [].concat(['0_userdata.0.EigeneDatenpunkte.Heizung.ZirkulationAn_']), change: 'ne' }, async (obj) => {
                        let value = obj.state.val;
                        let oldValue = obj.oldState.val;
                        if ((obj.state ? obj.state.val : "") == true) {
                          await start_zirk();
                          log ("Zirkulationspumpe läuft für zwei Minuten");
                          await wait(120000);
                          setState('0_userdata.0.EigeneDatenpunkte.Heizung.ZirkulationAn_' /* EigeneDatenpunkte.Heizung.ZirkulationAn  */, false, true);
                          await stop_zirk();
                        }
                      });
                      
                      M Offline
                      M Offline
                      Michi_Pi
                      schrieb am zuletzt editiert von
                      #700

                      @io2345 ich bin jetzt kein Spezialist, aber was mir auffällt ist, dass du beim zurückspeichern das nicht als JSON machst.
                      Probier mal

                      JSON.parse(schedule_wiederherstellen.val))
                      
                      I 1 Antwort Letzte Antwort
                      0
                      • M Michi_Pi

                        @io2345 ich bin jetzt kein Spezialist, aber was mir auffällt ist, dass du beim zurückspeichern das nicht als JSON machst.
                        Probier mal

                        JSON.parse(schedule_wiederherstellen.val))
                        
                        I Offline
                        I Offline
                        io2345
                        schrieb am zuletzt editiert von
                        #701

                        @michi_pi
                        Danke für die Rückmeldung. Hätte erwähnen sollen, dass ich das schon probiert hatte. Dann kommt allerdings ein tiefroter Fehler:

                        script.js.common.Zirkulation_kurz_einschalten_verbessert_JS: SyntaxError: Unexpected token u in JSON at position 0
                        error at JSON.parse (<anonymous>)
                        at start_zirk (script.js.common.Zirkulation_kurz_einschalten_verbessert_JS:9:103)
                        at Object.<anonymous> (script.js.common.Zirkulation_kurz_einschalten_verbessert_JS:25:11)
                        at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1266:38)
                        at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:645:29)
                        at Immediate.<anonymous> (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.ts:11229:62)
                        at processImmediate (node:internal/timers:476:21)

                        Denke, das ist der Grund, warum der fixe Wert in Codezeile 6 in Hochkommata steht. Weiss aber nicht, wie ich das mit den anderen, zu übergebenden Werten, hinbekomme.

                        M 1 Antwort Letzte Antwort
                        0
                        • I io2345

                          @michi_pi
                          Danke für die Rückmeldung. Hätte erwähnen sollen, dass ich das schon probiert hatte. Dann kommt allerdings ein tiefroter Fehler:

                          script.js.common.Zirkulation_kurz_einschalten_verbessert_JS: SyntaxError: Unexpected token u in JSON at position 0
                          error at JSON.parse (<anonymous>)
                          at start_zirk (script.js.common.Zirkulation_kurz_einschalten_verbessert_JS:9:103)
                          at Object.<anonymous> (script.js.common.Zirkulation_kurz_einschalten_verbessert_JS:25:11)
                          at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1266:38)
                          at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:645:29)
                          at Immediate.<anonymous> (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.ts:11229:62)
                          at processImmediate (node:internal/timers:476:21)

                          Denke, das ist der Grund, warum der fixe Wert in Codezeile 6 in Hochkommata steht. Weiss aber nicht, wie ich das mit den anderen, zu übergebenden Werten, hinbekomme.

                          M Offline
                          M Offline
                          Michi_Pi
                          schrieb am zuletzt editiert von Michi_Pi
                          #702

                          @io2345 probiers mal hiermit. Die lokale Zwischenspeichern hab ich jetzt mal wegelassen.

                          var pump_on, schedule_sichern, schedule_wiederherstellen;
                          
                          async function start_zirk() {
                              // Schedule wird zum Einschalten der Pumpe temporär verändert, so dass die Pumpe
                              // zwischen 00:00 und 23:59 Uhr zuverlässig eingeschaltet ist. Das in der Wärmepumpe 
                              // vorhandene Zeitprogramm der Zirkulationspumpe wird in einen eigenen Datenpunkt gesichert
                              
                              pump_on = '{"mon":[{"start":"00:00","end":"23:59","mode":"on","position":0}],\
                                              "tue":[{"start":"00:00","end":"23:59","mode":"on","position":0}],\
                                              "wed":[{"start":"00:00","end":"23:59","mode":"on","position":0}],\
                                              "thu":[{"start":"00:00","end":"23:59","mode":"on","position":0}],\
                                              "fri":[{"start":"00:00","end":"23:59","mode":"on","position":0}],\
                                              "sat":[{"start":"00:00","end":"23:59","mode":"on","position":0}],\
                                              "sun":[{"start":"00:00","end":"23:59","mode":"on","position":0}]}'
                              schedule_sichern = getState('viessmannapi.0.133000.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue').val;
                              
                              //setState('0_userdata.0.EigeneDatenpunkte.Heizung.ZwischenspeicherZirkulationspumpeSchedule', JSON.parse(schedule_sichern));
                              setState("viessmannapi.0.133000.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue", JSON.parse(pump_on)); // oder pump_off
                          }
                           
                          async function stop_zirk() {
                              // Der urspüngliche Schedule wird zurückgeschrieben. 
                              
                              //schedule_wiederherstellen = getState('0_userdata.0.EigeneDatenpunkte.Heizung.ZwischenspeicherZirkulationspumpeSchedule').val;
                              schedule_wiederherstellen = schedule_sichern;
                              setState("viessmannapi.0.133000.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue", JSON.parse(schedule_wiederherstellen));
                          }
                           
                           
                          on({ id: [].concat(['0_userdata.0.EigeneDatenpunkte.Heizung.ZirkulationAn_']), change: 'ne' }, async (obj) => {
                            let value = obj.state.val;
                            let oldValue = obj.oldState.val;
                            if ((obj.state ? obj.state.val : "") == true) {
                              await start_zirk();
                              log ("Zirkulationspumpe läuft für zwei Minuten");
                              await wait(120000);
                              setState('0_userdata.0.EigeneDatenpunkte.Heizung.ZirkulationAn_' /* EigeneDatenpunkte.Heizung.ZirkulationAn  */, false, true);
                              await stop_zirk();
                            }
                          });
                          
                          I 1 Antwort Letzte Antwort
                          0
                          • M Michi_Pi

                            @io2345 probiers mal hiermit. Die lokale Zwischenspeichern hab ich jetzt mal wegelassen.

                            var pump_on, schedule_sichern, schedule_wiederherstellen;
                            
                            async function start_zirk() {
                                // Schedule wird zum Einschalten der Pumpe temporär verändert, so dass die Pumpe
                                // zwischen 00:00 und 23:59 Uhr zuverlässig eingeschaltet ist. Das in der Wärmepumpe 
                                // vorhandene Zeitprogramm der Zirkulationspumpe wird in einen eigenen Datenpunkt gesichert
                                
                                pump_on = '{"mon":[{"start":"00:00","end":"23:59","mode":"on","position":0}],\
                                                "tue":[{"start":"00:00","end":"23:59","mode":"on","position":0}],\
                                                "wed":[{"start":"00:00","end":"23:59","mode":"on","position":0}],\
                                                "thu":[{"start":"00:00","end":"23:59","mode":"on","position":0}],\
                                                "fri":[{"start":"00:00","end":"23:59","mode":"on","position":0}],\
                                                "sat":[{"start":"00:00","end":"23:59","mode":"on","position":0}],\
                                                "sun":[{"start":"00:00","end":"23:59","mode":"on","position":0}]}'
                                schedule_sichern = getState('viessmannapi.0.133000.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue').val;
                                
                                //setState('0_userdata.0.EigeneDatenpunkte.Heizung.ZwischenspeicherZirkulationspumpeSchedule', JSON.parse(schedule_sichern));
                                setState("viessmannapi.0.133000.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue", JSON.parse(pump_on)); // oder pump_off
                            }
                             
                            async function stop_zirk() {
                                // Der urspüngliche Schedule wird zurückgeschrieben. 
                                
                                //schedule_wiederherstellen = getState('0_userdata.0.EigeneDatenpunkte.Heizung.ZwischenspeicherZirkulationspumpeSchedule').val;
                                schedule_wiederherstellen = schedule_sichern;
                                setState("viessmannapi.0.133000.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue", JSON.parse(schedule_wiederherstellen));
                            }
                             
                             
                            on({ id: [].concat(['0_userdata.0.EigeneDatenpunkte.Heizung.ZirkulationAn_']), change: 'ne' }, async (obj) => {
                              let value = obj.state.val;
                              let oldValue = obj.oldState.val;
                              if ((obj.state ? obj.state.val : "") == true) {
                                await start_zirk();
                                log ("Zirkulationspumpe läuft für zwei Minuten");
                                await wait(120000);
                                setState('0_userdata.0.EigeneDatenpunkte.Heizung.ZirkulationAn_' /* EigeneDatenpunkte.Heizung.ZirkulationAn  */, false, true);
                                await stop_zirk();
                              }
                            });
                            
                            I Offline
                            I Offline
                            io2345
                            schrieb am zuletzt editiert von
                            #703

                            @michi_pi said in Test ViessmannAPI v2.0.0:
                            ...probiers mal hiermit.

                            Danke und aha! Wir nähern uns dem Erfolg. Jetzt kommt der Fehler nicht gleich am Anfang, sondern erst, wenn das Stop-Script läuft. Da ist wohl noch der Wurm drin:
                            SyntaxError: Unexpected token o in JSON at position 1

                            Frage ist vermutlich, wie bringe ich den Wert "schedule_wiederherstellen" in Hochkommata? Hab es mal so probiert:
                            "'"JSON.parse(schedule_wiederherstellen)"'");
                            aber da kommt gleich beim Speichern ein "compile failed" an ebendieser Stelle.

                            I 1 Antwort Letzte Antwort
                            0
                            • I io2345

                              @michi_pi said in Test ViessmannAPI v2.0.0:
                              ...probiers mal hiermit.

                              Danke und aha! Wir nähern uns dem Erfolg. Jetzt kommt der Fehler nicht gleich am Anfang, sondern erst, wenn das Stop-Script läuft. Da ist wohl noch der Wurm drin:
                              SyntaxError: Unexpected token o in JSON at position 1

                              Frage ist vermutlich, wie bringe ich den Wert "schedule_wiederherstellen" in Hochkommata? Hab es mal so probiert:
                              "'"JSON.parse(schedule_wiederherstellen)"'");
                              aber da kommt gleich beim Speichern ein "compile failed" an ebendieser Stelle.

                              I Offline
                              I Offline
                              io2345
                              schrieb am zuletzt editiert von
                              #704

                              @PAUL53
                              Paul53, kannst du hier eventuell helfen? Ich hab von dir ein paar gute Sachen in anderen Beiträgen gelesen, du scheinst dich in JScript wirklich gut auszukennen.
                              Ist wahrscheinlich nur eine Kleinigkeit, die hier fehlt. Das Stop-Script besteht ja eigentlich nur aus der Zeile

                              setState("<Objekt>", JSON.parse(schedule_wiederherstellen));

                              Jetzt müsste man nur noch wissen, warum der Wert nicht richtig übergeben wird. Die Fehlermeldung lautet
                              "SyntaxError: Unexpected token o in JSON at position 1"
                              Ich denke, der Wert ist nur nicht richtig formatiert vom Typ her. Wenn man ihn - wie im Start-Script - als festen Wert übergibt, geht's ja.

                              I 1 Antwort Letzte Antwort
                              0
                              • I io2345

                                @PAUL53
                                Paul53, kannst du hier eventuell helfen? Ich hab von dir ein paar gute Sachen in anderen Beiträgen gelesen, du scheinst dich in JScript wirklich gut auszukennen.
                                Ist wahrscheinlich nur eine Kleinigkeit, die hier fehlt. Das Stop-Script besteht ja eigentlich nur aus der Zeile

                                setState("<Objekt>", JSON.parse(schedule_wiederherstellen));

                                Jetzt müsste man nur noch wissen, warum der Wert nicht richtig übergeben wird. Die Fehlermeldung lautet
                                "SyntaxError: Unexpected token o in JSON at position 1"
                                Ich denke, der Wert ist nur nicht richtig formatiert vom Typ her. Wenn man ihn - wie im Start-Script - als festen Wert übergibt, geht's ja.

                                I Offline
                                I Offline
                                io2345
                                schrieb am zuletzt editiert von io2345
                                #705

                                Da hier Funkstille herrschte, hab ich überlegt ob das nun bedeutet "Die Sache ist so einfach, da kommt er selbst drauf" oder "Das ist so schwer, da fällt mir keine Lösung ein".
                                Ich bin jetzt mal davon ausgegangen, dass ersteres gemeint war, und hab weiter rumprobiert.
                                Eine funktionierende Script-Variante habe ich nun gefunden, die sieht so aus:

                                async function start_zirk() {
                                    // Schedule wird zum Einschalten der Pumpe temporär verändert, so dass die Pumpe
                                    // zwischen 00:00 und 23:59 Uhr zuverlässig eingeschaltet ist. Das in der Wärmepumpe 
                                    // vorhandene Zeitprogramm der Zirkulationspumpe wird in einen eigenen Datenpunkt gesichert
                                    
                                    pump_on = '{"mon":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"tue":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"wed":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"thu":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"fri":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"sat":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"sun":[{"start":"00:00","end":"23:59","mode":"on","position":0}]}';
                                    schedule_sichern = getState('viessmannapi.0.133000.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue').val;
                                    
                                    setState("0_userdata.0.EigeneDatenpunkte.Heizung.ZwischenspeicherZirkulationspumpeSchedule",JSON.parse(JSON.stringify(schedule_sichern)));
                                    
                                    setState("viessmannapi.0.133000.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue", JSON.parse(pump_on)); // oder pump_off
                                }
                                
                                async function stop_zirk() {
                                    // Der urspüngliche Schedule wird zurückgeschrieben. 
                                    
                                    schedule_wiederherstellen = schedule_sichern;
                                    setState("viessmannapi.0.133000.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue", JSON.parse(JSON.stringify(schedule_wiederherstellen)));
                                }
                                
                                
                                on({ id: [].concat(['0_userdata.0.EigeneDatenpunkte.Heizung.ZirkulationAn_']), change: 'ne' }, async (obj) => {
                                  let value = obj.state.val;
                                  let oldValue = obj.oldState.val;
                                  if ((obj.state ? obj.state.val : "") == true) {
                                    await start_zirk();
                                    log ("Zirkulationspumpe läuft für zwei Minuten");
                                    await wait(120000);
                                    setState('0_userdata.0.EigeneDatenpunkte.Heizung.ZirkulationAn_' /* EigeneDatenpunkte.Heizung.ZirkulationAn  */, false, true);
                                    await stop_zirk();
                                  }
                                });
                                

                                Er meckert zwar im Log "State value to set for <Datenpunkt> has to be one of type "string", "number", "boolean" but received type "object"", aber es läuft zumindest durch.
                                Wenn jetzt jemand noch Hinweise hätte, wie ich die o.g. Logeinträge vermeiden kann, gerne her damit.

                                ? 1 Antwort Letzte Antwort
                                0
                                • I io2345

                                  Da hier Funkstille herrschte, hab ich überlegt ob das nun bedeutet "Die Sache ist so einfach, da kommt er selbst drauf" oder "Das ist so schwer, da fällt mir keine Lösung ein".
                                  Ich bin jetzt mal davon ausgegangen, dass ersteres gemeint war, und hab weiter rumprobiert.
                                  Eine funktionierende Script-Variante habe ich nun gefunden, die sieht so aus:

                                  async function start_zirk() {
                                      // Schedule wird zum Einschalten der Pumpe temporär verändert, so dass die Pumpe
                                      // zwischen 00:00 und 23:59 Uhr zuverlässig eingeschaltet ist. Das in der Wärmepumpe 
                                      // vorhandene Zeitprogramm der Zirkulationspumpe wird in einen eigenen Datenpunkt gesichert
                                      
                                      pump_on = '{"mon":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"tue":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"wed":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"thu":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"fri":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"sat":[{"start":"00:00","end":"23:59","mode":"on","position":0}],"sun":[{"start":"00:00","end":"23:59","mode":"on","position":0}]}';
                                      schedule_sichern = getState('viessmannapi.0.133000.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue').val;
                                      
                                      setState("0_userdata.0.EigeneDatenpunkte.Heizung.ZwischenspeicherZirkulationspumpeSchedule",JSON.parse(JSON.stringify(schedule_sichern)));
                                      
                                      setState("viessmannapi.0.133000.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue", JSON.parse(pump_on)); // oder pump_off
                                  }
                                  
                                  async function stop_zirk() {
                                      // Der urspüngliche Schedule wird zurückgeschrieben. 
                                      
                                      schedule_wiederherstellen = schedule_sichern;
                                      setState("viessmannapi.0.133000.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue", JSON.parse(JSON.stringify(schedule_wiederherstellen)));
                                  }
                                  
                                  
                                  on({ id: [].concat(['0_userdata.0.EigeneDatenpunkte.Heizung.ZirkulationAn_']), change: 'ne' }, async (obj) => {
                                    let value = obj.state.val;
                                    let oldValue = obj.oldState.val;
                                    if ((obj.state ? obj.state.val : "") == true) {
                                      await start_zirk();
                                      log ("Zirkulationspumpe läuft für zwei Minuten");
                                      await wait(120000);
                                      setState('0_userdata.0.EigeneDatenpunkte.Heizung.ZirkulationAn_' /* EigeneDatenpunkte.Heizung.ZirkulationAn  */, false, true);
                                      await stop_zirk();
                                    }
                                  });
                                  

                                  Er meckert zwar im Log "State value to set for <Datenpunkt> has to be one of type "string", "number", "boolean" but received type "object"", aber es läuft zumindest durch.
                                  Wenn jetzt jemand noch Hinweise hätte, wie ich die o.g. Logeinträge vermeiden kann, gerne her damit.

                                  ? Offline
                                  ? Offline
                                  Ein ehemaliger Benutzer
                                  schrieb am zuletzt editiert von
                                  #706

                                  @io2345

                                  Hi,
                                  wenn du am Anfang deines Scripts die Variablen definierst, und den Datenpunkt als String anlegst, dann sollte das gehen, ganz ohne Fehler..

                                  Also oben noch drueber:

                                  var pump_off, pump_on, schedule_sichern, schedule_wiederherstellen
                                  
                                  
                                  I 1 Antwort Letzte Antwort
                                  0
                                  • G Online
                                    G Online
                                    guitardoc
                                    schrieb am zuletzt editiert von
                                    #707

                                    Hallo zusammen,

                                    Ich habe ein Hybridsystem bestehend aus einer Viessmann Gasheizung und einer (neuen) Viessmann Wärmepumpe. Im Moment heize ich mit Gas, welches hier sehr viel preiswerter als Strom ist. Dazu habe ich den Parameter 7B02 der Wärmepumpe auf einen hohen Wert gestellt, damit diese nicht anspringt.
                                    Da ich aber noch eine PV-Anlage auf dem Dach habe, welche an sonnigen Tagen mehr Strom produziert als ich verbrauche bzw. im Akku speichern kann, könnte ich mit dem überschüssigen Strom die Wärmepumpe betreiben und auch das Gas sparen.
                                    Nach meinen bisherigen Recherchen wäre das mit dem Parameter 7B02 in der Wärmepumpe realisierbar, welcher dann eben auf einen sehr hohen (Gasheizung soll laufen) oder einen niedrigeren (Wärmepumpe soll laufen) Wert der Bivalenztemperatur eingestellt wird, je nachdem, ob und wie viel überschüssiger Strom vorhanden ist.
                                    Steuern wollte ich das über ioBroker. Allerdings finde ich im Viessmannapi-Adapter den Parameter 7B02 nicht. Daher meine Fragen:

                                    • Gibt es eine Möglichkeit, diesen Adapter per ioBroker und die Viessmann API in die Wärmepumpe zu schreiben?
                                    • Oder ist die Vorgehensweise über den Parameter 7B02 gar nicht sinnvoll und es gibt eine viel bessere Variante für mein Vorhaben?

                                    Danke schon einmal vorab für die Hilfe!

                                    PS. Hab die Frage schon im allgemeinen Forum gepostet - nicht wundern dass das doppelt erscheint.

                                    1 Antwort Letzte Antwort
                                    0
                                    • D Offline
                                      D Offline
                                      dan11hh
                                      schrieb am zuletzt editiert von
                                      #708

                                      Kurze Frage, weil ich mir gerade eine WP ggf. von Viessmann anschaffen möchte:
                                      Was muss eine Viessmann WP haben um vernünftig in den ioBroker integriert werden zu können? Geht auch die kleinste, die 150-A?

                                      1 Antwort Letzte Antwort
                                      0
                                      • W Offline
                                        W Offline
                                        wmendelin
                                        schrieb am zuletzt editiert von
                                        #709
                                        Dieser Beitrag wurde gelöscht!
                                        1 Antwort Letzte Antwort
                                        0
                                        • W Offline
                                          W Offline
                                          wmendelin
                                          schrieb am zuletzt editiert von
                                          #710

                                          Ich habe seit einiger Zeit das Problem, das ich keine Daten mehr angezeigt bekomme.
                                          Nun habe ich mal die Viessmann Api 2.3.0 neu installiert und auch bei Viessmann den User gelöscht und neu angelegt.
                                          Das eigenartige ist das ich im Vicare alle Daten habe so wie sonst auch.
                                          Aber nun im Log von IO Broker diese Fehlermeldungen, siehe Screenshot.

                                          Screenshot 2024-03-18 150111.png

                                          Weiß jemand wie ich das gefixt bekomme?

                                          T 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

                                          764

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe