Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. [Javascript] Midas (Aquatemp) Poolheizung

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.6k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.2k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

[Javascript] Midas (Aquatemp) Poolheizung

Scheduled Pinned Locked Moved Praktische Anwendungen (Showcase)
359 Posts 25 Posters 83.9k Views 25 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S sunnylaila

    @oxident
    bei mir kommt die Zertifikat Meldung jetzt zusätzlich zu dem reading_error.
    Hast du einen Tip wie ich rausfinden kann mit welcher web Adresse sich die App verbindet? finde leider bei google nicht wie man das rausfinden kann.

    Z Online
    Z Online
    znyde
    Developer
    wrote on last edited by
    #73

    @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();
        }
     
        
     
        
     
    }
     
    
    Z S 2 Replies Last reply
    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();
          }
       
          
       
          
       
      }
       
      
      Z Online
      Z Online
      znyde
      Developer
      wrote on last edited by
      #74
        log(JSON.stringify(body.object_result));
      

      bleibt bei mir ein leeres Array.. habe das Modul welche @sunnylaila hat

      Z S 2 Replies Last reply
      0
      • Z znyde
          log(JSON.stringify(body.object_result));
        

        bleibt bei mir ein leeres Array.. habe das Modul welche @sunnylaila hat

        Z Online
        Z Online
        znyde
        Developer
        wrote on last edited by
        #75

        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 1 Reply Last reply
        0
        • Z znyde
            log(JSON.stringify(body.object_result));
          

          bleibt bei mir ein leeres Array.. habe das Modul welche @sunnylaila hat

          S Offline
          S Offline
          sunnylaila
          wrote on last edited by
          #76

          @znyde
          hi hattest du denn auch vorher den Fehler :
          Error in request callback: TypeError: Cannot read properties of undefined (reading 'error_code')

          könntest du mir vielleicht dein Gesamtes Javascript mal schicken, natürlich ohne deine Login Daten.
          Dann kann ich es komplett mal einfügen.

          Danke und Gruß

          Z 1 Reply Last reply
          0
          • S sunnylaila

            @znyde
            hi hattest du denn auch vorher den Fehler :
            Error in request callback: TypeError: Cannot read properties of undefined (reading 'error_code')

            könntest du mir vielleicht dein Gesamtes Javascript mal schicken, natürlich ohne deine Login Daten.
            Dann kann ich es komplett mal einfügen.

            Danke und Gruß

            Z Online
            Z Online
            znyde
            Developer
            wrote on last edited by znyde
            #77

            @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 2 Replies Last reply
            0
            • 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
              wrote on last edited by sunnylaila
              #78

              @znyde
              Ich habe genau die gleiche Heizung, aber meine Werte sind immer noch leer und ich bekomme einige Fehlermeldungen im Log womit ich aber leider nichts anfangen kann da ich keine Ahnung vom JavaScript habe, vielleicht kannst du dir das mal anschauen

              Danke schonmal

              edit

              die Fehlermeldung habe ich selber gefunden lag an einer boolean Einstellung

              eigentlich würde ich sagen sollte es meiner Meinung nach dem Log jetzt gehen,
              aber unter den Objekten habe ich immer noch keine Werte stehen

              der Log schaut jetzt so aus

              2023-06-03 15:38:00.590	info	script.js.Poolheizung: update detail{"statusCode":200,"body":{"error_code":"0","error_msg":"Success","error_msg_code":"","object_result":[{"code":"R02","value":"26.0"},{"code":"T1","value":"17.0"},{"code":"T2","value":"27.0"},{"code":"T3","value":"27.5"},{"code":"T5","value":"33.5"},{"code":"P01","value":"2"},{"code":"P02","value":"15"},{"code":"Power","value":"1"},{"code":"Mode","value":"1"}],"is_reuslt_suc":true},"headers":{"date":"Sat, 03 Jun 2023 13:38:00 GMT","content-type":"application/json;charset=UTF-8","transfer-encoding":"chunked","connection":"close"},"request":{"uri":{"protocol":"https:","slashes":true,"auth":null,"host":"cloud.linked-go.com","port":443,"hostname":"cloud.linked-go.com","hash":null,"search":null,"query":null,"pathname":"/cloudservice/api/app/device/getDataByCode.json","path":"/cloudservice/api/app/device/getDataByCode.json","href":"https://cloud.linked-go.com/cloudservice/api/app/device/getDataByCode.json"},"method":"POST","headers":{"x-token":"41A537D337A40009B667CA964A4C3496","accept":"application/json","content-type":"application/json","content-length":102}}}
              javascript.0
              2023-06-03 15:38:00.172	info	script.js.Poolheizung: 0C7FEDC2A47C
              
              javascript.0
              2023-06-03 15:38:00.171	info	script.js.Poolheizung: Login ok! Token 41A537D337A40009B667CA964A4C3496
              
              javascript.0
              2023-06-03 15:37:30.935	info	script.js.Poolheizung: update detail{"statusCode":200,"body":{"error_code":"0","error_msg":"Success","error_msg_code":"","object_result":[{"code":"R02","value":"26.0"},{"code":"T1","value":"17.0"},{"code":"T2","value":"27.0"},{"code":"T3","value":"27.5"},{"code":"T5","value":"33.5"},{"code":"P01","value":"2"},{"code":"P02","value":"15"},{"code":"Power","value":"1"},{"code":"Mode","value":"1"}],"is_reuslt_suc":true},"headers":{"date":"Sat, 03 Jun 2023 13:37:30 GMT","content-type":"application/json;charset=UTF-8","transfer-encoding":"chunked","connection":"close"},"request":{"uri":{"protocol":"https:","slashes":true,"auth":null,"host":"cloud.linked-go.com","port":443,"hostname":"cloud.linked-go.com","hash":null,"search":null,"query":null,"pathname":"/cloudservice/api/app/device/getDataByCode.json","path":"/cloudservice/api/app/device/getDataByCode.json","href":"https://cloud.linked-go.com/cloudservice/api/app/device/getDataByCode.json"},"method":"POST","headers":{"x-token":"41A537D337A40009B667CA964A4C3496","accept":"application/json","content-type":"application/json","content-length":102}}}
              
              javascript.0
              2023-06-03 15:37:30.427	info	script.js.Poolheizung: 0C7FEDC2A47C
              
              javascript.0
              2023-06-03 15:37:30.426	info	script.js.Poolheizung: Login ok! Token 41A537D337A40009B667CA964A4C3496
              

              aber die Werte sind immer noch alle Null unter der Userdata 0 Geräte

              1 Reply Last reply
              0
              • S Offline
                S Offline
                sunnylaila
                wrote on last edited by
                #79

                @znyde

                So schaut es unter Geräte aus

                Screenshot.jpg

                Z 1 Reply Last reply
                0
                • S sunnylaila

                  @znyde

                  So schaut es unter Geräte aus

                  Screenshot.jpg

                  Z Online
                  Z Online
                  znyde
                  Developer
                  wrote on last edited by
                  #80

                  @sunnylaila

                  also Werte kommen laut deinem Log ja an..

                  2023-06-03 15:37:30.935	info	script.js.Poolheizung: update detail{"statusCode":200,"body":{"error_code":"0","error_msg":"Success","error_msg_code":"","object_result":[{"code":"R02","value":"26.0"},{"code":"T1","value":"17.0"},{"code":"T2","value":"27.0"},{"code":"T3","value":"27.5"},{"code":"T5","value":"33.5"},{"code":"P01","value":"2"},{"code":"P02","value":"15"},{"code":"Power","value":"1"},{"code":"Mode","value":"1"}],"is_reuslt_suc":true},"headers":{"date":"Sat, 03 Jun 2023 13:37:30 GMT","content-type":"application/json;charset=UTF-8","transfer-encoding":"chunked","connection":"close"},"request":{"uri":{"protocol":"https:","slashes":true,"auth":null,"host":"cloud.linked-go.com","port":443,"hostname":"cloud.linked-go.com","hash":null,"search":null,"query":null,"pathname":"/cloudservice/api/app/device/getDataByCode.json","path":"/cloudservice/api/app/device/getDataByCode.json","href":"https://cloud.linked-go.com/cloudservice/api/app/device/getDataByCode.json"},"method":"POST","headers":{"x-token":"41A537D337A40009B667CA964A4C3496","accept":"application/json","content-type":"application/json","content-length":102}}}
                   
                  

                  hast du meinen kompletten code genommen?
                  ansonsten musst du die Funktion

                  function updateDeviceDetails(devicecode)
                  

                  komplett übernehmen

                  1 Reply Last reply
                  0
                  • S Offline
                    S Offline
                    sunnylaila
                    wrote on last edited by
                    #81

                    @znyde

                    es hat anscheinend nur etwas gedauert jetzt sind alle Werte gefüllt außer TempSet,
                    ich weiß nur nicht ob der funktioniert also das ich darüber auch die Soll Temperatur einstellen kann

                    screenshot.jpg

                    danke dir schonmal sehr ich bin immer wieder begeistert über die Hilfsbereitschaft hier im Forum

                    Gruß

                    Z 1 Reply Last reply
                    0
                    • S sunnylaila

                      @znyde

                      es hat anscheinend nur etwas gedauert jetzt sind alle Werte gefüllt außer TempSet,
                      ich weiß nur nicht ob der funktioniert also das ich darüber auch die Soll Temperatur einstellen kann

                      screenshot.jpg

                      danke dir schonmal sehr ich bin immer wieder begeistert über die Hilfsbereitschaft hier im Forum

                      Gruß

                      Z Online
                      Z Online
                      znyde
                      Developer
                      wrote on last edited by znyde
                      #82

                      @sunnylaila

                      damit wollte ich mich die Tage mal beschäftigen,
                      aber schön dass es bei dir auch funktioniert

                      EDIT: TempSet hat bei mir funktioniert

                      S O 2 Replies Last reply
                      0
                      • Z znyde

                        @sunnylaila

                        damit wollte ich mich die Tage mal beschäftigen,
                        aber schön dass es bei dir auch funktioniert

                        EDIT: TempSet hat bei mir funktioniert

                        S Offline
                        S Offline
                        sunnylaila
                        wrote on last edited by sunnylaila
                        #83

                        @znyde
                        ja setzen geht bei mir auch verschwindet dann aber wieder die Zahl und man sieht nicht welche Temperatur gesetzt ist.

                        O 1 Reply Last reply
                        0
                        • S sunnylaila

                          @znyde
                          ja setzen geht bei mir auch verschwindet dann aber wieder die Zahl und man sieht nicht welche Temperatur gesetzt ist.

                          O Online
                          O Online
                          oxident
                          wrote on last edited by
                          #84

                          @sunnylaila Das Skript ist so aufgebaut, dass nach dem Setzen der Temperatur vom Server die eingestellte Temperatur abgerufen wird. Normalerweise sollte diese ja "akzeptiert" werden.

                          Wichtig ist, dass der Wert "unbestätigt" gesetzt wird. In Blockly wäre das dann "Steuere Wert" und nicht "Aktualisiere Wert".

                          Es kann dadurch natürlich vorkommen, dass es bis zum nächsten Abrufinterval noch beim alten Wert bleibt. Aber dann sollte der Wert passen. Provozieren kann man es natürlich auch mit einem Skriptneustart.

                          1 Reply Last reply
                          0
                          • Z znyde

                            @sunnylaila

                            damit wollte ich mich die Tage mal beschäftigen,
                            aber schön dass es bei dir auch funktioniert

                            EDIT: TempSet hat bei mir funktioniert

                            O Online
                            O Online
                            oxident
                            wrote on last edited by oxident
                            #85

                            @znyde Wow, danke, dass Du Dich da so reinkniest. Es ist immer leichter, wenn man die Geräte selber vor Ort hat ;-)

                            Jetzt wäre es natürlich cool, wenn wir es irgendwie schaffen, unsere Quellcodes zusammenzuführen. Mein Vorschlag wäre, wir machen das, wenn es bei Dir und bei @sunnylaila funktioniert ;-)

                            Ich bin aber noch immer verwundert, dass ihr die Zertifikatsfehler bekommt und bei mir alles okay ist.

                            1 Reply Last reply
                            0
                            • O Online
                              O Online
                              oxident
                              wrote on last edited by oxident
                              #86

                              Ich habe die Verbesserungen von @znyde im ersten Post ergänzt da das Skript in dieser Form auch bei anderen Wärmepumpen zu funktionieren scheint.
                              Habe die fixe Product-ID jetzt doch wieder rausgenommen da dies bei meiner InverPro nicht funktionierte. Hier müssten wir also noch etwas tiefer forschen wann welcher Wert gebraucht wird.

                              Trotzdem schonmal vielen Dank an @znyde !

                              ... aber verrätst Du mir, wie Du auf die Product-ID gekommen bist? ;-)
                              Vielleicht hilft das ja bei anderen Modellen.

                              1 Reply Last reply
                              0
                              • O oxident

                                @andy200877 RS485 klingt toll, aber ich wollte eine kurzfristige Lösung ;-)

                                Das Modul konnte ich vorletzte Woche noch problemlos bei Poolsana bestellen. Ist ja blöd, wenn es jetzt ausverkauft ist!

                                Denke, es ist das Geld locker wert.

                                Die negativen Bewertungen verstehe ich nicht. Es läuft (auch mit der App) bei mir wunderbar und ich war erstaunt, dass man sogar den Stromverbrauch auslesen kann. Das geht jedoch nur mit meinem Skript.

                                R Offline
                                R Offline
                                radi71
                                wrote on last edited by
                                #87

                                @oxident
                                kannst du mir mal auf die Spünge helfen und mir sagen wo ich das script finden kann?

                                Danke und viele Grüsse Thomas

                                O 1 Reply Last reply
                                0
                                • R radi71

                                  @oxident
                                  kannst du mir mal auf die Spünge helfen und mir sagen wo ich das script finden kann?

                                  Danke und viele Grüsse Thomas

                                  O Online
                                  O Online
                                  oxident
                                  wrote on last edited by
                                  #88

                                  @radi71 Ganz oben im 1. Post...

                                  1 Reply Last reply
                                  0
                                  • O oxident

                                    @dering Nee, halte ich für keine gute Idee. Bei der Recherche der Funktionen habe ich gelesen, dass man durchaus geblockt werden kann, wenn man sich zu häufig neu anmeldet.

                                    Ich teste aber gerade mal, die Sache mit einem Timer-Interval (anstelle immer zur vollen Stunde) zu lösen. Dann ist es (Skriptstart + 60min) und damit mehr oder weniger zufällig...

                                    Kleiner Tipp am Rande an alle: Vielleicht wussten es manche schon, aber durch die Verbrauchsmessung im Adapter habe ich herausgefunden, dass der "Silent"-Mode eine Art "Sparmodus" ist und nicht, wie in meiner Anleitung der WP beschrieben, einfach nur die Tastentöne deaktiviert.

                                    Sind bei mir -1000W. Bei verminderter Wärmeleistung na klar.

                                    W Offline
                                    W Offline
                                    webLuJ
                                    wrote on last edited by
                                    #89

                                    @oxident sagte in [Javascript] Midas (Aquatemp) Poolheizung:

                                    Kleiner Tipp am Rande an alle: Vielleicht wussten es manche schon, aber durch die Verbrauchsmessung im Adapter habe ich herausgefunden, dass der "Silent"-Mode eine Art "Sparmodus" ist und nicht, wie in meiner Anleitung der WP beschrieben, einfach nur die Tastentöne deaktiviert.

                                    Hast du die InverPRO? Es überrascht mich, dass es dort den Silent-Mode gibt!
                                    Laut https://www.poolsana.de/ratgeber-tipps/ratgeber/poolheizung/pool-waermepumpe-test-und-vergleich-2023-unterschiede-zwischen-den-einzelnen-serien hat die InverPRO keine Leistungsmodi. Was mich gerade eher zur InverPEARL tendieren lässt....

                                    O A 2 Replies Last reply
                                    0
                                    • W Offline
                                      W Offline
                                      webLuJ
                                      wrote on last edited by Homoran
                                      #90

                                      Hallo,
                                      weiß jemand, ob bzw. wie eine InverPEARL (https://www.poolsana.de/pool-waermepumpe-poolsana-inverpearl-17-anschluss-set-50-mm) anzusteuern ist?
                                      Laut Datenblatt kommuniziert diese mit der ‘Tuya Smart’ App, wird also wohl auch eine REST-Api in der Cloud anbieten.
                                      Hintergrund: Ich schwanke gerade zwischen einer InverPEARL (schwächer, teurer, dafür Leistungsmodi Boost,/Silence) und einer InverPRO (billiger, stärker, aber angeblich (https://www.poolsana.de/ratgeber-tipps/ratgeber/poolheizung/pool-waermepumpe-test-und-vergleich-2023-unterschiede-zwischen-den-einzelnen-serien) keine Leistungsmodi).
                                      LG, Jorgen

                                      1 Reply Last reply
                                      0
                                      • R Offline
                                        R Offline
                                        radi71
                                        wrote on last edited by
                                        #91

                                        Hat eigentlich schon jemand eine VIS erstellt und würde diese hier zur Verfügung stellen?

                                        1 Reply Last reply
                                        0
                                        • W webLuJ

                                          @oxident sagte in [Javascript] Midas (Aquatemp) Poolheizung:

                                          Kleiner Tipp am Rande an alle: Vielleicht wussten es manche schon, aber durch die Verbrauchsmessung im Adapter habe ich herausgefunden, dass der "Silent"-Mode eine Art "Sparmodus" ist und nicht, wie in meiner Anleitung der WP beschrieben, einfach nur die Tastentöne deaktiviert.

                                          Hast du die InverPRO? Es überrascht mich, dass es dort den Silent-Mode gibt!
                                          Laut https://www.poolsana.de/ratgeber-tipps/ratgeber/poolheizung/pool-waermepumpe-test-und-vergleich-2023-unterschiede-zwischen-den-einzelnen-serien hat die InverPRO keine Leistungsmodi. Was mich gerade eher zur InverPEARL tendieren lässt....

                                          O Online
                                          O Online
                                          oxident
                                          wrote on last edited by
                                          #92

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

                                          Hast du die InverPRO? Es überrascht mich, dass es dort den Silent-Mode gibt!
                                          Laut https://www.poolsana.de/ratgeber-tipps/ratgeber/poolheizung/pool-waermepumpe-test-und-vergleich-2023-unterschiede-zwischen-den-einzelnen-serien hat die InverPRO keine Leistungsmodi. Was mich gerade eher zur InverPEARL tendieren lässt....

                                          Habe definitiv die InverPRO (von Poolsana gekauft) und die sieht auch exakt so aus, wie in dem Testbericht aufgeführt. Mir ist schon klar, warum in dem Vergleich keine Leistungsmodi aufgeführt sind: In der gesamten Anleitung wird der "Silent-Mode" auch nur ganz kurz als "Geräuschreduzierung" bezeichnet. Dass dabei auch die Leistungsaufnahme um ca. 50% abnimmt (schwankt ein wenig) habe ich nur durch eigene Tests und die Rückmeldung vom Wifi-Modul bzw. meinem Skript hier aus dem Thread herausgefunden.

                                          Spätestens seit der krassen Preissenkung würde ich wieder die InverPRO 21 nehmen. Sie ist zwar wirklich recht groß, dafür aber auch echt leise (deutlich leiser als die Poolpumpe) und macht einen wertigen Eindruck. Die Leistung ist prima ... ich erwärme damit meinem 40m³ Pool innerhalb von 8 Stunden um 2-3°C bei Außentemperaturen von 10-15°C.

                                          Bei der PEARL wäre ich vorsichtig. Gerade wenn man irgendwas mit Tuya liest ist es meist mit der Anbindung an's Smarthome schlecht bis unmöglich und zumindest instabil ;-)

                                          Das Skript hier aus dem Beitrag funktioniert auch leider bisher eigentlich nur wirklich gut mit den InverPRO-Modellen.

                                          HomoranH 1 Reply Last reply
                                          1
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          802

                                          Online

                                          32.7k

                                          Users

                                          82.4k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe