Hi HCHSA
Habe das Script ausprobiert, bekomme leider eine Fehlermeldung in Zeile 29 und bricht ab.
Uncaught ReferenceError: "async" is not defined
at async function controlHeater() {
^
Hi HCHSA
Habe das Script ausprobiert, bekomme leider eine Fehlermeldung in Zeile 29 und bricht ab.
Uncaught ReferenceError: "async" is not defined
at async function controlHeater() {
^
Hallo HCHSA
Es gibt ein Script von User-64546 für 3 stufiges laden, vielleicht kann das Dir helfen.
let REMOTE = {
ip: '192.168.1.157',
relay1: '0',
relay2: '1',
relay3: '2'
}
let energieReturnWs = 0.0;
let energieKonsumWs = 0.0;
let CounterSaldieren = 0; // Timer skalieren
let CounterRelais = 0; // vielfaches von Timer 1
let CounterSave = 0; // save Timer Leistung
let CounterRefrech = 1
let STUFE = 1;
let Multiplikator = 1;
let STUFENWECHSEL = 0;
let Senden = 1;
let LAST = 246;
let AktPO = 0;
let Aktuell = 0;
let DivLastKonsom = 2;
let DivLastReturn = 3;
print('START');
Shelly.call(
"KVS.Get",
{
"key": "EnergyReturned",
},
function callback(result, error_code, error_message, userdata) {
if (error_code === 0) {
energieReturnWs = Number(result.value);
print("Loaded returned energy: ", energieReturnWs / 3600000, " kWh");
}
}
);
Shelly.call(
"KVS.Get",
{
"key": "EnergyConsumed",
},
function callback(result, error_code, error_message, userdata) {
if (error_code === 0) {
energieKonsumWs = Number(result.value);
print("Loaded consumed energy: ", energieKonsumWs / 3600000, " kWh");
}
}
);
function timerHandler(user_data) {
let em = Shelly.getComponentStatus("em", 0);
//print (em)
if (typeof em.total_act_power !== 'undefined') {
let power = em.total_act_power;
//print (power)
if (power >= 0) {
energieKonsumWs = energieKonsumWs + power * 0.5;
}
else {
energieReturnWs = energieReturnWs - power * 0.5;
}
CounterSave = CounterSave + 1;
CounterSaldieren = CounterSaldieren + 1;
CounterRefrech = CounterRefrech + 1;
//print("REAL");
//print("AKTPO =", AktPO);
//print("CounterRelais =", CounterRelais);
//print("CounterSaldieren =", CounterSaldieren);
AktPO = (AktPO + power);
//print("POWER;AKTUELL-MITTEL;SUMME-POWER", power,";",(AktPO / (CounterSaldieren + 1)),";",AktPO);
if (CounterSaldieren == 1)
{ // Bereitstelung der Stufe
Multiplikator = (Multiplikator * -1);
Shelly.call("Sys.SetConfig", {config: {location: {lon: STUFE * Multiplikator }}});
}
if (CounterSaldieren == 2)
{ // Anzeige NAME
Shelly.call("Sys.SetConfig", {config: {device: {name: Aktuell.toFixed(0)+"W ("+STUFE+") : " + Shelly.getComponentStatus("sys").time + " : +"+(energieKonsumWs / 3600000).toFixed(1)+" kWh -"+(energieReturnWs / 3600000).toFixed(2)+" kWh" }}});
}
if (CounterSaldieren > 19)
{
print("CounterSaldieren");
CounterRelais = CounterRelais + 1;
Aktuell = (AktPO / (CounterSaldieren + 1));
AktPO = Aktuell;
CounterSaldieren = 0;
//print("POWER =", Aktuell);
//print("STUFE =", STUFE);
//print("LAST =", LAST);
if (CounterRelais > 1) {
//print("CounterRelais");
//print("AKTUELL =", Aktuell);
//print("CounterRelais =", CounterRelais);
CounterRelais = 0;
if (Aktuell < ((LAST + LAST - (LAST / DivLastReturn)) * -1)) {
//Accu Lader viel mehr -500W
STUFE = STUFE + 2;
//print("STUFE + 2 ", STUFE, (LAST * 2) );
}
else if (Aktuell < ((LAST - (LAST / DivLastReturn)) * -1)) {
//Accu Lader mehr -225W
STUFE = STUFE + 1;
//print("STUFE + 1 ", STUFE, LAST );
}
else if (Aktuell > (LAST + (LAST / DivLastKonsom))) {
//Accu Lader viel weniger +300W
STUFE = STUFE - 2;
//print("STUFE - 2 ", STUFE,(LAST + (LAST / 5)) );
}
else if (Aktuell > (LAST / DivLastKonsom)) {
//Accu Lader weniger +50W
STUFE = STUFE - 1;
//print("STUFE - 1 ", STUFE,(LAST / 5) );
}
if (STUFE > 4) {
STUFE = 4;
}
else if (STUFE < 0) {
STUFE = 0;
}
if (STUFENWECHSEL < STUFE) {
Senden = 1;
AktPO = Aktuell + LAST;
}
else if (STUFENWECHSEL > STUFE) {
Senden = -1;
AktPO = Aktuell - LAST;
}
//print("wird gesendet: ",Senden);
if (Senden != 0) {
CounterRefrech = 1
if (STUFE > 0) {
//http ('192.168.1.157/relay/0?turn=on&timer=2000');
//RelaisON(REMOTE.ip, REMOTE.relay1, 'on', '2000');
}
if (STUFE < 1) {
//http ('192.168.1.157/relay/0?turn=off');
//RelaisOFF(REMOTE.ip, REMOTE.relay1, 'off');
}
if (STUFE > 1) {
//http ('192.168.1.157/relay/1?turn=on&timer=1500');
//RelaisON(REMOTE.ip, REMOTE.relay2, 'on', '1500');
}
if (STUFE < 2) {
//http ('192.168.1.157/relay/1?turn=off');
//RelaisOFF(REMOTE.ip, REMOTE.relay2, 'off');
}
if (STUFE > 2) {
//http ('192.168.1.157/relay/2?turn=on&timer=1000');
//RelaisON(REMOTE.ip, REMOTE.relay3, 'on', '1000');
}
if (STUFE < 3) {
//http ('192.168.1.157/relay/2?turn=off');
//RelaisOFF(REMOTE.ip, REMOTE.relay3, 'off');
}
if (STUFE > 3) {
Shelly.call("Switch.set", {'id': 100, 'on': true, toggle_after: 1000}); //direct
print("Local/relay/100/on/time=1000");
}
if (STUFE < 4) {
Shelly.call("Switch.set", {'id': 100, 'on': false}); //direct
print("Local/relay/100/off");
}
Senden = 0;
STUFENWECHSEL = STUFE;
}
}
//Shelly.call(
//"Sys.SetConfig", {
//config: {device:{name: Aktuell.toFixed(0)+"W ("+STUFE+") : " + Shelly.getComponentStatus("sys").time + " : +"+(energieKonsumWs / 3600000).toFixed(1)+" kWh -"+(energieReturnWs / 3600000).toFixed(2)+" kWh"}},
//},
//function(result, error_code, error_message, userdata) {
//print("error ", error_code, " : ", error_message);
//print("result", JSON.stringify(result));
//}
//);
CounterRefrech
if (CounterRefrech > 1990)
{
//print("CounterRefrech");
CounterRefrech = 1;
Senden = 1;
}
if (CounterSave > 3599)
{
//print("CounterSave");
CounterSave = 0;
SaveCounters();
}
}
}
}
function SetKVS(key, value) {
Shelly.call(
"KVS.Set", {
"key": key,
"value": value,
},
function(result) {
//print("KVS Saved, rev:", result.rev);
}
);
}
function http (url) {
print('http://' + url );
Shelly.call(
"http.request",
{ method: "GET" , timeout: "5" , url: 'http://' + url },
function (response, error_code, error_message, ud) {
//print(JSON.stringify(response));
//print(JSON.stringify(error_code));
//print(JSON.stringify(error_message));
//print(JSON.stringify(ud));
},
null
);
}
function SaveCounters() {
SetKVS("EnergyConsumed", energieKonsumWs );
SetKVS("EnergyReturned", energieReturnWs );
}
Timer.set(500, true, timerHandler, null);
Alles anzeigen