Aller au contenu

Messages recommandés

Posté(e)

OK.

 

Fais un copier coller de ce code dans le bouton "Principal" et dis moi ce qui ressort dans le debug.

-- JossAlf ; 02/07/14 (V2.1) 21/06/14 (V2.0) 17/06/14 (V1.3) ; 22/05/14 (V1.1) ; 23/05/14 (V1.2)
-- V2.1 : Ajout du réglage individuel duniveau sonore pour chaque squeeze en ajoutant 2 chiffre après le nom
-- V2.0 : Simplification du code et possibilité d'allumer 1,2,3,4 ou 5 squeeze.
-- Scène permettant simplifier la diffusion de messages sur 1 ou  plusieurs squeezeboxes.
 
-- Nécessite de créer les Variables Globales : SqueezeNom ; Messager
-- (Ne pas utiliser dans une scène le json bug)
-- l'appel de module virtuel se fera dans un autre module virtuel de façon simple
-- en affectant les valeurs aux variables Globales
-- puis en simulant le clic sur un bouton : exemple -> fibaro:call(144, "pressButton", "1");
 
local ListeSqueeze = fibaro:getGlobal("SqueezeNom");
local TableauSqueezeNom = json.decode(ListeSqueeze);
 
local player = nil
-- Adresse IP du Logitech Media Server 
local ipadd = "10.0.0.161" 
-- le port du serveur
local portno = 9090 
 
  local Squeezers = {
   ['max2playterrace'] = "b8:27:eb:e2:02:77 ",  
   ['max2playSDBpar '] = "b8:27:eb:47:18:a5 ",  
   ['max2playSDBenf '] = "b8:27:eb:e1:7f:3d ",
   ['max2playSDBinv '] = "b8:27:eb:1d:f1:cd ",

}
 
  --On allume toutes les squeezes
for i = 1, #TableauSqueezeNom do
  --on recupère le nom en retirant les 2 derniers caractères
  local player = string.sub(TableauSqueezeNom[i], 1 , -3)
  fibaro:debug(player)
  local player = Squeezers[player]
  local cmnd = "power 1 "
  local stringtosend = player .. cmnd .. string.char(10)
  fibaro:debug(stringtosend)
  tcpSocket = Net.FTcpSocket(ipadd, portno)
  tcpSocket:setReadTimeout(2*1000)
  bytes, errorCode = tcpSocket:write(stringtosend)

 -- on règle le son
  local VolumeSon = string.sub(TableauSqueezeNom[i], -2)
  local cmnd = "mixer volume " .. VolumeSon .. " "
  local stringtosend = player .. cmnd .. string.char(10)
  fibaro:debug(stringtosend)
  tcpSocket = Net.FTcpSocket(ipadd, portno)
  tcpSocket:setReadTimeout(2*1000)
  bytes, errorCode = tcpSocket:write(stringtosend)
end
-- on laisse une seconde pour laisser le temps à  toutes les squeeze de s'allumer
fibaro:sleep(1250)
 
-- On envoie le message en utilisant la première radio 
local player = string.sub(TableauSqueezeNom[1], 1 , -3)
local player = Squeezers[player]
local notification = fibaro:getGlobalValue('Messager')
-- On remplace les espaces par des %20
local notification = string.gsub((notification)," ", "%%20");
fibaro:debug(notification)

--Voicerss TTS
local cmnd = "playlist play http://www.voicerss.org/controls/speech.ashx?hl=fr-fr&src=" .. notification;

local stringtosend = player .. cmnd .. string.char(10) 
fibaro:debug(stringtosend)
tcpSocket = Net.FTcpSocket(ipadd, portno)  
tcpSocket:setReadTimeout(2*1000) 
bytes, errorCode = tcpSocket:write(stringtosend)
-- OFF des squeezeBoxs après 10 secondes
fibaro:sleep(5*1000)
 
-- on éteint les squeezes
for i = 1, #TableauSqueezeNom do
  fibaro:debug("debut de la boucle")
  local player = string.sub(TableauSqueezeNom[i], 1 , -3)
  local player = Squeezers[player]
  local cmnd = "power 0 "
  local stringtosend = player .. cmnd .. string.char(10)
  fibaro:debug(stringtosend)
  tcpSocket = Net.FTcpSocket(ipadd, portno)
  tcpSocket:setReadTimeout(2*1000)
  bytes, errorCode = tcpSocket:write(stringtosend)
 
