Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [Skript] Atlantic Wärmepumpe über Cozytouch abfragen

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    10
    1
    133

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.4k

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

[Skript] Atlantic Wärmepumpe über Cozytouch abfragen

Geplant Angeheftet Gesperrt Verschoben JavaScript
107 Beiträge 17 Kommentatoren 20.2k Aufrufe 18 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.
  • S Sputnik24

    @oxident
    Danke für das Update des Scripts. Ich bekomme allerdings folgende Fehlermeldung:

    script.js.Home.BwwPCloud: Fehler bei getTokenAPI(): AxiosError: Request failed with status code 500

    O Online
    O Online
    oxident
    schrieb am zuletzt editiert von
    #89

    @sputnik24 Ja, ich leider auch. Die haben leider irgendwas geändert und im Moment funktionieren daher manche Abfragen nicht. Temperatur lesen/setzen sollte aber noch klappen.

    Muss dafür mal die neue App wieder mitsniffen und die neuen "Codes" finden ;-)

    1 Antwort Letzte Antwort
    1
    • S Sputnik24

      @oxident
      Danke für das Update des Scripts. Ich bekomme allerdings folgende Fehlermeldung:

      script.js.Home.BwwPCloud: Fehler bei getTokenAPI(): AxiosError: Request failed with status code 500

      O Online
      O Online
      oxident
      schrieb am zuletzt editiert von
      #90

      @sputnik24... ich sehe gerade, der Wasserverbrauch wird auch in der Cozytouch-App nicht mehr angezeigt. Vielleicht liegt es doch an deren Server. Mal abwarten!

      1 Antwort Letzte Antwort
      0
      • T Offline
        T Offline
        t.maas
        schrieb am zuletzt editiert von
        #91

        @herbert Moin ist eine Atlantic V4 die ist schon auf seiner Liste

        @herbert said in [Skript] Atlantic Wärmepumpe über Cozytouch abfragen:

        @t-maas
        super, dass das läuft. Was hast du denn für eine Anlage?
        Vielleicht kannst du das ja auf github dem Entwickler sagen, dann kann er das in die Liste mit kompatiblen Geräten aufnehmen.
        ... da gibt es übrigens gerade wieder ein Update...

        Moin ist eine Atlantic V4 die ist schon auf seiner Liste

        1 Antwort Letzte Antwort
        0
        • J Offline
          J Offline
          jaskome
          schrieb am zuletzt editiert von
          #92

          @oxident ich habe erst jetzt die cozytouch bridge gekauft und eingerichtet, allerdings bekomme ich nicht wirklich brauchbare Werte. Unter DHWP Actuator habe ich verschiedene states wie io.HeatPumpOperatingTimeState und io.DHWModeState usw. aber keine Werte wie Wassertemperatur. Ich habe auch die response debugged. Also da stehen wirklich nur die Werte über die im Skript iteriert wird um states anzulegen und zu setzen. Wie kriege ich die Wassertemperatur? Die Lufttemperatur am Auslass wäre auch toll. Die lässt sich wahrscheinlich aber nicht abrufen.
          Danke im voraus

          O 1 Antwort Letzte Antwort
          0
          • J jaskome

            @oxident ich habe erst jetzt die cozytouch bridge gekauft und eingerichtet, allerdings bekomme ich nicht wirklich brauchbare Werte. Unter DHWP Actuator habe ich verschiedene states wie io.HeatPumpOperatingTimeState und io.DHWModeState usw. aber keine Werte wie Wassertemperatur. Ich habe auch die response debugged. Also da stehen wirklich nur die Werte über die im Skript iteriert wird um states anzulegen und zu setzen. Wie kriege ich die Wassertemperatur? Die Lufttemperatur am Auslass wäre auch toll. Die lässt sich wahrscheinlich aber nicht abrufen.
            Danke im voraus

            O Online
            O Online
            oxident
            schrieb am zuletzt editiert von oxident
            #93

            @jaskome Im Moment basteln die da seit Wochen schon am Server herum und vieles klappt derzeit nicht (Wasserverbrauch und Boost z.B.)

            Die Wassertemperatur sollte aber im DHWP Actuator-Ordner sichtbar sein!

            Bei mir ist es irgendwas mit "MiddleWaterTemperature".

            Luftauslass wird leider nicht übertragen.

            J 1 Antwort Letzte Antwort
            0
            • O oxident

              @jaskome Im Moment basteln die da seit Wochen schon am Server herum und vieles klappt derzeit nicht (Wasserverbrauch und Boost z.B.)

              Die Wassertemperatur sollte aber im DHWP Actuator-Ordner sichtbar sein!

              Bei mir ist es irgendwas mit "MiddleWaterTemperature".

              Luftauslass wird leider nicht übertragen.

              J Offline
              J Offline
              jung87
              schrieb am zuletzt editiert von
              #94

              @oxident Hallo, habt ihr Momentan auch Probleme soll Werte über den IO Brocker zu ändern. Bekomme die ist Werte wie WW Temp usw noch angezeigt, aber kann nicht mehr ändern bzw. kann den Heizstab nicht mehr einschalten.
              Habe auch noch ein Fehler im Log script.js.Warmwasser.Brauchwasserwärmepumpe: Fehler bei getTokenAPI(): AxiosError: Request failed with status code 503

              Kann mir sagen, was man hier machen kann?

              Gruß

              O K 2 Antworten Letzte Antwort
              0
              • J jung87

                @oxident Hallo, habt ihr Momentan auch Probleme soll Werte über den IO Brocker zu ändern. Bekomme die ist Werte wie WW Temp usw noch angezeigt, aber kann nicht mehr ändern bzw. kann den Heizstab nicht mehr einschalten.
                Habe auch noch ein Fehler im Log script.js.Warmwasser.Brauchwasserwärmepumpe: Fehler bei getTokenAPI(): AxiosError: Request failed with status code 503

                Kann mir sagen, was man hier machen kann?

                Gruß

                O Online
                O Online
                oxident
                schrieb am zuletzt editiert von
                #95

                @jung87 Ja, leider ist das schon seit einiger Zeit sehr wackelig. Ich dachte erst, die lösen das kurzfristig, aber es scheint ein größeres Problem zu sein.
                Kann auch sein, dass sie dabei sind, "externe Abfrager" aktiv herauszuschmeißen. Wieder so ein nerviges "Katz & Maus"-Spiel.

                Tut mir leid, da wird man derzeit nix machen können.

                1 Antwort Letzte Antwort
                0
                • J Offline
                  J Offline
                  j.Zimmermann
                  schrieb am zuletzt editiert von
                  #96

                  Heute wurde meine Evo2 mit 2.Wärmetauscher installiert.
                  Dazu hatte ich mir die Thermor Bridge 2 Cozytouch bei ManoMano für 94,93,- bestellt und war total verblüfft, das fast nichts gesteuert werden kann.
                  Vor Frust "github" und "Austria Evo2" gegoogelt und hier gelandet.
                  Respekt und danke für das sehr ausgiebige Script. Lief auf Anhieb und gibt die wichtigsten Daten aus und dadurch bleibt die Cozytouch doch noch hier.
                  Und wenn die Cosytouch noch mehr beschnitten wird wird die Hardware-Github-Lösung realisiert.
                  Vielen Dank für dein Engagement - Daumen hoch

                  O 1 Antwort Letzte Antwort
                  0
                  • J j.Zimmermann

                    Heute wurde meine Evo2 mit 2.Wärmetauscher installiert.
                    Dazu hatte ich mir die Thermor Bridge 2 Cozytouch bei ManoMano für 94,93,- bestellt und war total verblüfft, das fast nichts gesteuert werden kann.
                    Vor Frust "github" und "Austria Evo2" gegoogelt und hier gelandet.
                    Respekt und danke für das sehr ausgiebige Script. Lief auf Anhieb und gibt die wichtigsten Daten aus und dadurch bleibt die Cozytouch doch noch hier.
                    Und wenn die Cosytouch noch mehr beschnitten wird wird die Hardware-Github-Lösung realisiert.
                    Vielen Dank für dein Engagement - Daumen hoch

                    O Online
                    O Online
                    oxident
                    schrieb am zuletzt editiert von
                    #97

                    @j-zimmermann Danke für die Blumen ;-)
                    Ich kann aber wirklich jedem raten, sich das AquaMQTT-Board anzuschauen. Läuft wirklich super und ist dadurch auch zukunftssicher.

                    Wenn ich mir anschaue, wie krass die Cozytouch-Abfragen mittlerweile sind kann ich nur noch mit dem Kopf schütteln.

                    R 1 Antwort Letzte Antwort
                    0
                    • J Offline
                      J Offline
                      j.Zimmermann
                      schrieb am zuletzt editiert von j.Zimmermann
                      #98

                      Platinen erhalten und bestückt. AquaMQTT läuft bei mir im ioBroker.
                      Habe noch 4 Platinen übrig. Waren aber über 29€ inkl.Porto
                      Wenn jemand Bedarf hat, bitte per PN anschreiben.
                      LG Jörg

                      O M 2 Antworten Letzte Antwort
                      1
                      • J j.Zimmermann

                        Platinen erhalten und bestückt. AquaMQTT läuft bei mir im ioBroker.
                        Habe noch 4 Platinen übrig. Waren aber über 29€ inkl.Porto
                        Wenn jemand Bedarf hat, bitte per PN anschreiben.
                        LG Jörg

                        O Online
                        O Online
                        oxident
                        schrieb am zuletzt editiert von
                        #99

                        Kleiner Hinweis an alle nochmal: Passt beim OTA-Update darauf auf, die SSID wieder zu setzen. Sonst muss man die BWWP erst wieder aufschrauben.

                        Hat mir ein Bekannter erzählt :blush:

                        1 Antwort Letzte Antwort
                        0
                        • O oxident

                          WICHTIG: Derzeit gibt es große Probleme beim Server von Cozytouch. Ich weiß nicht, ob das Skript noch weiterentwickelt wird.
                          Daher rate ich allen, sich https://github.com/tspopp/AquaMQTT anzuschauen. Ist cloudfrei und läuft super!

                          Hallo!

                          Ich habe eine Skript geschrieben, welches die Werte einer Atlantic / Austria Email Brauchwasserwärmepumpe abfragt. Leider habe ich keine Möglichkeit gefunden, direkt mit der Wärmepumpe zu kommunizieren (io-homecontrol -> wie Velux KLF).

                          Daher klappt es nur in Verbindung mit der offiziellen Cozytouch-Bridge des Herstellers. Das Skript simuliert mehr oder weniger die App dieser Bridge.

                          Leider ist das alles sehr "verwurschtelt" da die Abfrage recht komplex ist, aber ich erhalte schon brauchbare Ergebnisse.

                          Bitte im nachfolgenden Skript Eure Zugangsdaten aus der App eintragen und einfach mal testen.

                          Folgendes müsstet Ihr anpassen:
                          username / password
                          dpRoot: Hier wird der Gerätebaum erstellt
                          dpSetTemp: Dies ist der DP mit dem ihr die Zieltemperatur vorgebt (also bitte selber anlegen)

                          Beim ersten Aufruf wird es noch Warnungen hageln. Das legt sich dann aber.

                          Da die Datenpunkte größtenteils generisch angelegt werden müsst ihr euch mal etwas durchkämpfen und brauchbare Details für euch selber herausfinden.

                          Oder aber hier nachfragen ;-)

                          UPDATE 25.05.2024: Axios anstelle Request verwenden - dadurch keine Warnungen mehr im Log

                          UPDATE 16.04.2024: Der Datenpunkt für die WW-Solltemperatur (standardmäßig 0_userdata.0.WW-Waermepumpe.WarmwasserSoll) wurde nicht angelegt.

                          UPDATE 28.10.2023: Es werden jetzt manche Datenpunkte auch mit den richtigen Einheiten angelegt. Das klappt aber leider nur, wenn die Datenpunkte noch nicht vorhanden sind. Im Zweifelsfall also bitte alle DP löschen und das Skript neustarten.

                          Bugs/Hinweise:

                          • Der für viele sicherlich interessante Datenpunkt core:V40WaterVolumeEstimationState (geschätzter Gesamtverbrauch Warmwasser in Liter) läuft bei 65536 über, d.h. er fängt dann wieder bei 0 an. Dies kann man aber abfangen, in dem man SourceAnalytix zur Auswertung mit Reset-Erkennung verwendet.
                          • Die PV-Überschussfunktion, also das manuelle Starten und Stoppen der Wärmepumpe, kann derzeit nicht via Skript gesteuert werden. Hier behelfe ich mir mit einem Shelly an dem SGReady-Kontakt. Der Heizstab kann jedoch mit dem Datenpunkt DHWBoostFull gesteuert werden.
                          • Für den aktuellen Stromverbrauch sind die DP io:PowerHeatElectricalState und io:PowerHeatPumpState interessant. Sie liefern den aktuellen Verbrauch in Watt. Der DP core:ElectricEnergyConsumptionState hingegen liefert den Gesamtverbrauch in Wh.
                          const dpRoot = "0_userdata.0.Atlantic";
                          const dpSetTemp = "0_userdata.0.WW-Waermepumpe.WarmwasserSoll";
                          const interval = 120; //sec
                          
                          
                          const username = "eMail-Adresse";
                          const password = "KENNWORT";
                          
                          // ------------- AB HIER NICHTS ÄNDERN ---------------- //
                          // v2.0 - Migration von Request zu Axios
                          // v1.0 - erstes Release
                          
                          const client_id = "ZThEMW5BM2h2djF0bmMxTXBvQTdHNXVENDZBYTo3aktaS1N3ZlVJNGRvaDdqRWZJVWRzR2VHNWth";
                          const client_id_api = "alkxU3pBcnYwdWk3cW91OVVGTHRyOFVTNmUwYTpjWkFmYVlMNzVfYTlfcThlMGI4Unk4akU4eWdh"; // Wasserverbrauch (Token)
                          const scope = "openid";
                          const grant_type = "password";
                          const token_url = "https://apis.groupe-atlantic.com/token";
                          const jwt_url = "https://apis.groupe-atlantic.com/magellan/accounts/jwt";
                          const overkiz_url = "https://ha110-1.overkiz.com/enduser-mobile-web/enduserAPI/";
                          
                          const atlantic_url = "https://apigam.groupe-atlantic.com:8243"; // Wasserverbrauch (über JWT)
                          
                          var access_token = "";
                          var access_token_api = ""; // Wasserverbrauch
                          var refresh_token = "";
                          
                          var id_token = "";
                          var token_type = "";
                          var expires_in = -1;
                          
                          var jwt = "";
                          var jwt_overkiz = "";
                          var session_cookie = "";
                          
                          var tokenRefreshTimer;
                          
                          var DHWP_URL = "";
                          
                          const axios = require('axios');
                          
                          function getToken() {
                           
                                  createState(dpRoot + ".info.connection", 
                                              false, 
                                              {read: true, write: false,  type: "boolean", role: "indicator", def: false});
                          
                          
                                  axios.post(token_url, {
                                      scope: scope,
                                      username: "GA-PRIVATEPERSON/" + username,
                                      password: password,
                                      grant_type: grant_type
                                  }, {
                                      headers: { 
                                          "Authorization" : "Basic " + client_id,
                                          "Content-Type": "application/x-www-form-urlencoded"
                                          },
                                  })
                                      .then(function (response) {
                                          if(response.status==200) {
                                              var jsonObject = response.data;
                                              access_token = jsonObject.access_token;
                                              refresh_token = jsonObject.refresh_token;
                                              id_token = jsonObject.id_token;
                                              expires_in = parseInt(jsonObject.expires_in);
                                              session_cookie = "";
                                              jwt = "";
                                              //log(access_token);
                                              getJWT(); // -------->
                                          } else {
                                              // Error!
                                              access_token = "";
                                              refresh_token = "";
                                              id_token = "";
                                              expires_in = -1;
                                              jwt = "";
                                              session_cookie = "";
                                              log("Fehler bei getToken(): " + error);
                                              setState(dpRoot + ".info.connection", false, true);
                                          }
                                      })
                                      .catch(function (error) {
                                          // Error!
                                              access_token = "";
                                              refresh_token = "";
                                              id_token = "";
                                              expires_in = -1;
                                              jwt = "";
                                              session_cookie = "";
                                              log("Fehler bei getToken(): " + error);
                                              setState(dpRoot + ".info.connection", false, true);
                                      });
                                  
                                  
                           
                          }
                          
                          function getTokenApi() {
                                  // Wasserverbrauch
                                  axios.post(atlantic_url + "/token", {
                                      grant_type: "client_credentials"
                                  }, {
                                      headers: { 
                                          "Authorization" : "Basic " +  client_id_api,
                                          "Content-Type": "application/x-www-form-urlencoded"
                                          },
                                  })
                          
                                      .then(function (response) {
                                          if(response.status==200) {
                                              var jsonObject = response.data;
                                              access_token_api = jsonObject.access_token;
                                              getJWTOverkiz(); // -------->
                                          } else {
                                              // Error!
                                              access_token = "";
                                              refresh_token = "";
                                              id_token = "";
                                              expires_in = -1;
                                              jwt = "";
                                              session_cookie = "";
                                              log("Fehler bei getTokenAPI(): " + response.status);
                                              setState(dpRoot + ".info.connection", false, true);
                                          }
                                      })
                                      .catch(function (error) {
                                              // Error!
                                              access_token = "";
                                              refresh_token = "";
                                              id_token = "";
                                              expires_in = -1;
                                              jwt = "";
                                              session_cookie = "";
                                              log("Fehler bei getTokenAPI(): " + error);
                                              setState(dpRoot + ".info.connection", false, true);
                                      });
                          }
                          
                          function getJWT() {
                          
                                  axios.get(jwt_url, {
                                      headers: { 
                                          "Authorization" : "Bearer " + access_token,
                                          "Content-Type": "application/json"
                                          },
                                  })
                          
                                      .then(function (response) {
                                          if(response.status==200) {
                                              //log(response);
                                              jwt = response.data.replace('"', '');
                                              //log(jwt);
                                              getSessionCookie(); // ------>
                                          } else {
                                              // Error!
                                              access_token = "";
                                              refresh_token = "";
                                              id_token = "";
                                              expires_in = -1;
                                              jwt = "";
                                              session_cookie = "";
                                              log("Fehler bei getJWT(): " + response.status);
                                              setState(dpRoot + ".info.connection", false, true);
                                          }
                                      })
                                      .catch(function (error) {
                                              // Error!
                                              access_token = "";
                                              refresh_token = "";
                                              id_token = "";
                                              expires_in = -1;
                                              jwt = "";
                                              session_cookie = "";
                                              log("Fehler bei getJWT(): " + error);
                                              setState(dpRoot + ".info.connection", false, true);
                                      });
                           
                          }
                          
                          function getSessionCookie() {
                                  axios.post(overkiz_url + "login", {
                                      'jwt': jwt
                                      }, {
                                      headers: { 
                                          "charset": "UTF-8",
                                          "User-Agent": "Cozytouch/3 CFNetwork/1335.0.3 Darwin/21.6.0",
                                          "Content-Type": "application/x-www-form-urlencoded"
                                          },
                                  })
                          
                                      .then(function (response) {
                                          if(response.status==200) {
                          
                                              session_cookie = response.headers["set-cookie"][0];
                                              //log(session_cookie);
                                              session_cookie = session_cookie.substring(session_cookie.indexOf("JSESSIONID")+11);
                                              session_cookie = session_cookie.substring(0, session_cookie.indexOf(";"));
                          
                                              
                          
                                              if(session_cookie!="") {
                                                  refreshStates(); // -------->
                                              } else {
                                                  // Error!
                                                  log("Fehler bei getSessionCookie() - Cookie leer");
                                                  access_token = "";
                                                  refresh_token = "";
                                                  id_token = "";
                                                  expires_in = -1;
                                                  jwt = "";
                                                  session_cookie = "";
                                              }
                                              
                                          } else {
                                              // Error!
                                              access_token = "";
                                              refresh_token = "";
                                              id_token = "";
                                              expires_in = -1;
                                              jwt = "";
                                              session_cookie = "";
                                              log("Fehler bei getSessionCookie(): " + response.status);
                                              setState(dpRoot + ".info.connection", false, true);
                                          }
                                      })
                                      .catch(function (error) {
                                              // Error!
                                              access_token = "";
                                              refresh_token = "";
                                              id_token = "";
                                              expires_in = -1;
                                              jwt = "";
                                              session_cookie = "";
                                              log("Fehler bei getSessionCookie(): " + error);
                                              setState(dpRoot + ".info.connection", false, true);
                                      });
                              
                                 
                                  
                           
                          }
                          
                          function refreshStates() {
                          
                              axios.post(overkiz_url + "setup/devices/states/refresh", 
                                  null, 
                                  {
                                      headers: { 
                                          'Cookie': "JSESSIONID=" + session_cookie,
                                          "Content-Type": "application/json",
                                          "User-Agent": "Cozytouch/3 CFNetwork/1335.0.3 Darwin/21.6.0"
                                      }
                                  })
                          
                                      .then(function (response) {
                                          if(response.status==200) {
                                              getSetup(); // -------->
                                          } else {
                                              // Error!
                                              access_token = "";
                                              refresh_token = "";
                                              id_token = "";
                                              expires_in = -1;
                                              jwt = "";
                                              session_cookie = "";
                                              log("Fehler bei getTokenAPI(): " + response.status);
                                              setState(dpRoot + ".info.connection", false, true);
                                          }
                                      })
                                      .catch(function (error) {
                                              // Error!
                                              access_token = "";
                                              refresh_token = "";
                                              id_token = "";
                                              expires_in = -1;
                                              jwt = "";
                                              session_cookie = "";
                                              log("Fehler bei getTokenAPI(): " + error);
                                              setState(dpRoot + ".info.connection", false, true);
                                      });
                          
                          
                              
                           
                          }
                          
                          function getSetup() {
                           
                                  axios.get(overkiz_url + "setup", {
                                      headers: { 
                                          "Cookie" : "JSESSIONID=" + session_cookie,
                                          "Content-Type": "application/json"
                                          },
                                  })
                          
                                      .then(function (response) {
                                          if(response.status==200) {
                                              //log(response.data);
                                              //log("getSetup ok");
                                              if(getState(dpRoot + ".debug").val) setState(dpRoot + ".rawJson", response.data, true);
                                              enumStates(response.data); 
                                              getTokenApi(); // ------>
                          
                                          } else {
                                              // Error!
                                              access_token = "";
                                              refresh_token = "";
                                              id_token = "";
                                              expires_in = -1;
                                              jwt = "";
                                              session_cookie = "";
                                              log("Fehler bei getSetup(): " + response.status);
                                              setState(dpRoot + ".info.connection", false, true);
                                          }
                                      })
                                      .catch(function (error) {
                                              // Error!
                                              access_token = "";
                                              refresh_token = "";
                                              id_token = "";
                                              expires_in = -1;
                                              jwt = "";
                                              session_cookie = "";
                                              log("Fehler bei getSetup(): " + error);
                                              setState(dpRoot + ".info.connection", false, true);
                                      });
                              
                                 
                           
                          }
                          
                          function enumStates(devTree) {
                              
                              
                          
                              for(var iDev = 0; iDev < devTree["devices"].length; iDev++) {
                                  
                                  createState(dpRoot + "." + iDev, {name: devTree["devices"][iDev].label, type: "channel"});
                          
                                  createState(dpRoot + "." + iDev + ".enabled", 
                                              devTree["devices"][iDev].enabled, 
                                              {read: true, write: false,  type: "boolean", role: "state", name: devTree["devices"][iDev].label + " enabled", def: false});
                                  setState(dpRoot + "." + iDev + ".enabled", devTree["devices"][iDev].enabled, true);
                          
                                  createState(dpRoot + "." + iDev + ".available", 
                                              devTree["devices"][iDev].available, 
                                              {read: true, write: false,  type: "boolean", role: "state", name: devTree["devices"][iDev].label + " available", def: false});
                                  setState(dpRoot + "." + iDev + ".available", devTree["devices"][iDev].available, true);
                          
                                  createState(dpRoot + "." + iDev + ".oid", 
                                              devTree["devices"][iDev].oid, 
                                              {read: true, write: false,  type: "string", role: "state", name: devTree["devices"][iDev].label + " oid", def: ""});
                                  setState(dpRoot + "." + iDev + ".oid", devTree["devices"][iDev].oid, true);
                          
                                  createState(dpRoot + "." + iDev + ".url", 
                                              devTree["devices"][iDev].deviceURL, 
                                              {read: true, write: false,  type: "string", role: "state", name: devTree["devices"][iDev].label + " URL", def: ""});
                                  setState(dpRoot + "." + iDev + ".url", devTree["devices"][iDev].deviceURL, true);
                          
                                  createState(dpRoot + "." + iDev + ".uiClass", 
                                              devTree["devices"][iDev].uiClass, 
                                              {read: true, write: false,  type: "string", role: "state", name: devTree["devices"][iDev].label + " uiClass", def: ""});
                                  setState(dpRoot + "." + iDev + ".uiClass", devTree["devices"][iDev].uiClass, true);
                          
                                  if(devTree["devices"][iDev].uiClass=="WaterHeatingSystem") {
                                      DHWP_URL = devTree["devices"][iDev].deviceURL;
                                  }
                          
                                  
                                  
                                  if (typeof devTree["devices"][iDev].states != "undefined") {
                                      createState(dpRoot + "." + iDev + ".states", {type: "channel"});
                          
                                      for(var iDevState = 0; iDevState < devTree["devices"][iDev].states.length; iDevState++) {
                          
                                          if((devTree["devices"][iDev].states[iDevState].type == "1") || (devTree["devices"][iDev].states[iDevState].type == "2") || (devTree["devices"][iDev].states[iDevState].type == "3")) {
                                              createDHWPstate(dpRoot + "." + iDev + ".states." + devTree["devices"][iDev].states[iDevState].name, devTree["devices"][iDev].states[iDevState].value, devTree["devices"][iDev].states[iDevState].type);
                                              setState(dpRoot + "." + iDev + ".states." + devTree["devices"][iDev].states[iDevState].name, devTree["devices"][iDev].states[iDevState].value, true);
                                          }
                          
                          
                                      }
                                  }
                                  
                          
                              }
                               setState(dpRoot + ".info.connection", true, true);
                               
                          }
                          
                          function getJWTOverkiz() {
                                  axios.post(overkiz_url + "enduser/jwt/createToken", 
                                  null, 
                                  {
                                      headers: { 
                                          'Cookie': "JSESSIONID=" + session_cookie,
                                          "Content-Type": "application/json",
                                          "User-Agent": "Cozytouch/3 CFNetwork/1335.0.3 Darwin/21.6.0"
                                      }
                                  })
                          
                                      .then(function (response) {
                                          if(response.status==200) {
                                              jwt_overkiz = response.data.jwt;
                                              if(jwt_overkiz!="") {
                                                  //log("jwt overkiz ok");
                                                  getWaterConsumption();
                                                  // -------->
                                              } else {
                                                  // Error!
                                                  access_token = "";
                                                  refresh_token = "";
                                                  id_token = "";
                                                  expires_in = -1;
                                                  jwt = "";
                                                  session_cookie = "";
                                                  jwt_overkiz = "";
                                              }
                                          } else {
                                              // Error!
                                              access_token = "";
                                              refresh_token = "";
                                              id_token = "";
                                              expires_in = -1;
                                              jwt = "";
                                              session_cookie = "";
                                              log("Fehler bei getJWTOverkiz(): " + response.status);
                                              setState(dpRoot + ".info.connection", false, true);
                                          }
                                      })
                                      .catch(function (error) {
                                              // Error!
                                              access_token = "";
                                              refresh_token = "";
                                              id_token = "";
                                              expires_in = -1;
                                              jwt = "";
                                              session_cookie = "";
                                              log("Fehler bei getJWTOverkiz(): " + error);
                                              setState(dpRoot + ".info.connection", false, true);
                                      });
                              
                           
                          }
                          
                          function getWaterConsumption() {
                          
                                  axios.post(atlantic_url + "/gam/wcfservice/devicedhwrest/GetWaterConsumption", 
                                  {
                                      'frequency': 1,
                                      'deviceURL': DHWP_URL.replace("/", "\/"),
                                      'jwtToken': jwt_overkiz
                                  }, 
                                  {
                                      headers: { 
                                          "Content-Type": "application/json",
                                          "User-Agent": "Cozytouch/3 CFNetwork/1335.0.3 Darwin/21.6.0",
                                          "Authorization" : "Bearer " + access_token_api,
                                          "Locale": "de_DE",
                                          //"UniqId": "648C91F2-CA6E-4870-AB47-40FF4A3C1D12",
                                          "UniqId": CreateGuid(),
                                          "Gfcuid": 3005,
                                          "Userid": username,
                                          "Platform": "ios 3.5.1 (3)"
                                      }
                                  })
                          
                                      .then(function (response) {
                                          if(response.status==200) {
                                              createState(dpRoot + ".consumption.current", 
                                                  response.data.waterConsumptionDetail[response.data.waterConsumptionDetail.length-1].litersConsumed, 
                                                  {read: true, write: false,  type: "number", role: "state", name: " Water consumption today", unit: "l", def: 0});
                                              setState(dpRoot + ".consumption.current", response.data.waterConsumptionDetail[response.data.waterConsumptionDetail.length-1].litersConsumed, true);
                          
                                              createState(dpRoot + ".consumption.previous", 
                                                  response.data.waterConsumptionDetail[response.data.waterConsumptionDetail.length-2].litersConsumed, 
                                                  {read: true, write: false,  type: "number", role: "state", name: " Water consumption yesterday", unit: "l", def: 0});
                                              setState(dpRoot + ".consumption.previous", response.data.waterConsumptionDetail[response.data.waterConsumptionDetail.length-2].litersConsumed, true);
                                                  
                                                  if(!getState(dpSetTemp).ack) {
                                                      setTemperature(getState(dpSetTemp).val);
                                                  }
                          
                                                  if(!getState(dpRoot + ".DHWMode").ack) {
                                                      setDHWMode();
                                                  }
                          
                          
                                                  if(!getState(dpRoot + ".DHWSchedule").ack) {
                                                      setDHWSchedule();
                                                  }
                          
                                                  if(getState(dpRoot + ".fetchHistory").val) {
                                                      getHistory();
                                                  }
                                          } else {
                                              // Error!
                                              access_token = "";
                                              refresh_token = "";
                                              id_token = "";
                                              expires_in = -1;
                                              jwt = "";
                                              session_cookie = "";
                                              log("Fehler bei getWaterConsumption(): " + response.status);
                                              setState(dpRoot + ".info.connection", false, true);
                                          }
                                      })
                                      .catch(function (error) {
                                              // Error!
                                              access_token = "";
                                              refresh_token = "";
                                              id_token = "";
                                              expires_in = -1;
                                              jwt = "";
                                              session_cookie = "";
                                              log("Fehler bei getWaterConsumption(): " + error);
                                              setState(dpRoot + ".info.connection", false, true);
                                      });
                           
                          }
                          
                          function setTemperature(setTemp) {
                                  axios.post(overkiz_url + "exec/apply",
                                      {
                                          "label" : "Cozytouch iOS: 3.5.1 (3)",
                                          "actions" : [
                                          {
                                              "commands" : [
                                                  {
                                                  "name" : "setTargetTemperature",
                                                  "parameters" : [
                                                      setTemp
                                                  ]
                                                  }
                                              ],
                                          "deviceURL" : DHWP_URL.replace("/", "\/")
                                          }
                                          ]
                                      }, 
                                      {
                                          headers: { 
                                              "Cookie" : "JSESSIONID=" + session_cookie,
                                              "Content-Type": "application/json",
                                              "User-Agent": "Cozytouch/3 CFNetwork/1335.0.3 Darwin/21.6.0"
                                          }
                                      })
                              
                                      .then(function (response) {
                                              if(response.status==200) {
                                                  if(response.data.execId!="") {
                                                      setState(dpSetTemp, setTemp, true);
                                                  } else {
                                                      // Error!
                                                      log("Fehler bei setTemperature()");
                                                      access_token = "";
                                                      refresh_token = "";
                                                      id_token = "";
                                                      expires_in = -1;
                                                      jwt = "";
                                                      session_cookie = "";
                                                      jwt_overkiz = "";
                                                      
                                                  }
                                              } else {
                                                   // Error!
                                                      log("Fehler bei setTemperature()");
                                                      access_token = "";
                                                      refresh_token = "";
                                                      id_token = "";
                                                      expires_in = -1;
                                                      jwt = "";
                                                      session_cookie = "";
                                                      jwt_overkiz = "";
                                              }
                                          })
                                          .catch(function (error) {
                                                  // Error!
                                                  log("Fehler bei setTemperature()");
                                                  access_token = "";
                                                  refresh_token = "";
                                                  id_token = "";
                                                  expires_in = -1;
                                                  jwt = "";
                                                  session_cookie = "";
                                                  jwt_overkiz = "";
                                          });
                          }
                          
                          function setDHWMode() {
                           
                              /*
                              "autoMode",
                          	"manualEcoActive",
                          	"manualEcoInactive"
                              */
                          
                              axios.post(overkiz_url + "exec/apply",
                                      {
                                          "label" : "Cozytouch iOS: 3.5.1 (3)",
                                          "actions" : [
                                          {
                                              "commands" : [
                                                  {
                                                  "name" : "setDHWMode",
                                                  "parameters" : [
                                                      getState(dpRoot + ".DHWMode").val
                                                  ]
                                                  }
                                              ],
                                          "deviceURL" : DHWP_URL.replace("/", "\/")
                                          }
                                          ]
                                      }, 
                                      {
                                          headers: { 
                                              "Cookie" : "JSESSIONID=" + session_cookie,
                                              "Content-Type": "application/json",
                                              "User-Agent": "Cozytouch/3 CFNetwork/1335.0.3 Darwin/21.6.0"
                                          }
                                      })
                              
                                      .then(function (response) {
                                              if(response.status==200) {
                                                  if(response.data.execId!="") {
                                                      setState(dpRoot + ".DHWMode", getState(dpRoot + ".DHWMode").val, true);
                                                  } else {
                                                      // Error!
                                                      log("Fehler bei setDHWMode()");
                                                      access_token = "";
                                                      refresh_token = "";
                                                      id_token = "";
                                                      expires_in = -1;
                                                      jwt = "";
                                                      session_cookie = "";
                                                      jwt_overkiz = "";
                                                      
                                                  }
                                              } else {
                                                   // Error!
                                                      log("Fehler bei setDHWMode()");
                                                      access_token = "";
                                                      refresh_token = "";
                                                      id_token = "";
                                                      expires_in = -1;
                                                      jwt = "";
                                                      session_cookie = "";
                                                      jwt_overkiz = "";
                                              }
                                          })
                                          .catch(function (error) {
                                                      log("Fehler bei setDHWMode()");
                                                      access_token = "";
                                                      refresh_token = "";
                                                      id_token = "";
                                                      expires_in = -1;
                                                      jwt = "";
                                                      session_cookie = "";
                                                      jwt_overkiz = "";
                                          });
                           
                          }
                          
                          function setDHWSchedule() {
                           
                              /*
                              "pac24h_elec24h",
                          	"pacProg_elecProg"
                              */
                          
                              axios.post(overkiz_url + "exec/apply",
                                      {
                                          "label" : "Cozytouch iOS: 3.5.1 (3)",
                                          "actions" : [
                                          {
                                              "commands" : [
                                                  {
                                                  "name" : "setOperatingRange",
                                                  "parameters" : [
                                                      getState(dpRoot + ".DHWSchedule").val
                                                  ]
                                                  }
                                              ],
                                          "deviceURL" : DHWP_URL.replace("/", "\/")
                                          }
                                          ]
                                      }, 
                                      {
                                          headers: { 
                                              "Cookie" : "JSESSIONID=" + session_cookie,
                                              "Content-Type": "application/json",
                                              "User-Agent": "Cozytouch/3 CFNetwork/1335.0.3 Darwin/21.6.0"
                                          }
                                      })
                              
                                      .then(function (response) {
                                              if(response.status==200) {
                                                  if(response.data.execId!="") {
                                                      setState(dpRoot + ".DHWSchedule", getState(dpRoot + ".DHWSchedule").val, true);
                                                  } else {
                                                      // Error!
                                                      log("Fehler bei setDHWSchedule()");
                                                      access_token = "";
                                                      refresh_token = "";
                                                      id_token = "";
                                                      expires_in = -1;
                                                      jwt = "";
                                                      session_cookie = "";
                                                      jwt_overkiz = "";
                                                      
                                                  }
                                              } else {
                                                   // Error!
                                                      log("Fehler bei setDHWSchedule()");
                                                      access_token = "";
                                                      refresh_token = "";
                                                      id_token = "";
                                                      expires_in = -1;
                                                      jwt = "";
                                                      session_cookie = "";
                                                      jwt_overkiz = "";
                                              }
                                          })
                                          .catch(function (error) {
                                                      // Error!
                                                      log("Fehler bei setDHWSchedule()");
                                                      access_token = "";
                                                      refresh_token = "";
                                                      id_token = "";
                                                      expires_in = -1;
                                                      jwt = "";
                                                      session_cookie = "";
                                                      jwt_overkiz = "";
                                          });
                           
                          }
                          
                          function setDHWBooster() {
                          
                                  var boostDuration = 0;
                          
                                  if(getState(dpRoot + ".DHWBoostFull").val) {
                                      boostDuration = 2;
                                  }
                                  else {
                                      setOperatingMode(false, false);
                                      return; 
                                  }
                          
                                  axios.post(overkiz_url + "exec/apply",
                                      {
                                          "label" : "Cozytouch iOS: 3.5.1 (3)",
                                          "actions" : [
                                          {
                                              "commands" : [
                                                  {
                                                  "name" : "setBoostModeDuration",
                                                  "parameters" : [
                                                      boostDuration
                                                  ]
                                                  }
                                              ],
                                          "deviceURL" : DHWP_URL.replace("/", "\/")
                                          }
                                          ]
                                      }, 
                                      {
                                          headers: { 
                                              "Cookie" : "JSESSIONID=" + session_cookie,
                                              "Content-Type": "application/json",
                                              "User-Agent": "Cozytouch/3 CFNetwork/1335.0.3 Darwin/21.6.0"
                                          }
                                      })
                              
                                      .then(function (response) {
                                              if(response.status==200) {
                                                  if(response.data.execId!="") {
                                                      sleep(3000);
                                                      setOperatingMode(true, false);
                                                      
                                                      sleep(3000);
                                                      refreshBooster();
                                                      // -------->
                                                  } else {
                                                      // Error!
                                                      log("Fehler bei setDHWBooster()");
                                                      access_token = "";
                                                      refresh_token = "";
                                                      id_token = "";
                                                      expires_in = -1;
                                                      jwt = "";
                                                      session_cookie = "";
                                                      jwt_overkiz = "";
                                                      
                                                  }
                                              } else {
                                                   // Error!
                                                      log("Fehler bei setDHWBooster()");
                                                      access_token = "";
                                                      refresh_token = "";
                                                      id_token = "";
                                                      expires_in = -1;
                                                      jwt = "";
                                                      session_cookie = "";
                                                      jwt_overkiz = "";
                                              }
                                          })
                                          .catch(function (error) {
                                                      // Error!
                                                      log("Fehler bei setDHWBooster()");
                                                      access_token = "";
                                                      refresh_token = "";
                                                      id_token = "";
                                                      expires_in = -1;
                                                      jwt = "";
                                                      session_cookie = "";
                                                      jwt_overkiz = "";
                                          });
                           
                          }
                          
                          function refreshBooster() {
                           
                                  
                                  axios.post(overkiz_url + "exec/apply",
                                      {
                                          "label" : "Cozytouch iOS: 3.5.1 (3)",
                                          "actions" : [
                                          {
                                              "commands" : [
                                                  {
                                                  "name" : "refreshBoostModeDuration",
                                                  "parameters" : []
                                                  }
                                              ],
                                          "deviceURL" : DHWP_URL.replace("/", "\/")
                                          }
                                          ]
                                      }, 
                                      {
                                          headers: { 
                                              "Cookie" : "JSESSIONID=" + session_cookie,
                                              "Content-Type": "application/json",
                                              "User-Agent": "Cozytouch/3 CFNetwork/1335.0.3 Darwin/21.6.0"
                                          }
                                      })
                          
                                 .then(function (response) {
                                              if(response.status==200) {
                                                  if(response.data.execId!="") {
                                                      
                                                      // -------->
                                                  } else {
                                                      // Error!
                                                      log("Fehler bei refreshBooster()");
                                                      access_token = "";
                                                      refresh_token = "";
                                                      id_token = "";
                                                      expires_in = -1;
                                                      jwt = "";
                                                      session_cookie = "";
                                                      jwt_overkiz = "";
                                                      
                                                  }
                                              } else {
                                                   // Error!
                                                      log("Fehler bei refreshBooster()");
                                                      access_token = "";
                                                      refresh_token = "";
                                                      id_token = "";
                                                      expires_in = -1;
                                                      jwt = "";
                                                      session_cookie = "";
                                                      jwt_overkiz = "";
                                              }
                                          })
                                          .catch(function (error) {
                                                      // Error!
                                                      log("Fehler bei refreshBooster()");
                                                      access_token = "";
                                                      refresh_token = "";
                                                      id_token = "";
                                                      expires_in = -1;
                                                      jwt = "";
                                                      session_cookie = "";
                                                      jwt_overkiz = "";
                                          });
                           
                          }
                          
                          
                          function setOperatingMode(relaunch, absence) {
                           
                              
                                  
                                  
                                  var sRelaunch;
                                  var sAbsence;
                          
                                  if(relaunch) {
                                      sRelaunch = "on";
                                  } else {
                                      sRelaunch = "off";
                                  }
                          
                                  if(absence) {
                                      sAbsence = "on";
                                  } else {
                                      sAbsence = "off";
                                  }
                                  
                                  axios.post(overkiz_url + "exec/apply",
                                      {
                                          "label" : "Cozytouch iOS: 3.5.1 (3)",
                                          "actions" : [
                                          {
                                              "commands" : [
                                                  {
                                                  "name" : "setCurrentOperatingMode",
                                                  "parameters" : [
                                                      {
                                                          "relaunch": sRelaunch,
                          							    "absence": sAbsence
                                                      }
                                                  ]
                                                  }
                                              ],
                                          "deviceURL" : DHWP_URL.replace("/", "\/")
                                          }
                                          ]
                                      }, 
                                      {
                                          headers: { 
                                              "Cookie" : "JSESSIONID=" + session_cookie,
                                              "Content-Type": "application/json",
                                              "User-Agent": "Cozytouch/3 CFNetwork/1335.0.3 Darwin/21.6.0"
                                          }
                                      })
                          
                                 .then(function (response) {
                                              if(response.status==200) {
                                                  if(response.data.execId!="") {
                                                      setState(dpRoot + ".DHWBoostFull", getState(dpRoot + ".DHWBoostFull").val, true);
                                                      sleep(3000);
                                                      refreshBooster();
                                                      // -------->
                                                  } else {
                                                      // Error!
                                                      log("Fehler bei setOperatingMode()");
                                                      access_token = "";
                                                      refresh_token = "";
                                                      id_token = "";
                                                      expires_in = -1;
                                                      jwt = "";
                                                      session_cookie = "";
                                                      jwt_overkiz = "";
                                                      
                                                  }
                                              } else {
                                                   // Error!
                                                      log("Fehler bei setOperatingMode()");
                                                      access_token = "";
                                                      refresh_token = "";
                                                      id_token = "";
                                                      expires_in = -1;
                                                      jwt = "";
                                                      session_cookie = "";
                                                      jwt_overkiz = "";
                                              }
                                          })
                                          .catch(function (error) {
                                                      // Error!
                                                      log("Fehler bei setOperatingMode()");
                                                      access_token = "";
                                                      refresh_token = "";
                                                      id_token = "";
                                                      expires_in = -1;
                                                      jwt = "";
                                                      session_cookie = "";
                                                      jwt_overkiz = "";
                                          });
                           
                          }
                          
                          
                          function execOverkizCmd(cmd) {
                           
                              
                                  
                                  axios.post(overkiz_url + "exec/apply",
                                      {
                                          "label" : "Cozytouch iOS: 3.5.1 (3)",
                                          "actions" : [
                                          {
                                              "commands" : [
                                                  {
                                                  "name" : cmd
                                                  }
                                              ],
                                          "deviceURL" : DHWP_URL.replace("/", "\/")
                                          }
                                          ]
                                      }, 
                                      {
                                          headers: { 
                                              "Cookie" : "JSESSIONID=" + session_cookie,
                                              "Content-Type": "application/json",
                                              "User-Agent": "Cozytouch/3 CFNetwork/1335.0.3 Darwin/21.6.0"
                                          }
                                      })
                          
                                 .then(function (response) {
                                              if(response.status==200) {
                                                  if(response.data.execId!="") {
                                                      if(cmd=="refreshWaterConsumption") getWaterConsumption(); // ------>
                                                  } else {
                                                      // Error!
                                                      log("Fehler bei execOverkizCmd(" + cmd + ")");
                                                      access_token = "";
                                                      refresh_token = "";
                                                      id_token = "";
                                                      expires_in = -1;
                                                      jwt = "";
                                                      session_cookie = "";
                                                      jwt_overkiz = "";
                                                      
                                                  }
                                              } else {
                                                   // Error!
                                                      log("Fehler bei execOverkizCmd(" + cmd + ")");
                                                      access_token = "";
                                                      refresh_token = "";
                                                      id_token = "";
                                                      expires_in = -1;
                                                      jwt = "";
                                                      session_cookie = "";
                                                      jwt_overkiz = "";
                                              }
                                          })
                                          .catch(function (error) {
                                                      // Error!
                                                      log("Fehler bei execOverkizCmd(" + cmd + ")");
                                                      access_token = "";
                                                      refresh_token = "";
                                                      id_token = "";
                                                      expires_in = -1;
                                                      jwt = "";
                                                      session_cookie = "";
                                                      jwt_overkiz = "";
                                          });
                           
                          }
                          
                          function getHistory() {
                           
                                  axios.get(overkiz_url + "history", {
                                      headers: { 
                                          "Cookie" : "JSESSIONID=" + session_cookie,
                                          "Content-Type": "application/json",
                                          "User-Agent": "Cozytouch/3 CFNetwork/1335.0.3 Darwin/21.6.0"
                                          },
                                  })
                          
                                      .then(function (response) {
                                          if(response.status==200) {
                                              setState(dpRoot + ".HistoryJson", response.data, true);
                                              setState(dpRoot + ".fetchHistory", false, true);
                                          } else {
                                              // Error!
                                              access_token = "";
                                              refresh_token = "";
                                              id_token = "";
                                              expires_in = -1;
                                              jwt = "";
                                              session_cookie = "";
                                              log("Fehler bei getHistory(): " + response.status);
                                              setState(dpRoot + ".info.connection", false, true);
                                          }
                                      })
                                      .catch(function (error) {
                                              // Error!
                                              access_token = "";
                                              refresh_token = "";
                                              id_token = "";
                                              expires_in = -1;
                                              jwt = "";
                                              session_cookie = "";
                                              log("Fehler bei getHistory(): " + error);
                                              setState(dpRoot + ".info.connection", false, true);
                                      });
                           
                          }
                          
                          function CreateGuid() {  
                             function _p8(s) {  
                                var p = (Math.random().toString(16)+"000000000").substr(2,8);  
                                return s ? "-" + p.substr(0,4) + "-" + p.substr(4,4) : p ;  
                             }  
                             return _p8() + _p8(true) + _p8(true) + _p8();  
                          }
                          
                          function createDHWPstate(name, value, valType) {
                              var stateSuffix = "";
                          
                              
                              // bekannte Attribute behandeln:
                              if(name.endsWith("RSSILevelState")) {
                                  stateSuffix = "db";
                              } else if (name.endsWith("TemperatureState")) {
                                  stateSuffix = "°C";
                              } else if (name.endsWith("PowerHeatElectricalState")) {
                                  stateSuffix = "W";
                              } else if (name.endsWith("PowerHeatPumpState")) {
                                  stateSuffix = "W";
                              } else if (name.endsWith("V40WaterVolumeEstimationState")) {
                                  // Wasserbrauch insgesamt -> Überlauf bei 65536!
                                  stateSuffix = "l";
                              }
                              else if (name.endsWith("ElectricEnergyConsumptionState")) {
                                  // Stromverbrauch insgesamt
                                  stateSuffix = "Wh";
                              }
                          
                          
                              
                              
                          
                              switch (valType) {
                                  case 1:
                                      //console.log("1 " + name);
                                      if(existsObject(name)) {
                          
                                      } else {
                                          createState(name, value, {read: true, write: false,  type: "number", role: "state", name: name, unit: stateSuffix, def: 0});
                                      }
                                      break;
                          
                                  case 2:
                                      //console.log("2 " + name);
                                      if(existsObject(name)) {
                          
                                      } else {
                                          createState(name, value, {read: true, write: false,  type: "number", role: "state", name: name, unit: stateSuffix, def: 0});
                                      }
                                      break;
                          
                                  case 3:
                                      //console.log("3 " + name);
                                      if(existsObject(name)) {
                          
                                      } else {
                                          createState(name, value, {read: true, write: false,  type: "string", role: "state", name: name, unit: stateSuffix, def: ""});
                                      }
                                      break;
                              }
                          
                          
                          
                          }
                          
                          
                          // --------------------------------------------------------------
                          
                          createState(dpRoot + ".fetchHistory", false, {
                                  name: dpRoot + ".fetchHistory",
                                  type: 'boolean',
                                  role: 'state',
                                  desc: 'Befehlsverlauf einmalig abrufen'
                              });
                          
                          createState(dpRoot + ".forceUpdate", false, {
                                  name: dpRoot + ".forceUpdate",
                                  type: 'boolean',
                                  role: 'state',
                                  desc: 'erzwungenes einmaliges Aktualisieren der Werte'
                              });
                          
                          createState(dpRoot + ".HistoryJson", "", {
                                  name: "History (JSON)",
                                  type: 'string',
                                  role: 'state',
                                  desc: 'Befehlsverlauf'
                              });
                          
                          createState(dpRoot + ".DHWMode", "", {
                                  name: "DHW Operating mode",
                                  type: 'string',
                                  role: 'state',
                                  "states": {
                                      "autoMode": "Auto",
                                      "manualEcoActive": "ECO aktiv",
                                      "manualEcoInactive": "ECO inaktiv"
                                  },
                                  desc: 'Betriebsmodus'
                              });
                          
                          createState(dpRoot + ".DHWSchedule", "", {
                                  name: "DHW Schedule",
                                  type: 'string',
                                  role: 'state',
                                  "states": {
                                      "pacProg_elecProg": "Zeitplanung",
                                      "pac24h_elec24h": "dauerhaft"
                                  },
                                  desc: 'Zeitplanung'
                              });
                          
                          createState(dpRoot + ".DHWBoostFull", "", {
                                  name: "DHW Boost",
                                  type: 'boolean',
                                  role: 'state',
                                  desc: 'Heizstab zuschalten'
                              });
                          
                          createState(dpRoot + ".debug", "", {
                                  name: "debug",
                                  type: 'boolean',
                                  role: 'state',
                                  desc: 'Serverantwort protokollieren'
                              });
                          
                          createState(dpRoot + ".rawJSON", "", {
                                  name: "rawJSON",
                                  type: 'string',
                                  role: 'state',
                                  desc: 'Serverantwort'
                              });
                          
                          createState(dpSetTemp, "", {
                                  name: "WW-Solltemperatur",
                                  type: 'number',
                                  role: 'state',
                                  unit: '°C',
                                  desc: 'Solltemperatur der Wärmepumpe'
                              });
                          
                          setState(dpSetTemp, getState(dpSetTemp), true);
                          
                          getToken();
                          
                          tokenRefreshTimer = setInterval(async function () {
                              // Token verfällt nach 60min
                              access_token = "";
                              access_token_api = "";
                          
                              refresh_token = "";
                              id_token = "";
                              expires_in = -1;
                              jwt = "";
                              jwt_overkiz = "";
                              session_cookie = "";
                          
                              //log("Token nach Intervall verworfen.")
                              getToken();
                          }, 600000);
                          
                          schedule('*/' + interval + ' * * * * *', function () {
                              // regelmäßig Token und Zustand abfragen
                              // access_token = ""; // Workaround...
                              
                              if(access_token != "") {
                                  getJWT();
                              } else {
                                  getToken();
                              }
                              
                          });
                          
                          on({id: dpRoot + ".fetchHistory", change: 'ne'}, function(obj) {
                              if(getState(dpRoot + ".fetchHistory").val) {
                                  if(session_cookie != "") {
                                      getHistory();
                                  }
                              }
                          });
                          
                          on({id: dpRoot + ".forceUpdate", change: 'ne'}, function(obj) {
                              if(getState(dpRoot + ".forceUpdate").val) {
                                  if(session_cookie != "") {
                                      execOverkizCmd("refreshMiddleWaterTemperature");
                                      execOverkizCmd("refreshDHWCapacity");
                                      execOverkizCmd("refreshWaterConsumption");
                                      
                          
                                      setState(dpRoot + ".forceUpdate", false);
                                  }
                              }
                          });
                          
                          on({id: dpRoot + ".DHWMode", change: 'ne', ack: false}, function(obj) {
                              
                                  if(session_cookie != "") {
                                      setDHWMode();
                                  }
                              
                              
                          });
                          
                          on({id: dpRoot + ".DHWSchedule", change: 'ne', ack: false}, function(obj) {
                              
                                  if(session_cookie != "") {
                                      setDHWSchedule();
                                  }
                              
                              
                          });
                          
                          on({id: dpRoot + ".DHWBoostFull", change: 'ne', ack: false}, function(obj) {
                              
                                  if(session_cookie != "") {
                                      setDHWBooster();
                                  }
                              
                              
                          });
                          
                          K Offline
                          K Offline
                          kombjuder
                          schrieb am zuletzt editiert von
                          #100

                          @oxident Kann jemand einem absoluten Anfänger mit IObroker sagen wie ich das Script einbinden muss?
                          Sorry, meine PC-Kenntnisse stammen aus einer Zeit als ein Komputer 3 kB Ram hatte.

                          1 Antwort Letzte Antwort
                          1
                          • J jung87

                            @oxident Hallo, habt ihr Momentan auch Probleme soll Werte über den IO Brocker zu ändern. Bekomme die ist Werte wie WW Temp usw noch angezeigt, aber kann nicht mehr ändern bzw. kann den Heizstab nicht mehr einschalten.
                            Habe auch noch ein Fehler im Log script.js.Warmwasser.Brauchwasserwärmepumpe: Fehler bei getTokenAPI(): AxiosError: Request failed with status code 503

                            Kann mir sagen, was man hier machen kann?

                            Gruß

                            K Offline
                            K Offline
                            kombjuder
                            schrieb am zuletzt editiert von
                            #101

                            @jung87 Ich habe den Fehler aktuell auch.
                            Gibt's da eine Lösung oder bleibt nur warten?

                            HerbertH 1 Antwort Letzte Antwort
                            0
                            • K kombjuder

                              @jung87 Ich habe den Fehler aktuell auch.
                              Gibt's da eine Lösung oder bleibt nur warten?

                              HerbertH Offline
                              HerbertH Offline
                              Herbert
                              schrieb am zuletzt editiert von
                              #102

                              @kombjuder
                              Wenn du das aquamqtt Tool meinst, dann muss man die eigenen mqtt Daten und WLAN Daten in die Datei
                              AquaMQTT/include/config/ExampleConfiguration.h
                              eingeben und du dann selbst compilieren und hochladen.
                              Das ganze ist eigentlich mehr für Home Assistent geeignet, aber es spricht eigentlich mit jedem mqtt Broker, also auch iobroker.

                              K 1 Antwort Letzte Antwort
                              0
                              • HerbertH Herbert

                                @kombjuder
                                Wenn du das aquamqtt Tool meinst, dann muss man die eigenen mqtt Daten und WLAN Daten in die Datei
                                AquaMQTT/include/config/ExampleConfiguration.h
                                eingeben und du dann selbst compilieren und hochladen.
                                Das ganze ist eigentlich mehr für Home Assistent geeignet, aber es spricht eigentlich mit jedem mqtt Broker, also auch iobroker.

                                K Offline
                                K Offline
                                kombjuder
                                schrieb am zuletzt editiert von
                                #103

                                @herbert Nein, ich meine das hier vorgestellte Script. Da werden die Daten aus der Cloud gelesen.

                                1 Antwort Letzte Antwort
                                0
                                • O Online
                                  O Online
                                  oxident
                                  schrieb am zuletzt editiert von
                                  #104

                                  @kombjuder Sorry, mir ist derzeit keine Lösung bekannt. Mit der App scheint es wieder zu klappen, aber die haben den Code jetzt so dermaßen verkompliziert dass da im Moment niemand mehr durchsteigt.

                                  Hinzu kommt leider auch, dass ich jetzt AquaMQTT nutze und das Skript selber daher wohl nicht mehr weiterentwickeln kann.

                                  1 Antwort Letzte Antwort
                                  0
                                  • J j.Zimmermann

                                    Platinen erhalten und bestückt. AquaMQTT läuft bei mir im ioBroker.
                                    Habe noch 4 Platinen übrig. Waren aber über 29€ inkl.Porto
                                    Wenn jemand Bedarf hat, bitte per PN anschreiben.
                                    LG Jörg

                                    M Offline
                                    M Offline
                                    msch81
                                    schrieb am zuletzt editiert von
                                    #105

                                    @j-zimmermann
                                    Hallo,
                                    ich hätte Interesse an einer AquaMQTT, hast Du noch eine abzugeben?

                                    1 Antwort Letzte Antwort
                                    0
                                    • O oxident

                                      @j-zimmermann Danke für die Blumen ;-)
                                      Ich kann aber wirklich jedem raten, sich das AquaMQTT-Board anzuschauen. Läuft wirklich super und ist dadurch auch zukunftssicher.

                                      Wenn ich mir anschaue, wie krass die Cozytouch-Abfragen mittlerweile sind kann ich nur noch mit dem Kopf schütteln.

                                      R Offline
                                      R Offline
                                      Ricki-1337
                                      schrieb am zuletzt editiert von
                                      #106

                                      @oxident

                                      Hallo, meinst du du könntest mich hier einmal unterstützen. Ich würde gerne auch unsere Austria Emil BWWP mit dieser von dir genannten Platine in HA einbinden.

                                      Samson71S 1 Antwort Letzte Antwort
                                      0
                                      • R Ricki-1337

                                        @oxident

                                        Hallo, meinst du du könntest mich hier einmal unterstützen. Ich würde gerne auch unsere Austria Emil BWWP mit dieser von dir genannten Platine in HA einbinden.

                                        Samson71S Offline
                                        Samson71S Offline
                                        Samson71
                                        Global Moderator
                                        schrieb am zuletzt editiert von
                                        #107

                                        @ricki-1337 sagte in [Skript] Atlantic Wärmepumpe über Cozytouch abfragen:

                                        genannten Platine in HA einbinden.

                                        Falsches Forum? Wir sind hier bei ioBroker, nicht bei HA.

                                        Du solltest Dich mit der Fragestellung an das HA-Forum wenden und/oder ggf. auf GitHub nachfragen.

                                        Markus

                                        Bitte beachten:
                                        Hinweise für gute Forenbeiträge
                                        Maßnahmen zum Schutz des Forums

                                        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

                                        733

                                        Online

                                        32.5k

                                        Benutzer

                                        81.7k

                                        Themen

                                        1.3m

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

                                        • Du hast noch kein Konto? Registrieren

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