Piloter un périphérique Tuya/Smart Life depuis eedomus

On parle ici de l’utilisation de vos objets connectés avec eedomus

Re: Piloter un périphérique Tuya/Smart Life depuis eedomus

Messagepar Djay78 » 04 Mai 2026 10:48

Bonjour dommarion, Zoara, Lagaff86,

En analysant le code source de votre excellent plugin (Tuya_direct.php v1.11), j'ai identifié un bug : le statut online/offline et les métadonnées de l'appareil sont bien récupérés depuis l'API Tuya via l'endpoint /v2.0/cloud/thing/{device_id}, mais ils ne sont jamais injectés dans le XML final retourné à eedomus.

La cause : le premier XML (ligne 448 : $xml=sdk_json2Xml($json)) est immédiatement écrasé par le second appel API (ligne 472), et la ligne //echo $xml confirme que ce premier XML était bien destiné à être utilisé mais a été commenté. Seul $is_online était extrait avant l'écrasement, mais sans jamais être injecté dans le XML final.

Mon humble suggestion de CORRECTIF — 2 modifications dans la section if ($device_id) :

1. Après la ligne 451, sauvegarder les métadonnées avant écrasement :
Code : Tout sélectionner
$device_meta = $response['result'];


2. Après la ligne 476 ($nonce = $tid;), injecter les métadonnées dans le XML final :

Code : Tout sélectionner
// Nettoyage des caractères hors ISO-8859-1
$meta_name        = utf8_decode(preg_replace('/[^\x00-\xFF]/u', '-', str_replace('"', '', isset($device_meta['name'])       ? $device_meta['name']       : '')));
$meta_customName  = utf8_decode(preg_replace('/[^\x00-\xFF]/u', '-', str_replace('"', '', isset($device_meta['custom_name']) ? $device_meta['custom_name'] : '')));
$meta_ip          = str_replace('"', '', isset($device_meta['ip'])          ? $device_meta['ip']          : '');
$meta_active_time = str_replace('"', '', isset($device_meta['active_time']) ? $device_meta['active_time'] : '');
$meta_update_time = str_replace('"', '', isset($device_meta['update_time']) ? $device_meta['update_time'] : '');
$xml = str_replace('</result>',
    '<is_online>'   . $is_online        . '</is_online>' .
    '<name>'        . $meta_name        . '</name>' .
    '<customName>'  . $meta_customName  . '</customName>' .
    '<ip>'          . $meta_ip          . '</ip>' .
    '<active_time>' . $meta_active_time . '</active_time>' .
    '<update_time>' . $meta_update_time . '</update_time>' .
    '</result>',
    $xml);


---

NOTES TECHNIQUES :
- $device_meta doit être sauvegardé AVANT le second appel API car sdk_json2Xml() écrase la variable globale $response
- utf8_decode() est nécessaire car l'API Tuya retourne du UTF-8 et eedomus attend de l'ISO-8859-1
- preg_replace('/[^\x00-\xFF]/u', '-', ...) gère les caractères Unicode hors ISO-8859-1 (ex. em dash —) non convertibles par utf8_decode
- custom_name (avec underscore) est le nom personnalisé SmartLife — attention, ce n'est pas customName (camelCase) comme on pourrait le supposer
- ip est vide pour les devices Zigbee (normal, ils passent par la passerelle)

---

XPATH eedomus pour exploiter les nouveaux champs :
/root/result/is_online
/root/result/name
/root/result/customName
/root/result/ip
/root/result/active_time
/root/result/update_time

---

XML de validation obtenu après patch sur un device Zigbee Smart Metering Switch :

<is_online>true</is_online>
<name>SY1-ZigBee Smart Metering Switch</name>
<customName>VMC-SY1-ZigBee Smart Metering Switch</customName>
<ip></ip>
<active_time>1777834501</active_time>
<update_time>1777887613</update_time>

Patch testé et validé sur eedomus+ :)


Merci pour ce plugin très bien conçu ! ;)
Onduleur APC | Aspirateur Xiaomi | Weather Underground | Mes temporisations | Nuki | Tuya SmartLife | Concaténateur | Sonos | Spotify | TV Samsung | Cozytouch2
Djay78
 
Messages : 10
Inscription : 30 Mai 2019

Re: Piloter un périphérique Tuya/Smart Life depuis eedomus

Messagepar titou32 » 16 Mai 2026 07:27

Bonjour, j'essaye d'intégrer un compteur KETLER KE6010W dans EEDOMUS.

J'ai bien intégré le dispositif sur le site TUYA developper mais je ne trouve pas le type d'équipement dans la liste à cocher dans eedomus.

La catégorie d'équipement est zndb

Quelqu'un peut il m'aider ou quelqu'un a t il déjà intégrer ce genre de compteur dans EEDOMUS ?

