ok danke, ja die erste Url funktioniert mit der Farbe ändern.
Ich habe mir ein python Skript per chat gpt erstellen lassen, das die Farbe dementsprechend der Temperatur vom Zustand des Druckers ändert, aber das will noch nicht so ganz.
Code
import requests
import time
# Konfiguration
KLIPPER_API = "http://deine-klipper-ip/printer/objects/query?extruder"
SHELLY_IP = "http://deine-shelly-ip/color/0"
USERNAME = "dein-benutzername"
PASSWORD = "dein-passwort"
INTERVAL = 10 # Aktualisierungsintervall in Sekunden
def get_shelly_status():
url = f"{SHELLY_IP}/status"
auth = (USERNAME, PASSWORD)
try:
response = requests.get(url, auth=auth)
data = response.json()
return data.get("ison", False) # Prüft, ob die Lampe eingeschaltet ist
except Exception as e:
print(f"Fehler beim Abrufen des Shelly-Status: {e}")
return False
def set_shelly_color(r, g, b):
url = f"{SHELLY_IP}/light"
auth = (USERNAME, PASSWORD)
payload = {"red": r, "green": g, "blue": b, "gain": 100}
is_on = get_shelly_status()
if not is_on:
payload["turn"] = "on" # Falls ausgeschaltet, erst einschalten
try:
requests.post(url, json=payload, auth=auth)
except Exception as e:
print(f"Fehler beim Setzen der Farbe: {e}")
def get_klipper_temperature():
try:
response = requests.get(KLIPPER_API)
data = response.json()
return data["result"]["status"]["extruder"]["temperature"]
except Exception as e:
print(f"Fehler beim Abrufen der Temperatur: {e}")
return None
def main():
try:
while True:
temp = get_klipper_temperature()
print(f"Temperatur: {temp}") # Debug-Info
if temp is not None:
if temp >= 180:
set_shelly_color(255, 0, 0) # Rot
elif temp <= 20:
set_shelly_color(0, 255, 0) # Grün
else:
set_shelly_color(0, 0, 255) # Blau als Zwischenton
time.sleep(INTERVAL)
except KeyboardInterrupt:
print("Skript wurde manuell beendet.")
set_shelly_color(0, 0, 0) # Licht ausschalten
if __name__ == "__main__":
main()
Alles anzeigen
Es gibt zwar die Temperatur von Klipper aus, aber die Farbe Grün wird bei 20 Grad oder wenig nicht aktiviert, hmm.