nach deinem Rat habe ich der ki ein Script in cesanta mjs schreiben lassen mit folgenden Vorgaben:
der pool soll sich einschalten wenn das shelly relai em3 mit der IP adresse 192.168.1.83 total weniger als -550 watt erzeugt und das shelly relai pool mit der IP Adresse 192.168.1.89 ausgeschaltet ist dann pool mit der IP Adresse 192.168.1.89 einschalten.
der pool mit der IP Adresse 192.168.1.89 soll sich ausschalten wenn das shelly relai em3 mit der IP adresse 192.168.1.83 länger als 5 minuten und mehr als 50 watt erzeugt erzeugt und das shelly relai pool mit der IP Adresse 192.168.1.89 eingeschaltet ist oder der pool mit der IP Adresse 192.168.1.89 soll sich ausschalten wenn das shelly relai em3 mit der IP adresse 192.168.1.83 mehr als 500 watt erzeugt und das shelly relai pool mit der IP Adresse 192.168.1.89 eingeschaltet ist.
Wenn das relai pool mit der IP Adresse 192.168.1.89 von 9:00 bis 12:00 nicht eingeschaltet hat weil von em3 relai mit der IP adresse 192.168.1.83 zu wenig solar strom erzeugt wurde soll sich die das Relai pool mit der IP Adresse 192.168.1.89 von 13:00 Uhr bis 15:00 Uhr einschalten und am nächsten tag von 1:00 Uhr bis 2:00 Uhr einschalten.
Und das ist dabei herausgekommen.
Wieder mit einem Fehler: MJS error: parse error at line 73: []
load('api_timer.js');
load('api_http.js');
// Funktion zum Einschalten des Pools
function einschaltenPool() {
let response = HTTP.query({
url: 'http://192.168.1.89/relai/einschalten', // Hier die richtige URL für das Einschalten des Pools eintragen
method: 'POST',
});
print('Pool eingeschaltet:', response.status);
}
// Funktion zum Ausschalten des Pools
function ausschaltenPool() {
let response = HTTP.query({
url: 'http://192.168.1.89/relai/ausschalten', // Hier die richtige URL für das Ausschalten des Pools eintragen
method: 'POST',
});
print('Pool ausgeschaltet:', response.status);
}
// Überwachung der Energieerzeugung und des Poolstatus
function ueberwacheEnergie() {
let em3Response = HTTP.query({
url: 'http://192.168.1.83/em3', // Hier die richtige URL für das Abrufen der EM3-Daten eintragen
method: 'GET',
});
let em3Data = JSON.parse(em3Response.body);
let poolResponse = HTTP.query({
url: 'http://192.168.1.89/relai/status', // Hier die richtige URL für den Poolstatus eintragen
method: 'GET',
});
let poolData = JSON.parse(poolResponse.body);
let erzeugungWatt = em3Data.total - 550;
// Überprüfung der Bedingungen zum Ein- und Ausschalten des Pools
if (erzeugungWatt < 0 && poolData.status === 'ausgeschaltet') {
einschaltenPool();
} else if (
(em3Data.total > 50 && em3Data.time > 5 * 60) ||
(em3Data.total > 500 && poolData.status === 'eingeschaltet')
) {
ausschaltenPool();
}
}
// Überprüfung der Poolstatuszeit und Einschalten des Pools entsprechend
function ueberpruefePoolzeit() {
let currentTime = Timer.now();
// Überprüfung der Zeit von 9:00 bis 12:00 Uhr
if (currentTime >= Timer.fmt('%Y-%m-%d 09:00:00', currentTime) &&
currentTime <= Timer.fmt('%Y-%m-%d 12:00:00', currentTime)) {
let poolResponse = HTTP.query({
url: 'http://192.168.1.89/relai/status', // Hier die richtige URL für den Poolstatus eintragen
method: 'GET',
});
let poolData = JSON.parse(poolResponse.body);
if (poolData.status === 'ausgeschaltet') {
einschaltenPool();
}
}
// Überprüfung der Zeit von 13:00 bis 15:00 Uhr
if (currentTime >= Timer.fmt('%Y-%m-%d 13:00:00', currentTime) &&
currentTime <= Timer.fmt('%Y-%m-%d 15:00:00', currentTime)) {
let poolResponse = HTTP.query({
url: 'http://192.168.1.89/relai/status', // Hier die richtige URL für den Poolstatus eintragen
method: 'GET'});
let poolData = JSON.parse(poolResponse.body);
if (poolData.status === 'ausgeschaltet') {
einschaltenPool();
}
}
// Überprüfung der Zeit von 1:00 bis 2:00 Uhr am nächsten Tag
let nextDay = Timer.now() + 24 * 60 * 60; // Nächster Tag
if (currentTime >= Timer.fmt('%Y-%m-%d 01:00:00', nextDay) &&
currentTime <= Timer.fmt('%Y-%m-%d 02:00:00', nextDay)) {
let poolResponse = HTTP.query({
url: 'http://192.168.1.89/relai/status', // Hier die richtige URL für den Poolstatus eintragen
method: 'GET',
});
let poolData = JSON.parse(poolResponse.body);
if (poolData.status === 'ausgeschaltet') {
einschaltenPool();
}
}
}
// Intervall für die Überwachung der Energieerzeugung und des Poolstatus
Timer.set(5000, true, function () {
ueberwacheEnergie();
});
// Intervall für die Überprüfung der Poolzeit und das Einschalten des Pools
Timer.set(60000, true, function () {
ueberpruefePoolzeit();
});
Alles anzeigen