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. Praktische Anwendungen (Showcase)
  4. [Javascript] Midas (Aquatemp) Poolheizung

NEWS

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

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

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

[Javascript] Midas (Aquatemp) Poolheizung

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
359 Beiträge 25 Kommentatoren 77.4k Aufrufe 25 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 sunnylaila

    @michael-roling
    habe es jetzt neu installiert und auch auf debug gestellt der Adapter wird jetzt nicht mehr vom iobroker alleine geschlossen geht aber auf Punkt drei nicht auf grün und im log habe ich wieder diesen updatedevice Fehler

    	2024-07-15 20:12:12.860	info	Login ok! Token: 8mP9bo+x3spcde95ANtvYCt/rtf1U4NljAiSRLoq98O46DBPdGq/qftOjflw6AGXXPFacEkw0HogOrNnmbsXTw==
    
    midas-aquatemp.0
    2024-07-15 20:12:12.655	info	Request token
    
    midas-aquatemp.0
    2024-07-15 20:11:12.652	error	Error in updateDeviceID(): "TypeError: Cannot read properties of undefined (reading 'deviceCode')\n at updateDeviceID (/opt/iobroker/node_modules/iobroker.midas-aquatemp/build/lib/updateDeviceId.js:66:206)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async updateToken (/opt/iobroker/node_modules/iobroker.midas-aquatemp/build/lib/token.js:75:7)\n at async MidasAquatemp.onReady (/opt/iobroker/node_modules/iobroker.midas-aquatemp/build/main.js:76:5)"
    
    midas-aquatemp.0
    2024-07-15 20:11:12.650	error	Error in updateDeviceID(): {}
    
    
    

    dieser wiederholt sich alle 60 Sekunden.
    mit dem Adapter auf debug stellen kann ich da irgendwo etwas auslesen um es dir zur verfügung zu stellen?

    Michael RolingM Offline
    Michael RolingM Offline
    Michael Roling
    Developer
    schrieb am zuletzt editiert von
    #276

    @sunnylaila Ich habe noch mal wieder ein paar Änderungen vor genommen, wir müssen einfach mal testen. Was für eine Wärmepumpe hast du denn eigentlich? Anscheinend bekommt die Anfrage kein device zurück.

    S 1 Antwort Letzte Antwort
    0
    • Michael RolingM Michael Roling

      @sunnylaila Ich habe noch mal wieder ein paar Änderungen vor genommen, wir müssen einfach mal testen. Was für eine Wärmepumpe hast du denn eigentlich? Anscheinend bekommt die Anfrage kein device zurück.

      S Offline
      S Offline
      sunnylaila
      schrieb am zuletzt editiert von
      #277

      @michael-roling

      ich habe eine Poolsana Promo Next 5 Wärmepumpe mit dem Wlan Modul von Poolsana..
      1685690992946-img_8030-resized.jpeg

      Habe es jetzt auch nochmal neu installiert und hier der neue Log

      	2024-07-16 07:43:36.428	error	Response: {"sessionid":null,"error_code":"0","error_msg":"Success","error_msg_code":"","totalSize":null,"totalPage":null,"nextPage":null,"objectResult":[],"isReusltSuc":true}
      
      midas-aquatemp.0
      2024-07-16 07:43:36.427	error	Error in updateDeviceID(): No device code found
      
      midas-aquatemp.0
      2024-07-16 07:43:36.359	info	Login ok! Token: 5CqvwvNH0tQ85m8hk0DATZHOTOEsF1K/kDQSTpKjxWRFYbVNJboSqmZwqSFBt3sbXPFacEkw0HogOrNnmbsXTw==
      
      midas-aquatemp.0
      2024-07-16 07:43:35.921	info	Request token
      
      midas-aquatemp.0
      2024-07-16 07:43:35.919	info	Objects created
      
      midas-aquatemp.0
      2024-07-16 07:43:35.916	info	Create object: midas-aquatemp.0.rawJSON
      
      midas-aquatemp.0
      2024-07-16 07:43:35.913	info	Create object: midas-aquatemp.0.DeviceCode
      
      midas-aquatemp.0
      2024-07-16 07:43:35.911	info	Create object: midas-aquatemp.0.ProductCode
      
      midas-aquatemp.0
      2024-07-16 07:43:35.908	info	Create object: midas-aquatemp.0.exhaust
      
      midas-aquatemp.0
      2024-07-16 07:43:35.905	info	Create object: midas-aquatemp.0.coilTemp
      
      midas-aquatemp.0
      2024-07-16 07:43:35.903	info	Create object: midas-aquatemp.0.suctionTemp
      
      midas-aquatemp.0
      2024-07-16 07:43:35.900	info	Create object: midas-aquatemp.0.tempSet
      
      midas-aquatemp.0
      2024-07-16 07:43:35.897	info	Create object: midas-aquatemp.0.tempOut
      
      midas-aquatemp.0
      2024-07-16 07:43:35.894	info	Create object: midas-aquatemp.0.tempIn
      
      midas-aquatemp.0
      2024-07-16 07:43:35.891	info	Create object: midas-aquatemp.0.state
      
      midas-aquatemp.0
      2024-07-16 07:43:35.888	info	Create object: midas-aquatemp.0.silent
      
      midas-aquatemp.0
      2024-07-16 07:43:35.885	info	Create object: midas-aquatemp.0.rotor
      
      midas-aquatemp.0
      2024-07-16 07:43:35.882	info	Create object: midas-aquatemp.0.mode
      
      midas-aquatemp.0
      2024-07-16 07:43:35.879	info	Create object: midas-aquatemp.0.errorMessage
      
      midas-aquatemp.0
      2024-07-16 07:43:35.876	info	Create object: midas-aquatemp.0.errorLevel
      
      midas-aquatemp.0
      2024-07-16 07:43:35.873	info	Create object: midas-aquatemp.0.errorCode
      
      midas-aquatemp.0
      2024-07-16 07:43:35.868	info	Create object: midas-aquatemp.0.error
      
      midas-aquatemp.0
      2024-07-16 07:43:35.859	info	Create object: midas-aquatemp.0.consumption
      
      midas-aquatemp.0
      2024-07-16 07:43:35.851	info	Create object: midas-aquatemp.0.info.connection
      
      midas-aquatemp.0
      2024-07-16 07:43:35.814	info	Create object: midas-aquatemp.0.ambient
      
      midas-aquatemp.0
      2024-07-16 07:43:35.777	info	starting. Version 0.0.1 (non-npm: MiRo1310/ioBroker.midas-aquatemp#1eafbd195d1db6ca646dbdda7f8dced23b9ab2fd) in /opt/iobroker/node_modules/iobroker.midas-aquatemp, node: v20.15.1, js-controller: 5.0.19
      
      midas-aquatemp.0
      2024-07-16 07:43:30.008	info	terminating
      
      midas-aquatemp.0
      2024-07-16 07:43:29.507	info	Terminated (ADAPTER_REQUESTED_TERMINATION): Without reason
      
      midas-aquatemp.0
      2024-07-16 07:43:29.505	info	terminating
      
      midas-aquatemp.0
      2024-07-16 07:43:29.503	info	Got terminate signal TERMINATE_YOURSELF
      
      midas-aquatemp.0
      2024-07-16 07:43:09.289	error	Error in getToken(): {"message":"","name":"AggregateError","stack":"AggregateError\n at AxiosError.from (/opt/iobroker/node_modules/iobroker.midas-aquatemp/node_modules/axios/dist/node/axios.cjs:841:14)\n at RedirectableRequest.handleRequestError (/opt/iobroker/node_modules/iobroker.midas-aquatemp/node_modules/axios/dist/node/axios.cjs:3106:25)\n at RedirectableRequest.emit (node:events:519:28)\n at eventHandlers.<computed> (/opt/iobroker/node_modules/follow-redirects/index.js:38:24)\n at ClientRequest.emit (node:events:519:28)\n at Socket.socketErrorListener (node:_http_client:500:9)\n at Socket.emit (node:events:519:28)\n at emitErrorNT (node:internal/streams/destroy:169:8)\n at emitErrorCloseNT (node:internal/streams/destroy:128:3)\n at process.processTicksAndRejections (node:internal/process/task_queues:82:21)\n at Axios.request (/opt/iobroker/node_modules/iobroker.midas-aquatemp/node_modules/axios/dist/node/axios.cjs:4224:41)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async getToken (/opt/iobroker/node_modules/iobroker.midas-aquatemp/build/lib/token.js:48:24)\n at async updateToken (/opt/iobroker/node_modules/iobroker.midas-aquatemp/build/lib/token.js:73:5)\n at async MidasAquatemp.onReady (/opt/iobroker/node_modules/iobroker.midas-aquatemp/build/main.js:76:5)","config":{"transitional":{"silentJSONParsing":true,"forcedJSONParsing":true,"clarifyTimeoutError":false},"adapter":["xhr","http","fetch"],"transformRequest":[null],"transformResponse":[null],"timeout":0,"xsrfCookieName":"XSRF-TOKEN","xsrfHeaderName":"X-XSRF-TOKEN","maxContentLength":-1,"maxBodyLength":-1,"env":{},"headers":{"Accept":"application/json, text/plain, */*","Content-Type":"application/json","User-Agent":"axios/1.7.2","Content-Length":"72","Accept-Encoding":"gzip, compress, deflate, br"},"method":"post","url":"/app/user/login","data":"{\"userName\":\"\",\"password\":\"d41d8cd98f00b204e9800998ecf8427e\",\"type\":\"2\"}"},"code":"ECONNREFUSED","status":null}
      
      midas-aquatemp.0
      2024-07-16 07:43:09.207	info	Request token
      

      Leider geht es noch nicht

      Michael RolingM 1 Antwort Letzte Antwort
      0
      • S sunnylaila

        @michael-roling

        ich habe eine Poolsana Promo Next 5 Wärmepumpe mit dem Wlan Modul von Poolsana..
        1685690992946-img_8030-resized.jpeg

        Habe es jetzt auch nochmal neu installiert und hier der neue Log

        	2024-07-16 07:43:36.428	error	Response: {"sessionid":null,"error_code":"0","error_msg":"Success","error_msg_code":"","totalSize":null,"totalPage":null,"nextPage":null,"objectResult":[],"isReusltSuc":true}
        
        midas-aquatemp.0
        2024-07-16 07:43:36.427	error	Error in updateDeviceID(): No device code found
        
        midas-aquatemp.0
        2024-07-16 07:43:36.359	info	Login ok! Token: 5CqvwvNH0tQ85m8hk0DATZHOTOEsF1K/kDQSTpKjxWRFYbVNJboSqmZwqSFBt3sbXPFacEkw0HogOrNnmbsXTw==
        
        midas-aquatemp.0
        2024-07-16 07:43:35.921	info	Request token
        
        midas-aquatemp.0
        2024-07-16 07:43:35.919	info	Objects created
        
        midas-aquatemp.0
        2024-07-16 07:43:35.916	info	Create object: midas-aquatemp.0.rawJSON
        
        midas-aquatemp.0
        2024-07-16 07:43:35.913	info	Create object: midas-aquatemp.0.DeviceCode
        
        midas-aquatemp.0
        2024-07-16 07:43:35.911	info	Create object: midas-aquatemp.0.ProductCode
        
        midas-aquatemp.0
        2024-07-16 07:43:35.908	info	Create object: midas-aquatemp.0.exhaust
        
        midas-aquatemp.0
        2024-07-16 07:43:35.905	info	Create object: midas-aquatemp.0.coilTemp
        
        midas-aquatemp.0
        2024-07-16 07:43:35.903	info	Create object: midas-aquatemp.0.suctionTemp
        
        midas-aquatemp.0
        2024-07-16 07:43:35.900	info	Create object: midas-aquatemp.0.tempSet
        
        midas-aquatemp.0
        2024-07-16 07:43:35.897	info	Create object: midas-aquatemp.0.tempOut
        
        midas-aquatemp.0
        2024-07-16 07:43:35.894	info	Create object: midas-aquatemp.0.tempIn
        
        midas-aquatemp.0
        2024-07-16 07:43:35.891	info	Create object: midas-aquatemp.0.state
        
        midas-aquatemp.0
        2024-07-16 07:43:35.888	info	Create object: midas-aquatemp.0.silent
        
        midas-aquatemp.0
        2024-07-16 07:43:35.885	info	Create object: midas-aquatemp.0.rotor
        
        midas-aquatemp.0
        2024-07-16 07:43:35.882	info	Create object: midas-aquatemp.0.mode
        
        midas-aquatemp.0
        2024-07-16 07:43:35.879	info	Create object: midas-aquatemp.0.errorMessage
        
        midas-aquatemp.0
        2024-07-16 07:43:35.876	info	Create object: midas-aquatemp.0.errorLevel
        
        midas-aquatemp.0
        2024-07-16 07:43:35.873	info	Create object: midas-aquatemp.0.errorCode
        
        midas-aquatemp.0
        2024-07-16 07:43:35.868	info	Create object: midas-aquatemp.0.error
        
        midas-aquatemp.0
        2024-07-16 07:43:35.859	info	Create object: midas-aquatemp.0.consumption
        
        midas-aquatemp.0
        2024-07-16 07:43:35.851	info	Create object: midas-aquatemp.0.info.connection
        
        midas-aquatemp.0
        2024-07-16 07:43:35.814	info	Create object: midas-aquatemp.0.ambient
        
        midas-aquatemp.0
        2024-07-16 07:43:35.777	info	starting. Version 0.0.1 (non-npm: MiRo1310/ioBroker.midas-aquatemp#1eafbd195d1db6ca646dbdda7f8dced23b9ab2fd) in /opt/iobroker/node_modules/iobroker.midas-aquatemp, node: v20.15.1, js-controller: 5.0.19
        
        midas-aquatemp.0
        2024-07-16 07:43:30.008	info	terminating
        
        midas-aquatemp.0
        2024-07-16 07:43:29.507	info	Terminated (ADAPTER_REQUESTED_TERMINATION): Without reason
        
        midas-aquatemp.0
        2024-07-16 07:43:29.505	info	terminating
        
        midas-aquatemp.0
        2024-07-16 07:43:29.503	info	Got terminate signal TERMINATE_YOURSELF
        
        midas-aquatemp.0
        2024-07-16 07:43:09.289	error	Error in getToken(): {"message":"","name":"AggregateError","stack":"AggregateError\n at AxiosError.from (/opt/iobroker/node_modules/iobroker.midas-aquatemp/node_modules/axios/dist/node/axios.cjs:841:14)\n at RedirectableRequest.handleRequestError (/opt/iobroker/node_modules/iobroker.midas-aquatemp/node_modules/axios/dist/node/axios.cjs:3106:25)\n at RedirectableRequest.emit (node:events:519:28)\n at eventHandlers.<computed> (/opt/iobroker/node_modules/follow-redirects/index.js:38:24)\n at ClientRequest.emit (node:events:519:28)\n at Socket.socketErrorListener (node:_http_client:500:9)\n at Socket.emit (node:events:519:28)\n at emitErrorNT (node:internal/streams/destroy:169:8)\n at emitErrorCloseNT (node:internal/streams/destroy:128:3)\n at process.processTicksAndRejections (node:internal/process/task_queues:82:21)\n at Axios.request (/opt/iobroker/node_modules/iobroker.midas-aquatemp/node_modules/axios/dist/node/axios.cjs:4224:41)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async getToken (/opt/iobroker/node_modules/iobroker.midas-aquatemp/build/lib/token.js:48:24)\n at async updateToken (/opt/iobroker/node_modules/iobroker.midas-aquatemp/build/lib/token.js:73:5)\n at async MidasAquatemp.onReady (/opt/iobroker/node_modules/iobroker.midas-aquatemp/build/main.js:76:5)","config":{"transitional":{"silentJSONParsing":true,"forcedJSONParsing":true,"clarifyTimeoutError":false},"adapter":["xhr","http","fetch"],"transformRequest":[null],"transformResponse":[null],"timeout":0,"xsrfCookieName":"XSRF-TOKEN","xsrfHeaderName":"X-XSRF-TOKEN","maxContentLength":-1,"maxBodyLength":-1,"env":{},"headers":{"Accept":"application/json, text/plain, */*","Content-Type":"application/json","User-Agent":"axios/1.7.2","Content-Length":"72","Accept-Encoding":"gzip, compress, deflate, br"},"method":"post","url":"/app/user/login","data":"{\"userName\":\"\",\"password\":\"d41d8cd98f00b204e9800998ecf8427e\",\"type\":\"2\"}"},"code":"ECONNREFUSED","status":null}
        
        midas-aquatemp.0
        2024-07-16 07:43:09.207	info	Request token
        

        Leider geht es noch nicht

        Michael RolingM Offline
        Michael RolingM Offline
        Michael Roling
        Developer
        schrieb am zuletzt editiert von
        #278

        @sunnylaila Es ist so das der Adapter das Device nicht erkennt. Das was im log kommt sind von mir die erwarteten Logs. Jetzt müssen wir als nächstes schauen warum das Gerät nicht erkannt wird. Evtl hat @oxident da eine Idee zu. Ich bin aber dran

        S 1 Antwort Letzte Antwort
        0
        • Michael RolingM Michael Roling

          @sunnylaila Es ist so das der Adapter das Device nicht erkennt. Das was im log kommt sind von mir die erwarteten Logs. Jetzt müssen wir als nächstes schauen warum das Gerät nicht erkannt wird. Evtl hat @oxident da eine Idee zu. Ich bin aber dran

          S Offline
          S Offline
          sunnylaila
          schrieb am zuletzt editiert von
          #279

          @michael-roling
          ich hatte ganz am Anfang auch Probleme mit dem Javascript da hat der User znyde
          der die gleiche Pumpe hat wie ich eine Änderung im Javascript gepostet mit der es dann
          auch bei mir ging.
          Ich glaube es war Post 77 oder 78

          Vielleicht hilft es dir ja bei der Fehlersuche.
          Ich bin leider nur User und kenne mich damit null aus.

          Danke dir

          Michael RolingM 1 Antwort Letzte Antwort
          0
          • S sunnylaila

            @michael-roling
            ich hatte ganz am Anfang auch Probleme mit dem Javascript da hat der User znyde
            der die gleiche Pumpe hat wie ich eine Änderung im Javascript gepostet mit der es dann
            auch bei mir ging.
            Ich glaube es war Post 77 oder 78

            Vielleicht hilft es dir ja bei der Fehlersuche.
            Ich bin leider nur User und kenne mich damit null aus.

            Danke dir

            Michael RolingM Offline
            Michael RolingM Offline
            Michael Roling
            Developer
            schrieb am zuletzt editiert von
            #280

            @sunnylaila wenn du Zeit hast kannst du ja mal den Post raus suchen.

            1 Antwort Letzte Antwort
            0
            • Z znyde

              @sunnylaila

              hiermit ignorierst du die SSL Zertifkats meldung

              function updateToken() {
               
                  if(token=="") {
                      log("Token Neuanforderung");
                      var request = require('request');
                
                      var options = {
                          url: cloudURL + '/app/user/login.json',
                          method: 'POST',
                          json: { "user_name": username, "password": password, "type": "2" },
                          rejectUnauthorized: false
                      };
                      
                      request(options,function (error, response, body){
                       console.log(error);
                          console.log(JSON.stringify(response));
                          if(parseInt(body.error_code)==0) {
                              
                              token = body.object_result["x-token"];
                              log("Login ok! Token " + token);
                              updateDeviceID();
                          } else {
                              // Login-Fehler
                              log("Login-Fehler in updateToken(): " + response.body, "warn");
                              token = "";
                          }
                          
                      });
                  } else {
                      updateDeviceID();
                  }
               
                  
               
                  
               
              }
               
              
              S Offline
              S Offline
              sunnylaila
              schrieb am zuletzt editiert von
              #281

              @znyde said in [Javascript] Midas (Aquatemp) Poolheizung:

              @sunnylaila
              hiermit ignorierst du die SSL Zertifkats meldung
              Copy to Clipboard function updateToken() { if(token=="") { log("Token Neuanforderung"); var request = require('request'); var options = { url: cloudURL + '/app/user/login.json', method: 'POST', json: { "user_name": username, "password": password, "type": "2" }, rejectUnauthorized: false }; request(options,function (error, response, body){ console.log(error); console.log(JSON.stringify(response)); if(parseInt(body.error_code)==0) { token = body.object_result["x-token"]; log("Login ok! Token " + token); updateDeviceID(); } else { // Login-Fehler log("Login-Fehler in updateToken(): " + response.body, "warn"); token = ""; } }); } else { updateDeviceID(); } }

              einmal der Post

              1 Antwort Letzte Antwort
              1
              • Z znyde

                @sunnylaila

                Bei mir ist das Modul an eine Promo Next 5 angeschlossen, das Mapping mit den Temperaturen habe ich geändert... übrigens kannst Du das in deiner App abfragen Burgermenü oben rechts -> Parametereinstellungen -> Kennwort: 022 (so war es bei mir)

                // Midas Poolheizung
                // v0.0.5
                // Changelog:
                // 0.0.5: weitere Abfragewerte hinzugefügt (Kompressor- und Ansaugtemperatur)
                // 0.0.4: Tokenverfall jetzt 60min nach Skriptstart und nicht zu jeder vollen Stunde (Dank an dering)
                // 0.0.3: Datenpunkte beim Start automatisch anlegen (Dank an Andy200877)
                // 0.0.2: Token bei jedem Set-Vorgang prüfen und ggf. neu anfordern (Dank an dering)
                 
                const username = "xxx@xxxx.com";
                const password = "xxxxxx";
                const interval = 30;
                 
                 
                const cloudURL = "https://cloud.linked-go.com/cloudservice/api";
                 
                const dpRoot = "0_userdata.0.Poolheizung";
                 
                var token = "";
                var tokenRefreshTimer;
                var device = "";
                var reachable = false;
                 
                function clearValues() {
                    saveValue("error", true, "boolean");
                    saveValue("consumption", 0, "number");
                    saveValue("state", false, "boolean");
                }
                 
                function saveValue(key, value, sType) {
                    var dp = dpRoot + "." + key;
                 
                    if ( !existsState(dp )) {
                        createState(dp,value,{name: key,  type: 'number', role: 'value'}, function () {}); 
                    } else {
                        setState(dp,value,true);
                    }
                }
                 
                function findCodeVal(result, code) {
                    //log(code);
                    for(var i=0; i<result.length; i++) {
                        //log(result[i].code);
                        
                        if(result[i].code.indexOf(code) >= 0) {
                            return result[i].value;
                        }
                    }
                    return "";
                }
                 
                function createobjects() {
                    log ("erstelle Objekte");
                    createState(dpRoot + '.ambient', {read: true, write: false,  type: "number", unit:"°C", name: "Umgebungstemperatur"});
                    createState(dpRoot + '.connection', {read: true, write: false,  type: "boolean", role: "state", name: "Verbindung", def: "false"});
                    createState(dpRoot + '.consumption', {read: true, write: false,  type: "number", unit:"W", name: "Stromverbrauch", def: 0});
                    createState(dpRoot + '.error', {read: true, write: false,  type: "boolean", role: "state", name: "Fehler", def: "false"});
                    createState(dpRoot + '.errorCode', {read: true, write: false,  type: "string", name: "Fehlercode", def: ""});
                    createState(dpRoot + '.errorLevel', {read: true, write: false,  type: "number", name: "Fehlerlevel"});
                    createState(dpRoot + '.errorMessage', {read: true, write: false,  type: "string", name: "Fehlermeldung", def: ""});
                    createState(dpRoot + '.mode', {read: true, write: true,  type: "string", states: "-1:off;0:cool;1:heat;2:auto", name: "Modus", def: ""});
                    createState(dpRoot + '.silent', {read: true, write: true,  type: "boolean", role: "state", name: "Silent", def: "false"});
                    createState(dpRoot + '.state', {read: true, write: false,  type: "boolean", role: "state", name: "Status", def: "false"});
                    createState(dpRoot + '.tempIn', {read: true, write: false,  type: "number", unit:"°C", name: "Eingangstemperatur"});
                    createState(dpRoot + '.tempOut', {read: true, write: false,  type: "number", unit:"°C", name: "Ausgangstemperatur"});
                    createState(dpRoot + '.tempSet', {read: true, write: true,  type: "number", unit:"°C", name: "Solltemperatur"});
                    createState(dpRoot + '.suctionTemp', {read: true, write: false,  type: "number", unit:"°C", name: "Luftansaugtemperatur"});
                    createState(dpRoot + '.coilTemp', {read: true, write: false,  type: "number", unit:"°C", name: "Kompressortemperatur"});
                    
                    createState(dpRoot + '.rawJSON', {read: true, write: false,  type: "array", name: "komplette Rückgabe"});
                }
                 
                function updateToken() {
                 
                    if(token=="") {
                        log("Token Neuanforderung");
                        var request = require('request');
                  
                        var options = {
                            url: cloudURL + '/app/user/login.json',
                            method: 'POST',
                            json: { "user_name": username, "password": password, "type": "2" },
                            rejectUnauthorized: false
                        };
                        
                        request(options,function (error, response, body){
                         console.log(error);
                            console.log(JSON.stringify(response));
                            if(parseInt(body.error_code)==0) {
                                
                                token = body.object_result["x-token"];
                                log("Login ok! Token " + token);
                                updateDeviceID();
                            } else {
                                // Login-Fehler
                                log("Login-Fehler in updateToken(): " + response.body, "warn");
                                token = "";
                            }
                            
                        });
                    } else {
                        updateDeviceID();
                    }
                 
                    
                 
                    
                 
                }
                 
                function updateDeviceID() {
                    
                    if(token!="") {
                        var optionsDev = {
                            url: cloudURL + '/app/device/deviceList.json',
                            headers: { "x-token": token},
                            body: {product_ids: ["1442284873216843776"]},
                           
                            method: 'POST',
                            json: true,
                            
                            rejectUnauthorized: false          
                        };
                 
                        var request = require('request');
                 
                        request(optionsDev,function (error, response, body1){
                  //  console.log(parseInt(body1.error_code));
                  //         console.log(JSON.stringify(response));
                   //         log(JSON.stringify(body1.object_result));
                 
                            if(parseInt(body1.error_code)==0) {
                                
                                //token = body.object_result["x-token"];
                                log("Login ok! Token " + token);
                                
                               device = body1.object_result[0].device_code;
                               // device=1;
                                console.log(device);
                                reachable = (body1.object_result[0].device_status=="ONLINE");
                                if(reachable) {
                                    saveValue("connection", true, "boolean");
                                    if(device!="") updateDeviceStatus(device);
                                } else {
                                    // offline
                                    device = "";
                                    saveValue("connection", false, "boolean");
                                }
                                
                            } else {
                                // Login-Fehler
                                //log("Fehler in updateDeviceID(): " + response.body);
                                token = "";
                                device = "";
                                reachable = false;
                                saveValue("connection", false, "boolean");
                            }
                            
                        });
                    }
                    
                
                }
                 
                
                function updateDeviceStatus(devicecode) {
                    if(token!="") {
                        
                        var optionsDev = {
                            url: cloudURL + '/app/device/getDeviceStatus.json',
                            headers: { "x-token": token },
                            json: { "device_code": devicecode },
                            method: 'POST',
                             rejectUnauthorized: false
                            
                        };
                 
                        var request = require('request');
                 
                        request(optionsDev,function (error, response, body){
                    
                            //log(JSON.stringify(response));
                            //log(JSON.stringify(body.object_result));
                 
                            if(parseInt(body.error_code)==0) {
                 
                                if(body.object_result["is_fault"]==true) {
                                    // TODO: Fehlerbeschreibung abrufen
                                     //clearValues();
                                    saveValue("error", true, "boolean");
                                    updateDeviceDetails(devicecode);
                                    updateDeviceErrorMsg(devicecode);
                                } else {
                                    // kein Fehler
                                    saveValue("error", false, "boolean");
                                    saveValue("errorMessage", "", "string");
                                    saveValue("errorCode", "", "string");
                                    saveValue("errorLevel", 0, "number");
                                    updateDeviceDetails(devicecode);
                                }
                                
                                //token = body.object_result["x-token"];
                                //log("Login ok! Token " + token);
                                
                            } else {
                                // Login-Fehler
                                log("Fehler in updateDeviceStatus(): " + response.body);
                                token = "";
                                device = "";
                            }
                            
                        });
                    }
                }
                 
                function updateDeviceErrorMsg(devicecode) {
                    if(token!="") {
                        
                        var optionsDev = {
                            url: cloudURL + '/app/device/getFaultDataByDeviceCode.json',
                            headers: { "x-token": token },
                            json: { "device_code": devicecode },
                            method: 'POST',
                             rejectUnauthorized: false
                            //headers: {"content-type": "application/json"},
                            //charset: 'utf8',
                            //json: true
                            
                        };
                 
                        var request = require('request');
                 
                        request(optionsDev,function (error, response, body){
                    
                            //log(JSON.stringify(response));
                            //log(JSON.stringify(body.object_result));
                 
                            if(parseInt(body.error_code)==0) {
                 
                                
                                saveValue("error", true, "boolean");
                                saveValue("errorMessage", body.object_result[0].description, "string");
                                saveValue("errorCode", body.object_result[0].fault_code, "string");
                                saveValue("errorLevel", body.object_result[0].error_level, "string");
                                
                            } else {
                                // Login-Fehler
                                log("Fehler in updateDeviceErrorMsg(): " + response.body);
                                token = "";
                                device = "";
                            }
                            
                        });
                    }
                }
                 
                function updateDeviceDetails(devicecode) {
                    if(token!="") {
                        
                        var optionsDev = {
                            url: cloudURL + '/app/device/getDataByCode.json',
                            headers: { "x-token": token },
                          //  json: { "device_code": devicecode },
                          // R02=Heatin-Set Point,T2=inlet Water Temp, T3=Outlet Water Temp,T5=Ambient-Temp,
                          json: { "device_code": devicecode, "protocal_codes":["R02","T1","T2","T3","T5","P01","P02","Power","Mode"] },
                           
                           // json: { "device_code": devicecode, "protocal_codes":["Power","Mode","Manual-mute","T01","T02","2074","2075","2076","2077","H03","Set-Temp","R08","R09","R10","R11","R01","R02","R03","T03","1158","1159","F17","H02","T04","T05","T07","T14","T17"] },
                            // "protocal_codes":["Power","Mode","Manual-mute","T01","T02","2074","2075","2076","2077","H03","Set_Temp","R08","R09","R10","R11","R01","R02","R03","T03","1158","1159","F17","H02","T04","T05"]
                            method: 'POST',
                            rejectUnauthorized: false
                            
                        };
                 
                        var request = require('request');
                 
                        request(optionsDev,function (error, response, body){
                  console.log("update detail" + JSON.stringify(response));
                 
                            if(parseInt(body.error_code)==0) {
                 
                                saveValue("rawJSON", body.object_result, "string");
                                
                                if(findCodeVal(body.object_result, "Power")=="1") {
                                    // Stromverbrauch T07 x T14 in Watt
                                    saveValue("consumption", parseFloat(findCodeVal(body.object_result, "T07")) * parseFloat(findCodeVal(body.object_result, "T14")), "number");
                 
                                    // Lüfter-Drehzahl T17
                                    saveValue("rotor", parseInt(findCodeVal(body.object_result, "T17")), "number");
                                    // Luftansaug-Temperatur T01
                                    saveValue("suctionTemp", parseFloat(findCodeVal(body.object_result, "T1")), "number");
                                    // Inlet-Temperatur T02
                                    saveValue("tempIn", parseFloat(findCodeVal(body.object_result, "T2")), "number");
                                    // outlet-Temperatur T03
                                    saveValue("tempOut", parseFloat(findCodeVal(body.object_result, "T3")), "number");
                                    // Coil-Temperatur T04
                                    saveValue("coilTemp", parseFloat(findCodeVal(body.object_result, "T04")), "number");
                                } else {
                                    saveValue("consumption", 0, "number");
                                    saveValue("rotor", 0, "number");
                                }
                 
                 
                 
                                // Ziel-Temperatur Set_Temp
                                saveValue("tempSet", parseFloat(findCodeVal(body.object_result, "Set_Temp")), "number");
                 
                                // Umgebungs-Temperatur T05
                                saveValue("ambient", parseFloat(findCodeVal(body.object_result, "T5")), "number");
                 
                                // Flüstermodus Manual-mute
                                if(findCodeVal(body.object_result, "Manual-mute")=="1") {
                                    saveValue("silent", true, "boolean");
                                } else {
                                    saveValue("silent", false, "boolean");
                                }
                 
                                // Zustand Power
                                if(findCodeVal(body.object_result, "Power")=="1") {
                                    saveValue("state", true, "boolean");
                                    saveValue("mode", findCodeVal(body.object_result,"Mode"), "string");
                                } else {
                                    saveValue("state", false, "boolean");
                                    saveValue("mode", "-1", "string");
                                }
                                
                 
                 
                                //log(findCodeVal(body.object_result, "T07"));
                                
                            } else {
                                // Login-Fehler
                                log("Fehler in updateDeviceDetails(): " + response.body);
                                token = "";
                                device = "";
                            }
                            
                        });
                    }
                }
                 
                function updateDevicePower(devicecode, power) {
                    var powerOpt;
                    var powerMode = 2;
                 
                    if(power==-1) {
                        // aus
                        powerOpt = 0;
                        powerMode = -1;
                    } else if(power==0) {
                        // an und kühlen
                        powerOpt = 1;
                        powerMode = 0;
                    } else if(power==1) {
                        // an und heizen
                        powerOpt = 1;
                        powerMode = 1;
                    } else if(power==2) {
                        // an und auto
                        powerOpt = 1;
                        powerMode = 2;
                    } else {
                        log("ungülter Zustand!");
                        return;
                    }
                 
                    if(token!="") {
                        
                        var optionsDev = {
                            url: cloudURL + '/app/device/control.json',
                            headers: { "x-token": token },
                            json: {"param":[{ "device_code": devicecode, "protocol_code": "Power","value": powerOpt }]},
                            method: 'POST',
                            rejectUnauthorized: false
                        };
                 
                        var request = require('request');
                 
                        request(optionsDev,function (error, response, body){
                            //log(devicecode);
                            //log(JSON.stringify(response));
                            //log(JSON.stringify(body.object_result));
                 
                            if(parseInt(body.error_code)==0) {
                                saveValue("mode", power, "string");
                                if(power>=0) updateDeviceMode(device, power);
                                
                            } else {
                                log("Zustandsänderung fehlgeschlagen!");
                            }
                            
                        });
                    }
                }
                 
                function updateDeviceMode(devicecode, mode) {
                    
                 
                    if(token!="") {
                        
                        var optionsDev = {
                            url: cloudURL + '/app/device/control.json',
                            headers: { "x-token": token },
                            json: {"param":[{ "device_code": devicecode, "protocol_code": "mode","value": mode }]},
                            method: 'POST',
                            rejectUnauthorized: false
                            //headers: {"content-type": "application/json"},
                            //charset: 'utf8',
                            //json: true
                            
                        };
                 
                        var request = require('request');
                 
                        request(optionsDev,function (error, response, body){
                            //log(devicecode);
                            //log(JSON.stringify(response));
                            //log(JSON.stringify(body.object_result));
                 
                            if(parseInt(body.error_code)==0) {
                                saveValue("mode", mode, "string");
                                
                                
                            } else {
                                log("Zustandsänderung fehlgeschlagen!");
                            }
                            
                        });
                    }
                }
                 
                function updateDeviceSilent(devicecode, silent) {
                    
                    var silentMode;
                 
                    if(silent) {
                        silentMode = "1";
                    } else {
                        silentMode = "0";
                    }
                 
                    if(token!="") {
                        
                        var optionsDev = {
                            url: cloudURL + '/app/device/control.json',
                            headers: { "x-token": token },
                            json: {"param":[{ "device_code": devicecode, "protocol_code": "Manual-mute","value": silentMode }]},
                            method: 'POST',
                            rejectUnauthorized: false
                            //headers: {"content-type": "application/json"},
                            //charset: 'utf8',
                            //json: true
                            
                        };
                 
                        var request = require('request');
                 
                        request(optionsDev,function (error, response, body){
                            //log(devicecode);
                            //log(JSON.stringify(response));
                            //log(JSON.stringify(body.object_result));
                 
                            if(parseInt(body.error_code)==0) {
                                saveValue("silent", silent, "boolean");
                                
                                
                            } else {
                                log("Zustandsänderung fehlgeschlagen!");
                            }
                            
                        });
                    }
                }
                 
                function updateDeviceSetTemp(devicecode, temperature) {
                 
                    var sTemperature = temperature.toString().replace(",", ".");
                    var sMode = getState(dpRoot + ".mode").val;
                    if(sMode=="-1") {
                        //log("Gerät einschalten um Temperatur zu ändern!", 'warn');
                        return;
                    } else if(sMode=="0") {
                        sMode = "R01"; // Kühlen
                    } else if(sMode=="1") {
                        sMode = "R02"; // Heizen
                    } else if(sMode=="2") {
                        sMode = "R03"; // Auto
                    }
                 
                    
                 
                 
                    if(token!="") {
                        
                        var optionsDev = {
                            url: cloudURL + '/app/device/control.json',
                            headers: { "x-token": token },
                            json: {"param":[{ "device_code": devicecode, "protocol_code": "R01","value": sTemperature },{ "device_code": devicecode, "protocol_code": "R02","value": sTemperature },{ "device_code": devicecode, "protocol_code": "R03","value": sTemperature },{ "device_code": devicecode, "protocol_code": "Set_Temp","value": sTemperature }]},
                            method: 'POST',
                            rejectUnauthorized: false
                            //headers: {"content-type": "application/json"},
                            //charset: 'utf8',
                            //json: true
                            
                        };
                 
                        var request = require('request');
                 
                        request(optionsDev,function (error, response, body){
                            //log(devicecode);
                            //log(JSON.stringify(response));
                            //log(JSON.stringify(body.object_result));
                 
                            if(parseInt(body.error_code)==0) {
                                saveValue("tempSet", temperature, "number");
                                
                                
                            } else {
                                log("Zustandsänderung fehlgeschlagen!");
                                log(JSON.stringify(response));
                            }
                            
                        });
                    }
                }
                 
                // Beginn des Skripts
                 
                createobjects(); // DPs anlegen
                 
                updateToken(); // Zugriffstoken erfragen und aktuelle Werte lesen
                 
                schedule('*/' + interval + ' * * * * *', function () {
                    // regelmäßig Token und Zustand abfragen
                    updateToken();
                 
                    // gewünschte Änderungen ausführen
                    if(!getState(dpRoot + ".mode").ack) {
                        updateDevicePower(device, getState(dpRoot + ".mode").val);
                    }
                    if(!getState(dpRoot + ".silent").ack) {
                        updateDevicePower(device, getState(dpRoot + ".silent").val);
                    }
                });
                 
                tokenRefreshTimer = setInterval(async function () {
                    // Token verfällt nach 60min
                    token = "";
                    //log("Token nach Intervall verworfen.")
                    updateToken();
                }, 3600000);
                 
                on({id: dpRoot + ".mode", change: "ne", ack: false}, async function (obj) {
                    updateToken();
                    updateDevicePower(device, getState(dpRoot + ".mode").val);
                });
                 
                on({id: dpRoot + ".silent", change: "ne", ack: false}, async function (obj) {
                    updateToken();
                    updateDeviceSilent(device, getState(dpRoot + ".silent").val);
                });
                 
                on({id: dpRoot + ".tempSet", change: "ne", ack: false}, async function (obj) {
                    updateToken();
                    updateDeviceSetTemp(device, getState(dpRoot + ".tempSet").val);
                });
                 
                
                S Offline
                S Offline
                sunnylaila
                schrieb am zuletzt editiert von
                #282

                @znyde said in [Javascript] Midas (Aquatemp) Poolheizung:

                @sunnylaila

                Bei mir ist das Modul an eine Promo Next 5 angeschlossen, das Mapping mit den Temperaturen habe ich geändert... übrigens kannst Du das in deiner App abfragen Burgermenü oben rechts -> Parametereinstellungen -> Kennwort: 022 (so war es bei mir)

                // Midas Poolheizung
                // v0.0.5
                // Changelog:
                // 0.0.5: weitere Abfragewerte hinzugefügt (Kompressor- und Ansaugtemperatur)
                // 0.0.4: Tokenverfall jetzt 60min nach Skriptstart und nicht zu jeder vollen Stunde (Dank an dering)
                // 0.0.3: Datenpunkte beim Start automatisch anlegen (Dank an Andy200877)
                // 0.0.2: Token bei jedem Set-Vorgang prüfen und ggf. neu anfordern (Dank an dering)
                 
                const username = "xxx@xxxx.com";
                const password = "xxxxxx";
                const interval = 30;
                 
                 
                const cloudURL = "https://cloud.linked-go.com/cloudservice/api";
                 
                const dpRoot = "0_userdata.0.Poolheizung";
                 
                var token = "";
                var tokenRefreshTimer;
                var device = "";
                var reachable = false;
                 
                function clearValues() {
                    saveValue("error", true, "boolean");
                    saveValue("consumption", 0, "number");
                    saveValue("state", false, "boolean");
                }
                 
                function saveValue(key, value, sType) {
                    var dp = dpRoot + "." + key;
                 
                    if ( !existsState(dp )) {
                        createState(dp,value,{name: key,  type: 'number', role: 'value'}, function () {}); 
                    } else {
                        setState(dp,value,true);
                    }
                }
                 
                function findCodeVal(result, code) {
                    //log(code);
                    for(var i=0; i<result.length; i++) {
                        //log(result[i].code);
                        
                        if(result[i].code.indexOf(code) >= 0) {
                            return result[i].value;
                        }
                    }
                    return "";
                }
                 
                function createobjects() {
                    log ("erstelle Objekte");
                    createState(dpRoot + '.ambient', {read: true, write: false,  type: "number", unit:"°C", name: "Umgebungstemperatur"});
                    createState(dpRoot + '.connection', {read: true, write: false,  type: "boolean", role: "state", name: "Verbindung", def: "false"});
                    createState(dpRoot + '.consumption', {read: true, write: false,  type: "number", unit:"W", name: "Stromverbrauch", def: 0});
                    createState(dpRoot + '.error', {read: true, write: false,  type: "boolean", role: "state", name: "Fehler", def: "false"});
                    createState(dpRoot + '.errorCode', {read: true, write: false,  type: "string", name: "Fehlercode", def: ""});
                    createState(dpRoot + '.errorLevel', {read: true, write: false,  type: "number", name: "Fehlerlevel"});
                    createState(dpRoot + '.errorMessage', {read: true, write: false,  type: "string", name: "Fehlermeldung", def: ""});
                    createState(dpRoot + '.mode', {read: true, write: true,  type: "string", states: "-1:off;0:cool;1:heat;2:auto", name: "Modus", def: ""});
                    createState(dpRoot + '.silent', {read: true, write: true,  type: "boolean", role: "state", name: "Silent", def: "false"});
                    createState(dpRoot + '.state', {read: true, write: false,  type: "boolean", role: "state", name: "Status", def: "false"});
                    createState(dpRoot + '.tempIn', {read: true, write: false,  type: "number", unit:"°C", name: "Eingangstemperatur"});
                    createState(dpRoot + '.tempOut', {read: true, write: false,  type: "number", unit:"°C", name: "Ausgangstemperatur"});
                    createState(dpRoot + '.tempSet', {read: true, write: true,  type: "number", unit:"°C", name: "Solltemperatur"});
                    createState(dpRoot + '.suctionTemp', {read: true, write: false,  type: "number", unit:"°C", name: "Luftansaugtemperatur"});
                    createState(dpRoot + '.coilTemp', {read: true, write: false,  type: "number", unit:"°C", name: "Kompressortemperatur"});
                    
                    createState(dpRoot + '.rawJSON', {read: true, write: false,  type: "array", name: "komplette Rückgabe"});
                }
                 
                function updateToken() {
                 
                    if(token=="") {
                        log("Token Neuanforderung");
                        var request = require('request');
                  
                        var options = {
                            url: cloudURL + '/app/user/login.json',
                            method: 'POST',
                            json: { "user_name": username, "password": password, "type": "2" },
                            rejectUnauthorized: false
                        };
                        
                        request(options,function (error, response, body){
                         console.log(error);
                            console.log(JSON.stringify(response));
                            if(parseInt(body.error_code)==0) {
                                
                                token = body.object_result["x-token"];
                                log("Login ok! Token " + token);
                                updateDeviceID();
                            } else {
                                // Login-Fehler
                                log("Login-Fehler in updateToken(): " + response.body, "warn");
                                token = "";
                            }
                            
                        });
                    } else {
                        updateDeviceID();
                    }
                 
                    
                 
                    
                 
                }
                 
                function updateDeviceID() {
                    
                    if(token!="") {
                        var optionsDev = {
                            url: cloudURL + '/app/device/deviceList.json',
                            headers: { "x-token": token},
                            body: {product_ids: ["1442284873216843776"]},
                           
                            method: 'POST',
                            json: true,
                            
                            rejectUnauthorized: false          
                        };
                 
                        var request = require('request');
                 
                        request(optionsDev,function (error, response, body1){
                  //  console.log(parseInt(body1.error_code));
                  //         console.log(JSON.stringify(response));
                   //         log(JSON.stringify(body1.object_result));
                 
                            if(parseInt(body1.error_code)==0) {
                                
                                //token = body.object_result["x-token"];
                                log("Login ok! Token " + token);
                                
                               device = body1.object_result[0].device_code;
                               // device=1;
                                console.log(device);
                                reachable = (body1.object_result[0].device_status=="ONLINE");
                                if(reachable) {
                                    saveValue("connection", true, "boolean");
                                    if(device!="") updateDeviceStatus(device);
                                } else {
                                    // offline
                                    device = "";
                                    saveValue("connection", false, "boolean");
                                }
                                
                            } else {
                                // Login-Fehler
                                //log("Fehler in updateDeviceID(): " + response.body);
                                token = "";
                                device = "";
                                reachable = false;
                                saveValue("connection", false, "boolean");
                            }
                            
                        });
                    }
                    
                
                }
                 
                
                function updateDeviceStatus(devicecode) {
                    if(token!="") {
                        
                        var optionsDev = {
                            url: cloudURL + '/app/device/getDeviceStatus.json',
                            headers: { "x-token": token },
                            json: { "device_code": devicecode },
                            method: 'POST',
                             rejectUnauthorized: false
                            
                        };
                 
                        var request = require('request');
                 
                        request(optionsDev,function (error, response, body){
                    
                            //log(JSON.stringify(response));
                            //log(JSON.stringify(body.object_result));
                 
                            if(parseInt(body.error_code)==0) {
                 
                                if(body.object_result["is_fault"]==true) {
                                    // TODO: Fehlerbeschreibung abrufen
                                     //clearValues();
                                    saveValue("error", true, "boolean");
                                    updateDeviceDetails(devicecode);
                                    updateDeviceErrorMsg(devicecode);
                                } else {
                                    // kein Fehler
                                    saveValue("error", false, "boolean");
                                    saveValue("errorMessage", "", "string");
                                    saveValue("errorCode", "", "string");
                                    saveValue("errorLevel", 0, "number");
                                    updateDeviceDetails(devicecode);
                                }
                                
                                //token = body.object_result["x-token"];
                                //log("Login ok! Token " + token);
                                
                            } else {
                                // Login-Fehler
                                log("Fehler in updateDeviceStatus(): " + response.body);
                                token = "";
                                device = "";
                            }
                            
                        });
                    }
                }
                 
                function updateDeviceErrorMsg(devicecode) {
                    if(token!="") {
                        
                        var optionsDev = {
                            url: cloudURL + '/app/device/getFaultDataByDeviceCode.json',
                            headers: { "x-token": token },
                            json: { "device_code": devicecode },
                            method: 'POST',
                             rejectUnauthorized: false
                            //headers: {"content-type": "application/json"},
                            //charset: 'utf8',
                            //json: true
                            
                        };
                 
                        var request = require('request');
                 
                        request(optionsDev,function (error, response, body){
                    
                            //log(JSON.stringify(response));
                            //log(JSON.stringify(body.object_result));
                 
                            if(parseInt(body.error_code)==0) {
                 
                                
                                saveValue("error", true, "boolean");
                                saveValue("errorMessage", body.object_result[0].description, "string");
                                saveValue("errorCode", body.object_result[0].fault_code, "string");
                                saveValue("errorLevel", body.object_result[0].error_level, "string");
                                
                            } else {
                                // Login-Fehler
                                log("Fehler in updateDeviceErrorMsg(): " + response.body);
                                token = "";
                                device = "";
                            }
                            
                        });
                    }
                }
                 
                function updateDeviceDetails(devicecode) {
                    if(token!="") {
                        
                        var optionsDev = {
                            url: cloudURL + '/app/device/getDataByCode.json',
                            headers: { "x-token": token },
                          //  json: { "device_code": devicecode },
                          // R02=Heatin-Set Point,T2=inlet Water Temp, T3=Outlet Water Temp,T5=Ambient-Temp,
                          json: { "device_code": devicecode, "protocal_codes":["R02","T1","T2","T3","T5","P01","P02","Power","Mode"] },
                           
                           // json: { "device_code": devicecode, "protocal_codes":["Power","Mode","Manual-mute","T01","T02","2074","2075","2076","2077","H03","Set-Temp","R08","R09","R10","R11","R01","R02","R03","T03","1158","1159","F17","H02","T04","T05","T07","T14","T17"] },
                            // "protocal_codes":["Power","Mode","Manual-mute","T01","T02","2074","2075","2076","2077","H03","Set_Temp","R08","R09","R10","R11","R01","R02","R03","T03","1158","1159","F17","H02","T04","T05"]
                            method: 'POST',
                            rejectUnauthorized: false
                            
                        };
                 
                        var request = require('request');
                 
                        request(optionsDev,function (error, response, body){
                  console.log("update detail" + JSON.stringify(response));
                 
                            if(parseInt(body.error_code)==0) {
                 
                                saveValue("rawJSON", body.object_result, "string");
                                
                                if(findCodeVal(body.object_result, "Power")=="1") {
                                    // Stromverbrauch T07 x T14 in Watt
                                    saveValue("consumption", parseFloat(findCodeVal(body.object_result, "T07")) * parseFloat(findCodeVal(body.object_result, "T14")), "number");
                 
                                    // Lüfter-Drehzahl T17
                                    saveValue("rotor", parseInt(findCodeVal(body.object_result, "T17")), "number");
                                    // Luftansaug-Temperatur T01
                                    saveValue("suctionTemp", parseFloat(findCodeVal(body.object_result, "T1")), "number");
                                    // Inlet-Temperatur T02
                                    saveValue("tempIn", parseFloat(findCodeVal(body.object_result, "T2")), "number");
                                    // outlet-Temperatur T03
                                    saveValue("tempOut", parseFloat(findCodeVal(body.object_result, "T3")), "number");
                                    // Coil-Temperatur T04
                                    saveValue("coilTemp", parseFloat(findCodeVal(body.object_result, "T04")), "number");
                                } else {
                                    saveValue("consumption", 0, "number");
                                    saveValue("rotor", 0, "number");
                                }
                 
                 
                 
                                // Ziel-Temperatur Set_Temp
                                saveValue("tempSet", parseFloat(findCodeVal(body.object_result, "Set_Temp")), "number");
                 
                                // Umgebungs-Temperatur T05
                                saveValue("ambient", parseFloat(findCodeVal(body.object_result, "T5")), "number");
                 
                                // Flüstermodus Manual-mute
                                if(findCodeVal(body.object_result, "Manual-mute")=="1") {
                                    saveValue("silent", true, "boolean");
                                } else {
                                    saveValue("silent", false, "boolean");
                                }
                 
                                // Zustand Power
                                if(findCodeVal(body.object_result, "Power")=="1") {
                                    saveValue("state", true, "boolean");
                                    saveValue("mode", findCodeVal(body.object_result,"Mode"), "string");
                                } else {
                                    saveValue("state", false, "boolean");
                                    saveValue("mode", "-1", "string");
                                }
                                
                 
                 
                                //log(findCodeVal(body.object_result, "T07"));
                                
                            } else {
                                // Login-Fehler
                                log("Fehler in updateDeviceDetails(): " + response.body);
                                token = "";
                                device = "";
                            }
                            
                        });
                    }
                }
                 
                function updateDevicePower(devicecode, power) {
                    var powerOpt;
                    var powerMode = 2;
                 
                    if(power==-1) {
                        // aus
                        powerOpt = 0;
                        powerMode = -1;
                    } else if(power==0) {
                        // an und kühlen
                        powerOpt = 1;
                        powerMode = 0;
                    } else if(power==1) {
                        // an und heizen
                        powerOpt = 1;
                        powerMode = 1;
                    } else if(power==2) {
                        // an und auto
                        powerOpt = 1;
                        powerMode = 2;
                    } else {
                        log("ungülter Zustand!");
                        return;
                    }
                 
                    if(token!="") {
                        
                        var optionsDev = {
                            url: cloudURL + '/app/device/control.json',
                            headers: { "x-token": token },
                            json: {"param":[{ "device_code": devicecode, "protocol_code": "Power","value": powerOpt }]},
                            method: 'POST',
                            rejectUnauthorized: false
                        };
                 
                        var request = require('request');
                 
                        request(optionsDev,function (error, response, body){
                            //log(devicecode);
                            //log(JSON.stringify(response));
                            //log(JSON.stringify(body.object_result));
                 
                            if(parseInt(body.error_code)==0) {
                                saveValue("mode", power, "string");
                                if(power>=0) updateDeviceMode(device, power);
                                
                            } else {
                                log("Zustandsänderung fehlgeschlagen!");
                            }
                            
                        });
                    }
                }
                 
                function updateDeviceMode(devicecode, mode) {
                    
                 
                    if(token!="") {
                        
                        var optionsDev = {
                            url: cloudURL + '/app/device/control.json',
                            headers: { "x-token": token },
                            json: {"param":[{ "device_code": devicecode, "protocol_code": "mode","value": mode }]},
                            method: 'POST',
                            rejectUnauthorized: false
                            //headers: {"content-type": "application/json"},
                            //charset: 'utf8',
                            //json: true
                            
                        };
                 
                        var request = require('request');
                 
                        request(optionsDev,function (error, response, body){
                            //log(devicecode);
                            //log(JSON.stringify(response));
                            //log(JSON.stringify(body.object_result));
                 
                            if(parseInt(body.error_code)==0) {
                                saveValue("mode", mode, "string");
                                
                                
                            } else {
                                log("Zustandsänderung fehlgeschlagen!");
                            }
                            
                        });
                    }
                }
                 
                function updateDeviceSilent(devicecode, silent) {
                    
                    var silentMode;
                 
                    if(silent) {
                        silentMode = "1";
                    } else {
                        silentMode = "0";
                    }
                 
                    if(token!="") {
                        
                        var optionsDev = {
                            url: cloudURL + '/app/device/control.json',
                            headers: { "x-token": token },
                            json: {"param":[{ "device_code": devicecode, "protocol_code": "Manual-mute","value": silentMode }]},
                            method: 'POST',
                            rejectUnauthorized: false
                            //headers: {"content-type": "application/json"},
                            //charset: 'utf8',
                            //json: true
                            
                        };
                 
                        var request = require('request');
                 
                        request(optionsDev,function (error, response, body){
                            //log(devicecode);
                            //log(JSON.stringify(response));
                            //log(JSON.stringify(body.object_result));
                 
                            if(parseInt(body.error_code)==0) {
                                saveValue("silent", silent, "boolean");
                                
                                
                            } else {
                                log("Zustandsänderung fehlgeschlagen!");
                            }
                            
                        });
                    }
                }
                 
                function updateDeviceSetTemp(devicecode, temperature) {
                 
                    var sTemperature = temperature.toString().replace(",", ".");
                    var sMode = getState(dpRoot + ".mode").val;
                    if(sMode=="-1") {
                        //log("Gerät einschalten um Temperatur zu ändern!", 'warn');
                        return;
                    } else if(sMode=="0") {
                        sMode = "R01"; // Kühlen
                    } else if(sMode=="1") {
                        sMode = "R02"; // Heizen
                    } else if(sMode=="2") {
                        sMode = "R03"; // Auto
                    }
                 
                    
                 
                 
                    if(token!="") {
                        
                        var optionsDev = {
                            url: cloudURL + '/app/device/control.json',
                            headers: { "x-token": token },
                            json: {"param":[{ "device_code": devicecode, "protocol_code": "R01","value": sTemperature },{ "device_code": devicecode, "protocol_code": "R02","value": sTemperature },{ "device_code": devicecode, "protocol_code": "R03","value": sTemperature },{ "device_code": devicecode, "protocol_code": "Set_Temp","value": sTemperature }]},
                            method: 'POST',
                            rejectUnauthorized: false
                            //headers: {"content-type": "application/json"},
                            //charset: 'utf8',
                            //json: true
                            
                        };
                 
                        var request = require('request');
                 
                        request(optionsDev,function (error, response, body){
                            //log(devicecode);
                            //log(JSON.stringify(response));
                            //log(JSON.stringify(body.object_result));
                 
                            if(parseInt(body.error_code)==0) {
                                saveValue("tempSet", temperature, "number");
                                
                                
                            } else {
                                log("Zustandsänderung fehlgeschlagen!");
                                log(JSON.stringify(response));
                            }
                            
                        });
                    }
                }
                 
                // Beginn des Skripts
                 
                createobjects(); // DPs anlegen
                 
                updateToken(); // Zugriffstoken erfragen und aktuelle Werte lesen
                 
                schedule('*/' + interval + ' * * * * *', function () {
                    // regelmäßig Token und Zustand abfragen
                    updateToken();
                 
                    // gewünschte Änderungen ausführen
                    if(!getState(dpRoot + ".mode").ack) {
                        updateDevicePower(device, getState(dpRoot + ".mode").val);
                    }
                    if(!getState(dpRoot + ".silent").ack) {
                        updateDevicePower(device, getState(dpRoot + ".silent").val);
                    }
                });
                 
                tokenRefreshTimer = setInterval(async function () {
                    // Token verfällt nach 60min
                    token = "";
                    //log("Token nach Intervall verworfen.")
                    updateToken();
                }, 3600000);
                 
                on({id: dpRoot + ".mode", change: "ne", ack: false}, async function (obj) {
                    updateToken();
                    updateDevicePower(device, getState(dpRoot + ".mode").val);
                });
                 
                on({id: dpRoot + ".silent", change: "ne", ack: false}, async function (obj) {
                    updateToken();
                    updateDeviceSilent(device, getState(dpRoot + ".silent").val);
                });
                 
                on({id: dpRoot + ".tempSet", change: "ne", ack: false}, async function (obj) {
                    updateToken();
                    updateDeviceSetTemp(device, getState(dpRoot + ".tempSet").val);
                });
                 
                

                und einmal hier das komplette Javascript
                was dann funktioniert hat

                Michael RolingM 1 Antwort Letzte Antwort
                0
                • S sunnylaila

                  @znyde said in [Javascript] Midas (Aquatemp) Poolheizung:

                  @sunnylaila

                  Bei mir ist das Modul an eine Promo Next 5 angeschlossen, das Mapping mit den Temperaturen habe ich geändert... übrigens kannst Du das in deiner App abfragen Burgermenü oben rechts -> Parametereinstellungen -> Kennwort: 022 (so war es bei mir)

                  // Midas Poolheizung
                  // v0.0.5
                  // Changelog:
                  // 0.0.5: weitere Abfragewerte hinzugefügt (Kompressor- und Ansaugtemperatur)
                  // 0.0.4: Tokenverfall jetzt 60min nach Skriptstart und nicht zu jeder vollen Stunde (Dank an dering)
                  // 0.0.3: Datenpunkte beim Start automatisch anlegen (Dank an Andy200877)
                  // 0.0.2: Token bei jedem Set-Vorgang prüfen und ggf. neu anfordern (Dank an dering)
                   
                  const username = "xxx@xxxx.com";
                  const password = "xxxxxx";
                  const interval = 30;
                   
                   
                  const cloudURL = "https://cloud.linked-go.com/cloudservice/api";
                   
                  const dpRoot = "0_userdata.0.Poolheizung";
                   
                  var token = "";
                  var tokenRefreshTimer;
                  var device = "";
                  var reachable = false;
                   
                  function clearValues() {
                      saveValue("error", true, "boolean");
                      saveValue("consumption", 0, "number");
                      saveValue("state", false, "boolean");
                  }
                   
                  function saveValue(key, value, sType) {
                      var dp = dpRoot + "." + key;
                   
                      if ( !existsState(dp )) {
                          createState(dp,value,{name: key,  type: 'number', role: 'value'}, function () {}); 
                      } else {
                          setState(dp,value,true);
                      }
                  }
                   
                  function findCodeVal(result, code) {
                      //log(code);
                      for(var i=0; i<result.length; i++) {
                          //log(result[i].code);
                          
                          if(result[i].code.indexOf(code) >= 0) {
                              return result[i].value;
                          }
                      }
                      return "";
                  }
                   
                  function createobjects() {
                      log ("erstelle Objekte");
                      createState(dpRoot + '.ambient', {read: true, write: false,  type: "number", unit:"°C", name: "Umgebungstemperatur"});
                      createState(dpRoot + '.connection', {read: true, write: false,  type: "boolean", role: "state", name: "Verbindung", def: "false"});
                      createState(dpRoot + '.consumption', {read: true, write: false,  type: "number", unit:"W", name: "Stromverbrauch", def: 0});
                      createState(dpRoot + '.error', {read: true, write: false,  type: "boolean", role: "state", name: "Fehler", def: "false"});
                      createState(dpRoot + '.errorCode', {read: true, write: false,  type: "string", name: "Fehlercode", def: ""});
                      createState(dpRoot + '.errorLevel', {read: true, write: false,  type: "number", name: "Fehlerlevel"});
                      createState(dpRoot + '.errorMessage', {read: true, write: false,  type: "string", name: "Fehlermeldung", def: ""});
                      createState(dpRoot + '.mode', {read: true, write: true,  type: "string", states: "-1:off;0:cool;1:heat;2:auto", name: "Modus", def: ""});
                      createState(dpRoot + '.silent', {read: true, write: true,  type: "boolean", role: "state", name: "Silent", def: "false"});
                      createState(dpRoot + '.state', {read: true, write: false,  type: "boolean", role: "state", name: "Status", def: "false"});
                      createState(dpRoot + '.tempIn', {read: true, write: false,  type: "number", unit:"°C", name: "Eingangstemperatur"});
                      createState(dpRoot + '.tempOut', {read: true, write: false,  type: "number", unit:"°C", name: "Ausgangstemperatur"});
                      createState(dpRoot + '.tempSet', {read: true, write: true,  type: "number", unit:"°C", name: "Solltemperatur"});
                      createState(dpRoot + '.suctionTemp', {read: true, write: false,  type: "number", unit:"°C", name: "Luftansaugtemperatur"});
                      createState(dpRoot + '.coilTemp', {read: true, write: false,  type: "number", unit:"°C", name: "Kompressortemperatur"});
                      
                      createState(dpRoot + '.rawJSON', {read: true, write: false,  type: "array", name: "komplette Rückgabe"});
                  }
                   
                  function updateToken() {
                   
                      if(token=="") {
                          log("Token Neuanforderung");
                          var request = require('request');
                    
                          var options = {
                              url: cloudURL + '/app/user/login.json',
                              method: 'POST',
                              json: { "user_name": username, "password": password, "type": "2" },
                              rejectUnauthorized: false
                          };
                          
                          request(options,function (error, response, body){
                           console.log(error);
                              console.log(JSON.stringify(response));
                              if(parseInt(body.error_code)==0) {
                                  
                                  token = body.object_result["x-token"];
                                  log("Login ok! Token " + token);
                                  updateDeviceID();
                              } else {
                                  // Login-Fehler
                                  log("Login-Fehler in updateToken(): " + response.body, "warn");
                                  token = "";
                              }
                              
                          });
                      } else {
                          updateDeviceID();
                      }
                   
                      
                   
                      
                   
                  }
                   
                  function updateDeviceID() {
                      
                      if(token!="") {
                          var optionsDev = {
                              url: cloudURL + '/app/device/deviceList.json',
                              headers: { "x-token": token},
                              body: {product_ids: ["1442284873216843776"]},
                             
                              method: 'POST',
                              json: true,
                              
                              rejectUnauthorized: false          
                          };
                   
                          var request = require('request');
                   
                          request(optionsDev,function (error, response, body1){
                    //  console.log(parseInt(body1.error_code));
                    //         console.log(JSON.stringify(response));
                     //         log(JSON.stringify(body1.object_result));
                   
                              if(parseInt(body1.error_code)==0) {
                                  
                                  //token = body.object_result["x-token"];
                                  log("Login ok! Token " + token);
                                  
                                 device = body1.object_result[0].device_code;
                                 // device=1;
                                  console.log(device);
                                  reachable = (body1.object_result[0].device_status=="ONLINE");
                                  if(reachable) {
                                      saveValue("connection", true, "boolean");
                                      if(device!="") updateDeviceStatus(device);
                                  } else {
                                      // offline
                                      device = "";
                                      saveValue("connection", false, "boolean");
                                  }
                                  
                              } else {
                                  // Login-Fehler
                                  //log("Fehler in updateDeviceID(): " + response.body);
                                  token = "";
                                  device = "";
                                  reachable = false;
                                  saveValue("connection", false, "boolean");
                              }
                              
                          });
                      }
                      
                  
                  }
                   
                  
                  function updateDeviceStatus(devicecode) {
                      if(token!="") {
                          
                          var optionsDev = {
                              url: cloudURL + '/app/device/getDeviceStatus.json',
                              headers: { "x-token": token },
                              json: { "device_code": devicecode },
                              method: 'POST',
                               rejectUnauthorized: false
                              
                          };
                   
                          var request = require('request');
                   
                          request(optionsDev,function (error, response, body){
                      
                              //log(JSON.stringify(response));
                              //log(JSON.stringify(body.object_result));
                   
                              if(parseInt(body.error_code)==0) {
                   
                                  if(body.object_result["is_fault"]==true) {
                                      // TODO: Fehlerbeschreibung abrufen
                                       //clearValues();
                                      saveValue("error", true, "boolean");
                                      updateDeviceDetails(devicecode);
                                      updateDeviceErrorMsg(devicecode);
                                  } else {
                                      // kein Fehler
                                      saveValue("error", false, "boolean");
                                      saveValue("errorMessage", "", "string");
                                      saveValue("errorCode", "", "string");
                                      saveValue("errorLevel", 0, "number");
                                      updateDeviceDetails(devicecode);
                                  }
                                  
                                  //token = body.object_result["x-token"];
                                  //log("Login ok! Token " + token);
                                  
                              } else {
                                  // Login-Fehler
                                  log("Fehler in updateDeviceStatus(): " + response.body);
                                  token = "";
                                  device = "";
                              }
                              
                          });
                      }
                  }
                   
                  function updateDeviceErrorMsg(devicecode) {
                      if(token!="") {
                          
                          var optionsDev = {
                              url: cloudURL + '/app/device/getFaultDataByDeviceCode.json',
                              headers: { "x-token": token },
                              json: { "device_code": devicecode },
                              method: 'POST',
                               rejectUnauthorized: false
                              //headers: {"content-type": "application/json"},
                              //charset: 'utf8',
                              //json: true
                              
                          };
                   
                          var request = require('request');
                   
                          request(optionsDev,function (error, response, body){
                      
                              //log(JSON.stringify(response));
                              //log(JSON.stringify(body.object_result));
                   
                              if(parseInt(body.error_code)==0) {
                   
                                  
                                  saveValue("error", true, "boolean");
                                  saveValue("errorMessage", body.object_result[0].description, "string");
                                  saveValue("errorCode", body.object_result[0].fault_code, "string");
                                  saveValue("errorLevel", body.object_result[0].error_level, "string");
                                  
                              } else {
                                  // Login-Fehler
                                  log("Fehler in updateDeviceErrorMsg(): " + response.body);
                                  token = "";
                                  device = "";
                              }
                              
                          });
                      }
                  }
                   
                  function updateDeviceDetails(devicecode) {
                      if(token!="") {
                          
                          var optionsDev = {
                              url: cloudURL + '/app/device/getDataByCode.json',
                              headers: { "x-token": token },
                            //  json: { "device_code": devicecode },
                            // R02=Heatin-Set Point,T2=inlet Water Temp, T3=Outlet Water Temp,T5=Ambient-Temp,
                            json: { "device_code": devicecode, "protocal_codes":["R02","T1","T2","T3","T5","P01","P02","Power","Mode"] },
                             
                             // json: { "device_code": devicecode, "protocal_codes":["Power","Mode","Manual-mute","T01","T02","2074","2075","2076","2077","H03","Set-Temp","R08","R09","R10","R11","R01","R02","R03","T03","1158","1159","F17","H02","T04","T05","T07","T14","T17"] },
                              // "protocal_codes":["Power","Mode","Manual-mute","T01","T02","2074","2075","2076","2077","H03","Set_Temp","R08","R09","R10","R11","R01","R02","R03","T03","1158","1159","F17","H02","T04","T05"]
                              method: 'POST',
                              rejectUnauthorized: false
                              
                          };
                   
                          var request = require('request');
                   
                          request(optionsDev,function (error, response, body){
                    console.log("update detail" + JSON.stringify(response));
                   
                              if(parseInt(body.error_code)==0) {
                   
                                  saveValue("rawJSON", body.object_result, "string");
                                  
                                  if(findCodeVal(body.object_result, "Power")=="1") {
                                      // Stromverbrauch T07 x T14 in Watt
                                      saveValue("consumption", parseFloat(findCodeVal(body.object_result, "T07")) * parseFloat(findCodeVal(body.object_result, "T14")), "number");
                   
                                      // Lüfter-Drehzahl T17
                                      saveValue("rotor", parseInt(findCodeVal(body.object_result, "T17")), "number");
                                      // Luftansaug-Temperatur T01
                                      saveValue("suctionTemp", parseFloat(findCodeVal(body.object_result, "T1")), "number");
                                      // Inlet-Temperatur T02
                                      saveValue("tempIn", parseFloat(findCodeVal(body.object_result, "T2")), "number");
                                      // outlet-Temperatur T03
                                      saveValue("tempOut", parseFloat(findCodeVal(body.object_result, "T3")), "number");
                                      // Coil-Temperatur T04
                                      saveValue("coilTemp", parseFloat(findCodeVal(body.object_result, "T04")), "number");
                                  } else {
                                      saveValue("consumption", 0, "number");
                                      saveValue("rotor", 0, "number");
                                  }
                   
                   
                   
                                  // Ziel-Temperatur Set_Temp
                                  saveValue("tempSet", parseFloat(findCodeVal(body.object_result, "Set_Temp")), "number");
                   
                                  // Umgebungs-Temperatur T05
                                  saveValue("ambient", parseFloat(findCodeVal(body.object_result, "T5")), "number");
                   
                                  // Flüstermodus Manual-mute
                                  if(findCodeVal(body.object_result, "Manual-mute")=="1") {
                                      saveValue("silent", true, "boolean");
                                  } else {
                                      saveValue("silent", false, "boolean");
                                  }
                   
                                  // Zustand Power
                                  if(findCodeVal(body.object_result, "Power")=="1") {
                                      saveValue("state", true, "boolean");
                                      saveValue("mode", findCodeVal(body.object_result,"Mode"), "string");
                                  } else {
                                      saveValue("state", false, "boolean");
                                      saveValue("mode", "-1", "string");
                                  }
                                  
                   
                   
                                  //log(findCodeVal(body.object_result, "T07"));
                                  
                              } else {
                                  // Login-Fehler
                                  log("Fehler in updateDeviceDetails(): " + response.body);
                                  token = "";
                                  device = "";
                              }
                              
                          });
                      }
                  }
                   
                  function updateDevicePower(devicecode, power) {
                      var powerOpt;
                      var powerMode = 2;
                   
                      if(power==-1) {
                          // aus
                          powerOpt = 0;
                          powerMode = -1;
                      } else if(power==0) {
                          // an und kühlen
                          powerOpt = 1;
                          powerMode = 0;
                      } else if(power==1) {
                          // an und heizen
                          powerOpt = 1;
                          powerMode = 1;
                      } else if(power==2) {
                          // an und auto
                          powerOpt = 1;
                          powerMode = 2;
                      } else {
                          log("ungülter Zustand!");
                          return;
                      }
                   
                      if(token!="") {
                          
                          var optionsDev = {
                              url: cloudURL + '/app/device/control.json',
                              headers: { "x-token": token },
                              json: {"param":[{ "device_code": devicecode, "protocol_code": "Power","value": powerOpt }]},
                              method: 'POST',
                              rejectUnauthorized: false
                          };
                   
                          var request = require('request');
                   
                          request(optionsDev,function (error, response, body){
                              //log(devicecode);
                              //log(JSON.stringify(response));
                              //log(JSON.stringify(body.object_result));
                   
                              if(parseInt(body.error_code)==0) {
                                  saveValue("mode", power, "string");
                                  if(power>=0) updateDeviceMode(device, power);
                                  
                              } else {
                                  log("Zustandsänderung fehlgeschlagen!");
                              }
                              
                          });
                      }
                  }
                   
                  function updateDeviceMode(devicecode, mode) {
                      
                   
                      if(token!="") {
                          
                          var optionsDev = {
                              url: cloudURL + '/app/device/control.json',
                              headers: { "x-token": token },
                              json: {"param":[{ "device_code": devicecode, "protocol_code": "mode","value": mode }]},
                              method: 'POST',
                              rejectUnauthorized: false
                              //headers: {"content-type": "application/json"},
                              //charset: 'utf8',
                              //json: true
                              
                          };
                   
                          var request = require('request');
                   
                          request(optionsDev,function (error, response, body){
                              //log(devicecode);
                              //log(JSON.stringify(response));
                              //log(JSON.stringify(body.object_result));
                   
                              if(parseInt(body.error_code)==0) {
                                  saveValue("mode", mode, "string");
                                  
                                  
                              } else {
                                  log("Zustandsänderung fehlgeschlagen!");
                              }
                              
                          });
                      }
                  }
                   
                  function updateDeviceSilent(devicecode, silent) {
                      
                      var silentMode;
                   
                      if(silent) {
                          silentMode = "1";
                      } else {
                          silentMode = "0";
                      }
                   
                      if(token!="") {
                          
                          var optionsDev = {
                              url: cloudURL + '/app/device/control.json',
                              headers: { "x-token": token },
                              json: {"param":[{ "device_code": devicecode, "protocol_code": "Manual-mute","value": silentMode }]},
                              method: 'POST',
                              rejectUnauthorized: false
                              //headers: {"content-type": "application/json"},
                              //charset: 'utf8',
                              //json: true
                              
                          };
                   
                          var request = require('request');
                   
                          request(optionsDev,function (error, response, body){
                              //log(devicecode);
                              //log(JSON.stringify(response));
                              //log(JSON.stringify(body.object_result));
                   
                              if(parseInt(body.error_code)==0) {
                                  saveValue("silent", silent, "boolean");
                                  
                                  
                              } else {
                                  log("Zustandsänderung fehlgeschlagen!");
                              }
                              
                          });
                      }
                  }
                   
                  function updateDeviceSetTemp(devicecode, temperature) {
                   
                      var sTemperature = temperature.toString().replace(",", ".");
                      var sMode = getState(dpRoot + ".mode").val;
                      if(sMode=="-1") {
                          //log("Gerät einschalten um Temperatur zu ändern!", 'warn');
                          return;
                      } else if(sMode=="0") {
                          sMode = "R01"; // Kühlen
                      } else if(sMode=="1") {
                          sMode = "R02"; // Heizen
                      } else if(sMode=="2") {
                          sMode = "R03"; // Auto
                      }
                   
                      
                   
                   
                      if(token!="") {
                          
                          var optionsDev = {
                              url: cloudURL + '/app/device/control.json',
                              headers: { "x-token": token },
                              json: {"param":[{ "device_code": devicecode, "protocol_code": "R01","value": sTemperature },{ "device_code": devicecode, "protocol_code": "R02","value": sTemperature },{ "device_code": devicecode, "protocol_code": "R03","value": sTemperature },{ "device_code": devicecode, "protocol_code": "Set_Temp","value": sTemperature }]},
                              method: 'POST',
                              rejectUnauthorized: false
                              //headers: {"content-type": "application/json"},
                              //charset: 'utf8',
                              //json: true
                              
                          };
                   
                          var request = require('request');
                   
                          request(optionsDev,function (error, response, body){
                              //log(devicecode);
                              //log(JSON.stringify(response));
                              //log(JSON.stringify(body.object_result));
                   
                              if(parseInt(body.error_code)==0) {
                                  saveValue("tempSet", temperature, "number");
                                  
                                  
                              } else {
                                  log("Zustandsänderung fehlgeschlagen!");
                                  log(JSON.stringify(response));
                              }
                              
                          });
                      }
                  }
                   
                  // Beginn des Skripts
                   
                  createobjects(); // DPs anlegen
                   
                  updateToken(); // Zugriffstoken erfragen und aktuelle Werte lesen
                   
                  schedule('*/' + interval + ' * * * * *', function () {
                      // regelmäßig Token und Zustand abfragen
                      updateToken();
                   
                      // gewünschte Änderungen ausführen
                      if(!getState(dpRoot + ".mode").ack) {
                          updateDevicePower(device, getState(dpRoot + ".mode").val);
                      }
                      if(!getState(dpRoot + ".silent").ack) {
                          updateDevicePower(device, getState(dpRoot + ".silent").val);
                      }
                  });
                   
                  tokenRefreshTimer = setInterval(async function () {
                      // Token verfällt nach 60min
                      token = "";
                      //log("Token nach Intervall verworfen.")
                      updateToken();
                  }, 3600000);
                   
                  on({id: dpRoot + ".mode", change: "ne", ack: false}, async function (obj) {
                      updateToken();
                      updateDevicePower(device, getState(dpRoot + ".mode").val);
                  });
                   
                  on({id: dpRoot + ".silent", change: "ne", ack: false}, async function (obj) {
                      updateToken();
                      updateDeviceSilent(device, getState(dpRoot + ".silent").val);
                  });
                   
                  on({id: dpRoot + ".tempSet", change: "ne", ack: false}, async function (obj) {
                      updateToken();
                      updateDeviceSetTemp(device, getState(dpRoot + ".tempSet").val);
                  });
                   
                  

                  und einmal hier das komplette Javascript
                  was dann funktioniert hat

                  Michael RolingM Offline
                  Michael RolingM Offline
                  Michael Roling
                  Developer
                  schrieb am zuletzt editiert von
                  #283

                  @sunnylaila Ich habe das jetzt für 2 Funktionen eingebaut, wahrscheinlich muss das für alle anderen Funktionen auch noch implementiert werden. Wenn das dann alles funktioniert wird man dieses speziell im Adapter unchecken müssen das man die ssl zertifikat meldungen ignorieren möchte, was ein Sicherheitsrisiko ist. Aber erstmal testen ob es wie gesagt jetzt anders wird.

                  S 1 Antwort Letzte Antwort
                  0
                  • Michael RolingM Michael Roling

                    @sunnylaila Ich habe das jetzt für 2 Funktionen eingebaut, wahrscheinlich muss das für alle anderen Funktionen auch noch implementiert werden. Wenn das dann alles funktioniert wird man dieses speziell im Adapter unchecken müssen das man die ssl zertifikat meldungen ignorieren möchte, was ein Sicherheitsrisiko ist. Aber erstmal testen ob es wie gesagt jetzt anders wird.

                    S Offline
                    S Offline
                    sunnylaila
                    schrieb am zuletzt editiert von
                    #284

                    @michael-roling

                    habe es gerade neu installiert aber leider noch kein erfolg siehe log

                    
                    midas-aquatemp.0
                    2024-07-17 18:38:47.258	error	Response: {"sessionid":null,"error_code":"0","error_msg":"Success","error_msg_code":"","totalSize":null,"totalPage":null,"nextPage":null,"objectResult":[],"isReusltSuc":true}
                    
                    midas-aquatemp.0
                    2024-07-17 18:38:47.258	error	Error in updateDeviceID(): No device code found
                    
                    midas-aquatemp.0
                    2024-07-17 18:38:47.092	info	Login ok! Token: TVhfM4yFTdnqTRMIchl7Rt+ILOZsLixeSOXBNvoowdNppxVNabU6Mj1mYkyWloTMXPFacEkw0HogOrNnmbsXTw==
                    
                    midas-aquatemp.0
                    2024-07-17 18:38:46.550	info	Request token
                    
                    midas-aquatemp.0
                    2024-07-17 18:38:46.546	info	Objects created
                    
                    midas-aquatemp.0
                    2024-07-17 18:38:46.539	info	Create object: midas-aquatemp.0.rawJSON
                    
                    midas-aquatemp.0
                    2024-07-17 18:38:46.521	info	Create object: midas-aquatemp.0.DeviceCode
                    
                    midas-aquatemp.0
                    2024-07-17 18:38:46.514	info	Create object: midas-aquatemp.0.ProductCode
                    
                    midas-aquatemp.0
                    2024-07-17 18:38:46.506	info	Create object: midas-aquatemp.0.exhaust
                    
                    midas-aquatemp.0
                    2024-07-17 18:38:46.501	info	Create object: midas-aquatemp.0.coilTemp
                    
                    midas-aquatemp.0
                    2024-07-17 18:38:46.497	info	Create object: midas-aquatemp.0.suctionTemp
                    
                    midas-aquatemp.0
                    2024-07-17 18:38:46.493	info	Create object: midas-aquatemp.0.tempSet
                    
                    midas-aquatemp.0
                    2024-07-17 18:38:46.488	info	Create object: midas-aquatemp.0.tempOut
                    
                    midas-aquatemp.0
                    2024-07-17 18:38:46.483	info	Create object: midas-aquatemp.0.tempIn
                    
                    midas-aquatemp.0
                    2024-07-17 18:38:46.478	info	Create object: midas-aquatemp.0.state
                    
                    midas-aquatemp.0
                    2024-07-17 18:38:46.473	info	Create object: midas-aquatemp.0.silent
                    
                    midas-aquatemp.0
                    2024-07-17 18:38:46.468	info	Create object: midas-aquatemp.0.rotor
                    
                    midas-aquatemp.0
                    2024-07-17 18:38:46.463	info	Create object: midas-aquatemp.0.mode
                    
                    midas-aquatemp.0
                    2024-07-17 18:38:46.459	info	Create object: midas-aquatemp.0.errorMessage
                    
                    midas-aquatemp.0
                    2024-07-17 18:38:46.454	info	Create object: midas-aquatemp.0.errorLevel
                    
                    midas-aquatemp.0
                    2024-07-17 18:38:46.447	info	Create object: midas-aquatemp.0.errorCode
                    
                    midas-aquatemp.0
                    2024-07-17 18:38:46.438	info	Create object: midas-aquatemp.0.error
                    
                    midas-aquatemp.0
                    2024-07-17 18:38:46.423	info	Create object: midas-aquatemp.0.consumption
                    
                    midas-aquatemp.0
                    2024-07-17 18:38:46.415	info	Create object: midas-aquatemp.0.info.connection
                    
                    midas-aquatemp.0
                    2024-07-17 18:38:46.358	info	Create object: midas-aquatemp.0.ambient
                    
                    midas-aquatemp.0
                    2024-07-17 18:38:46.312	info	starting. Version 0.0.1 (non-npm: MiRo1310/ioBroker.midas-aquatemp#fe2980f6c63f14269805862155e182f5f2bed22b) in /opt/iobroker/node_modules/iobroker.midas-aquatemp, node: v20.15.1, js-controller: 5.0.19
                    
                    Michael RolingM O 2 Antworten Letzte Antwort
                    0
                    • S sunnylaila

                      @michael-roling

                      habe es gerade neu installiert aber leider noch kein erfolg siehe log

                      
                      midas-aquatemp.0
                      2024-07-17 18:38:47.258	error	Response: {"sessionid":null,"error_code":"0","error_msg":"Success","error_msg_code":"","totalSize":null,"totalPage":null,"nextPage":null,"objectResult":[],"isReusltSuc":true}
                      
                      midas-aquatemp.0
                      2024-07-17 18:38:47.258	error	Error in updateDeviceID(): No device code found
                      
                      midas-aquatemp.0
                      2024-07-17 18:38:47.092	info	Login ok! Token: TVhfM4yFTdnqTRMIchl7Rt+ILOZsLixeSOXBNvoowdNppxVNabU6Mj1mYkyWloTMXPFacEkw0HogOrNnmbsXTw==
                      
                      midas-aquatemp.0
                      2024-07-17 18:38:46.550	info	Request token
                      
                      midas-aquatemp.0
                      2024-07-17 18:38:46.546	info	Objects created
                      
                      midas-aquatemp.0
                      2024-07-17 18:38:46.539	info	Create object: midas-aquatemp.0.rawJSON
                      
                      midas-aquatemp.0
                      2024-07-17 18:38:46.521	info	Create object: midas-aquatemp.0.DeviceCode
                      
                      midas-aquatemp.0
                      2024-07-17 18:38:46.514	info	Create object: midas-aquatemp.0.ProductCode
                      
                      midas-aquatemp.0
                      2024-07-17 18:38:46.506	info	Create object: midas-aquatemp.0.exhaust
                      
                      midas-aquatemp.0
                      2024-07-17 18:38:46.501	info	Create object: midas-aquatemp.0.coilTemp
                      
                      midas-aquatemp.0
                      2024-07-17 18:38:46.497	info	Create object: midas-aquatemp.0.suctionTemp
                      
                      midas-aquatemp.0
                      2024-07-17 18:38:46.493	info	Create object: midas-aquatemp.0.tempSet
                      
                      midas-aquatemp.0
                      2024-07-17 18:38:46.488	info	Create object: midas-aquatemp.0.tempOut
                      
                      midas-aquatemp.0
                      2024-07-17 18:38:46.483	info	Create object: midas-aquatemp.0.tempIn
                      
                      midas-aquatemp.0
                      2024-07-17 18:38:46.478	info	Create object: midas-aquatemp.0.state
                      
                      midas-aquatemp.0
                      2024-07-17 18:38:46.473	info	Create object: midas-aquatemp.0.silent
                      
                      midas-aquatemp.0
                      2024-07-17 18:38:46.468	info	Create object: midas-aquatemp.0.rotor
                      
                      midas-aquatemp.0
                      2024-07-17 18:38:46.463	info	Create object: midas-aquatemp.0.mode
                      
                      midas-aquatemp.0
                      2024-07-17 18:38:46.459	info	Create object: midas-aquatemp.0.errorMessage
                      
                      midas-aquatemp.0
                      2024-07-17 18:38:46.454	info	Create object: midas-aquatemp.0.errorLevel
                      
                      midas-aquatemp.0
                      2024-07-17 18:38:46.447	info	Create object: midas-aquatemp.0.errorCode
                      
                      midas-aquatemp.0
                      2024-07-17 18:38:46.438	info	Create object: midas-aquatemp.0.error
                      
                      midas-aquatemp.0
                      2024-07-17 18:38:46.423	info	Create object: midas-aquatemp.0.consumption
                      
                      midas-aquatemp.0
                      2024-07-17 18:38:46.415	info	Create object: midas-aquatemp.0.info.connection
                      
                      midas-aquatemp.0
                      2024-07-17 18:38:46.358	info	Create object: midas-aquatemp.0.ambient
                      
                      midas-aquatemp.0
                      2024-07-17 18:38:46.312	info	starting. Version 0.0.1 (non-npm: MiRo1310/ioBroker.midas-aquatemp#fe2980f6c63f14269805862155e182f5f2bed22b) in /opt/iobroker/node_modules/iobroker.midas-aquatemp, node: v20.15.1, js-controller: 5.0.19
                      
                      Michael RolingM Offline
                      Michael RolingM Offline
                      Michael Roling
                      Developer
                      schrieb am zuletzt editiert von
                      #285

                      @sunnylaila sorry. Ich muss dann noch mal schauen.

                      1 Antwort Letzte Antwort
                      0
                      • S sunnylaila

                        @michael-roling

                        habe es gerade neu installiert aber leider noch kein erfolg siehe log

                        
                        midas-aquatemp.0
                        2024-07-17 18:38:47.258	error	Response: {"sessionid":null,"error_code":"0","error_msg":"Success","error_msg_code":"","totalSize":null,"totalPage":null,"nextPage":null,"objectResult":[],"isReusltSuc":true}
                        
                        midas-aquatemp.0
                        2024-07-17 18:38:47.258	error	Error in updateDeviceID(): No device code found
                        
                        midas-aquatemp.0
                        2024-07-17 18:38:47.092	info	Login ok! Token: TVhfM4yFTdnqTRMIchl7Rt+ILOZsLixeSOXBNvoowdNppxVNabU6Mj1mYkyWloTMXPFacEkw0HogOrNnmbsXTw==
                        
                        midas-aquatemp.0
                        2024-07-17 18:38:46.550	info	Request token
                        
                        midas-aquatemp.0
                        2024-07-17 18:38:46.546	info	Objects created
                        
                        midas-aquatemp.0
                        2024-07-17 18:38:46.539	info	Create object: midas-aquatemp.0.rawJSON
                        
                        midas-aquatemp.0
                        2024-07-17 18:38:46.521	info	Create object: midas-aquatemp.0.DeviceCode
                        
                        midas-aquatemp.0
                        2024-07-17 18:38:46.514	info	Create object: midas-aquatemp.0.ProductCode
                        
                        midas-aquatemp.0
                        2024-07-17 18:38:46.506	info	Create object: midas-aquatemp.0.exhaust
                        
                        midas-aquatemp.0
                        2024-07-17 18:38:46.501	info	Create object: midas-aquatemp.0.coilTemp
                        
                        midas-aquatemp.0
                        2024-07-17 18:38:46.497	info	Create object: midas-aquatemp.0.suctionTemp
                        
                        midas-aquatemp.0
                        2024-07-17 18:38:46.493	info	Create object: midas-aquatemp.0.tempSet
                        
                        midas-aquatemp.0
                        2024-07-17 18:38:46.488	info	Create object: midas-aquatemp.0.tempOut
                        
                        midas-aquatemp.0
                        2024-07-17 18:38:46.483	info	Create object: midas-aquatemp.0.tempIn
                        
                        midas-aquatemp.0
                        2024-07-17 18:38:46.478	info	Create object: midas-aquatemp.0.state
                        
                        midas-aquatemp.0
                        2024-07-17 18:38:46.473	info	Create object: midas-aquatemp.0.silent
                        
                        midas-aquatemp.0
                        2024-07-17 18:38:46.468	info	Create object: midas-aquatemp.0.rotor
                        
                        midas-aquatemp.0
                        2024-07-17 18:38:46.463	info	Create object: midas-aquatemp.0.mode
                        
                        midas-aquatemp.0
                        2024-07-17 18:38:46.459	info	Create object: midas-aquatemp.0.errorMessage
                        
                        midas-aquatemp.0
                        2024-07-17 18:38:46.454	info	Create object: midas-aquatemp.0.errorLevel
                        
                        midas-aquatemp.0
                        2024-07-17 18:38:46.447	info	Create object: midas-aquatemp.0.errorCode
                        
                        midas-aquatemp.0
                        2024-07-17 18:38:46.438	info	Create object: midas-aquatemp.0.error
                        
                        midas-aquatemp.0
                        2024-07-17 18:38:46.423	info	Create object: midas-aquatemp.0.consumption
                        
                        midas-aquatemp.0
                        2024-07-17 18:38:46.415	info	Create object: midas-aquatemp.0.info.connection
                        
                        midas-aquatemp.0
                        2024-07-17 18:38:46.358	info	Create object: midas-aquatemp.0.ambient
                        
                        midas-aquatemp.0
                        2024-07-17 18:38:46.312	info	starting. Version 0.0.1 (non-npm: MiRo1310/ioBroker.midas-aquatemp#fe2980f6c63f14269805862155e182f5f2bed22b) in /opt/iobroker/node_modules/iobroker.midas-aquatemp, node: v20.15.1, js-controller: 5.0.19
                        
                        O Offline
                        O Offline
                        oxident
                        schrieb am zuletzt editiert von
                        #286

                        @sunnylaila Das ist echt tricky ... hat aber mit den SSL-Sachen nix zu tun. Ich schaue parallel auch nochmal!

                        Michael RolingM 2 Antworten Letzte Antwort
                        0
                        • O oxident

                          @sunnylaila Das ist echt tricky ... hat aber mit den SSL-Sachen nix zu tun. Ich schaue parallel auch nochmal!

                          Michael RolingM Offline
                          Michael RolingM Offline
                          Michael Roling
                          Developer
                          schrieb am zuletzt editiert von Michael Roling
                          #287

                          @oxident Hast du schon was in Erfahrung bringen können? Mir scheint es so als ob er das Device nicht erkennt, und daher kann der ganze Code nicht laufen. Der Error der kommt, ist von mir so eingebaut. Das Login klappt ja, nur halt bekommt er keine weiteren Daten.

                          Dann ist die Frage von wo kommt der ProduktId? In meiner App steht eine ganz andere Id als wie im Adapter ausgelesen.

                          Ich nehme das mit dem ssl zertifikat erstmal wieder raus, denn das ist ja sonst eine mögliche Sicherheitslücke.

                          Kann das was mit dem Api-Level zu tun haben?
                          @sunnylaila Hast du das mal versucht ob es mit einem anderen geht?

                          S 1 Antwort Letzte Antwort
                          0
                          • Michael RolingM Michael Roling

                            @oxident Hast du schon was in Erfahrung bringen können? Mir scheint es so als ob er das Device nicht erkennt, und daher kann der ganze Code nicht laufen. Der Error der kommt, ist von mir so eingebaut. Das Login klappt ja, nur halt bekommt er keine weiteren Daten.

                            Dann ist die Frage von wo kommt der ProduktId? In meiner App steht eine ganz andere Id als wie im Adapter ausgelesen.

                            Ich nehme das mit dem ssl zertifikat erstmal wieder raus, denn das ist ja sonst eine mögliche Sicherheitslücke.

                            Kann das was mit dem Api-Level zu tun haben?
                            @sunnylaila Hast du das mal versucht ob es mit einem anderen geht?

                            S Offline
                            S Offline
                            sunnylaila
                            schrieb am zuletzt editiert von
                            #288

                            @michael-roling
                            Was meinst du mit einem anderen?
                            Kann ich eventuell euch aus der App etwas auslesen in den Parameter Einstellung ?

                            Michael RolingM 1 Antwort Letzte Antwort
                            0
                            • S sunnylaila

                              @michael-roling
                              Was meinst du mit einem anderen?
                              Kann ich eventuell euch aus der App etwas auslesen in den Parameter Einstellung ?

                              Michael RolingM Offline
                              Michael RolingM Offline
                              Michael Roling
                              Developer
                              schrieb am zuletzt editiert von
                              #289

                              @sunnylaila ich meinte anderen api Level in den settings

                              S 1 Antwort Letzte Antwort
                              0
                              • Z znyde

                                sorry für den Spam,

                                hier eine Lösung die bei mir geholfen hat

                                einfach diese Abfrage hinzufügen:

                                body: {product_ids: ["1442284873216843776"]},
                                
                                function updateDeviceID() {
                                    
                                    if(token!="") {
                                        var optionsDev = {
                                            url: cloudURL + '/app/device/deviceList.json',
                                            headers: { "x-token": token},
                                            body: {product_ids: ["1442284873216843776"]},
                                           
                                            method: 'POST',
                                            json: true,
                                            
                                            rejectUnauthorized: false          
                                        };
                                
                                S Offline
                                S Offline
                                sunnylaila
                                schrieb am zuletzt editiert von
                                #290

                                @znyde said in [Javascript] Midas (Aquatemp) Poolheizung:

                                sorry für den Spam,

                                hier eine Lösung die bei mir geholfen hat

                                einfach diese Abfrage hinzufügen:

                                body: {product_ids: ["1442284873216843776"]},
                                
                                function updateDeviceID() {
                                    
                                    if(token!="") {
                                        var optionsDev = {
                                            url: cloudURL + '/app/device/deviceList.json',
                                            headers: { "x-token": token},
                                            body: {product_ids: ["1442284873216843776"]},
                                           
                                            method: 'POST',
                                            json: true,
                                            
                                            rejectUnauthorized: false          
                                        };
                                

                                hier hat zynde noch etwas im Javascript hinzugefügt für die product id
                                " body: {product_ids: ["1442284873216843776"]}, "

                                vielleicht hilft das ja etwas

                                1 Antwort Letzte Antwort
                                0
                                • Michael RolingM Michael Roling

                                  @sunnylaila ich meinte anderen api Level in den settings

                                  S Offline
                                  S Offline
                                  sunnylaila
                                  schrieb am zuletzt editiert von
                                  #291

                                  @michael-roling

                                  api level hatte ich alle drei ausprobiert hat aber nichts geändert

                                  Michael RolingM 2 Antworten Letzte Antwort
                                  0
                                  • S sunnylaila

                                    @michael-roling

                                    api level hatte ich alle drei ausprobiert hat aber nichts geändert

                                    Michael RolingM Offline
                                    Michael RolingM Offline
                                    Michael Roling
                                    Developer
                                    schrieb am zuletzt editiert von
                                    #292

                                    @sunnylaila die productId ist bereits enthalten

                                    1 Antwort Letzte Antwort
                                    0
                                    • O oxident

                                      @sunnylaila Das ist echt tricky ... hat aber mit den SSL-Sachen nix zu tun. Ich schaue parallel auch nochmal!

                                      Michael RolingM Offline
                                      Michael RolingM Offline
                                      Michael Roling
                                      Developer
                                      schrieb am zuletzt editiert von
                                      #293

                                      @oxident Sag mal hatte das einen Grund warum man die Werte nur ändern darf wenn die Wärmepumpe an ist? Ich habe das mal raus genommen, es sei denn du hast da noch einen Einwand zu.

                                      O 1 Antwort Letzte Antwort
                                      0
                                      • S sunnylaila

                                        @michael-roling

                                        api level hatte ich alle drei ausprobiert hat aber nichts geändert

                                        Michael RolingM Offline
                                        Michael RolingM Offline
                                        Michael Roling
                                        Developer
                                        schrieb am zuletzt editiert von
                                        #294

                                        @sunnylaila Ich habe noch mal ein paar kleine Änderungen vor genommen. Also noch einmal bitte testen

                                        1 Antwort Letzte Antwort
                                        0
                                        • Michael RolingM Michael Roling

                                          @oxident Sag mal hatte das einen Grund warum man die Werte nur ändern darf wenn die Wärmepumpe an ist? Ich habe das mal raus genommen, es sei denn du hast da noch einen Einwand zu.

                                          O Offline
                                          O Offline
                                          oxident
                                          schrieb am zuletzt editiert von
                                          #295

                                          @michael-roling Also früher hat der Server sämtliche Änderungen (bis auf on/off) mit einem Fehler quittiert wenn die WP aus war. Ist das jetzt nicht mehr so?

                                          Also bei @sunnylaila stehe ich auch gerade auf dem Schlauch. Eine Paketmitschnitt aus der App wäre cool, aber das ist ja sicherlich nicht ganz so leicht...
                                          Eventuell könnte es an der ProductID liegen. Die habe ich vom Github-Projekt übernommen.

                                          Michael RolingM 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

                                          834

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          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