steffda
Obiges gilt für Actions auf dem Skript Shelly. Da diese Action bei dir auf dem H&T eingetragen wird, lautet der URL dort
http://<IP Adresse das Schalt-Shelly>/rpc/script.eval?id=1&code="schalten(true)"
bzw.
http://<IP Adresse das Schalt-Shelly>/rpc/script.eval?id=1&code="schalten(false)"
und das ganze Skript auf dem Schalt-Shelly wie oben.
function schalten(ein) {.
if(!(Shelly.getComponentStatus("cloud").connected))
Shelly.call("switch.set", {id:0,on:ein});
}
Das wäre bereits alles.
Edit:
Dazu braucht es selbstverständlich ein funktionstüchtiges WLAN. Zum testen ist also temporär die Internetverbindung auf dem Router zu deaktivieren. Und zwecks Protokollierung das Skript etwas zu erweitern. Statt die Internetverbindung auf dem Router zu deaktivieren, kannst du selbstverständlich die Cloud auf dem Schalt-Shelly disablen.
function schalten(ein) {
let fill = "nicht ";
if(!(Shelly.getComponentStatus("cloud").connected)) {
Shelly.call("switch.set", {id:0,on:ein});
fill = "";
}
print("Lokale Action " + fill + "ausgeführt.");
}
An Hand der am rechten Rand im Protokollfenster (Console) zu sehenden Uhrzeit kannst du recht gut prüfen, wann was geschah.
Ich habe den Code nachträglich noch ein wenig servicefreundlicher umgestaltet.
Wichtig!
Wenn eine Action mit der Methode "Script.Eval" einen Fehler beinhaltet, insbesondere der Funktionsname falsch geschrieben wurde, dann kann das Skript abgebrochen werden. Deshalb sollte nach dem Anlegen einer solchen Action deren Funktionsweise getestet werden.
Mit der Verwendung eines HTTPServer Endpoints im Skript ereignet sich kein Skriptabbruch wegen eines solchen Action-Schreibfehlers. Ein solches Skript ist aber nicht mehr so schön kurz und einfach. 