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

  • 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.8k 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.
  • Tiger VIT Tiger VI

    @ritschy2000 Evtl. für dich noch interessant, habe vor kurzem den Datenpunkt gefunden.
    => viessmannapi.0.xxxxxx.0.features.heating.compressors.0.properties.phase.value

    Wenn die WP die Kühlung aktiviert und der Kompressor läuft wird dieser auf "cooling" gesetzt. Diesen Wert nutze ich als Trigger um die Logik der KNX Stellantriebe auf Kühlen zu stellen.

    @LaBamba bei mir wird der Wert immernoch mit einer Kommastelle von der API ausgegeben.

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

    @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 Antwort Letzte Antwort
    0
    • M mading

      @quotschmacher sagte in Test ViessmannAPI v2.0.0:

      @quotschmacher sagte in Test ViessmannAPI v2.0.0:

      ich greife das mal auf: das sollte ja dann eigentlich zum einschalten über bewegungsmelder so laufen, das ich in viessmannapi.0.2050879.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue bei auslösung des bewegungsmelders einen zeitplan mit der aktuellen zeit + ne stunde oder so eintrage und wenn keine bewegung mehr, dann einen leeren zeitplan. oder bin ich da jetzt ganz auf dem holzweg?

      nochmal der vollständigkeithalber: zirkulationspumpe steuern geht soweit ganz gut (vitodens 200).

      // schedule zum einschalten, allerdings nur zwischen 6 und 21 uhr
      var pump_on = '{"mon":[{"start":"06:00","end":"21:00","mode":"on","position":0}],"tue":[{"start":"06:00","end":"21:00","mode":"on","position":0}],"wed":[{"start":"06:00","end":"21:00","mode":"on","position":0}],"thu":[{"start":"06:00","end":"21:00","mode":"on","position":0}],"fri":[{"start":"06:00","end":"21:00","mode":"on","position":0}],"sat":[{"start":"06:00","end":"21:00","mode":"on","position":0}],"sun":[{"start":"06:00","end":"21:00","mode":"on","position":0}]}'
      // schedule leeren - pumpe ausschalten
      var pump_off = '{"mon":[], "tue":[],"wed":[],"thu":[],"fri":[],"sat":[],"sun":[]}' 
      
      setState("viessmannapi.0.xxx.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue", JSON.parse(pump_on)); // oder pump_off
      

      der vorteil das ganze über ein "begrenztes" schedule zu lösen: man muss bei der auswertung eines bewegungsmelders keine zeiten mehr auswerten. wenn der melder nach 21 triggert und das schedule neu gesetzt wird, startet die pumpe eh nicht.

      ich hab gestern ganz wild die schedules hin und her geschaltet und es hat super funktioniert.

      danke für den adapter @tombox

      Hey, da will ich mich mal dran hängen. Ich hatte überlegt, mir einen kippschalter im Bad irgendwo zu platzieren, mit dem ich die Zirkulationspumpe ad hoc starten kann (Use Case: man steht im Bad und will duschen/ das Waschbecken mit WW benutzen). Eigentlich sollte es doch mit dem Skript kein Problem sein:

      • Eine Schaltervariable (bool) in den eigenen Datenpunkten zu setzen, welche von einem Blockly überwacht wird
      • ist die Variable auf true, wird der schedule (pump_on) gesetzt -> die Zirkulation läuft an
      • nach z.B. 5min wird automatisch pump_off gesetzt

      Verstehe ich es richtig, dass mit deinem Skript die Zirkulationspumpe von 6-21 Uhr durch laufen würde, wenn sie nicht wieder deaktiviert wird?

      edit: hab mal ein blockly gebaut

      <xml xmlns="https://developers.google.com/blockly/xml">
        <block type="procedures_defcustomnoreturn" id="C|6p3lu0hRewiE]Z{qnx" x="188" y="88">
          <mutation statements="false"></mutation>
          <field name="NAME">start-zirk</field>
          <field name="SCRIPT">Ly8gc2NoZWR1bGUgenVtIGVpbnNjaGFsdGVuLCBhbGxlcmRpbmdzIG51ciB6d2lzY2hlbiA2IHVuZCAyMSB1aHINCg0KdmFyIHB1bXBfb24gPSAneyJtb24iOlt7InN0YXJ0IjoiMDA6MDAiLCJlbmQiOiIyMzo1OSIsIm1vZGUiOiJvbiIsInBvc2l0aW9uIjowfV0sInR1ZSI6W3sic3RhcnQiOiIwNjowMCIsImVuZCI6IjIxOjAwIiwibW9kZSI6Im9uIiwicG9zaXRpb24iOjB9XSwid2VkIjpbeyJzdGFydCI6IjA2OjAwIiwiZW5kIjoiMjE6MDAiLCJtb2RlIjoib24iLCJwb3NpdGlvbiI6MH1dLCJ0aHUiOlt7InN0YXJ0IjoiMDY6MDAiLCJlbmQiOiIyMTowMCIsIm1vZGUiOiJvbiIsInBvc2l0aW9uIjowfV0sImZyaSI6W3sic3RhcnQiOiIwNjowMCIsImVuZCI6IjIxOjAwIiwibW9kZSI6Im9uIiwicG9zaXRpb24iOjB9XSwic2F0IjpbeyJzdGFydCI6IjA2OjAwIiwiZW5kIjoiMjE6MDAiLCJtb2RlIjoib24iLCJwb3NpdGlvbiI6MH1dLCJzdW4iOlt7InN0YXJ0IjoiMDY6MDAiLCJlbmQiOiIyMTowMCIsIm1vZGUiOiJvbiIsInBvc2l0aW9uIjowfV19Jw0KDQpzZXRTdGF0ZSgidmllc3NtYW5uYXBpLjAuNjQ4NTEuMC5mZWF0dXJlcy5oZWF0aW5nLmRody5wdW1wcy5jaXJjdWxhdGlvbi5zY2hlZHVsZS5jb21tYW5kcy5zZXRTY2hlZHVsZS5zZXRWYWx1ZSIsIEpTT04ucGFyc2UocHVtcF9vbikpOyAvLyBvZGVyIHB1bXBfb2Zm</field>
          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
        </block>
        <block type="on_ext" id="OrrP|oAEW44xm)#CHi/x" x="563" y="88">
          <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
          <field name="CONDITION">ne</field>
          <field name="ACK_CONDITION"></field>
          <value name="OID0">
            <shadow type="field_oid" id="Vf:2${EvnUSG~})eift%">
              <field name="oid">0_userdata.0.EigeneDatenpunkte.Heizung.ZirkulationAn</field>
            </shadow>
          </value>
          <statement name="STATEMENT">
            <block type="controls_if" id=")wR[o:^O40MXsYo|IaVD">
              <value name="IF0">
                <block type="logic_compare" id="vKpLM;XY_RcIGh6,W8}T">
                  <field name="OP">EQ</field>
                  <value name="A">
                    <block type="on_source" id=")fMs4Fcf$,iYXBW!bX,$">
                      <field name="ATTR">state.val</field>
                    </block>
                  </value>
                  <value name="B">
                    <block type="logic_boolean" id="J5ijXAEjpY!7;c[{N/*G">
                      <field name="BOOL">TRUE</field>
                    </block>
                  </value>
                </block>
              </value>
              <statement name="DO0">
                <block type="procedures_callcustomnoreturn" id="cPECRG/O*H71[C0pKS3W">
                  <mutation name="start-zirk"></mutation>
                  <next>
                    <block type="telegram" id="T9Dc^Salh?]_(:9YeLNs">
                      <field name="INSTANCE"></field>
                      <field name="LOG"></field>
                      <field name="SILENT">FALSE</field>
                      <field name="PARSEMODE">default</field>
                      <field name="DISABLE_WEB_PAGE_PREVIEW">FALSE</field>
                      <value name="MESSAGE">
                        <shadow type="text" id="1_-=OC9}y+2rbxEF,Ps7">
                          <field name="TEXT">Zirkulationspumpe gestartet. 5 Minuten Timeout</field>
                        </shadow>
                      </value>
                      <next>
                        <block type="timeouts_wait" id="^+@b5Hgy=9Kt_8[LpCQ#">
                          <field name="DELAY">5</field>
                          <field name="UNIT">min</field>
                          <next>
                            <block type="update" id="3`LHXWh~d.hYJhTrvq]*">
                              <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                              <field name="OID">0_userdata.0.EigeneDatenpunkte.Heizung.ZirkulationAn</field>
                              <field name="WITH_DELAY">FALSE</field>
                              <value name="VALUE">
                                <block type="logic_boolean" id="ex|rf*=(uRZ~2{=|JWFM">
                                  <field name="BOOL">FALSE</field>
                                </block>
                              </value>
                              <next>
                                <block type="procedures_callcustomnoreturn" id="/vYJRv|tZ55;~!uax+W3">
                                  <mutation name="stop-zirk"></mutation>
                                  <next>
                                    <block type="telegram" id=":QA|!PHN6C*+Eo6eIfHX">
                                      <field name="INSTANCE"></field>
                                      <field name="LOG"></field>
                                      <field name="SILENT">FALSE</field>
                                      <field name="PARSEMODE">default</field>
                                      <field name="DISABLE_WEB_PAGE_PREVIEW">FALSE</field>
                                      <value name="MESSAGE">
                                        <shadow type="text" id="G!f5)/iMynkY@xR7o@ZR">
                                          <field name="TEXT">Zirkulationspumpe gestoppt.</field>
                                        </shadow>
                                      </value>
                                    </block>
                                  </next>
                                </block>
                              </next>
                            </block>
                          </next>
                        </block>
                      </next>
                    </block>
                  </next>
                </block>
              </statement>
            </block>
          </statement>
        </block>
        <block type="procedures_defcustomnoreturn" id="]0SXN4W+S6mvOy.:^$No" x="188" y="113">
          <mutation statements="false"></mutation>
          <field name="NAME">stop-zirk</field>
          <field name="SCRIPT">Ly8gc2NoZWR1bGUgbGVlcmVuIC0gcHVtcGUgYXVzc2NoYWx0ZW4NCg0KdmFyIHB1bXBfb2ZmID0gJ3sibW9uIjpbXSwgInR1ZSI6W10sIndlZCI6W10sInRodSI6W10sImZyaSI6W10sInNhdCI6W10sInN1biI6W119JyANCg0KIA0KDQpzZXRTdGF0ZSgidmllc3NtYW5uYXBpLjAuNjQ4NTEuMC5mZWF0dXJlcy5oZWF0aW5nLmRody5wdW1wcy5jaXJjdWxhdGlvbi5zY2hlZHVsZS5jb21tYW5kcy5zZXRTY2hlZHVsZS5zZXRWYWx1ZSIsIEpTT04ucGFyc2UocHVtcF9vZmYpKTsgLy8gb2RlciBwdW1wX29mZg==</field>
          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
        </block>
      </xml>
      

      Danke!
      mading

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

      @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 Antworten Letzte Antwort
      0
      • I 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 Offline
        N Offline
        nobbiman
        schrieb am zuletzt editiert von nobbiman
        #687

        @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 Antwort Letzte Antwort
        0
        • I 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....

          M Offline
          M Offline
          mading
          schrieb am zuletzt editiert von
          #688

          @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 Antwort Letzte Antwort
          0
          • M mading

            @quotschmacher sagte in Test ViessmannAPI v2.0.0:

            @quotschmacher sagte in Test ViessmannAPI v2.0.0:

            ich greife das mal auf: das sollte ja dann eigentlich zum einschalten über bewegungsmelder so laufen, das ich in viessmannapi.0.2050879.0.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue bei auslösung des bewegungsmelders einen zeitplan mit der aktuellen zeit + ne stunde oder so eintrage und wenn keine bewegung mehr, dann einen leeren zeitplan. oder bin ich da jetzt ganz auf dem holzweg?

            nochmal der vollständigkeithalber: zirkulationspumpe steuern geht soweit ganz gut (vitodens 200).

            // schedule zum einschalten, allerdings nur zwischen 6 und 21 uhr
            var pump_on = '{"mon":[{"start":"06:00","end":"21:00","mode":"on","position":0}],"tue":[{"start":"06:00","end":"21:00","mode":"on","position":0}],"wed":[{"start":"06:00","end":"21:00","mode":"on","position":0}],"thu":[{"start":"06:00","end":"21:00","mode":"on","position":0}],"fri":[{"start":"06:00","end":"21:00","mode":"on","position":0}],"sat":[{"start":"06:00","end":"21:00","mode":"on","position":0}],"sun":[{"start":"06:00","end":"21:00","mode":"on","position":0}]}'
            // schedule leeren - pumpe ausschalten
            var pump_off = '{"mon":[], "tue":[],"wed":[],"thu":[],"fri":[],"sat":[],"sun":[]}' 
            
            setState("viessmannapi.0.xxx.features.heating.dhw.pumps.circulation.schedule.commands.setSchedule.setValue", JSON.parse(pump_on)); // oder pump_off
            

            der vorteil das ganze über ein "begrenztes" schedule zu lösen: man muss bei der auswertung eines bewegungsmelders keine zeiten mehr auswerten. wenn der melder nach 21 triggert und das schedule neu gesetzt wird, startet die pumpe eh nicht.

            ich hab gestern ganz wild die schedules hin und her geschaltet und es hat super funktioniert.

            danke für den adapter @tombox

            Hey, da will ich mich mal dran hängen. Ich hatte überlegt, mir einen kippschalter im Bad irgendwo zu platzieren, mit dem ich die Zirkulationspumpe ad hoc starten kann (Use Case: man steht im Bad und will duschen/ das Waschbecken mit WW benutzen). Eigentlich sollte es doch mit dem Skript kein Problem sein:

            • Eine Schaltervariable (bool) in den eigenen Datenpunkten zu setzen, welche von einem Blockly überwacht wird
            • ist die Variable auf true, wird der schedule (pump_on) gesetzt -> die Zirkulation läuft an
            • nach z.B. 5min wird automatisch pump_off gesetzt

            Verstehe ich es richtig, dass mit deinem Skript die Zirkulationspumpe von 6-21 Uhr durch laufen würde, wenn sie nicht wieder deaktiviert wird?

            edit: hab mal ein blockly gebaut

            <xml xmlns="https://developers.google.com/blockly/xml">
              <block type="procedures_defcustomnoreturn" id="C|6p3lu0hRewiE]Z{qnx" x="188" y="88">
                <mutation statements="false"></mutation>
                <field name="NAME">start-zirk</field>
                <field name="SCRIPT">Ly8gc2NoZWR1bGUgenVtIGVpbnNjaGFsdGVuLCBhbGxlcmRpbmdzIG51ciB6d2lzY2hlbiA2IHVuZCAyMSB1aHINCg0KdmFyIHB1bXBfb24gPSAneyJtb24iOlt7InN0YXJ0IjoiMDA6MDAiLCJlbmQiOiIyMzo1OSIsIm1vZGUiOiJvbiIsInBvc2l0aW9uIjowfV0sInR1ZSI6W3sic3RhcnQiOiIwNjowMCIsImVuZCI6IjIxOjAwIiwibW9kZSI6Im9uIiwicG9zaXRpb24iOjB9XSwid2VkIjpbeyJzdGFydCI6IjA2OjAwIiwiZW5kIjoiMjE6MDAiLCJtb2RlIjoib24iLCJwb3NpdGlvbiI6MH1dLCJ0aHUiOlt7InN0YXJ0IjoiMDY6MDAiLCJlbmQiOiIyMTowMCIsIm1vZGUiOiJvbiIsInBvc2l0aW9uIjowfV0sImZyaSI6W3sic3RhcnQiOiIwNjowMCIsImVuZCI6IjIxOjAwIiwibW9kZSI6Im9uIiwicG9zaXRpb24iOjB9XSwic2F0IjpbeyJzdGFydCI6IjA2OjAwIiwiZW5kIjoiMjE6MDAiLCJtb2RlIjoib24iLCJwb3NpdGlvbiI6MH1dLCJzdW4iOlt7InN0YXJ0IjoiMDY6MDAiLCJlbmQiOiIyMTowMCIsIm1vZGUiOiJvbiIsInBvc2l0aW9uIjowfV19Jw0KDQpzZXRTdGF0ZSgidmllc3NtYW5uYXBpLjAuNjQ4NTEuMC5mZWF0dXJlcy5oZWF0aW5nLmRody5wdW1wcy5jaXJjdWxhdGlvbi5zY2hlZHVsZS5jb21tYW5kcy5zZXRTY2hlZHVsZS5zZXRWYWx1ZSIsIEpTT04ucGFyc2UocHVtcF9vbikpOyAvLyBvZGVyIHB1bXBfb2Zm</field>
                <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
              </block>
              <block type="on_ext" id="OrrP|oAEW44xm)#CHi/x" x="563" y="88">
                <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                <field name="CONDITION">ne</field>
                <field name="ACK_CONDITION"></field>
                <value name="OID0">
                  <shadow type="field_oid" id="Vf:2${EvnUSG~})eift%">
                    <field name="oid">0_userdata.0.EigeneDatenpunkte.Heizung.ZirkulationAn</field>
                  </shadow>
                </value>
                <statement name="STATEMENT">
                  <block type="controls_if" id=")wR[o:^O40MXsYo|IaVD">
                    <value name="IF0">
                      <block type="logic_compare" id="vKpLM;XY_RcIGh6,W8}T">
                        <field name="OP">EQ</field>
                        <value name="A">
                          <block type="on_source" id=")fMs4Fcf$,iYXBW!bX,$">
                            <field name="ATTR">state.val</field>
                          </block>
                        </value>
                        <value name="B">
                          <block type="logic_boolean" id="J5ijXAEjpY!7;c[{N/*G">
                            <field name="BOOL">TRUE</field>
                          </block>
                        </value>
                      </block>
                    </value>
                    <statement name="DO0">
                      <block type="procedures_callcustomnoreturn" id="cPECRG/O*H71[C0pKS3W">
                        <mutation name="start-zirk"></mutation>
                        <next>
                          <block type="telegram" id="T9Dc^Salh?]_(:9YeLNs">
                            <field name="INSTANCE"></field>
                            <field name="LOG"></field>
                            <field name="SILENT">FALSE</field>
                            <field name="PARSEMODE">default</field>
                            <field name="DISABLE_WEB_PAGE_PREVIEW">FALSE</field>
                            <value name="MESSAGE">
                              <shadow type="text" id="1_-=OC9}y+2rbxEF,Ps7">
                                <field name="TEXT">Zirkulationspumpe gestartet. 5 Minuten Timeout</field>
                              </shadow>
                            </value>
                            <next>
                              <block type="timeouts_wait" id="^+@b5Hgy=9Kt_8[LpCQ#">
                                <field name="DELAY">5</field>
                                <field name="UNIT">min</field>
                                <next>
                                  <block type="update" id="3`LHXWh~d.hYJhTrvq]*">
                                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                    <field name="OID">0_userdata.0.EigeneDatenpunkte.Heizung.ZirkulationAn</field>
                                    <field name="WITH_DELAY">FALSE</field>
                                    <value name="VALUE">
                                      <block type="logic_boolean" id="ex|rf*=(uRZ~2{=|JWFM">
                                        <field name="BOOL">FALSE</field>
                                      </block>
                                    </value>
                                    <next>
                                      <block type="procedures_callcustomnoreturn" id="/vYJRv|tZ55;~!uax+W3">
                                        <mutation name="stop-zirk"></mutation>
                                        <next>
                                          <block type="telegram" id=":QA|!PHN6C*+Eo6eIfHX">
                                            <field name="INSTANCE"></field>
                                            <field name="LOG"></field>
                                            <field name="SILENT">FALSE</field>
                                            <field name="PARSEMODE">default</field>
                                            <field name="DISABLE_WEB_PAGE_PREVIEW">FALSE</field>
                                            <value name="MESSAGE">
                                              <shadow type="text" id="G!f5)/iMynkY@xR7o@ZR">
                                                <field name="TEXT">Zirkulationspumpe gestoppt.</field>
                                              </shadow>
                                            </value>
                                          </block>
                                        </next>
                                      </block>
                                    </next>
                                  </block>
                                </next>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                    </statement>
                  </block>
                </statement>
              </block>
              <block type="procedures_defcustomnoreturn" id="]0SXN4W+S6mvOy.:^$No" x="188" y="113">
                <mutation statements="false"></mutation>
                <field name="NAME">stop-zirk</field>
                <field name="SCRIPT">Ly8gc2NoZWR1bGUgbGVlcmVuIC0gcHVtcGUgYXVzc2NoYWx0ZW4NCg0KdmFyIHB1bXBfb2ZmID0gJ3sibW9uIjpbXSwgInR1ZSI6W10sIndlZCI6W10sInRodSI6W10sImZyaSI6W10sInNhdCI6W10sInN1biI6W119JyANCg0KIA0KDQpzZXRTdGF0ZSgidmllc3NtYW5uYXBpLjAuNjQ4NTEuMC5mZWF0dXJlcy5oZWF0aW5nLmRody5wdW1wcy5jaXJjdWxhdGlvbi5zY2hlZHVsZS5jb21tYW5kcy5zZXRTY2hlZHVsZS5zZXRWYWx1ZSIsIEpTT04ucGFyc2UocHVtcF9vZmYpKTsgLy8gb2RlciBwdW1wX29mZg==</field>
                <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
              </block>
            </xml>
            

            Danke!
            mading

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

            @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 Antwort Letzte Antwort
            0
            • M m4rgott

              Ich habe die Lösung schon gefunden.
              Ein Konvertierungsblock "JSON nach Objekt" vor den zu schreibenden Wert hat geholfen.

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

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

              M 1 Antwort Letzte Antwort
              0
              • 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
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          708

                                          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