Merci de votre aide.
titou32
 
Messages : 5
Inscription : 05 Mars 2016

Re: Piloter un périphérique Tuya/Smart Life depuis eedomus

Messagepar dommarion » 21 Mai 2026 22:33

Djay78 a écrit:Bonjour dommarion, Zoara, Lagaff86,

En analysant le code source de votre excellent plugin (Tuya_direct.php v1.11), j'ai identifié un bug : le statut online/offline et les métadonnées de l'appareil sont bien récupérés depuis l'API Tuya via l'endpoint /v2.0/cloud/thing/{device_id}, mais ils ne sont jamais injectés dans le XML final retourné à eedomus.

La cause : le premier XML (ligne 448 : $xml=sdk_json2Xml($json)) est immédiatement écrasé par le second appel API (ligne 472), et la ligne //echo $xml confirme que ce premier XML était bien destiné à être utilisé mais a été commenté. Seul $is_online était extrait avant l'écrasement, mais sans jamais être injecté dans le XML final.

Mon humble suggestion de CORRECTIF — 2 modifications dans la section if ($device_id) :

1. Après la ligne 451, sauvegarder les métadonnées avant écrasement :
Code : Tout sélectionner
$device_meta = $response['result'];


2. Après la ligne 476 ($nonce = $tid;), injecter les métadonnées dans le XML final :

Code : Tout sélectionner
// Nettoyage des caractères hors ISO-8859-1
$meta_name        = utf8_decode(preg_replace('/[^\x00-\xFF]/u', '-', str_replace('"', '', isset($device_meta['name'])       ? $device_meta['name']       : '')));
$meta_customName  = utf8_decode(preg_replace('/[^\x00-\xFF]/u', '-', str_replace('"', '', isset($device_meta['custom_name']) ? $device_meta['custom_name'] : '')));
$meta_ip          = str_replace('"', '', isset($device_meta['ip'])          ? $device_meta['ip']          : '');
$meta_active_time = str_replace('"', '', isset($device_meta['active_time']) ? $device_meta['active_time'] : '');
$meta_update_time = str_replace('"', '', isset($device_meta['update_time']) ? $device_meta['update_time'] : '');
$xml = str_replace('</result>',
    '<is_online>'   . $is_online        . '</is_online>' .
    '<name>'        . $meta_name        . '</name>' .
    '<customName>'  . $meta_customName  . '</customName>' .
    '<ip>'          . $meta_ip          . '</ip>' .
    '<active_time>' . $meta_active_time . '</active_time>' .
    '<update_time>' . $meta_update_time . '</update_time>' .
    '</result>',
    $xml);


---

NOTES TECHNIQUES :
- $device_meta doit être sauvegardé AVANT le second appel API car sdk_json2Xml() écrase la variable globale $response
- utf8_decode() est nécessaire car l'API Tuya retourne du UTF-8 et eedomus attend de l'ISO-8859-1
- preg_replace('/[^\x00-\xFF]/u', '-', ...) gère les caractères Unicode hors ISO-8859-1 (ex. em dash —) non convertibles par utf8_decode
- custom_name (avec underscore) est le nom personnalisé SmartLife — attention, ce n'est pas customName (camelCase) comme on pourrait le supposer
- ip est vide pour les devices Zigbee (normal, ils passent par la passerelle)

---

XPATH eedomus pour exploiter les nouveaux champs :
/root/result/is_online
/root/result/name
/root/result/customName
/root/result/ip
/root/result/active_time
/root/result/update_time

---

XML de validation obtenu après patch sur un device Zigbee Smart Metering Switch :

<is_online>true</is_online>
<name>SY1-ZigBee Smart Metering Switch</name>
<customName>VMC-SY1-ZigBee Smart Metering Switch</customName>
<ip></ip>
<active_time>1777834501</active_time>
<update_time>1777887613</update_time>

Patch testé et validé sur eedomus+ :)


Merci pour ce plugin très bien conçu ! ;)

Merci :ugeek:
OpenWeather|Phases soleil|HeatzyV2|Concaténateur|HP Yamaha|SomfyV3|Epson|Seuils n étages|Baie 2 vantaux|Deezer|Intégrale|HTTP Auth. Digest|TV Philips|SmartThings|fonctions PHP|Tuya Smartlife|CozyTouch2|mySMS|TV Sony
dommarion
 
Messages : 733
Inscription : 28 Déc 2020

Re: Piloter un périphérique Tuya/Smart Life depuis eedomus

Messagepar dommarion » 21 Mai 2026 22:34

titou32 a écrit:Bonjour, j'essaye d'intégrer un compteur KETLER KE6010W dans EEDOMUS.

