Hallo, meine Frage betrifft Shelly Programmierung mit HTML, JS und letztendlich Curl.
Ich steuere mein Licht&Rolladen per Javascript und übergebe den Befehl mit den Parametern an Curl. Das funktioniert ganz gut soweit.
Nun zu meiner Frage: wie kann ich mehrere Befehle, z.B. Rolläden gleichzeitig fahren, übergeben? Habt ihr da Idee?
Hier der Code, dies ist der Button in HTML:
Code
<button type="button" class="buttonHD" onclick="ToggleShelly('192.168.178.91','roller',0,'go=open' )">
Rollo hoch
</button>
JavaScript Funktion, die das ganze an die php Seite danach übergibt:
Code
function ToggleShelly(ip, type, id, action) {
fetch('Shellyproxy2021.php?ip=' + ip +'&type='+ type +'&id=' + id+'&action=' + action, {
})
.then()
.catch(err => alert('Toggle failed'));
window.location.reload("Start.php")
}
Hier wird der Befehl für Licht (Shelly 1) und Rolladen (Shelly 2.5) ausgeführt:
PHP
<?php
if (isset($_GET['ip']) && isset($_GET['type']) && isset($_GET['id']) && isset($_GET['action']) ) {
$url = 'http://'. $_GET['ip']. '/'. $_GET['type'] . '/' . $_GET['id'] . '?'.$_GET['action'];
echo("<script>alert("+ $url +");</script>");
echo($url);
//so sieht $url für Licht aus: http://192.168.178.73/relay/0?turn=toggle
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, 'curl');
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec ($ch);
header('Content-Type: application/json');
echo $result;
} else {
echo 'Missing Parameters';
}
?>
Alles anzeigen
Generell kann ich den Befehl leider nur auf dem Handy ausführen, nicht in Firefox auf dem PC. Wenn mir jemand auch bei der Lösung helfen könnte, wäre es echt super.