Aller au contenu

Emission Simplifiée Sur Squeezebox Tts Ou Mp3


JossAlf

Messages recommandés

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
Lien vers le commentaire
Partager sur d’autres sites

[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

Lien vers le commentaire
Partager sur d’autres sites

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
Lien vers le commentaire
Partager sur d’autres sites

Non j'ai des vraies squeezebox radio et une squeeze duet. Mais j'avais installé un émulateur sur un raspberry et ça fonctionnait !

J'avais utilisé squeezeplug grâce au tutot de Cédric que tu trouveras ici :

 

http://www.maison-et-domotique.com/13033-diy-votre-squeezebox-pour-40e/

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...

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...

Lien vers le commentaire
Partager sur d’autres sites

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

 

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

  • 4 mois après...

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 !

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...