Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. Test ViessmannAPI v2.0.0

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Test ViessmannAPI v2.0.0

    This topic has been deleted. Only users with topic management privileges can see it.
    • R
      Ronniboy @m4rgott last edited by

      @m4rgott
      Seit ca 6 Monate visualisiere ich meine Wp mit IOBROKER / GRAFANA.
      Da komme ich sehr gut mit klar.
      Die nächste Herausforderung ist Sollwerte verändern.
      Gibt es eine Doku oder Beschreibung wie ich in Blockly dieses umsetzen kann.

      M 1 Reply Last reply Reply Quote 0
      • M
        m4rgott @Ronniboy last edited by m4rgott

        @ronniboy
        Hi,

        ich habe mich mit trial and error rangegeben.

        Wenn Du Dich ja schon seit 6 Monaten mit dem Adapter beschäftigst, findest Du Dich ja sicher bei der Menge an Datenpunkten schon besser zurecht als ich.

        Bei mir habe ich jetzt 2 Dinge "eingebaut".

        1. Wenn die PV-Anlage mehr als 1,5 kW (erster Testwert) Überschuss hat wird die Solltemperatur vom Brauchwasser von 50 auf 55 erhöht.

        4fd2879b-0c0a-4888-bff0-857b231d72cf-image.png

        <xml xmlns="https://developers.google.com/blockly/xml">
          <variables>
            <variable id="@^uFj]vII6w4tzOxrOUD">Schwellenwert</variable>
          </variables>
          <block type="comment" id="Z*Yc0h-K=sxJ1l5LAmp|" x="213" y="-63">
            <field name="COMMENT">Prüfung und Anpassung</field>
            <next>
              <block type="schedule" id="%7%jU|8(d~tTq`yV7f8C">
                <field name="SCHEDULE">*/5 * * * *</field>
                <statement name="STATEMENT">
                  <block type="controls_if" id="LPs,_CHiri[M]4E,Dsm3">
                    <mutation else="1"></mutation>
                    <value name="IF0">
                      <block type="logic_compare" id="L$ZN8QYJtzUxmxv`MLMp">
                        <field name="OP">LT</field>
                        <value name="A">
                          <block type="get_value" id="!{OX~MRns0?.=Kj}w0{^">
                            <field name="ATTR">val</field>
                            <field name="OID">0_userdata.0.Energie.Zwischenzaehler_Durchschnitt_5Min</field>
                          </block>
                        </value>
                        <value name="B">
                          <block type="variables_get" id="8*5PJ9nvUi+rJFr)8Kq?">
                            <field name="VAR" id="@^uFj]vII6w4tzOxrOUD">Schwellenwert</field>
                          </block>
                        </value>
                      </block>
                    </value>
                    <statement name="DO0">
                      <block type="control" id="D8I#Fdqrd/]@oe0=a8Yd">
                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                        <field name="OID">viessmannapi.0.xxx.0.features.heating.dhw.temperature.main.commands.setTargetTemperature.setValue</field>
                        <field name="WITH_DELAY">FALSE</field>
                        <value name="VALUE">
                          <block type="math_number" id="Dny{rz~_UmX``x5PB,sr">
                            <field name="NUM">55</field>
                          </block>
                        </value>
                      </block>
                    </statement>
                    <statement name="ELSE">
                      <block type="control" id="c0={noL%jo3gdM3I.?h*">
                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                        <field name="OID">viessmannapi.0.xxx.0.features.heating.dhw.temperature.main.commands.setTargetTemperature.setValue</field>
                        <field name="WITH_DELAY">FALSE</field>
                        <value name="VALUE">
                          <block type="math_number" id="P6JRV:6/J$dR|K=p)wnf">
                            <field name="NUM">50</field>
                          </block>
                        </value>
                      </block>
                    </statement>
                  </block>
                </statement>
              </block>
            </next>
          </block>
          <block type="variables_set" id="6:48TXub#XfY=XM;vTb~" x="313" y="-37">
            <field name="VAR" id="@^uFj]vII6w4tzOxrOUD">Schwellenwert</field>
            <value name="VALUE">
              <block type="math_number" id="AD%gIlUA{{g_hO|c?f~i">
                <field name="NUM">-1500</field>
              </block>
            </value>
          </block>
          <block type="comment" id="N.Lev/.WZsjuGf;=g~5L" x="213" y="212">
            <field name="COMMENT">debung und Telegram bei Änderung</field>
            <next>
              <block type="on" id="bwZ;dSkz99*[vV:NaK?]">
                <field name="OID">viessmannapi.0.xxx.0.features.heating.dhw.temperature.main.properties.value.value</field>
                <field name="CONDITION">ne</field>
                <field name="ACK_CONDITION"></field>
                <statement name="STATEMENT">
                  <block type="debug" id=",Qb}*i9TtUjMOiU|)ZaI">
                    <field name="Severity">log</field>
                    <value name="TEXT">
                      <shadow type="text" id="f_0b[Y)+yTiCdKy3Z?s~">
                        <field name="TEXT">test</field>
                      </shadow>
                      <block type="text_join" id="0jHsnZ,OVL6)h$*48ld8">
                        <mutation items="6"></mutation>
                        <value name="ADD0">
                          <block type="text" id="o=Jg2a7+k)XHd?c7e0q0">
                            <field name="TEXT">PV-Überschuss =</field>
                          </block>
                        </value>
                        <value name="ADD1">
                          <block type="math_arithmetic" id="1Ej;XL61*|mX2LoJ##0s">
                            <field name="OP">MULTIPLY</field>
                            <value name="A">
                              <shadow type="math_number" id=",J;UN`hq{;Cr5OcSL*|-">
                                <field name="NUM">1</field>
                              </shadow>
                              <block type="get_value" id="!Ix|JcmE8E^hW71Kc6T=">
                                <field name="ATTR">val</field>
                                <field name="OID">0_userdata.0.Energie.Zwischenzaehler_Durchschnitt_5Min</field>
                              </block>
                            </value>
                            <value name="B">
                              <shadow type="math_number" id="{HiC*5qx;=5Y}9-@n[ts">
                                <field name="NUM">-1</field>
                              </shadow>
                            </value>
                          </block>
                        </value>
                        <value name="ADD2">
                          <block type="text" id="exRvdoWnJI?J3,Jc$8hI">
                            <field name="TEXT">. Wassertemperatur geändert auf: </field>
                          </block>
                        </value>
                        <value name="ADD3">
                          <block type="get_value_var" id="]Z^d)y5~RU5GW#S0[t[N">
                            <field name="ATTR">val</field>
                            <value name="OID">
                              <shadow type="field_oid" id="i,tsb_mOhc;YxKP:p$4F">
                                <field name="oid">Object ID</field>
                              </shadow>
                              <block type="on_source" id="P]RHOe_Km2r._4mF6T~c">
                                <field name="ATTR">id</field>
                              </block>
                            </value>
                          </block>
                        </value>
                      </block>
                    </value>
                  </block>
                </statement>
              </block>
            </next>
          </block>
        </xml>
        <xml xmlns="https://developers.google.com/blockly/xml">
          <variables>
            <variable id="@^uFj]vII6w4tzOxrOUD">Schwellenwert</variable>
          </variables>
          <block type="comment" id="Z*Yc0h-K=sxJ1l5LAmp|" x="213" y="-63">
            <field name="COMMENT">Prüfung und Anpassung</field>
            <next>
              <block type="schedule" id="%7%jU|8(d~tTq`yV7f8C">
                <field name="SCHEDULE">*/5 * * * *</field>
                <statement name="STATEMENT">
                  <block type="controls_if" id="LPs,_CHiri[M]4E,Dsm3">
                    <mutation else="1"></mutation>
                    <value name="IF0">
                      <block type="logic_compare" id="L$ZN8QYJtzUxmxv`MLMp">
                        <field name="OP">LT</field>
                        <value name="A">
                          <block type="get_value" id="!{OX~MRns0?.=Kj}w0{^">
                            <field name="ATTR">val</field>
                            <field name="OID">0_userdata.0.Energie.Zwischenzaehler_Durchschnitt_5Min</field>
                          </block>
                        </value>
                        <value name="B">
                          <block type="variables_get" id="8*5PJ9nvUi+rJFr)8Kq?">
                            <field name="VAR" id="@^uFj]vII6w4tzOxrOUD">Schwellenwert</field>
                          </block>
                        </value>
                      </block>
                    </value>
                    <statement name="DO0">
                      <block type="control" id="D8I#Fdqrd/]@oe0=a8Yd">
                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                        <field name="OID">viessmannapi.0.xxx.0.features.heating.dhw.temperature.main.commands.setTargetTemperature.setValue</field>
                        <field name="WITH_DELAY">FALSE</field>
                        <value name="VALUE">
                          <block type="math_number" id="Dny{rz~_UmX``x5PB,sr">
                            <field name="NUM">55</field>
                          </block>
                        </value>
                      </block>
                    </statement>
                    <statement name="ELSE">
                      <block type="control" id="c0={noL%jo3gdM3I.?h*">
                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                        <field name="OID">viessmannapi.0.xxx.0.features.heating.dhw.temperature.main.commands.setTargetTemperature.setValue</field>
                        <field name="WITH_DELAY">FALSE</field>
                        <value name="VALUE">
                          <block type="math_number" id="P6JRV:6/J$dR|K=p)wnf">
                            <field name="NUM">50</field>
                          </block>
                        </value>
                      </block>
                    </statement>
                  </block>
                </statement>
              </block>
            </next>
          </block>
          <block type="variables_set" id="6:48TXub#XfY=XM;vTb~" x="313" y="-37">
            <field name="VAR" id="@^uFj]vII6w4tzOxrOUD">Schwellenwert</field>
            <value name="VALUE">
              <block type="math_number" id="AD%gIlUA{{g_hO|c?f~i">
                <field name="NUM">-1500</field>
              </block>
            </value>
          </block>
          <block type="comment" id="N.Lev/.WZsjuGf;=g~5L" x="213" y="212">
            <field name="COMMENT">debung und Telegram bei Änderung</field>
            <next>
              <block type="on" id="bwZ;dSkz99*[vV:NaK?]">
                <field name="OID">viessmannapi.0.xxx.0.features.heating.dhw.temperature.main.properties.value.value</field>
                <field name="CONDITION">ne</field>
                <field name="ACK_CONDITION"></field>
                <statement name="STATEMENT">
                  <block type="debug" id=",Qb}*i9TtUjMOiU|)ZaI">
                    <field name="Severity">log</field>
                    <value name="TEXT">
                      <shadow type="text" id="f_0b[Y)+yTiCdKy3Z?s~">
                        <field name="TEXT">test</field>
                      </shadow>
                      <block type="text_join" id="0jHsnZ,OVL6)h$*48ld8">
                        <mutation items="6"></mutation>
                        <value name="ADD0">
                          <block type="text" id="o=Jg2a7+k)XHd?c7e0q0">
                            <field name="TEXT">PV-Überschuss =</field>
                          </block>
                        </value>
                        <value name="ADD1">
                          <block type="math_arithmetic" id="1Ej;XL61*|mX2LoJ##0s">
                            <field name="OP">MULTIPLY</field>
                            <value name="A">
                              <shadow type="math_number" id=",J;UN`hq{;Cr5OcSL*|-">
                                <field name="NUM">1</field>
                              </shadow>
                              <block type="get_value" id="!Ix|JcmE8E^hW71Kc6T=">
                                <field name="ATTR">val</field>
                                <field name="OID">0_userdata.0.Energie.Zwischenzaehler_Durchschnitt_5Min</field>
                              </block>
                            </value>
                            <value name="B">
                              <shadow type="math_number" id="{HiC*5qx;=5Y}9-@n[ts">
                                <field name="NUM">-1</field>
                              </shadow>
                            </value>
                          </block>
                        </value>
                        <value name="ADD2">
                          <block type="text" id="exRvdoWnJI?J3,Jc$8hI">
                            <field name="TEXT">. Wassertemperatur geändert auf: </field>
                          </block>
                        </value>
                        <value name="ADD3">
                          <block type="get_value_var" id="]Z^d)y5~RU5GW#S0[t[N">
                            <field name="ATTR">val</field>
                            <value name="OID">
                              <shadow type="field_oid" id="i,tsb_mOhc;YxKP:p$4F">
                                <field name="oid">Object ID</field>
                              </shadow>
                              <block type="on_source" id="P]RHOe_Km2r._4mF6T~c">
                                <field name="ATTR">id</field>
                              </block>
                            </value>
                          </block>
                        </value>
                      </block>
                    </value>
                  </block>
                </statement>
              </block>
            </next>
          </block>
        </xml>
        
        

        2.: Zirkulationspumpe für das Warmwasser soll tagsüber, wenn jemand zu Hause ist, laufen. Wenn niemand zu Hause ist, soll die Pumpe zumindest 1 h pro Tag laufen, damit das Wasser nicht in der Leitung steht.
        Da man die Zirkulationspumpe nicht direkt mit "an" oder "aus" ansteuern kann muss man hierfür den Zeitplan anpassen.
        Die Vorlage für den Zeitplan habe ich mir aus viessmannapi.0.xxx.0.features.heating.dhw.pumps.circulation.schedule.properties.entries.value geholt

        c13dd3dc-e952-4726-83d5-2209bf696304-image.png

        <xml xmlns="https://developers.google.com/blockly/xml">
          <block type="on" id="Ew~n++NGs7J:Ar#*Uqbr" x="463" y="188">
            <field name="OID">0_userdata.0.JemandZuHause</field>
            <field name="CONDITION">ne</field>
            <field name="ACK_CONDITION"></field>
            <statement name="STATEMENT">
              <block type="controls_if" id="yPYg)lUZJYm0;W=3KFRz">
                <mutation else="1"></mutation>
                <value name="IF0">
                  <block type="logic_compare" id="6:2aE-_cRkp|wIbHx)VK">
                    <field name="OP">GTE</field>
                    <value name="A">
                      <block type="on_source" id="zXsr1Gk{1GzZnI)[keau">
                        <field name="ATTR">state.val</field>
                      </block>
                    </value>
                    <value name="B">
                      <block type="on_source" id="S^sj=Iwb{i;*sC=Y2sCu">
                        <field name="ATTR">oldState.val</field>
                      </block>
                    </value>
                  </block>
                </value>
                <statement name="DO0">
                  <block type="control" id="T^{diz_%%+!Y)#_R{EDZ">
                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                    <field name="OID">viessmannapi.0.xxx.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue</field>
                    <field name="WITH_DELAY">FALSE</field>
                    <value name="VALUE">
                      <block type="convert_json2object" id="wfN}ISOWBPN^TaMyS9hN">
                        <value name="VALUE">
                          <block type="text" id="8X)GpX6lxkx;GB4|Wrga">
                            <field name="TEXT">{"mon":[{"start":"05:20","end":"22:00","mode":"on","position":0}],"tue":[{"start":"05:20","end":"22:00","mode":"on","position":0}],"wed":[{"start":"05:20","end":"22:00","mode":"on","position":0}],"thu":[{"start":"05:20","end":"22:00","mode":"on","position":0}],"fri":[{"start":"05:20","end":"22:00","mode":"on","position":0}],"sat":[{"start":"06:00","end":"22:00","mode":"on","position":0}],"sun":[{"start":"06:00","end":"22:00","mode":"on","position":0}]}</field>
                          </block>
                        </value>
                      </block>
                    </value>
                  </block>
                </statement>
                <statement name="ELSE">
                  <block type="control" id="WE|Z9`d5uS{e{bS+[ldG">
                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                    <field name="OID">viessmannapi.0.xxx.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue</field>
                    <field name="WITH_DELAY">FALSE</field>
                    <value name="VALUE">
                      <block type="convert_json2object" id="3E^n5/xSCW74KBuZINbV">
                        <value name="VALUE">
                          <block type="text" id="e+TKy0Y6,3~2$=`4pCws">
                            <field name="TEXT">{"mon":[{"start":"14:00","end":"15:00","mode":"on","position":0}],"tue":[{"start":"14:00","end":"15:00","mode":"on","position":0}],"wed":[{"start":"14:00","end":"15:00","mode":"on","position":0}],"thu":[{"start":"14:00","end":"15:00","mode":"on","position":0}],"fri":[{"start":"14:00","end":"15:00","mode":"on","position":0}],"sat":[{"start":"14:00","end":"15:00","mode":"on","position":0}],"sun":[{"start":"14:00","end":"15:00","mode":"on","position":0}]}</field>
                          </block>
                        </value>
                      </block>
                    </value>
                  </block>
                </statement>
              </block>
            </statement>
          </block>
        </xml>
        

        Für die anpassbaren Werte gibt es bei den Datenpunkten je einen zur Eingabe der neuen Daten. Bei dem Zeitplan ist es bei mir z.B. viessmannapi.0.xxx.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue

        Die Blockly-Pros hätten das sicher galanter gemacht. Als Anfänger gebe ich mich gerade damit zufrieden was funktioniert 😉

        Ich hoffe, das hilft Dir weiter.

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

          Hi, ich bekomme den Adapter leider nicht ans laufen...

          viessmannapi.0
          	2024-01-14 14:43:54.446	debug	Redis Objects: Use Redis connection: 127.0.0.1:9001
          viessmannapi.0
          	2024-01-14 14:43:54.508	debug	Objects client ready ... initialize now
          viessmannapi.0
          	2024-01-14 14:43:54.511	debug	Objects create System PubSub Client
          viessmannapi.0
          	2024-01-14 14:43:54.514	debug	Objects create User PubSub Client
          viessmannapi.0
          	2024-01-14 14:43:54.587	debug	Objects client initialize lua scripts
          viessmannapi.0
          	2024-01-14 14:43:54.599	debug	Objects connected to redis: 127.0.0.1:9001
          viessmannapi.0
          	2024-01-14 14:43:54.648	debug	Redis States: Use Redis connection: 127.0.0.1:9000
          viessmannapi.0
          	2024-01-14 14:43:54.671	debug	States create System PubSub Client
          viessmannapi.0
          	2024-01-14 14:43:54.673	debug	States create User PubSub Client
          viessmannapi.0
          	2024-01-14 14:43:54.750	debug	States connected to redis: 127.0.0.1:9000
          viessmannapi.0
          	2024-01-14 14:43:54.815	debug	Plugin sentry Initialize Plugin (enabled=true)
          viessmannapi.0
          	2024-01-14 14:43:54.826	info	Plugin sentry Sentry Plugin disabled for this process because sending of statistic data is disabled for the system
          viessmannapi.0
          	2024-01-14 14:43:55.067	info	starting. Version 2.4.0 (non-npm: TA2k/ioBroker.viessmannapi#3c01443c736270a8c3abe0212c651303fc15d8b3) in /opt/iobroker/node_modules/iobroker.viessmannapi, node: v18.19.0, js-controller: 5.0.17
          viessmannapi.0
          	2024-01-14 14:43:55.587	error	AxiosError: Request failed with status code 401
          viessmannapi.0
          	2024-01-14 14:43:55.589	error	{"error":"invalid_request","error_description":"Client not registered."}
          viessmannapi.0
          	2024-01-14 14:43:55.987	error	AxiosError: Request failed with status code 400
          viessmannapi.0
          	2024-01-14 14:43:55.988	error	{"error":"invalid_request","error_description":"Invalid request: Missing or empty code parameter"}
          

          zugang mit der ViCare funktioniert...

          MFG Schweizer

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

            @schweiz
            erledigt...

            Irgendwie hab ich mir gedacht, ich gebe mal einfach ein falsches Password ein, dann muss er mir ja sagen dass das Password falsch ist... hat er auch, dann habe ich es nocheinm eingegeben und nun geht der Adapter... kommisch!???

            MFG Schweizer

            1 Reply Last reply Reply Quote 0
            • I
              io2345 @Tiger VI last edited by

              @tiger-vi Hast du den genannten Datenpunkt in Betrieb und funktioniert der an heißen Tagen? Habe eben einen kurzen Test gemacht, allerdings nur Natural Cooling über den Aktorentest in der Steuerung der WP eingeschaltet. Zumindest in diesem Fall ändert sich der Status dieses Datenpunktes nicht (das müsste bei dir genauso sein, falls du es ausprobieren möchtest). Kann aber natürlich sein, dass das ein anderer Trigger ist, der trotzdem das gewünschte Ergebnis liefert.

              1 Reply Last reply Reply Quote 0
              • I
                io2345 @mading last edited by io2345

                @mading Mein Gott, was ihr für knifflige Sachen macht: Geo-Lokalisation, Wahnsinn. Aber selbst ein Wandschalter ist noch zu viel Aufwand.
                Am einfachsten wäre doch, in der Oberfläche des ioBroker eine Art "virtuellen Schalter" zu haben, wo man drauf drückt und dann läuft die Zirkulationspumpe für fünf Minuten, bevor sie sich wieder abstellt.
                Bin ziemlicher Anfänger in solchen Sachen (hab vorgestern erst ioBroker auf dem Raspi installiert).
                Könnt ihr abschätzen, ob sich sowas realisieren lässt - oder hat sowas in der Art gar schon einer der Forumsteilnehmer am Laufen?

                EDIT: Mein Gott, ich scheitere schon daran, dein Blockly-Script bei mir in Blockly einzufügen. Kann offenbar nur das anzeigen, was ich selbst zusammen-geblockt habe....

                N M 2 Replies Last reply Reply Quote 0
                • N
                  nobbiman @io2345 last edited by nobbiman

                  @io2345 Kann verstehen, dass du das auch im ioBroker realisieren möchtest, wobei ich dir leider auch (noch) nicht helfen kann.
                  Aber einen Tipp für die praktische Umsetzung deines Problems gebe ich dir gerne mit:
                  Ich steuere meine Zirkupumpe (Keller) über einen Funkschalter (könnte ein Shelly Plug S sein oder ein anderes Shelly-Teil). Im Bad liegt bei mir ein Shelly Button 1, den man betätigt, sobald man das Bad betritt und sich zum Duschen/Waschen vorbereitet. Der Button steuert dann den Shelly Plug S, der auf eine Laufzeit von 3-4 Min programmiert wird.
                  Vorteil dieser Lösung: Der Schalter ist vor Ort und so langsam gewöhnen sich auch die Familienmitglieder an dessen rechzeitiger Betätigung.
                  Ich hatte früher eine Steuerung über FHEM im FTUI auf einem iPad realisiert, der im EG lag. Wenn man ins OG kam und hatte vergessen den "3-Minuten-Schalter" zu betätigen, wurde doch das Wasser so lange laufen gelassen, bis es warm wurde weil niemand Lust hatte, nochmals ins EG zu gehen.
                  Mir gefällt die jetzige Lösung sehr gut!

                  1 Reply Last reply Reply Quote 0
                  • M
                    mading @io2345 last edited by

                    @io2345 sagte in Test ViessmannAPI v2.0.0:

                    @mading Mein Gott, was ihr für knifflige Sachen macht: Geo-Lokalisation, Wahnsinn. Aber selbst ein Wandschalter ist noch zu viel Aufwand.
                    Am einfachsten wäre doch, in der Oberfläche des ioBroker eine Art "virtuellen Schalter" zu haben, wo man drauf drückt und dann läuft die Zirkulationspumpe für fünf Minuten, bevor sie sich wieder abstellt.
                    Bin ziemlicher Anfänger in solchen Sachen (hab vorgestern erst ioBroker auf dem Raspi installiert).
                    Könnt ihr abschätzen, ob sich sowas realisieren lässt - oder hat sowas in der Art gar schon einer der Forumsteilnehmer am Laufen?

                    EDIT: Mein Gott, ich scheitere schon daran, dein Blockly-Script bei mir in Blockly einzufügen. Kann offenbar nur das anzeigen, was ich selbst zusammen-geblockt habe....

                    Ich habe eine Schaltsteck an der Zirkulationspumpe. Im Bad habe ich einen homematic Taster mit Ink Display. Drücke ich auf eine Taste, läuft die ZP für 5 Min.

                    1 Reply Last reply Reply Quote 0
                    • I
                      io2345 @mading last edited by io2345

                      @mading Funktioniert astrein.
                      Falls ein Anfänger wie ich das ebenfalls importieren möchte: Hier ein paar Hinweise, wie man Frust vermeiden kann:

                      Das Blockly enthält einen Block, in dem Meldungen über einen Adapter des IM-Dienstes Telegram verschickt werden. Falls man beim Importieren des Scripts eine Fehlermeldung erhält bezüglich fehlerhafter Telegram-Konfiguration, dann fehlt bei euch wahrscheinlich dieser Adapter.

                      Der konfigurierte Datenpunkt, der geschaltet wird, muss bei euch im Blockly abgeändert werden: hinter "viessmannapi.0.... ist eine eindeutige ID, an dieser Stelle müsst ihr die eure eintragen.

                      Das Blockly verwendet einen eigenen Datenpunkt, den ihr erst anlegen müsst: Unter 0_userdata.0.EigeneDatenpunkte.Heizung einen Unterpunkt "ZirkulationAn" als Binärwert.

                      Wer das Script ohne Hardwareschalter einfach von einem Mobilgerät oder Computer aufrufen will, kann sich z.B. eine Visualisierung (wie HABpanel) als Adapter installieren und dort eine Schaltfläche einfügen, die beim Antippen in den - im letzten Abschnitt erstellten Datenpunkt - schreibt.

                      1 Reply Last reply Reply Quote 0
                      • B
                        Bastler52 @m4rgott last edited by Bastler52

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

                        M 1 Reply Last reply Reply Quote 0
                        • M
                          m4rgott @Bastler52 last edited by

                          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 Reply Last reply Reply Quote 0
                          • B
                            Bastler52 @m4rgott last edited by

                            @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 Reply Last reply Reply Quote 0
                            • M
                              MAXI885 @Neuschwansteini last edited by

                              @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 !

                              Neuschwansteini T 2 Replies Last reply Reply Quote 0
                              • Neuschwansteini
                                Neuschwansteini @MAXI885 last edited by

                                @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 Reply Last reply Reply Quote 0
                                • T
                                  tombox @MAXI885 last edited by

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

                                  M 1 Reply Last reply Reply Quote 0
                                  • M
                                    MAXI885 @tombox last edited by

                                    @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 Reply Last reply Reply Quote 0
                                    • B
                                      Backes last edited by

                                      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. 1 Reply Last reply Reply Quote 0
                                      • Dominik F.
                                        Dominik F. @Backes last edited by

                                        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 Reply Last reply Reply Quote 0
                                        • I
                                          io2345 last edited by 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 1 Reply Last reply Reply Quote 0
                                          • M
                                            Michi_Pi @io2345 last edited by

                                            @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 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.0k
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            125
                                            791
                                            195161
                                            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