PlugS Gen3 und BLU

Hallo an alle Experten
Ich habe einige Fragen bezüglich dieses Themas an die KI gestellt - die Antworten haben mich viele Stunden Lebenszeit gekostet :face_with_steam_from_nose:
Darum hier meine (1.) Frage an euch:
Ich habe im Webinterface folgendes Skript angelegt:

// — Shelly Gen 3 Skript: Webhook an IP-Symcon senden —
// 1. BITTE ANPASSEN:
// Ersetze dies mit der Webhook-URL, die du in IP-Symcon erstellt hast.
let IP_SYMCON_WEBHOOK_URL = „http://192.168.2.2:3777/hook/Shelly-Test“;

// 2. Die Nachricht, die wir senden wollen
// (Leerzeichen müssen URL-kodiert werden, z.B. " " wird zu „%20“)
let nachricht = „Hallo%20Welt“;

// 3. Die URL für den Aufruf zusammenbauen
// Wir hängen die Nachricht als URL-Parameter ‚text‘ an.
// In IP-Symcon wird dies als $_GET[‚text‘] verfügbar sein.
let targetURL = IP_SYMCON_WEBHOOK_URL + „?message=“ + nachricht;

// 4. Den Webhook (HTTP GET) aufrufen
console.log(„Sende Test-Webhook an:“, targetURL);

Shelly.call(
„HTTP.GET“,
{
url: targetURL,
timeout: 5 // Timeout von 5 Sekunden
},
function (response, error_code, error_message) {
// Diese Funktion wird aufgerufen, wenn der Aufruf beendet ist

if (error_code === 0) {
  // Erfolg!
  console.log("Webhook erfolgreich gesendet!");
  // Optional: Zeige die Antwort vom IP-Symcon Server an
  // console.log("Server-Antwort:", response.body);
} else {
  // Fehler
  console.log("Fehler beim Senden des Webhooks:");
  console.log("Fehlercode:", error_code);
  console.log("Fehlermeldung:", error_message);
}

}
);

Ich Symcon habe ich eine Variable an angelegt und ein Skript für den Webhook:

// 1. Die ID deiner Ziel-Variable hier eintragen

$targetVariableID = 41633; // ← WICHTIG: Ersetze 12345 durch die ID deiner Variable!

// 2. Den Wert aus der URL auslesen (der Teil nach „?value=“)

if (isset($_GET[‚message‘])) {

    // Den Wert in eine Kommazahl umwandeln, um sicherzugehen

// $meldung = floatval($_GET[‚value‘]);

$meldung = ($_GET[‚message‘]);

    // 3. Den ausgelesenen Wert in die Variable schreiben

SetValue($targetVariableID, $meldung);

    // Optional: Eine kurze Bestätigung für den Browser ausgeben

echo "Meldung " . $meldung . " wurde erfolgreich gespeichert.";

} else {

// Fehlermeldung, falls der "value"-Parameter in der URL fehlt

echo "Fehler: Der Parameter 'message' wurde nicht übergeben.";

}

Alles super - funktioniert:

Wie muss ein Skript aussehen, dass mir den Status der Steckdose bei Änderung sendet?

Schönes Wochenende

Stoner

Darf ich fragen, was du konkret vorhast? Warum bindest du die Steckdose nicht einfach per MQTT ein?

Noch eleganter geht es per Matter :slight_smile:

Zum Webhook sagt mir meine KI:

// Event Handler für Statusänderungen der Steckdose
let WEBHOOK_URL = "http://192.168.2.2:3777/hook/Shelly-Test";

// Event-Handler für Statusänderungen registrieren
Shelly.addStatusHandler(function(status_update) {
  // Prüfen, ob sich der Switch-Status geändert hat
  if (status_update.name === "switch:0") {
    // Aktuellen Status auslesen
    let switchStatus = Shelly.getComponentStatus("switch", 0);
    let isOn = switchStatus.output;
    
    // Webhook-URL mit Status zusammenbauen
    let url = WEBHOOK_URL + "?status=" + (isOn ? "on" : "off");
    
    console.log("Sende Status an Symcon:", url);
    
    // HTTP-Request senden
    Shelly.call(
      "HTTP.GET",
      { url: url, timeout: 5 },
      function(response, error_code, error_message) {
        if (error_code === 0) {
          console.log("Webhook erfolgreich gesendet!");
        } else {
          console.log("Fehler:", error_code, error_message);
        }
      }
    );
  }
});

Keine Ahnung, ob es funktioniert. Sieht aber Vertrauen erweckend aus :slight_smile:

Hallo bumaas,

danke! - ja. es funktioniert der Webhook bzw. Skript werden aufgerufen.
Was ich ich vorhabe, dass verrate ich später - es hat etwas mit AAL zu tun.
Für alle, die hier mitlesen:
Magst du bzw. KI verraten, wie das Skript in Symcon aussehen muss?
Danke!
Stoner

Aber sicher. Perplexity schlägt vor

$targetVariableID = 41633;

if (isset($_GET['status'])) {
    $status = $_GET['status'];
    
    // Optional: in Boolean umwandeln
    $value = ($status === 'on' || $status === 'true') ? true : false;
    
    SetValue($targetVariableID, $value);
    echo "Status " . $status . " erfolgreich gespeichert.";
} else {
    echo "Fehler: Parameter 'status' fehlt.";
}