-
Autor
Hallo. Ich kann leider nicht Programmieren und versuche mit meinen Möglichkeiten eine Lösung zu finden. Das folgende Skript würde ich gerne erstmal einen Schritt weiter bringen und würde mich riesig über eure Hilfe freuen. Danke schon einmal
Eben zur Erklärung was es werden soll später: Ich habe 2 Shellies sagen wir vor der Nase eine Pro 1 und weiter weg einen Pro 2. Jetzt möchte ich per Skript den die zwei Eingänge des entfernten Pro 2 auslesen. Wenn diese zwei Eingänge AUS sind (IN1 = AUS & IN2 = AUS) dann (=>) schalte mir den Ausgang des Pro 1 AN (OUT1 = AN). Perfekt wäre dann zum Schluss vielleicht noch, das das Skript wenn der Pro 1 an ist beendet wird.
Bei Zeile 77 habe ich versucht, mit & zu verknüpfen und vieles andere aber ich erreiche es nicht, was ich gerne hätte.
let switch_status = false; // Globale Variable für den Schalterstatus (Standardwert auf false gesetzt)
let switch_status2 = false; // Globale Variable für den Schalterstatus (Standardwert auf false gesetzt)
const shelly2_ip = "192.168.120.161"
// Funktion, um den Status des Schalters abzurufen
function getSwitchStatus(callback) {
Shelly.call("HTTP.GET",{url: "http://" + shelly2_ip + "/rpc/Switch.GetStatus?id=0",},
function(result) {
try {
let response = JSON.parse(result.body);
callback(response);
} catch (e) {
print("Fehler beim Parsen der Antwort:", e.message);
callback(null);
}
}
);
}
// Funktion zum Aktualisieren des Schalterstatus
function updateSwitchStatus() {
getSwitchStatus(function(status) {
if (status !== null) {
switch_status = status.output;
print("Netzspannung1:", switch_status ? "Eingeschaltet" : "Ausgeschaltet");
} else {
print("Fehler beim Abrufen des Schalterstatus Netzspannung1.");
}
});
}
// Funktion, um den Status des Schalters abzurufen
function getSwitchStatus2(callback) {
Shelly.call("HTTP.GET",{url: "http://" + shelly2_ip + "/rpc/Switch.GetStatus?id=1",},
function(result) {
try {
let response = JSON.parse(result.body);
callback(response);
} catch (e) {
print("Fehler beim Parsen der Antwort:", e.message);
callback(null);
}
}
);
}
// Funktion zum Aktualisieren des Schalterstatus
function updateSwitchStatus2() {
getSwitchStatus2(function(status) {
if (status !== null) {
switch_status2 = status.output;
print("Netzspannung2:", switch_status2 ? "Eingeschaltet" : "Ausgeschaltet");
} else {
print("Fehler beim Abrufen des Schalterstatus Netzspannung2.");
}
});
}
// Funktion zur Steuerung des Relais
function setRelayState(state) {
Shelly.call("Switch.Set", { id: 0, on: state}, function(result, error_code, error_message) {
if (error_code !== 0) {
print("Fehler beim Schalten des Relais Starkstrom:", error_message);
} else {
print("Starkstrom:", state ? "Eingeschaltet" : "Ausgeschaltet");
}
});
}
// Funktion zur regelmäßigen Überprüfung der Intervallsteuerung
function startControl() {
// Setze eine Funktion zur regelmäßigen Überprüfung alle 10 Sekunden
Timer.set(6000, true, function() {
updateSwitchStatus(); // Lese den Schalterstatus
updateSwitchStatus2(); // Lese den Schalterstatus
print("Das Netz wurde", switch_status ? "auf Netzbetrieb" : "auf Akkubetrieb", "umgeschaltet");
setRelayState(switch_status)&(switch_status2); // Aktualisiere den gewünschten Relaiszustand
});
}
// Starte Schleife
startControl();
Alles anzeigen