-
Autor
Hallo liebe Shelly-Community,
ich arbeite derzeit an einem Projekt, bei dem ich meinen Shelly Plus 2 PM dazu bringen möchte, eine spezielle Aktion bei einem doppelten Tastendruck auszuführen.
Mein Ziel ist es, die Rollos mit einem einfachen Tastendruck vollständig zu schließen oder zu öffnen, aber bei einem doppelten Tastendruck sollen sie nur zu 50% geschlossen werden.
Ich habe bereits versucht, ein Skript zu erstellen, das diese Funktionalität umsetzt, indem es die Eingänge überwacht und entsprechend reagiert, wenn ein doppelter Tastendruck erkannt wird. Da ich jedoch neu in der Programmierung von Shelly-Geräten bin, bin ich mir nicht sicher, ob mein Ansatz korrekt ist oder ob es effizientere Methoden gibt.
Ich würde mich sehr über eure Expertise und Ratschläge freuen, insbesondere bezüglich der Optimierung des folgenden Codes oder Vorschläge für einen besseren Ansatz. Hier ist, was ich bisher habe:
import time
import requests
# Konfiguration
TASTER_2_STATUS_URL = "http://<shelly-ip>/status" # URL, um den Status von Taster 2 zu überprüfen
ROLLO_CONTROL_URL = "http://<shelly-ip>/roller/0" # URL, um das Rollo zu steuern
CHECK_INTERVAL = 0.1 # Überprüfungsintervall in Sekunden
DOUBLE_CLICK_THRESHOLD = 0.5 # Zeit in Sekunden, die als Doppelklick gilt
last_press_time = 0
while True:
response = requests.get(TASTER_2_STATUS_URL).json()
taster_2_pressed = response['inputs'][1]['input'] # Angenommener Pfad, prüfen Sie die tatsächliche Antwort
if taster_2_pressed:
current_time = time.time()
if (current_time - last_press_time) <= DOUBLE_CLICK_THRESHOLD:
# Doppelklick erkannt, Rollo auf 50% setzen
requests.post(ROLLO_CONTROL_URL, json={"go_to_pos": 50})
time.sleep(1) # Kurze Pause, um kontinuierliche Doppelklick-Erkennung zu vermeiden
last_press_time = current_time
time.sleep(CHECK_INTERVAL)
Bitte beachtet , dass dies ein grundlegendes Konzept ist und ich die genauen API-Endpunkte und Datenformate gemäß der Shelly-Dokumentation nicht kenne. Jede Hilfe oder Anleitung, wie ich dies verbessern kann oder ob es einen besseren Ansatz gibt, wäre sehr willkommen.
Vielen Dank im Voraus für die Unterstützung!