Ich bräuchte Hilfe für ein Script habe einen ganzen Tag verbracht mit KI das Problem zu lösen, in der Diagnostik sehe ich zwar die Befehle gehen raus aber das Relais Hardwaremäßig schweigt wer kann mir bitte helfen?
Das Script sollte nur auslösen wenn ein Zeitplan aktiviert ist!
Shelly A (IP 192.168.1.153) schaltet ein, nach 5 Sekunden soll Shelly B (IP 192.168.1.154) einschalten für 12 Sekunden, nach Ablauf der 12 Sekunden und mit Rückmeldung Shelly B ist aus soll der Shelly A nach 5 Sekunden ausschalten und auf eine neues Ereignis aus dem Zeitplan lauschen.
Nach den ersten Mißerfolgen habe ich natürlich mit diesem script geprüft ob ich den Shelly B überhaupt erreichen kann:
// Array von Shelly-Geräten, die das gleiche wie der Shelly mit diesem Script machen
let REMOTE_DEVICES = [
{ ip: '192.168.1.83', relay: '0' }, // Erstes Zielgerät
{ ip: '192.168.1.86', relay: '0' }, // Zweites Zielgerät
{ ip: '192.168.1.99', relay: '0' } // Drittes Zielgerät
];
// CONFIG END
// no need to change anything below this line..
Shelly.addEventHandler(function (event, user_data) {
if (typeof event.info.state !== 'undefined') {
if (event.info.id === 0 && event.info.state === true) {
// Alle Remote-Geräte einschalten
for (let device of REMOTE_DEVICES) {
Toggle(device.ip, device.relay, 'on');
}
}
if (event.info.id === 0 && event.info.state === false) {
// Alle Remote-Geräte ausschalten
for (let device of REMOTE_DEVICES) {
Toggle(device.ip, device.relay, 'off');
}
}
} else {
return true;
}
});
function Toggle(ip, relay, command) {
Shelly.call("http.get", {
url: 'http://' + ip + '/relay/' + relay + '?turn=' + command
}, function (response, error_code, error_message, ud) {
print(JSON.stringify(response));
}, null);
};
War erfolgreich mit der Adresse von B,
ich bedanke mich im Voraus für den nötigen Gehirnschmalz...
// Shelly 1 Mini Gen3 Remote Control
// Lokaler Shelly = Sender
// Remote Shelly = Empfänger
// -------------------------------
let LOCAL_RELAY = 0;
let REMOTE_RELAY = 0;
let REMOTE_IP = "192.168.1.154";
print("Gen3 Script gestartet – warte auf Switch-Ereignisse...");
// Hilfsfunktion: Remote ON/OFF
function remoteSwitch(onOff) {
Shelly.call(
"Switch.Set",
{ id: REMOTE_RELAY, on: onOff },
function (res, err) {
if (err) {
print(" Remote-Fehler:", JSON.stringify(err));
} else {
print(" Remote OK:", JSON.stringify(res));
}
},
REMOTE_IP // ← WICHTIG! Remote Zieladresse
);
}
// Listener für lokale Relay-Änderungen
Shelly.addEventHandler(function (ev) {
if (ev.component === "switch:" + LOCAL_RELAY &&
ev.info && ev.info.state !== undefined) {
if (ev.info.state === true) {
print(" Lokales Relais EIN – sende Remote EIN in 5s");
Timer.set(5000, false, function () {
remoteSwitch(true);
print(" Remote EIN gesendet – schalte Remote AUS in 12s");
Timer.set(12000, false, function () {
remoteSwitch(false);
print(" Remote AUS gesendet – lokales Relais AUS in 5s");
Timer.set(5000, false, function () {
print(" Lokales Relais wird ausgeschaltet.");
Shelly.call("Switch.Set", { id: LOCAL_RELAY, on: false });
});
});
});
}
}
});
Alles anzeigen