Hallo zusammen,
vielleicht kann mir jemand weiterhelfen um einen Klimaraum zu steuern.
Das ganze soll auf einem Plus2PM mit Addon laufen.
Beschreibung:
1. Wenn die Raumtemperatur über 10C° steigt schaltet der Lüfter (Relay1) und der Kompressor (Relay2) ein.
2. Wenn die Raumtemperatur unter 7C° ist schaltet der Kompressor (Relay2) aus.
3. Wenn der Kompressor (Relay2) aus ist soll der Lüfter (Relay1) noch 10 Minuten nachlaufen und dann auch ausschalten.
4. Wenn der Kompressor(Relay2) über 6 Stunden an ist, dann soll der Lüfter(Relay1) 30 min weiterlaufen und der Kompressor(Relay2) für 30min aus sein werden.
Punkt 1 und 2 hab ich schon soweit gelöst. Habe einen Teil aus einem Script von Ostfriese kopiert.
Punkt 3 und 4 ist für mich aktuell nicht zum lösen, bin für jede Hilfe dankbar.
//GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007
//More information: https://www.gnu.org/licenses/gpl-3.0.txt
//############################## Config ############################
let Config = {
temp_diff : 3,
temp_max : 10,
id_inside : 100,
id_wt: 101,
id_outside: 102,
relay_kompressor : 0,
relay_luefter : 1,
interval : 60 // alle 60 sekunden ausführen
// nachlaufzeit_luefter : 60 // 600 sekunden = 10 minuten
// max_laufzeit : 21600 // 21600 sekunden = 6 stunden
// abtauzeit : 1800 // 1800 sekunden = 30 minuten
}
//############################## Config end ############################
function watch() {
try {
temp_inside = Shelly.getComponentStatus('Temperature', Config.id_inside).tC;
temp_wt = Shelly.getComponentStatus('Temperature', Config.id_wt).tC;
temp_outside = Shelly.getComponentStatus('Temperature', Config.id_outside).tC;
print('Temp. inside =',temp_inside);
print('Temp. wärmetauscher =',temp_wt);
print('Temp. outside =',temp_outside);
//Innentemperatur ueber Config.temp_max
if (temp_inside >= Config.temp_max) {
Shelly.call("http.get", {url:'http://127.0.0.1/relay/' + JSON.stringify(Config.relay_kompressor) + '?turn=on'});
Shelly.call("http.get", {url:'http://127.0.0.1/relay/' + JSON.stringify(Config.relay_luefter) + '?turn=on'});
print('Relay(', Config.relay_kompressor, ') on. inside temp >= ', Config.temp_max);
}
else {
delta = Config.temp_max - Config.temp_diff;
// Innentemperatur unter Config.temp_max - Config.temp_diff
if (temp_inside <= delta) {
Shelly.call("http.get", {url:'http://127.0.0.1/relay/' + JSON.stringify(Config.relay_kompressor) + '?turn=off'});
print('Relay(', Config.relay_kompressor, ') off. inside temp <= ', delta);
}
//mach nichts
else {
print('Relay(', Config.relay, ') on. delta', delta);
}
}
print('\n')
} catch (err) {
Shelly.call("http.get", {url:'http://127.0.0.1/relay/' + JSON.stringify(Config.relay_kompressor) + '?turn=on'});
Shelly.call("http.get", {url:'http://127.0.0.1/relay/' + JSON.stringify(Config.relay_luefter) + '?turn=on'});
print(err);
}
}
function start() {
// do a first shot
watch();
// set watch timer to configured value
Timer.set(Config.interval * 1000,true,watch);
}
// schedule script start for 1 second
Timer.set(1000,false,start);
Alles anzeigen