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

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

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

[Javascript] Midas (Aquatemp) Poolheizung

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

    @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 Offline
    Z Offline
    znyde
    schrieb am zuletzt editiert von 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 Antworten Letzte Antwort
    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
      schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
      0
      • S Offline
        S Offline
        sunnylaila
        schrieb am zuletzt editiert von
        #79

        @znyde

        So schaut es unter Geräte aus

        Screenshot.jpg

        Z 1 Antwort Letzte Antwort
        0
        • S sunnylaila

          @znyde

          So schaut es unter Geräte aus

          Screenshot.jpg

          Z Offline
          Z Offline
          znyde
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          0
          • S Offline
            S Offline
            sunnylaila
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            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 Offline
              Z Offline
              znyde
              schrieb am zuletzt editiert von 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 Antworten Letzte Antwort
              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
                schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                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
                  schrieb am zuletzt editiert von
                  #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 Antwort Letzte Antwort
                  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
                    schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                    0
                    • O Online
                      O Online
                      oxident
                      schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                      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
                        schrieb am zuletzt editiert von
                        #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 Antwort Letzte Antwort
                        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
                          schrieb am zuletzt editiert von
                          #88

                          @radi71 Ganz oben im 1. Post...

                          1 Antwort Letzte Antwort
                          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
                            schrieb am zuletzt editiert von
                            #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 Antworten Letzte Antwort
                            0
                            • W Offline
                              W Offline
                              webLuJ
                              schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                              0
                              • R Offline
                                R Offline
                                radi71
                                schrieb am zuletzt editiert von
                                #91

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

                                1 Antwort Letzte Antwort
                                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
                                  schrieb am zuletzt editiert von
                                  #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 Antwort Letzte Antwort
                                  1
                                  • O oxident

                                    @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 Nicht stören
                                    HomoranH Nicht stören
                                    Homoran
                                    Global Moderator Administrators
                                    schrieb am zuletzt editiert von
                                    #93

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

                                    Gerade wenn man irgendwas mit Tuya liest ist es meist mit der Anbindung an's Smarthome schlecht bis unmöglich und zumindest instabil

                                    ääähm!?

                                    Der komplett neu überarbeitete Tuya-Adapter soll da sehr gut sein.
                                    Geht nicht mal mehr über die Cloud.

                                    Hab selber nicht, aber hier nur gutes gelesen.

                                    kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                                    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                    der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                    O 1 Antwort Letzte Antwort
                                    1
                                    • HomoranH Homoran

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

                                      Gerade wenn man irgendwas mit Tuya liest ist es meist mit der Anbindung an's Smarthome schlecht bis unmöglich und zumindest instabil

                                      ääähm!?

                                      Der komplett neu überarbeitete Tuya-Adapter soll da sehr gut sein.
                                      Geht nicht mal mehr über die Cloud.

                                      Hab selber nicht, aber hier nur gutes gelesen.

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

                                      @homoran Okay, gebe zu, lange nicht mehr nachgeschaut zu haben. Mein letzter Versuch vor einigen Monaten ist glorreich gescheitert.

                                      Das Skript in diesem Beitrag geht ja letztlich auch über die Cloud. Mit allen Nachteilen ;-)

                                      1 Antwort Letzte Antwort
                                      0
                                      • F Offline
                                        F Offline
                                        flyer99
                                        schrieb am zuletzt editiert von
                                        #95

                                        Abend,
                                        Aktuell habe ich beim Datenpunkt "connection" mal true mal false, so im unregelmäßigen Minutentakt. Komischerweise komme ich mit der App auch nicht auf die WP ..?? Kann das jemand bestätigen oder muss ich bei mir auf die Suche gehen ? Funktionierte seit 2 Wochen tadellos ...

                                        Raspberry 4, Bullseye, mit dem Raspi 7" Touchdisplay was ioBroker betrifft ...

                                        O 1 Antwort Letzte Antwort
                                        0
                                        • F flyer99

                                          Abend,
                                          Aktuell habe ich beim Datenpunkt "connection" mal true mal false, so im unregelmäßigen Minutentakt. Komischerweise komme ich mit der App auch nicht auf die WP ..?? Kann das jemand bestätigen oder muss ich bei mir auf die Suche gehen ? Funktionierte seit 2 Wochen tadellos ...

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

                                          @flyer99 Oh, das ist doof. Nein, bei mir alles stabil. Ich würde (leider) auf ein Netzwerkproblem tippen.

                                          F 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

                                          439

                                          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