Ich habe auch schon chatGPT nach einem Code gefragt... und eine prompte Antwort bekommen, die ich allerdings noch nicht testen konnte - siehe Anhang
Der Code:
Code
import requests
import time
# IP-Adresse und Port des ersten Shelly i4
shelly_i4_ip_1 = "192.168.1.101"
shelly_i4_port_1 = 80
# IP-Adresse und Port des zweiten Shelly i4
shelly_i4_ip_2 = "192.168.1.102"
shelly_i4_port_2 = 80
# IP-Adresse und Port des Shelly 2PM
shelly_2pm_ip = "192.168.1.103"
shelly_2pm_port = 80
# Endpunkte für das Schalten des Shelly 2PM durch die Shelly i4-Geräte
shelly_i4_press_endpoint_1 = f"http://{shelly_i4_ip_1}:{shelly_i4_port_1}/input/0"
shelly_i4_press_endpoint_2 = f"http://{shelly_i4_ip_2}:{shelly_i4_port_2}/input/0"
shelly_2pm_endpoint = f"http://{shelly_2pm_ip}:{shelly_2pm_port}/roller/0"
# Dauer des langen Tastendrucks in Sekunden
long_press_duration = 1.0
def send_command_to_shelly_2pm(command):
# Sendet den Befehl an den Shelly 2PM
requests.get(shelly_2pm_endpoint + f"?go={command}")
def handle_long_press():
# Ermittelt den aktuellen Status des Rollladens
response = requests.get(shelly_2pm_endpoint)
data = response.json()
current_position = data["state"]
# Wechselt die Richtung des Rollladens basierend auf seiner aktuellen Position
if current_position == 0:
send_command_to_shelly_2pm(100) # Rollladen hochfahren
elif current_position == 100:
send_command_to_shelly_2pm(0) # Rollladen runterfahren
def handle_short_press():
# Stoppt die Bewegung des Rollladens
send_command_to_shelly_2pm("stop")
def main():
# Hauptprogramm
while True:
# Ermittelt den Tastendruckzustand vom ersten Shelly i4
response = requests.get(shelly_i4_press_endpoint_1)
data = response.json()
button_state_1 = data["input"]
# Ermittelt den Tastendruckzustand vom zweiten Shelly i4
response = requests.get(shelly_i4_press_endpoint_2)
data = response.json()
button_state_2 = data["input"]
# Überprüft den Tastendruckzustand des ersten Shelly i4
if button_state_1 == 1:
start_time = time.time()
while button_state_1 == 1:
time.sleep(0.1)
response = requests.get(shelly_i4_press_endpoint_1)
data = response.json()
button_state_1 = data["input"]
# Ermittelt die Dauer des Tastendrucks
press_duration = time.time() - start_time
# Entscheidet, ob es sich um einen langen oder kurzen Tastendruck handelt
if press_duration >= long_press_duration:
handle_long_press() # Langen Tastendruck behandeln
else:
handle_short_press() # Kurzen Tastendruck behandeln
# Überprüft den Tastendruckzustand des zweiten Shelly i4
if button_state_2 == 1:
start_time = time.time()
while button_state_2 == 1:
time.sleep(0.1)
response = requests.get(shelly_i4_press_endpoint_2)
data = response.json()
button_state_2 = data["input"]
# Ermittelt die Dauer des Tastendrucks
press_duration = time.time() - start_time
# Entscheidet, ob es sich um einen langen oder kurzen Tastendruck handelt
if press_duration >= long_press_duration:
handle_long_press() # Langen Tastendruck behandeln
else:
handle_short_press() # Kurzen Tastendruck behandeln
if __name__ == "__main__":
main()
Alles anzeigen