Hallo zusammen,
ich habe mir schon das halbe Wochenende um die Ohren geschlagen und finde bisher leider keine Lösung für meine Idee. Vielleicht kann mir ja jemand helfen?
Zur Ausgangssituation: Shelly Plug S mit int. IP-Adresse: 192.168.10.x und aktivierten Benutzernamen und Passwort vorhanden.
An dem Shelly hängt ein Rechner "Medien-PC" welcher ein Fotoarchiv hostet. Parallel dazu gibt es auf einem externen Webserver in einem geschützten Verzeichnis eine HTML-Seite . Diese HTML-Seite bindet mittels Funktion I-frame eine Anwendung auf dem Medien-PC (privates Netz via Portfreigabe) ein. Soweit funktioniert das alles. Wenn der Rechner an ist können wir auf die Bilder auf dem medien-PC zugreifen. usw.
Die Idee ist nun auf der gleichen HTML-Seite einen Button für den Shelly Plug S bereitzustellen um die Spannungsversorgung für den Medien-PC, angeschlossen an dem Shelly Plug S, einzuschalten. Das könnte auch so funktionieren:
Wenn ich diesen Befehl nativ in die Webseite einbaue, dann liefert der Shelly eine Rückmeldung die mir im Browser wiederum als "Ergebnis" angezeigt wird. Damit bin ich von der Ursprungsadresse weg und der i-frame wird nicht mehr angezeigt.
Zusätzlich habe ich auch schon mehrere Versuche unternommen das Thema mithilfe der Javascript Anleitung von Seven of Nine (Danke für die Anleitung - Shelly per Javascript steuern - MQTT & REST-API - Offizielles Shelly Support Forum (smarthome-forum.eu)) umzusetzen. Immer, wenn ich das script verändern möchte das z.B. die Portnummer, der Benutzername oder das vergebene Passwort eingebaut wird, erhalte ich die Fehler Meldung "Befehl nicht ausgeführt".
Hier das angepasste Script:
<script>
function OnShelly(type, id, ip) {
fetch('http://benutzername:password@' + ip + ':12345' +'/'+ type +'/' + id + '?turn=on', {
mode: 'no-cors'
})
.then()
.catch(err => alert('Befehl nicht ausgeführt'));
}
</script>
<button onclick="OnShelly('relay', 0, 'adresse.dyndns.org')">PC EIN</button>
Alles anzeigen
Kann mir jemand helfen und mir den passenden Code abändern / liefern?
Vielen Dank schon jetzt für eure Hilfe.
Ich hoffe doch sehr das ich die Funktion irgendwie umgesetzt bekommen!