Xiaomi Gateway lecture de MP3

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
Phebus06
Messages : 213
Inscription : 26 janv. 2017, 09:25

Xiaomi Gateway lecture de MP3

Message par Phebus06 »

Bonjour à tous,

Une fois de plus (ça faisait longtemps) je fais appel à la communauté Domoticz et surtout à ceux qui touche en LUA ;)
Grâce à ce lien https://www.domoticz.com/wiki/Xiaomi_Gateway_(Aqara) j'ai réussi à configurer ma Gateway pour qu'elle joue un de mes sons enregistré en MP3 dessus. Ça fonctionne super bien. Ce sera plus tard pour mon système d'alarme afin qu'il puisse me dire "Alarme activée", "Alarme désactivée", etc... et pour le lancement de petites actions comme "Ambiance cinéma activé".

Le seul hic est qu'en utilisant le script Lua tel qu'il est donné sur le lien plus haut, à chaque lancement d'un son demandé par un autre script style Blocky, ma Gateway bégaye puisqu'elle commence à lire le dernier son lu (exemple sur le 1004) puis passe directe au nouveau son demandé (exemple le 1001) qui lui est bien lu comme il faut.

J'ai donc fait tout un tas d'essai et je suis arrivé sur le script Lua si dessous :

Code : Tout sélectionner

--script_device_XiaomiMP3v1.lua
--comme chaque son est enregistré en tant que valeur 100 + xx, le
curseur mettra à jour la variable utilisateur jusqu'à 10000 + valeur de
gradation et son de lecture

commandArray = {}

if devicechanged['Xiaomi Mes MP3 v1'] then
       DomValue = otherdevices_svalues['Xiaomi Mes MP3 v1'];
        NumericValue = tonumber(DomValue)
             Calcvalue = (NumericValue + 10000)

     commandArray['Variable:XiaomiMP3']=''..Calcvalue..''
     --print('Xiaomi Gateway jouera le son stocké sur la banque
'..Calcvalue)
     commandArray['Xiaomi Gateway MP3']='On'
     commandArray['Xiaomi Mes MP3 v1']='Off AFTER 30'

end

return commandArray

Je me suis dit c'est bon tout fonctionne nickel, sauf qu'en regardant sur les LOG de Domoticz je me suis rendu compte que mon script était lancé toutes les 30 secondes.
Hors j'aimerais que le script soit propre et qu'il ne se lance que lorsque je lui demande de lire un son.
Le problème c'est pour que ça fonctionne sans bégayer il faut absolument remettre le sélecteur du switch ( 'Xiaomi Mes MP3 v1' ) à Off après qu'il ait lu un son....

Je serais ravi que quelqu'un puisse m'aider
Peut être une piste de réflection mais je ne sais pas comment faire, faire en sorte que le script ne se lance que si le switch ( 'Xiaomi Mes MP3 v1' ) est supérieur à Off (1000)
Dernière modification par Phebus06 le 22 mars 2018, 18:45, modifié 1 fois.
Phebus06
Messages : 213
Inscription : 26 janv. 2017, 09:25

Re: Xiaomi Gateway lecture de MP3

Message par Phebus06 »

en réfléchissant ce soir je vais essayer à la place de ça :
if devicechanged['Xiaomi Mes MP3 v1'] then
plutôt ça :

Code : Tout sélectionner

if devicechanged['Xiaomi Mes MP3 v1'] > 1000 then
ou ça :

Code : Tout sélectionner

if devicechanged['Xiaomi Mes MP3 v1'] ~= 'Off' then
Phebus06
Messages : 213
Inscription : 26 janv. 2017, 09:25

Re: Xiaomi Gateway lecture de MP3

Message par Phebus06 »

Bon cette piste ne fonctionne pas...

Je cherche maintenant dans la direction ou je vais mettre la variable au nombre de 10000 après 15s. Je cherche comment ça s'écrit en LUA ;)
Phebus06
Messages : 213
Inscription : 26 janv. 2017, 09:25

Re: Xiaomi Gateway lecture de MP3

Message par Phebus06 »

Pourquoi vouloir faire compliquer quand on peut faire simple...
Alors je me suis rendu compte que le déclenchement automatique du son dans le script était le problème alors finalement je l'ai réduis au plus simple juste pour que la position du curseur alimente la variable. Du coup pour lancer un son il faut actionner un interrupteur virtuel. Vous me direz qu'elle est la différence qu'il soit activé par le script lui même automatiquement ou par une action extérieur sur un interrupteur virtuel...et bien je pense le temps. Dans la première configuration le temps doit être trop court entre l'ajustement de la variable et le son lancé donc début de lecture de l'ancien son (par l'ancienne variable) puis lecture global du nouveau son par la nouvelle variable calculé. Alors que dans le second cas bin le calcule est fait bien avant le lancement du son.

Code : Tout sélectionner

--script_device_XiaomiMP3v1.lua
--comme chaque son est enregistré en tant que valeur 100 + xx, le curseur mettra à jour la variable utilisateur jusqu'à 10000 + valeur de gradation
commandArray = {}

if devicechanged['Xiaomi Mes MP3 v1'] then
      DomValue = otherdevices_svalues['Xiaomi Mes MP3 v1'];
       NumericValue = tonumber(DomValue)
            Calcvalue = (NumericValue + 10000)
            
    commandArray['Variable:XiaomiMP3']=''..Calcvalue..''
    commandArray['Xiaomi Gateway MP3']='Off AFTER 10'

end

return commandArray
Flo
Messages : 46
Inscription : 25 janv. 2018, 21:21

Re: Xiaomi Gateway lecture de MP3

Message par Flo »

Salut Phebus06,

merci pour tes reflexions.
Et avec un 'wait 1 seconde' dans le script entre la mise a jour de la variable et la commande ON cela résoudrait le problème ?
Je n'ai pas encore uploadé de MP3 sur ma gateway je ne peux pas encore tester mais je songe a utiliser les infos vocales comme toi.

Merci
A+
Domoticz sur Raspberry. Rfxcom. Zwave. Xiaomi Gateway. Yeelight. Homebridge.
Phebus06
Messages : 213
Inscription : 26 janv. 2017, 09:25

Re: Xiaomi Gateway lecture de MP3

Message par Phebus06 »

Bonjour,
Je ne sais pas, à l'époque je n'ai pas essayé me semble t'il.
Actuellement mon système fonctionne toujours super bien et ma gateway a une vingtaine de phrase type (femme pour moi et homme pour ma femme).
En parallèle j'ai depuis 2 semaines la google home mini et tout cela se marie très bien ;)
phalseb
Messages : 41
Inscription : 16 janv. 2018, 17:11

Re: Xiaomi Gateway lecture de MP3

Message par phalseb »

Bonjour Phebus,

J'aimerais ton aide si possible,
Je n'arrive pas à faire jouer un mp3 (via ma gateway xiaomi) quand par exemple la sonnette est enclenchée.
Je vois sur le sujet que tu as plusieurs annonces.

Comment les faire lire via un dzvents, lua ou blockly?

j'ai: les interrupteurs:
1) Xiaomi Gateway Alarm Ringtone
2)Xiaomi Gateway Alarm Clock
3) Xiaomi Gateway Alarm MP3
4) Xiaomi Gateway Volume
5) MP3_Gateway (dummy suivant le script de papoo https://pon.fr/dzvents-jouer-un-son-sur ... more-16632)

Merci d'avance pour ton aide
Répondre