J'ai bien intégré le dispositif sur le site TUYA developper mais je ne trouve pas le type d'équipement dans la liste à cocher dans eedomus.

La catégorie d'équipement est zndb

Quelqu'un peut il m'aider ou quelqu'un a t il déjà intégrer ce genre de compteur dans EEDOMUS ?

Merci de votre aide.

Cet équipement n’a jamais été intégré, il faut trouver les paramètres et construire le JSON
Bonne soirée
Dommarion
OpenWeather|Phases soleil|HeatzyV2|Concaténateur|HP Yamaha|SomfyV3|Epson|Seuils n étages|Baie 2 vantaux|Deezer|Intégrale|HTTP Auth. Digest|TV Philips|SmartThings|fonctions PHP|Tuya Smartlife|CozyTouch2|mySMS|TV Sony
dommarion
 
Messages : 733
Inscription : 28 Déc 2020

Re: Piloter un périphérique Tuya/Smart Life depuis eedomus

Messagepar frenchdm » 28 Oct 2026 08:11

Le script Tuya ne fonctionne plus ?
frenchdm
 
Messages : 243
Inscription : 20 Jan 2014

Re: Piloter un périphérique Tuya/Smart Life depuis eedomus

Messagepar dommarion » 02 Nov 2026 06:36

Bonjour,
Chez moi le script tuya direct fonctionne très bien.
Dommarion
OpenWeather|Phases soleil|HeatzyV2|Concaténateur|HP Yamaha|SomfyV3|Epson|Seuils n étages|Baie 2 vantaux|Deezer|Intégrale|HTTP Auth. Digest|TV Philips|SmartThings|fonctions PHP|Tuya Smartlife|CozyTouch2|mySMS|TV Sony
dommarion
 
Messages : 733
Inscription : 28 Déc 2020

Re: Piloter un périphérique Tuya/Smart Life depuis eedomus

Messagepar frenchdm » 02 Nov 2026 10:27

Merci pour le retour. J'ai le message suivant quand je veux intégrer un nouveau périphérique "ERREUR - Impossible d'obtenir un TOKEN initial."
Et je n'ai plus le contrôle via Eedomus sur les autres périphériques ?
frenchdm
 
Messages : 243
Inscription : 20 Jan 2014

Re: Piloter un périphérique Tuya/Smart Life depuis eedomus

Messagepar dommarion » 02 Nov 2026 13:22

Es tu bien sur le olugin Tuya Direct ?
Si oui alors je te conseille de regarder ton périphérique Tuya Token pour voir si ton token se met bien à jour toutes les deux heures ….
Dommarion
OpenWeather|Phases soleil|HeatzyV2|Concaténateur|HP Yamaha|SomfyV3|Epson|Seuils n étages|Baie 2 vantaux|Deezer|Intégrale|HTTP Auth. Digest|TV Philips|SmartThings|fonctions PHP|Tuya Smartlife|CozyTouch2|mySMS|TV Sony
dommarion
 
Messages : 733
Inscription : 28 Déc 2020

Re: Piloter un périphérique Tuya/Smart Life depuis eedomus

Messagepar frenchdm » 03 Nov 2026 09:54

Merci pour ton retour. Je suis bien sur Tuya.direct.
Le périphérique tuya token ne s'est pas mis à jour depuis 1 mois ...
J'ai bien renouvellé Iot Core sur la plateforme Tuya
frenchdm
 
Messages : 243
Inscription : 20 Jan 2014

Re: Piloter un périphérique Tuya/Smart Life depuis eedomus

Messagepar dommarion » 04 Nov 2026 16:14

Ok, en premier je te conseille de vérifier que sur le site tuya development tu as bien toutes les informations disponibles. Si tout cela est correct alors c’est le lien entre eedomus et l’API de Tuya qui a un problème .
Peut être que la solution sera de recommencer toute la configuration en suivant le tutoriel.
Bon courage et tiens nous au courant
Dommarion
OpenWeather|Phases soleil|HeatzyV2|Concaténateur|HP Yamaha|SomfyV3|Epson|Seuils n étages|Baie 2 vantaux|Deezer|Intégrale|HTTP Auth. Digest|TV Philips|SmartThings|fonctions PHP|Tuya Smartlife|CozyTouch2|mySMS|TV Sony
dommarion
 
Messages : 733
Inscription : 28 Déc 2020

Re: Piloter un périphérique Tuya/Smart Life depuis eedomus

Messagepar frenchdm » 04 Nov 2026 18:48

OK je vais refaire toute la configuration et te tiendrais au courant des suites.
En tout cas grand merci pour ta disponibilité ;)
frenchdm
 
Messages : 243
Inscription : 20 Jan 2014

Précédent

Retour vers Objets connectés

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 15 invité(s)