end
Posté(e)

[DEBUG] 15:24:13: max2playterrace
[DEBUG] 15:24:13: b8:27:eb:e2:02:77 power 1
[DEBUG] 15:24:13: b8:27:eb:e2:02:77 mixer volume 80
[DEBUG] 15:24:14: Shany%20maman%20tappel
[DEBUG] 15:24:14: b8:27:eb:e2:02:77 playlist play http://www.voicerss.org/controls/speech.ashx?hl=fr-fr&src=Shany%20maman%20tappel
[DEBUG] 15:24:19: debut de la boucle
[DEBUG] 15:24:19: b8:27:eb:e2:02:77 power 0

Posté(e)

Ben mince alors ! Ca devrait fonctionner ...

 

Là  je ne comprends pas.

 

Essaye avec une autre squeeze ? Attention à  l'ID de ton VD c'est pas 400

--Liste des squeezes sous la forme {"max2playterrace30","max2playSDBpar50","max2playSDBenf60","max2playSDBinv50"}
local ListeSqueeze = {"max2playSDBpar80"}
fibaro:setGlobal("SqueezeNom" , json.encode(ListeSqueeze))
-- Taper le message
fibaro:setGlobal('Messager' , "Shany maman tappel")

fibaro:call(400, "pressButton", "1");
-- fin annonce Squeezebox
Posté(e)

Ha !!!  Ca fonctionne sur max2playterrace  ou max2playSDBpar ?

 

Attention il y a une tempo de 20 secondes. Il faut que tu sois patient.

 

Essaye à  nouveau en laissant une minute entre chaque essai.

  • 1 mois après...
Posté(e)

J'ai testé avec un Raspberry avec ce code, effectivement ça marche qu'une fois.

J’ai comme impression que si on envoie la même commande à  la suite ça marche pas.

Si on change la variable 'messager' à  chaque lancement de la scéne c'est bon.

 

ps: j'ai déactivé l'extinction au bout les 20sec pour lancer la scéne à  la vollé pour mes test...

Posté(e)

Après moulte essai j'ai pu résoudre mon problème.

 

Le server LMS herberger sur mon NAS ( idem sur raspberry), ne marcher pas avec des textes court ou rapide. En faite la taille du fichier généré par voiceRSS est la cause.

Si le fichier fait moin de 25ko le server "plante" et n'envoie pas le son à  la platine (Raspberry chez moi)

 

Pour palier à  ce problème il faut augmenter sa taille. Pour cella on peut jouer sur l'échantillonnage. Passer de 8khz_8bit_mono à  48khz_16bit_stereo.

Pour cella il faut utiliser l'api de voicerss.

local cmnd = "playlist play http://api.voicerss.org/?key=APIKEY&hl=fr-fr&f=48khz_16bit_stereo&src="..notification ;

APIKEY se génère ici :http://www.voicerss.org/login.aspx

(vous pouvez mettre n'importe quel adresse aucune vérification est faite)

 

Les paramètres possible avec APIKEY sont ici :http://www.voicerss.org/api/documentation.aspx

 

 

 

 

Posté(e)

Effectivement passe par lApi pour bénéficier du 48khz stéréo je n'aurai jamais imaginé que ça bloque. J'ai utilisé le système en mono 8khz sans problème. Je suis passé en 48 car je trouvais le son trop métallique.

Content que tu t'en sois sorti. :)

Envoyé de mon iPhone àl'aide de Tapatalk

  • 4 mois après...
Posté(e)

Hello, 

 

Tout d'abord merci d'avoir partager ton VD !

 

J'ai suivi le tuto jusqu'au bout, aucun qui son qui sort de mes SqueezeBox (SqueezePlug Max2Play).

Je vois bien la SqueezeBox s'allumer, puis s'éteindre, mais pas de son joué.

J'ai tout testé : les codecs, le format, la vitesse de lecture, rien. 

Cela n'a pas l'air d'être un problème de taille de fichier, car je suis allé jusqu'à  générer des fichiers de 1.5Mo.

 

Une alternative : télécharger le son depuis voicerss, l'enregistrer et ensuite le lancer... cela perds néanmoins un peu de son intérêt !

 

Des idées ? 

 

Merci !

×
×
  • Créer...