Beiträge von DerGaertner

    Ich hab mir jetzt tatsächlich schon Snubber bestellt..

    Mit großer Shelly meinst die 16A? Wird die das Problem sicher lösen?

    Hast du evtl Lust mir kurz zu erklären was genau hier das Problem ist?
    Irgendwie habe ich das bei der geringen Leistung so nicht erwartet.
    Für meine Lampen (1x 600W HID, 1x 265W LED) benutze ich nen 16A Shelly, aber wenn ich das höre krieg ich ja auch gleich wieder panik das mir der auch mal kleben bleibt..

    Hi,


    ich habe hier den oben gennaten Shelly im Einsatz, dieser wird mit einer kleinen Last, 2 Ventilatoren zusammen ca 60W, in einer verhältniasmäßig hohen Frequenz geschaltet, ist scheinbar jetzt schon im Arsch. Ist das üblich, eignen sich Shellys nicht für häufige Schaltvorgänge?:thumbdown:

    Da sind 2 Relay die werden mit einem Skript zufällig ziwchen 1 und 3 Minuten an und aus geschaltet.

    Hi!


    Ich möchte gerne das mein Skript mir den Taupunkt und den VPD anhand eines H&T Sensors berechnet und mir die Werte dann als Nachricht oder irgendwie an die Shelly App meldet.


    Ich hab mit Chat GPT und mit Fragmenten aus dem Forum schonmal an einem Skript gearbeitet, bekomme es aber micht hin das es die Daten irgendwo hin sendet.


    Ich bin absoluter Greenhorn in der ganzen Sache, bitte mich fertig machen.


    Das Skript:


    let url = 'https://shelly-142-eu.shelly.cloud/device/status';
    let body = JSON.stringify({
    id: ‘*****',
    auth_key: ‘*****'
    });

    // Abruf der Gerätedaten (Temperatur und Feuchtigkeit)
    Shelly.call('HTTP.POST',
    {url: url, body: body},
    function (response) {
    let oResponseBody = JSON.parse(response.body);
    log("API Response: " + response.body); // Logge die gesamte Antwort

    if (oResponseBody.isok) {
    // Extrahieren der Temperatur und Feuchtigkeit
    let oTemperature = oResponseBody.data.device_status['temperature:0'];
    let oHumidity = oResponseBody.data.device_status['humidity:0'];

    log("Temperatur: " + oTemperature.tC);
    log("Feuchtigkeit: " + oHumidity.rh);

    let a = oTemperature.tC; // Temperatur als 'a'
    let b = oHumidity.rh; // Feuchtigkeit als 'b'
               
    // Berechnung des Taupunkts und des Dampfdruckdefizits
    let dewPoint = calculateDewPoint(a, b);
    let dpd = calculateDewPointDeficit(a, b);

    if (dewPoint !== null && dpd !== null) {
    // Messen der berechneten Werte in die Shelly App (oder als MQTT-Benachrichtigung)
    reportToShelly(dewPoint, dpd);
    } else {
    log("Fehler: Ungültige Berechnungen");
    }
    } else {
    log("Fehler: " + oResponseBody.error_message); // Fehlernachricht aus der Antwort
    }
    }
    );

    // Berechnung des Taupunkts
    function calculateDewPoint(a, b) {
    if (isNaN(a) || isNaN(b)) {
    log("Ungültige Eingabewerte: Temperatur oder Feuchtigkeit ist NaN.");
    return null;
    }
    let temp = a;
    let humidity = b;
    let gamma = (17.27 * temp) / (237.7 + temp) + Math.log(humidity / 100.0);
    let dewPoint = (237.7 * gamma) / (17.27 - gamma);
    return dewPoint;
    }

    // Berechnung des Dampfdruckdefizits
    function calculateDewPointDeficit(temp, humidity) {
    if (isNaN(temp) || isNaN(humidity)) {
    log("Ungültige Eingabewerte: Temperatur oder Feuchtigkeit ist NaN.");
    return null;
    }
    let E_s = 6.112 * Math.exp((17.27 * temp) / (237.7 + temp));
    let E_a = E_s * (humidity / 100);
    let dpd = E_s - E_a;
    return dpd;
    }

    // Funktion, um den Taupunkt und Dampfdruckdefizit an die Shelly App zu melden
    function reportToShelly(dewPoint, dpd) {
    let deviceId = '****'; // Dein Shelly-Gerät-ID
    let message = `Taupunkt: ${dewPoint.toFixed(2)} °C\nDampfdruckdefizit: ${dpd.toFixed(2)} hPa`;

    // Erstelle den Body mit der Nachricht und sende es an die Shelly App
    let body = JSON.stringify({
    id: '****',
    method: 'update_status', // Beispiel: Update-Methode, je nach API
    params: {
    message: message // Deine berechneten Werte als Textnachricht
    }
    });

    // Sende die Nachricht an die Shelly App oder das Shelly-Gerät
    Shelly.call('HTTP.POST',
    {
    url: `https://shelly-142-eu.shelly.cloud/device/update`, // Beispiel-URL, anpassen je nach API
    body: body
    },
    function(response) {
    log('Message reported to Shelly app: ' + response.body);
    }
    );
    }

    // Überwachungsfunktion, um den Taupunkt alle 15 Minuten zu berechnen und zu melden
    function monitorDewPoint() {
    try {
    // Geräteinformationen abrufen
    let temp = Shelly.getComponentStatus('Temperature', 100).tC;
    let humidity = Shelly.getComponentStatus('Humidity', 100).rh;

    // Überprüfen, ob die Werte erfolgreich abgerufen wurden
    if (temp && humidity) {
    let dewPoint = calculateDewPoint(temp, humidity);
    let dpd = calculateDewPointDeficit(temp, humidity);

    // Berechnete Werte melden
    if (dewPoint !== null && dpd !== null) {
    reportToShelly(dewPoint, dpd);
    } else {
    log("Fehler: Ungültige Berechnungen.");
    }
    } else {
    log("Fehler beim Abrufen der Temperatur oder Luftfeuchtigkeit.");
    }
    } catch (e) {
    log("Fehler: " + e);
    }
    }

    // Timer setzen, um alle 15 Minuten die Werte zu melden (15 Minuten = 900.000 ms)
    Timer.set(900000, true, monitorDewPoint);