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