Shelly Plus 1 mit AddOn Temperaturfühler


// :thermometer: Skript für Shelly Plus 1 mit AM2301A Addon
// :fire: Sendet Webhook wenn die Feuchtigkeit > 40% steigt
// -------------------------------

// Konfiguriere die URL deines Webhooks
let webhookUrl = ‚https://192.168.178.89/api/v2/webhook_trigger?webhooks_key=OKVVRKIQLMHAVLDPIXSNENBECCXIBYWKNARVLOEFRUITPWIMVMORVFPJVFTVPWNJ&event=Keller‘;

// Aktueller Feuchtigkeitswert speichern, um nur bei Änderung zu reagieren
let lastHumidity = 0;

// Event-Listener, der auf Sensor-Änderungen lauscht
Shelly.addStatusHandler(function (event) {
// Überprüfe, ob der Sensor-Status geändert wurde
if (event.component === ‚sensor_0‘ && event.delta.hasOwnProperty(‚humidity‘)) {
let humidity = event.delta.humidity; // Neuer Feuchtigkeitswert
print(💧 Neue Feuchtigkeit: ${humidity}%);

    // Überprüfen, ob die Feuchtigkeit über 40% gestiegen ist und höher als der vorherige Wert ist
    if (humidity > 40 && humidity > lastHumidity) {
        print(`🚀 Feuchtigkeit ist über 40% gestiegen! Sende Webhook...`);
        sendWebhook(humidity);
    }

    // Speichere den letzten Feuchtigkeitswert
    lastHumidity = humidity;
}

});

// Funktion zum Senden des Webhooks
function sendWebhook(humidity) {
let url = ${webhookUrl}?humidity=${humidity};
Shelly.call(
„HTTP.GET“,
{ url: url },
function (response, error_code, error_message) {
if (error_code === 0) {
print(‚:white_check_mark: Webhook erfolgreich gesendet:‘, url);
} else {
print(‚:x: Fehler beim Senden des Webhooks:‘, error_message);
}
}
);
}

Habe jetzt Deine Anregungen nochmal eingearbeitet und in Shelly hochgeladen und gespeichert. Wenn ich dnun das Script ausführe passiert : leider gar nichts.
Hat irgendjemand eine Idee was ich nach wie vor falsch mache.
Ich verstehe es doch richtig, dass das Script beim Shelly plus 1 hinterlegt wird, gespeichert wird und dann auf ausführen geklickt werden muss. Dann müsste doch bei einer Feuchtigkeit über 40 % der Webhook an Homee gesendet werden?
Danke für Eure Hilfe.
Grüße
Michael

Bitte formatiere dein Script als vorformatierter Text. </>.

So kann das keiner lesen geschweige denn kopieren um es zu testen.

Ebenso hast du immernoch https dort zu stehen und nicht http in der url.
Auch versuchst du bei dem senden des Webhook die Feuchtigkeit mitzusenden.
Das funktioniert so nicht.

Was für Fehler wirft dir die Konsole aus ?
Oder läuft das Script sauber durch ?
Sollte es sauber laufen ohne abzustürzen dann liegt es nur noch an den URLs .

Wenn du magst dann kannst du dein Device mit mir teilen und ich schau mir den Code direkt an. Dazu dann eine PN an mich senden.

// -------------------------------
// 🌡️ Skript für Shelly Plus 1 mit AM2301A Addon
// 🔥 Sendet Webhook wenn die Feuchtigkeit > 40% steigt
// -------------------------------

// Konfiguriere die URL deines Webhooks
let webhookUrl = 'http://192.168.178.89/api/v2/webhook_trigger?webhooks_key=OKVVRKIQLMHAVLDPIXSNENBECCXIBYWKNARVLOEFRUITPWIMVMORVFPJVFTVPWNJ&event=Keller';

// Aktueller Feuchtigkeitswert speichern, um nur bei Änderung zu reagieren
let lastHumidity = 0;

// Event-Listener, der auf Sensor-Änderungen lauscht
Shelly.addStatusHandler(function (event) {
    // Überprüfe, ob der Sensor-Status geändert wurde
    if (event.component === 'sensor_0' && event.delta.hasOwnProperty('humidity')) {
        let humidity = event.delta.humidity; // Neuer Feuchtigkeitswert
        print(`💧 Neue Feuchtigkeit: ${humidity}%`);

        // Überprüfen, ob die Feuchtigkeit über 40% gestiegen ist und höher als der vorherige Wert ist
        if (humidity > 35 && humidity > lastHumidity) {
          
                     print(`🚀 Feuchtigkeit ist über 40% gestiegen! Sende Webhook...`);
            sendWebhook(humidity);
        }

        // Speichere den letzten Feuchtigkeitswert
        lastHumidity = humidity;
    }
});

// Funktion zum Senden des Webhooks
function sendWebhook(humidity) {
    let url = `${webhookUrl}?humidity=${humidity}`;
    Shelly.call(
        "HTTP.GET", 
        { url: url },
        function (response, error_code, error_message) {
            if (error_code === 0) {
                print('✅ Webhook erfolgreich gesendet:', url);
            } else {
                print('❌ Fehler beim Senden des Webhooks:', error_message);
            }
        }
    );
}

Besser so :slight_smile:

1 „Gefällt mir“