NEWS
[Javascript] Midas (Aquatemp) Poolheizung
-
@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ß
-
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); });
-
@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 anschauenDanke 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 stehender 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
-
So schaut es unter Geräte aus
-
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 Funktionfunction updateDeviceDetails(devicecode)
komplett übernehmen
-
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 kanndanke dir schonmal sehr ich bin immer wieder begeistert über die Hilfsbereitschaft hier im Forum
Gruß
-
damit wollte ich mich die Tage mal beschäftigen,
aber schön dass es bei dir auch funktioniertEDIT: TempSet hat bei mir funktioniert
-
@znyde
ja setzen geht bei mir auch verschwindet dann aber wieder die Zahl und man sieht nicht welche Temperatur gesetzt ist. -
@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.
-
@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.
-
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. -
@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
-
@radi71 Ganz oben im 1. Post...
-
@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.... -
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 -
Hat eigentlich schon jemand eine VIS erstellt und würde diese hier zur Verfügung stellen?
-
@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.
-
@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.
-
@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
-
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 ...