Beiträge von Sonnenkromi

VPN/Proxy erkannt

Es scheint, dass Sie einen VPN- oder Proxy-Dienst verwenden. Bitte beachten Sie, dass die Nutzung eines solchen Dienstes die Funktionalität dieser Webseite einschränken kann.

    Hier ist das Skript, bei mir läuft es super:

    Zusammenfassend:

    Das Skript dient dazu, ein Relais basierend auf einer Temperaturdifferenz zu steuern. Dies könnte beispielsweise in einem Heizsystem verwendet werden, um eine Pumpe oder ein Ventil zu steuern, wenn die Temperaturdifferenz zwischen Vorlauf und Rücklauf einen bestimmten Wert unterschreitet.

    Wichtige Punkte:

    Das Skript verwendet die Shelly-spezifischen Funktionen Shelly.call() und Shelly.getComponentStatus(), um mit dem Gerät zu interagieren.

    Das Skript verwendet Timer, um Funktionen in bestimmten Intervallen auszuführen.

    Das Skript gibt Statusmeldungen über die Funktion print() aus.

    Ich habe 3 Zahlen fett markiert die ich eventuell noch anpassen werde bzw habe.. Zum Beispiel habe ich die Wartezeit von 20 Sekunden auf 60 Sekunden erhöht.

    Wichtig ist noch, dass das Relais bei mir über eine Aktion (TSolar < als 30 Grad ) eingeschalten wird und nicht üer das Skript. Das macht es mir sehr viel einfacher den Wert anzupassen.


    Viel Spaß beim Testen

    Grüße Jürgen


    // Konfiguration

    var relaisId = 0;

    let TwarmSensorId = 100;

    let TkaltSensorId = 103;

    let schwellwertTemperaturdifferenz = 3;

    let messIntervall = 2000;


    // Funktion zur Überprüfung des Relaiszustands

    function checkRelayState() {

    Shelly.call("Switch.GetStatus", { id: relaisId }, function (result, error) {

    if (error) {

    print("Fehler beim Abrufen des Relaiszustands:", JSON.stringify(error));

    Timer.set(messIntervall, false, checkRelayState);

    return;

    }


    let relaisZustand = result.output;

    print("Relaiszustand:", relaisZustand ? "Ein" : "Aus");


    if (relaisZustand) {

    print("Relais ist EIN. Warte 60 Sekunden...");

    Timer.set(60000, false, measureTemperatureDifference);

    } else {

    print("Relais ist AUS. Überprüfung wird fortgesetzt...");

    Timer.set(messIntervall, false, checkRelayState);

    }

    });

    }


    // Funktion zur Messung der Temperaturdifferenz

    function measureTemperatureDifference() {

    let tempTwarm = Shelly.getComponentStatus('Temperature', TwarmSensorId).tC;

    let tempTkalt = Shelly.getComponentStatus('Temperature', TkaltSensorId).tC;


    print("TempWarm ist:", tempTwarm, " TempKalt ist:", tempTkalt);


    if (tempTwarm !== null && tempTkalt !== null) {

    let temperaturDifferenz = tempTwarm - tempTkalt;

    print("Temperaturdifferenz:", temperaturDifferenz, "°C");


    if (temperaturDifferenz < schwellwertTemperaturdifferenz) {

    print("Temperaturdifferenz unter Schwelle. Relais wird ausgeschaltet.");

    Shelly.call("Switch.Set", { id: relaisId, on: false }, function () {

    checkRelayState(); // Neustart der Relaisüberprüfung

    });

    } else {

    print("Temperaturdifferenz über Schwelle. Überprüfung wird fortgesetzt...");

    Timer.set(messIntervall, false, measureTemperatureDifference);

    }

    } else {

    print("Fehler beim Abrufen der Temperaturen. Eine oder beide Werte sind null.");

    Timer.set(messIntervall, false, measureTemperatureDifference);

    }

    }


    // Skriptstart

    checkRelayState();

    Na das mit den 2 Grad ist ja erstmal ein Schätzwert. Natürlich kann sich herausstellen das es 4 oder 5 Grad sein müssen.

    Ja die Solarabsorber würde ich bei der Beachtung außen vor lassen.

    Ich denke schon das alles mit einem einfachen Skript funktionieren sollte.

    Im Augenblick scheiterte ich schon bei der Zustandsabfrage von dem Relais vom Shelly. Wenn ich da ein bisschen Hilfe bekommen könnte, wäre ich schon ein Schritt weiter.

    Grüße

    Mit der kleinen Hysterese wirst du sicherlich recht haben. Die kann man ja schnell im Skript ändern. Das bekomme ich sogar alleine hin :).

    Allerdings, da die Temperatur direkt am Einlauf bzw am Auslauf gemessen wird, ist ja eigentlich gewährleistet, dass das einlaufende Wasser immer wärmer ist als das auslaufende Wasser.

    Da ich jetzt in dieser Saison zum ersten Mal diese umfangreiche Temperaturmessungen durchführe fehlt mir natürlich jeglich Erfahrung. Da kommen sicher noch ein paar Überraschungen.

    Die Einschalttemperatur möchte ich ja über eine Aktion ändern um sie schnell anzupassen. Im Frühjahr und Herbst startet die Anlage früher und im Sommer halt später.

    Im Solarkreislauf sind ca 20 Liter Kühlflüssigkeit.

    Da der Umstand nichts mit dem Skript zu tun hat aber du nach der Effektivität nachdenkst, muss ich gestehe das ich 9m² Solarabsorberplatten nicht erwähnt habe, die auf dem Carpordach liegen. Das Poolwasser wird zuerst durch die Absorber und dann, ein wenig vorgewärmt, zum Wärmetauscher gepumpt.

    In dieser Konstellation habe ich das Poolwasser letztes Jahr bis auf 34⁰ Grad bekommen. Bevor dazu noch eine Frage aufkommt, meine Frau liebt das;).

    Wenn alles funktioniert, werde ich gerne über meine Erfahrungen berichten.

    Also, die Solarflüssigkeit hat einmal im Winter gekocht, weil die Wärme nicht abgeführt wurde.

    Dabei haben sich die Kunststoffschläuche, die zum Pool führen, verformt. Jetzt werden die Kollektoren im Winter abgedeckt und gut ist.

    Jetzt habe ich das mit der Temperatur der Solarflüssigkeit verstanden😊

    Im Betrieb ist die Temperatur nie über 50 Grad gestiegen.

    Natürlich ist ein Ausdehnungsgefäß im Solarkreislauf, auch ein Sicherheitsventil ist eingebaut.

    Und nein, die Fühler sollten schon am Pool sein, weil die Verluste unterwegs nicht unerheblich sein werden und ich die Temperaturen direkt am Einlauf bzw Auslauf haben möchte. Damit möchte ich verhindern, das kälteres Wasser in den Pool einläuft als im Pool schon ist. Ich möchte aber, dass die Solarheizung solange wie möglich läuft. Deshalb die Temperaturdifferenzmessung am Ein und Auslauf.

    Eine Steuerung über Durchflussbegrenzung ist nicht das was ich beabsichtige und würde auch nicht das bewirken was ich erreichen möchte. Wobei ich nicht ausschließen möchte, dass wenn alles läuft, es sich herausstellt, dass der Durchfluss begrenzt werden sollte.

    Wie schnell die Solarflüssigkeit zirkuliert weiß ich nicht, sollte aber passen da die Module nicht überhitzen.

    Hallo Martin,

    ich musste die Heizung im Herbst 24 wegen neuer Verschattung am alten Standort abbauen. Sie war also so in dieser Form noch nicht in betrieb. Natürlich hätte ich zurzeit eine einfache Möglichkeit mit dem Shelly und dem Temperatursensor im Kollektormodul die Anlage zu steuern. So habe ich das ja auch vor dem Umbau gemacht. Also zum Beispiel bei Kollektortemperatur 38 Grad ein und bei 33 Grad aus. Natürlich ist das so nicht besonders effektiv, außerdem standen die Solarkolktoren nur 5 Meter vom Pool entfernt. Tatsächlich kam bei guter Sonneneinstrahlung echt warmes Wasser an, also > 40 Grad.

    Die Frage nach der Temperator des Kühlmittels kann ich nicht so beantworten, da ich sie nicht messe, nur so viel, sie kann bei Stillstand locker die 100 Gradgrenze überschreiten. Dann geht natürlich sehr viel kaputt, sollte also besser nicht passieren. In einem Winter ist mir aber schon einmal die Kühlflüssigkeit verkocht.

    Die Pumpe für das Warmwasser schafft ca 5 m3 /h, aber durch die Leitungsverluste kommen wahrschein nur noch 2-3 m3 /h letztendlich am Pool an.

    Zur Hysterese kann ich aber rein gar nichts sagen, da ich die Temperatursensoren erst dieses Jahr einbaue.

    Deshalb möchte ich ja auch die Steuerung jetzt über die Hysterese machen, damit die Anlage effektiver läuft.


    Grüße

    Jürgen

    Ich habe die Skitze jetzt sehr einfach gehalten.

    Ein Schlauch geht vom Pool zum Schaltschrank über einen Wärmetauscher und wieder zurück zum Pool. Kurz vor dem Pool sind die Temperatursenoren Tkalt und Twarm eingebaut.

    Der 3. Sensor Tsolar steckt in den Solarmodulen. Der 4. Sensor hat mit der Steuerung nichts zu tun, ist aber am Wärmetauscher.

    Die beiden Pumpen für Poolwasser und Solarflüssikeit sind am Schaltschrank.

    Alle Datenkabel für die 4 Sensoren gehen direkt zum Shellyaddon

    Hallo liebe Shelly-Gemeinde,

    ich betreibe schon einige Zeit Shellys für unterschiedliche Funktionen, zum Beispiel für die Warmwasser Zirkulationspumpe (nach einem Zeitplan und über 3 Butten 1).

    Nun möchte ich meine Pool-Solar-Heizung-Steuerung mit einem Shelly Plus 1 PM (mit einem ADD-ON) und 4 Temperatur Sensoren steuern. Leider bekomme ich das so nicht über Aktionen hin, also muss ein Skript her. Ich habe schon Bespielscrips von z.B. ostfriese gefunden die ähnlich sein könnten aber nicht bei mir laufen.

    Ich möchte kurz beschreiben wie meine Solarheizung aufgebaut ist was das Skript machen soll.

    Ich habe 3 Solarthermie Module aufgestellt und dort ein Temperaturfühler angeschlossen.

    Dieser steuert eine Aktion, dass bei eine Temperatur von z.B. 40 Grad das Shelly Relais einschaltet und die Pumpen aktiviert. (Diesen Wert möchte ich regelmäßig ändern können und nicht umständlich immer das Skript anpassen.)

    Leider steht der Pool ca 20 Meter weit von den Modulen entfernt, so dass beim Einschalten erstmal kaltes Wasser dort ankommt. Deswegen muss eine kurze Zeit gewartet werden bis eine Temperaturdifferenz eine Aktion steuern soll, sagen wir 20 Sekunden

    Ich dachte an folgender Reihenfolge was das Skript auslösen sollte.


    Wenn das Relais einschaltet warte 20 Sekunden

    - messe ab dann die Temperaturdifferenz zwischen Twarm und Tkalt bis die Temperaturdifferenz unter 2 Grad sinkt.

    Schalte Relais aus.


    Eventuell muss man noch eine Abfrage über den Zustand des Relais implantieren

    Bei „aus“ überprüfe Zustand vom Relais alle 2 Sekunden


    Es wäre super Toll, wenn mir jemand mit dem Skript helfen könnte.:)


    Hardware:


    Shelly 1PM gen3 Geräte-ID 34 cdb077f8a8

    Twarm = 100; // ID des Twarm-Temperatursensor

    Tkalt = 103; // ID des Tkalt-Temperatursensor

    Tsolar = 101; // ID des Tsolar-Temperatursensor (steuert die Aktion)

    Der 4. Temperatursensor hängt am Wärmetausche und hat für die Steuerung keine Funktion.