Beiträge von karlwiesinger

    Hallo ostfriese22222 das Script ist ganz oben im ersten Beitrag

    Würde mich freuen wenn du daraus was machen könntest.

    Grüße Karl

    import { ShellyDevice } from 'shelly-library'; // Annahme, dass eine Shelly-Bibliothek installiert ist

    // Funktion zum Einschalten des Pools

    async function turnOnPool() {

    const em3Device = ShellyDevice('192.168.1.83'); // Shelly-Gerät mit dem EM3-Relais

    const poolDevice = ShellyDevice('192.168.1.89'); // Shelly-Gerät mit dem Pool-Relais

    await em3Device.connect();

    await poolDevice.connect();

    const em3Power = await em3Device.getCurrentPower();

    const poolIsOff = !(await poolDevice.isOn());

    if (em3Power < -550 && poolIsOff) {

    await poolDevice.turnOn();

    console.log('Pool eingeschaltet');

    }

    await em3Device.disconnect();

    await poolDevice.disconnect();

    }

    // Funktion zum Ausschalten des Pools

    async function turnOffPool() {

    const em3Device = new ShellyDevice('192.168.1.83'); // Shelly-Gerät mit dem EM3-Relais

    const poolDevice = new ShellyDevice('192.168.1.89'); // Shelly-Gerät mit dem Pool-Relais

    await em3Device.connect();

    await poolDevice.connect();

    const em3Power = await em3Device.getCurrentPower();

    const poolIsOn = await poolDevice.isOn();

    if ((em3Power > 50 && em3PowerTimer > 5) || (em3Power > 500 && poolIsOn)) {

    await poolDevice.turnOff();

    console.log('Pool ausgeschaltet');

    }

    await em3Device.disconnect();

    await poolDevice.disconnect();

    }

    // Funktion zum Überprüfen und Steuern des Pool-Relais basierend auf der Uhrzeit

    function checkPoolSchedule() {

    const poolDevice = new ShellyDevice('192.168.1.89'); // Shelly-Gerät mit dem Pool-Relais

    const now = new Date();

    const hours = now.getHours();

    if (hours >= 9 && hours < 12) {

    poolDevice.isOn().then((isOn) => {

    if (!isOn) {

    // Von 9:00 bis 12:00 Uhr eingeschaltet

    poolDevice.turnOn().then(() => {

    console.log('Pool eingeschaltet von 9:00 bis 12:00 Uhr');

    });

    }

    });

    } else if ((hours >= 13 && hours < 15) || (hours >= 1 && hours < 2)) {

    poolDevice.isOn().then((isOn) => {

    if (!isOn) {

    // Von 13:00 bis 15:00 Uhr und am nächsten Tag von 1:00 bis 2:00 Uhr eingeschaltet

    poolDevice.turnOn().then(() => {

    console.log('Pool eingeschaltet von 13:00 bis 15:00 Uhr und am nächsten Tag von 1:00 bis 2:00 Uhr');

    });

    }

    });

    }

    }

    // Hauptfunktion zum Überprüfen und Steuern des Pool-Relais basierend auf den Bedingungen

    Habe in ChatCPT ein Script erstellen lassen für meine Poolpumpe die nach PV Überschuss ein und ausschaltet.

    Leider läuft das Script nicht, hat ein paar Fehler.

    Könnte mir dabei jemand bitte helfen!

    import requests

    import datetime

    import time

    IP-Adressen der Shelly-Relais

    em3_ip = "192.168.1.83"

    pool_ip = "192.168.1.89"

    minimum_solarstrom = -550

    maximum_solarstrom = 50

    maximum_solarstrom_2 = 500

    zeitraum_start = datetime.time(9, 0)

    zeitraum_ende = datetime.time(12, 0)

    neuer_zeitraum_start = datetime.time(13, 0)

    neuer_zeitraum_ende = datetime.time(15, 0)

    naechster_tag_start = datetime.time(1, 0)

    naechster_tag_ende = datetime.time(2, 0)

    def relais_aktivieren(ip):

    url = f"http://%7bip%7d/relay/0/on"

    requests.get(url)

    def relais_deaktivieren(ip):

    url = f"http://%7bip%7d/relay/0/off"

    requests.get(url)

    def solarstrom_uberprufen(ip):

    url = f"http://%7bip%7d/status"

    response = requests.get(url)

    data = response.json()

    solarstrom = data["emeter"]["power"]

    return solarstrom

    def ist_relais_eingeschaltet(ip):

    url = f"http://%7bip%7d/status"

    response = requests.get(url)

    data = response.json()

    relais_status = data["relays"][0]["ison"]

    return relais_status

    def ist_in_zeitraum(zeitpunkt, startzeit, endzeit):

    if startzeit <= endzeit:

    return startzeit <= zeitpunkt <= endzeit

    else:

    return zeitpunkt >= startzeit or zeitpunkt <= endzeit

    def main():

    while True:

    # Aktuellen Zeitpunkt abrufen

    aktuelle_zeit = datetime.datetime.now().time()

    # Überprüfen, ob das Relais "em3" den Schwellenwert unterschreitet und das Relais "pool" ausgeschaltet ist

    if solarstrom_uberprufen(em3_ip) < minimum_solarstrom and not ist_relais_eingeschaltet(pool_ip):

    relais_aktivieren(pool_ip)

    # Überprüfen, ob das Relais "em3" den Schwellenwert überschreitet und das Relais "pool" eingeschaltet ist

    elif solarstrom_uberprufen(em3_ip) > maximum_solarstrom and ist_relais_eingeschaltet(pool_ip):

    relais_deaktivieren(pool_ip)

    # Überprüfen, ob das Relais "pool" sich während des definierten Zeitraums eingeschaltet hat

    elif ist_in_zeitraum(aktuelle_zeit, ze

    Hallo eiche

    Danke für deinen Hinweis. Den Sonnenschein erfasse ich nicht ergibt sich durch den PV Überschuss der vom 3EM registriert wird.

    Leider habe ich keine Ahnung von Skript und möchte nur etwas verwenden dass ich auch verstehe und gegebenenfalls auch verändern und steuern kann.

    Habe jetzt eine Szene für ein bei über 500Watt Überschuss und aus bei 50Watt Bezug.

    Habe probiert zusätzlich eine Zeitsteuerung am selben Shelly, bringt das obige system durcheinander.

    Mein Ansatz wäre parallel einen zweiten Shelly mit der Bedingung wenn zu einer bestimmten Zeit der erste nicht ein ist den zweiten für eine Stunde auf ein zustellen.

    Hallo

    Habe ein Problem für das ich keine Lösung finde, vielleicht könnt ihr mir helfen.

    Schalte meinen plus 1 über den Shelly 3EM bei PV Überschuss mit einer Szene.

    Ausschalten wieder mit einer Zene bei unterschreiten eines bestimmten Wert.

    Jetzt möchte ich an Tagen ohne Sonnenschein zwei bis drei mal für eine Stunde die Poolpumpe einschalten.

    Meine Lösung wäre ein zweiter Shelly, aber das sollte ja anders funktionieren.

    Vielleicht kann mir wer dabei helfen.

    LG

    Karl