Ic hasse diese Foren.
Beiträge von DerGaertner
-
-
Und wie viel mehr schafft ein shelly?
-
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?
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 Antwortif (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);