Skip to content
Open
Show file tree
Hide file tree
Changes from 21 commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
11cb7ed
add cloud discovery metadata
Terdious Feb 11, 2026
db22529
add local discovery metadata
Terdious Feb 11, 2026
ff5d001
Corrige les URL de l'API locale et du WebSocket pour utiliser localhost
Terdious Feb 11, 2026
ab28de0
feat: enhance Tuya device support with air conditioning and power met…
Terdious Feb 15, 2026
d9598ca
refactor: remove air conditioning model and related mappings; simplif…
Terdious Feb 15, 2026
3612b9c
feat: add local polling and scanning tests for TuyaHandler
Terdious Feb 15, 2026
7ea3468
refactor: simplifier la logique de poll local et améliorer la lisibil…
Terdious Feb 15, 2026
e2d7189
refactor: améliorer la logique de chargement des appareils Tuya et me…
Terdious Feb 15, 2026
5f2d2a5
fix: corriger la logique de pagination dans loadDevices et ajouter un…
Terdious Feb 15, 2026
ebd3dc3
refactor: améliorer la logique de mise à jour des appareils découvert…
Terdious Feb 15, 2026
a3f8359
feat: ajouter des descriptions et des limitations pour la configurati…
Terdious Feb 15, 2026
50e1122
feat: ajouter les champs Product ID et Product Key dans la configurat…
Terdious Feb 15, 2026
513e2d0
refactor: améliorer la journalisation dans le processus de scan local…
Terdious Feb 16, 2026
389d231
logger
Terdious Feb 16, 2026
36dfd91
refactor: améliorer la gestion des erreurs du socket UDP dans le scan…
Terdious Feb 16, 2026
b8e1a9f
refactor: mettre à jour la méthode de liaison des sockets pour permet…
Terdious Feb 16, 2026
8d2536f
feat: améliorer le scan local des appareils Tuya avec gestion des err…
Terdious Feb 16, 2026
a0243b6
feat: mettre à jour les descriptions de configuration Tuya pour inclu…
Terdious Feb 16, 2026
70c7d4a
feat: ajouter des messages d'information sur le protocole 3.5 et la c…
Terdious Feb 17, 2026
3fd0232
feat(tuya): enhance Tuya integration with connection status and manua…
Terdious Feb 20, 2026
8082994
Merge branch 'master' into tuya-local-baseline
Terdious Feb 20, 2026
588225e
feat(tuya): améliorer les tests pour la gestion des connexions et des…
Terdious Feb 20, 2026
924e098
Merge branch 'master' into tuya-local-baseline
Terdious Feb 20, 2026
cc0010e
feat(tuya): enhance device discovery and local polling
Terdious Feb 20, 2026
b6cb28b
feat(tuya): améliorer la gestion des informations locales des apparei…
Terdious Feb 21, 2026
52a54b2
feat(tuya): traduire les clés de produit et améliorer les messages de…
Terdious Feb 21, 2026
ae8a1d6
feat(tuya): améliorer la gestion des erreurs et des messages de débog…
Terdious Feb 21, 2026
c68075d
feat(tuya): nettoyer les messages de débogage et améliorer la gestion…
Terdious Feb 21, 2026
b2ee166
Merge branch 'master' into tuya-local-baseline
Terdious Feb 25, 2026
c5edbbc
ci: rerun
Terdious Feb 25, 2026
c65e264
feat(tuya): ajouter le support de l'UID du compte d'application Tuya,…
Terdious Feb 21, 2026
1f07038
feat(tuya): améliorer la gestion de la configuration Tuya en ajoutant…
Terdious Feb 21, 2026
021176d
feat(tuya): optimiser la récupération des paramètres Tuya en utilisan…
Terdious Feb 21, 2026
01700bb
feat(tuya): finalize v2 local baseline ux and local discovery updates
Terdious Feb 26, 2026
3c0de0c
test(tuya): avoid unhandled rejection warning in local poll timeout
Terdious Feb 26, 2026
92a913f
refactor(tuya): normalize booleans and stabilize base conversions
Terdious Feb 27, 2026
906e124
Merge branch 'master' into tuya-local-baseline
Terdious Feb 27, 2026
ef397f6
fix(tuya): harden init reconnect flag and thing model parsing
Terdious Feb 27, 2026
5027985
fix(tuya): avoid stale state reads in setup save flow
Terdious Feb 27, 2026
fc44ad0
chore(front): apply prettier formatting on tuya setup tab
Terdious Feb 27, 2026
a4e0056
chore(tuya): run prettier
Terdious Feb 27, 2026
82213fb
fix(tuya): use cached feature state when deciding poll updates
Terdious Feb 27, 2026
c1f16d9
test(tuya): prefer await style in local poll timeout test
Terdious Feb 27, 2026
68cd2fc
fix(tuya): move setup side effects to componentDidMount
Terdious Feb 28, 2026
74bc4a2
fix(tuya): surface setup variable fetch failures
Terdious Feb 28, 2026
3b64702
fix(tuya): avoid invalid paragraph nesting in setup tab
Terdious Feb 28, 2026
28aa300
fix(tuya): restore setup markup after nesting fix
Terdious Feb 28, 2026
0b6768d
fix(tuya): harden baseline setup and cloud loading
Terdious Mar 1, 2026
3b6c51f
fix(tuya): improve setup alerts and baseline test isolation
Terdious Mar 1, 2026
39dd957
Merge branch 'master' into tuya-local-baseline
Terdious Mar 9, 2026
34dbac2
Merge branch 'master' into tuya-local-baseline
Terdious Mar 11, 2026
824fa8b
Merge branch 'master' into tuya-local-baseline
Terdious Mar 12, 2026
0370ae2
Merge branch 'master' into tuya-local-baseline
Terdious Apr 4, 2026
0c975e5
Remise en ordre i18n
Terdious Apr 4, 2026
c9b1edb
fix(tuya): address code review findings from CodeRabbit
Terdious Apr 4, 2026
ac461ab
fix(tuya): move structural HTML out of i18n keys into JSX
Terdious Apr 5, 2026
e274716
fix(tuya): exit early in init() when service is not configured
Terdious Apr 5, 2026
8abc778
refactor(tuya): move reconnect logic from index.js to lib/tuya.reconn…
Terdious Apr 5, 2026
46fabba
fix: prettier + eslint
Terdious Apr 5, 2026
c8ecab0
Merge branch 'master' into tuya-local-baseline
Terdious Apr 5, 2026
219f019
fix(tuya): address maintainer review feedback
Terdious Apr 5, 2026
0a73eb2
fix(tuya): fix typo in disconnect log and JSDoc in discoverDevices
Terdious Apr 5, 2026
487f6f6
fix(tuya): slugify selectors in convertDevice and convertFeature
Terdious Apr 5, 2026
19ff616
refactor(tuya): move loadDevices/reconnect logic into init and discon…
Terdious Apr 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 47 additions & 13 deletions front/src/config/i18n/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -1205,23 +1205,47 @@
"updates": "Nach Updates suchen",
"editButton": "Bearbeiten",
"noDeviceFound": "Du hast noch keine Tuya-Geräte hinzugefügt.",
"featuresLabel": "Funktionen"
"featuresLabel": "Funktionen",
"idLabel": "Geräte-ID",
"localKeyLabel": "Lokaler Schlüssel",
"protocolVersionLabel": "Protokollversion",
"ipAddressLabel": "IP-Adresse",
"localInfoHelp": "Gib die lokale IP und die Protokollversion ein, wenn du den lokalen Modus nutzen willst. Die Cloud-IP wird zur Referenz gespeichert.",
"localPollButton": "Lokales DPS abfragen",
"localPollSuccess": "Lokaler Poll OK.",
"localPollError": "Lokaler Poll fehlgeschlagen:",
"protocol35Unsupported": "Protokoll 3.5 wird lokal noch nicht unterstützt.",
"githubIssueInfo": "Ein Bericht wird mit den Gerätedetails gesendet. Sensible Daten (Local Key und IP) werden maskiert.",
"productIdLabel": "Produkt-ID",
"productKeyLabel": "Product Key"
},
"discover": {
"title": "In deinem Tuya-Cloud-Account erkannte Geräte",
"description": "Tuya-Geräte werden automatisch erkannt. Deine Tuya-Geräte müssen zuerst zu deinem Tuya-Cloud-Account hinzugefügt werden.",
"localDiscoveryInfo": "Lokale Erkennung nutzt UDP-Broadcast. Starte den lokalen UDP-Scan und gib bei Bedarf lokale IP und Protokollversion ein und nutze \"Lokales DPS abfragen\".",
"scanInProgress": "Scan läuft... Cloud-Geräte werden abgerufen.",
"scanCloud": "Cloud-Scan",
"localScanAuto": "Lokaler Auto-Scan",
"udpScanError": "Fehler beim lokalen UDP-Scan.",
"udpScanPortInUse": "Auf den Ports {{ports}} kann nicht gelauscht werden (bereits belegt). Beende Dienste auf diesen Ports und starte den Scan erneut.",
"error": "Fehler beim Entdecken von Tuya-Geräten. Bitte überprüfe deine Login-Daten auf der Einrichtungsseite.",
"noDeviceFound": "Kein Tuya-Gerät entdeckt.",
"scan": "Scannen"
},
"setup": {
"title": "Tuya-Konfiguration",
"description": "Du kannst Gladys mit deinem Tuya-Cloud-Account verbinden, um die zugehörigen Geräte zu steuern.",
"descriptionCreateAccount": "Du musst einen Account bei <a href=\"https://www.tuya.com/\" target=\"_blank\" rel= \"noopener noreferrer\">Tuya</a> erstellen.",
"descriptionCreateProject": "Danach musst du ein \"Cloud-Projekt\" in deinem Tuya-Account erstellen.",
"descriptionGetKeys": "Du erhältst Zugang zum Zugangsschlüssel und zum Geheimschlüssel.",
"cloudTitle": "<strong>Cloud</strong><br />",
"description": "Du kannst Gladys mit deinem Tuya-Cloud-Account verbinden, um die zugehörigen Geräte zu steuern. Die Dokumentation findest du im linken Menü oder <a href=\"https://gladysassistant.com/de/docs/integrations/tuya\" target=\"_blank\" rel=\"noopener noreferrer\">hier</a>.",
"descriptionCreateAccount": "Du musst einen Account bei <a href=\"https://www.tuya.com/\" target=\"_blank\" rel=\"noopener noreferrer\">Tuya</a> erstellen (<a href=\"https://auth.tuya.com/register\" target=\"_blank\" rel=\"noopener noreferrer\">Registrieren</a> / <a href=\"https://auth.tuya.com/\" target=\"_blank\" rel=\"noopener noreferrer\">Anmelden</a>).",
"descriptionCreateProject": "Danach musst du ein \"Cloud-Projekt\" in deinem Tuya-Account erstellen (Konsole: <a href=\"https://platform.tuya.com/cloud\" target=\"_blank\" rel=\"noopener noreferrer\">Tuya IoT Platform</a>).",
"descriptionGetKeys": "Du erhältst Zugang zur Client ID und zum Client Secret.",
"descriptionGetAppAccountUid": "Um deine \"App Account UID\" zu erhalten, musst du zum Abschnitt \"Geräte\" -> \"Tuya App-Account verknüpfen\" gehen und einen Anwendungsaccount hinzufügen.",
"descriptionGetAppAccountUid2": "Sobald das Hinzufügen abgeschlossen ist, findest du deine \"App Account UID\" in der UID-Spalte.",
"descriptionTrial": "Tuya-Cloud-Projekte haben eine Testphase: verlängere sie regelmäßig, um Unterbrechungen zu vermeiden.",
"localTitle": "<br /><strong>Lokal</strong><br />",
"descriptionLocalMode": "Der lokale Modus kann nach der Cloud-Konfiguration genutzt werden: Trage lokale IP und Protokollversion pro Gerät ein, um lokal abzufragen. Wenn die Geräte im selben Netzwerk wie der Gladys-Host sind, werden IP-Erkennung und Protokollversion automatisch erkannt. So kannst du die Cloud-Verlängerung umgehen, aber für das Hinzufügen neuer Geräte in der Tuya-App bleibt die Cloud nötig.",
"limitationsTitle": "<br /><strong>Aktuelle Einschränkungen</strong><br />",
"limitationsProtocol35": "Protokoll 3.5 wird lokal noch nicht unterstützt.",
"endpoints": {
"china": "China",
"westernAmerica": "Westamerika",
Expand All @@ -1231,17 +1255,27 @@
"india": "Indien"
},
"endpoint": "Endpunkt",
"accessKey": "Access Key",
"accessKeyPlaceholder": "Tuya Zugangsschlüssel eingeben",
"secretKey": "Secret Key",
"secretKeyPlaceholder": "Tuya Geheimschlüssel eingeben",
"appAccountId": "App Account UID",
"appAccountIdPlaceholder": "Tuya App UID eingeben",
"saveLabel": "Konfiguration sichern",
"accessKey": "Client ID",
"accessKeyPlaceholder": "Tuya Client ID eingeben",
"secretKey": "Client Secret",
"secretKeyPlaceholder": "Tuya Client Secret eingeben",
"appAccountId": "App Account User ID",
"appAccountIdPlaceholder": "Tuya App User ID eingeben",
"appUsername": "Smart Life Benutzername (optional)",
"appUsernamePlaceholder": "Smart Life Konto E-Mail oder Telefon",
"saveLabel": "Konfiguration sichern und verbinden",
"error": "Beim Sichern der Konfiguration ist ein Fehler aufgetreten.",
"connecting": "Konfiguration gesichert. Die Verbindung mit deinem Tuya-Cloud-Account wird jetzt hergestellt …",
"connected": "Du hast dich erfolgreich mit dem Tuya-Cloud-Account verbunden!",
"connectionError": "Fehler beim Verbinden. Bitte überprüfe deine Konfiguration."
"connectionError": "Fehler beim Verbinden. Bitte überprüfe deine Konfiguration.",
"notConfigured": "Tuya-Cloud-Verbindungsdaten fehlen oder sind unvollständig.",
"connectedAfterSave": "Du hast dich erfolgreich mit dem Tuya-Cloud-Account verbunden!",
"connectedStatus": "Mit dem Tuya-Cloud-Account verbunden.",
"disconnectSuccess": "Vom Tuya-Cloud-Account erfolgreich getrennt! Der lokale Dienst funktioniert weiterhin (bei einem Neustart von Gladys wird keine automatische Verbindung hergestellt).",
"disconnectedUnexpected": "Du wurdest von der Tuya-Cloud getrennt! Bitte überprüfe deine Zugangsdaten und den Status deines <a href=\"https://eu.platform.tuya.com/cloud/products?productType=all\" target=\"_blank\" rel=\"noopener noreferrer\">Tuya IoT Core</a>-Testabos.",
"disconnectedManual": "Von der Tuya-Cloud getrennt! Der lokale Dienst funktioniert weiterhin (bei einem Neustart von Gladys wird keine automatische Verbindung hergestellt).",
"disconnectedMissingConfig": "Von der Tuya-Cloud getrennt.",
"disconnectLabel": "Von der Cloud trennen"
},
"error": {
"defaultError": "Beim Sichern des Geräts ist ein Fehler aufgetreten.",
Expand Down
60 changes: 47 additions & 13 deletions front/src/config/i18n/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -1100,23 +1100,47 @@
"updates": "Check updates",
"editButton": "Edit",
"noDeviceFound": "No Tuya device found.",
"featuresLabel": "Features"
"featuresLabel": "Features",
"idLabel": "Device ID",
"localKeyLabel": "Local Key",
"protocolVersionLabel": "Protocol Version",
"ipAddressLabel": "IP Address",
"localInfoHelp": "Enter the local IP and protocol version if you want to use local mode. The cloud IP is kept for reference.",
"localPollButton": "Poll local DPS",
"localPollSuccess": "Local poll OK.",
"localPollError": "Local poll failed:",
"protocol35Unsupported": "Protocol 3.5 is not supported locally yet.",
"githubIssueInfo": "A report will be sent with the device details. Sensitive data (local key and IP) is masked.",
"productIdLabel": "Product ID",
"productKeyLabel": "Product Key"
},
"discover": {
"title": "Devices detected on your Tuya cloud account",
"description": "Tuya devices are automatically discovered. Your Tuya devices need to be added to your Tuya cloud account before.",
"localDiscoveryInfo": "Local discovery uses UDP broadcast. Run the local UDP scan, then if needed enter the local IP and protocol version and use \"Poll local DPS\".",
"scanInProgress": "Scan in progress... retrieving cloud devices.",
"scanCloud": "Cloud Scan",
"localScanAuto": "Auto local scan",
"udpScanError": "Error while running local UDP scan.",
"udpScanPortInUse": "Unable to listen on ports {{ports}} (already in use). Stop services using these ports and run the scan again.",
"error": "Error discovering Tuya devices. Please verify your credentials on Setup.",
"noDeviceFound": "No Tuya device discovered.",
"scan": "Scan"
},
"setup": {
"title": "Tuya configuration",
"description": "You can connect Gladys to your Tuya cloud account to control the related devices.",
"descriptionCreateAccount": "You need to create an account at <a href=\"https://www.tuya.com/\" target=\"_blank\" rel= \"noopener noreferrer\">Tuya</a>.",
"descriptionCreateProject": "You must then create a \"Cloud Project\" in your Tuya account.",
"descriptionGetKeys": "You will have access to the Access Key and the Secret Key.",
"cloudTitle": "<strong>Cloud</strong><br />",
"description": "You can connect Gladys to your Tuya cloud account to control the related devices. Documentation is available in the left menu or <a href=\"https://gladysassistant.com/en/docs/integrations/tuya\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>.",
"descriptionCreateAccount": "You need to create an account at <a href=\"https://www.tuya.com/\" target=\"_blank\" rel=\"noopener noreferrer\">Tuya</a> (<a href=\"https://auth.tuya.com/register\" target=\"_blank\" rel=\"noopener noreferrer\">Sign up</a> / <a href=\"https://auth.tuya.com/\" target=\"_blank\" rel=\"noopener noreferrer\">Log in</a>).",
"descriptionCreateProject": "You must then create a \"Cloud Project\" in your Tuya account (console: <a href=\"https://platform.tuya.com/cloud\" target=\"_blank\" rel=\"noopener noreferrer\">Tuya IoT Platform</a>).",
"descriptionGetKeys": "You will have access to the Client ID and the Client Secret.",
"descriptionGetAppAccountUid": "To have your \"App account UID\", you must go to the \"Devices\" -> \"Link Tuya App Account\" section and add an application account.",
"descriptionGetAppAccountUid2": "Once the addition is finalized, your \"App account UID\" will be in the UID column.",
"descriptionTrial": "Tuya Cloud projects have a trial period: make sure to renew or extend it regularly to avoid service interruptions.",
"localTitle": "<br /><strong>Local</strong><br />",
"descriptionLocalMode": "Local mode can be used after the cloud setup: provide the local IP and protocol version on each device to poll locally. If devices are on the same network as the Gladys machine, the IP discovery and protocol version are detected automatically. This lets you avoid renewing the cloud trial, but the cloud is still needed when you add a new device from the Tuya app.",
"limitationsTitle": "<br /><strong>Current limitations</strong><br />",
"limitationsProtocol35": "Protocol 3.5 is not yet supported locally.",
"endpoints": {
"china": "China",
"westernAmerica": "Western America",
Expand All @@ -1126,17 +1150,27 @@
"india": "India"
},
"endpoint": "Endpoint",
"accessKey": "Access Key",
"accessKeyPlaceholder": "Enter Tuya access key",
"secretKey": "Secret Key",
"secretKeyPlaceholder": "Enter Tuya secret key",
"appAccountId": "App account UID",
"appAccountIdPlaceholder": "Enter Tuya application UID",
"saveLabel": "Save configuration",
"accessKey": "Client ID",
"accessKeyPlaceholder": "Enter Tuya Client ID",
"secretKey": "Client Secret",
"secretKeyPlaceholder": "Enter Tuya Client Secret",
"appAccountId": "App account User ID",
"appAccountIdPlaceholder": "Enter Tuya app User ID",
"appUsername": "Smart Life username (optional)",
"appUsernamePlaceholder": "Smart Life account email or phone",
"saveLabel": "Save configuration and connect",
"error": "An error occurred while saving configuration.",
"connecting": "Configuration saved. Now connecting to your Tuya cloud account...",
"connectionError": "Error while connecting, please check your configuration.",
"notConfigured": "Tuya cloud connection details are missing or incomplete.",
"connected": "Connected to the Tuya cloud account with success !",
"connectionError": "Error while connecting, please check your configuration."
"connectedAfterSave": "Connected to the Tuya cloud account with success !",
"connectedStatus": "Connected to the Tuya cloud account.",
"disconnectSuccess": "Disconnected from the Tuya cloud account with success ! Local service still works (it will not auto-reconnect when Gladys restarts).",
"disconnectedUnexpected": "You have been disconnected from the Tuya cloud! Please check your credentials and your <a href=\"https://eu.platform.tuya.com/cloud/products?productType=all\" target=\"_blank\" rel=\"noopener noreferrer\">Tuya IoT Core</a> trial status.",
"disconnectedManual": "Disconnected from the Tuya cloud! Local service still works (it will not auto-reconnect when Gladys restarts).",
"disconnectedMissingConfig": "Disconnected from the Tuya cloud.",
"disconnectLabel": "Disconnect from cloud"
},
"error": {
"defaultError": "There was an error saving the device.",
Expand Down
Loading
Loading