Das die Funktion grundsätzlich funktioniert, aber im Falle von Username/Kennwort nicht, spricht meines Erachtens dafür, dass der Zugriff (aus Sicherheitsgründen) blockiert wird.
Generell: die Authentifizierung beim Shelly ist mittels Basic auth gelöst, das ist hochgradig unsicher und ich (hab oft beruflich mit IT-Sicherheit zu tun) würde dir dringend empfehlen einen anderen Weg einzuschlagen.
Meines Erachtens gibt es hier zwei Varianten, wie das funktionieren kann:
1) du nutzt statt dem direkten Aufruf via .fetch ein PHP-Script als Proxy, dann wird die Anweisung an den Shelly nicht via browser geschickt sondern vom Server (und den interessieren die Sicherheitsbeschränkungen deines Browsers nicht.
Ein Beispiel hätte ich hier dafür:
https://github.com/shelly-tools/shelly-php-proxy-examples
Aber: das bleibt weiterhin hochgradig unsicher (kein TLS, Passwörter nur Basic und im Klartext)
2) Du erstellst dir ein Mini-Script, welches auf deinem Server eine Text-Datei mit dem Inhalt "an" oder "aus" beinhaltet und nutzt einen Shelly Plus 1 um minütlich zu prüfen, was in der Datei drin steht und anhand des Textes das Relais an- oder auszuschalten.
Vorteile:
- die Shelly Plus können im Script auch mit Basic auth über TLS-Verschlüsselung arbeiten.
- der Aufruf passiert nur von intern nach extern, also kein potentielles Einbruch-Szenario in deinem Router.
- du bleibst unabhängig von einer Cloud.
Ein PHP-Script welches eine Datei mit 2 möglichen Texten erstellt ist ein 5-Zeiler.
Das ShellyScript, welches im Internet nach einer bestimmten Datei schaut hab ich bereits für eine andere Idee mal umgesetzt:
https://github.com/shelly-tools/s…me-Contest-2021
Das anzupassen ist schnell gemacht.
Als ISB wirst du dich ganz bestimmt für Variante 2 entscheiden
, ich kann da gerne unterstüztend tätig sein.