mirror of
https://github.com/Ladebeze66/tuya_project.git
synced 2025-12-15 19:36:55 +01:00
77 lines
2.4 KiB
Python
77 lines
2.4 KiB
Python
#!/usr/bin/env python
|
||
# -*- coding: utf-8 -*-
|
||
"""
|
||
Script pour fermer le volet Dino
|
||
À utiliser avec StreamDeck
|
||
"""
|
||
|
||
import tinytuya
|
||
import json
|
||
|
||
# Informations Cloud Tuya
|
||
API_REGION = "eu"
|
||
API_KEY = "fdjdjurkm34yyjp77c7d"
|
||
API_SECRET = "3e71807fb0c6406792bdf4f07f98e577"
|
||
|
||
# ID et nom de l'appareil
|
||
DEVICE_ID = "bff082745aedf9fc1aqy3e" # ID du volet Dino
|
||
DEVICE_NAME = "Volet dino" # Nom de l'appareil
|
||
|
||
# Code des commandes du volet
|
||
SWITCH_CODE = "control" # Pour les volets Tuya, le code est souvent "control"
|
||
|
||
def main():
|
||
"""Fonction principale pour fermer le volet via Cloud"""
|
||
# Connexion au Cloud
|
||
cloud = tinytuya.Cloud(
|
||
apiRegion=API_REGION,
|
||
apiKey=API_KEY,
|
||
apiSecret=API_SECRET
|
||
)
|
||
|
||
tinytuya.set_debug(True) # Pour debug si besoin
|
||
|
||
# Lire l'état actuel du volet
|
||
print(f"🔍 Récupération du statut pour l'appareil {DEVICE_ID}...")
|
||
status = cloud.getstatus(DEVICE_ID)
|
||
|
||
if not status:
|
||
print(f"❌ Aucune réponse de l'API Cloud pour {DEVICE_NAME}")
|
||
return
|
||
|
||
try:
|
||
print(f"📊 Réponse brute: {json.dumps(status, indent=2)}")
|
||
except Exception as e:
|
||
print(f"⚠️ Erreur lors de l'affichage de la réponse: {e}")
|
||
|
||
# Vérification de l'état actuel
|
||
current_state = None
|
||
if isinstance(status, dict) and "result" in status:
|
||
result = status["result"]
|
||
for item in result:
|
||
if item.get("code") == SWITCH_CODE:
|
||
current_state = item.get("value")
|
||
break
|
||
|
||
print(f"ℹ️ État actuel du volet: {current_state}")
|
||
|
||
# Envoyer la commande pour fermer le volet
|
||
commands = {
|
||
"commands": [
|
||
{"code": SWITCH_CODE, "value": "close"}, # Essayez "close" pour fermer
|
||
# Vous pouvez également essayer "fermer" si cela est supporté
|
||
]
|
||
}
|
||
|
||
print(f"📤 Envoi de la commande: {json.dumps(commands, indent=2)}")
|
||
response = cloud.sendcommand(DEVICE_ID, commands)
|
||
print(f"📥 Réponse reçue: {json.dumps(response, indent=2) if response else 'Aucune réponse'}")
|
||
|
||
if response is not None and response.get("success"):
|
||
print(f"✅ {DEVICE_NAME} est maintenant fermé")
|
||
else:
|
||
error_msg = response.get("msg", "Erreur inconnue") if response else "Pas de réponse"
|
||
print(f"❌ Échec pour {DEVICE_NAME}: {error_msg}")
|
||
|
||
if __name__ == "__main__":
|
||
main() |