Aller au contenu

Messages recommandés

Posté(e)

Voici un VD qui permet d'appeler facilement les fonctions TTS des 3 actuellement disponibles:

 

KAROTZ

SONOS (via le VD de @krikroff )

S.A.R.A.H.

 

Avantages:

- sans passer par une Variable Globale

- Et avec historisation des 10 derniers messages

 

Voir exemple d'utilisation plus bas pour GEA.

 

Exemples pour S.A.R.A.H. et SONOS:

 

2016-09-27_19-40-08.png   2016-09-27_23-01-20.png

 

Exemple Gea:

local TTS_Sarah = {"VirtualDevice", id2["S_A_R_A_H__SAY_IT"], 1}
local TTS_Sonos = {"VirtualDevice", id2["SONOS_SAY_IT"], 1}

ensuite:

{"Label", id2["SONOS_SAY_IT"], "Message", "Bonjour, enclenchement du chauffage du ré de chaussée"},TTS_Sonos,

ou

{"Label", id2["S_A_R_A_H_SAY_IT"], "Message", "Bonjour, enclenchement du chauffage du ré de chaussée"},TTS_Sarah,


Voici la partie config du bouton et le VD générique est attaché ci-dessous.

-- Say It Copyright Sébastien Jauquet 2016
-- V 1.0.0 28/09/2016
-------------------------------------------
-- HOW TO USE THIS VD:
-- Rename the name of the label (Say It XXXXXX !), NOT the ID !!!
-- Rename the name of the VD (XXXXX Say It !)
-- Fill Ip Address and port in the VD settings
-- Port: usualy 8080 for SARAH and 80 for KAROTZ
-- Un-comment one of the three line below depending of the device you want to control
local TTS_Device = "sarah"
--local TTS_Device = "karotz"
--local TTS_Device = "sonos"
local id2 = { SONOS_REMOTE = 2124 } -- enter Krikroff sonos VD id

------- NO USER MOD BELOW -------------------------------
local selfId = fibaro:getSelfId()
local SARAH_KAROTZ_Ip = fibaro:get(selfId, "IPAddress")
local port = fibaro:get(selfId, "TCPPort")
function urlencode(s)
 if (s) then 

.... blablabla

icônes:

 

post-826-0-76220500-1475093432_thumb.png

 

post-826-0-36113400-1475093468_thumb.png

 

post-826-0-41865700-1475093509_thumb.png

post-826-0-26696100-1475010015_thumb.png

post-826-0-96157600-1475010105_thumb.png

XXXXXX_Say_It_!.vfib

  • Upvote 5
Posté(e)

Excellent ;) merci

À si juste une petite correction pour la prochaine version, Ré de chaussée ça n'existe pas , par contre Rez de chaussée oui ;)

Posté(e)

Yeah, le come back de @Sebcbien ;-)

 

Tu peux partager le code du bouton stp ? Comme d'hab pour ma culture, pour ma progression LUA ;-)

 

En fait tu lis le LABEL ;-) la speciale sans VG :-)

 

MERCI MERCI

  • Upvote 1
Posté(e)

Voilà , je vous ai créé un VD générique à  personnaliser pour les 3 TTS configurés.

Voir le mode d'emploi dans le bouton.

À personaliser donc:

2 rename

1 upload d'icône

1 ip et un port à  configurer (uniquement pour Karotz ou SARAH)

 

Fait à  l'arrache, pas trop testé mais ça a l'air de fonctionner.  :D

 

Enjoy

Posté(e)

Excellent ;) merci

À si juste une petite correction pour la prochaine version, Ré de chaussée ça n'existe pas , par contre Rez de chaussée oui ;)

Je te rassure, mon orthographe n'est pas si mauvaise :P  :P  :P 

Si j'écris rez il me le prononce mal, donc je triche un peu ;) 

Sent from my Note4

  • Upvote 1
Posté(e)

EN

 

like this?

local TTS_Sonos = {"VirtualDevice", VD["SONOS_SAY_IT"], 1}
GEA.add(true, 60, "",{{"Time", "06:47", "06:48"},{"Label", VD["SONOS_SAY_IT"], "Message", "Godmorgon Jonny"},TTS_Sonos}})

Posté(e)

yes, should work.

Here is one of mine:

  GEA.add({"Sensor+", id2["TV___AMPLI"], 150}, 180*60, "TV Allumée depuis #duration# (#value# Watt)",{
	{"Portable", id["PHONE_SEB"]},
	{"Label", id2["SONOS_SAY_IT"], "Message", "Télévision allumée depuis 3 heures. La consomation est de #value# Watt"},TTS_Sonos
	}) 
  • Upvote 2
Posté(e)

Si mais je l'ai enlevé, c mieux les messages courts et la personne dans la pièce sais normalement que la TV est allumée depuis longtemps et aussi la duration n'est pas prononçable.

Sent from my Note4

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

EN

 

Hi @sebcbien

i have added my Musaic player VD to your great Say It VD. Here are the code i use

 

-- Say It Copyright Sébastien Jauquet 2016
-- V 1.0.0 28/09/2016
-------------------------------------------
-- HOW TO USE THIS VD:
-- Rename the name of the label (Say It XXXXXX !), NOT the ID !!!
-- Rename the name of the VD (XXXXXX Say It !)
-- Add an ICON to this button
-- Fill Ip Address and port in the VD settings
-- Port: usualy 8080 for SARAH and 80 for KAROTZ
-- Un-comment one of the three line below depending of the device you want to control
local TTS_Device = "musaic"
--local TTS_Device = "karotz"
--local TTS_Device = "sonos"
--local TTS_Device = "musaic"
local id2 = { SONOS_REMOTE = 298 } -- enter Krikroff sonos VD id

------- NO USER MOD BELOW -------------------------------
local selfId = fibaro:getSelfId()
local SARAH_KAROTZ_Ip = fibaro:get(selfId, 'IPAddress')
local port = fibaro:get(fibaro:getSelfId(), "TCPPort")
function urlencode(s)
 if (s) then
   s = string.gsub (s, "\n", "\r\n")
   s = string.gsub (s, "([^%w ])",
   function (c) return string.format ("%%%02X", string.byte(c)) end)
   s = string.gsub (s, " ", "+")
 end
 return s
end
local msg = fibaro:getValue(selfId, "ui.Message.value")
local msg2 = fibaro:getValue(selfId, "ui.Message2.value")
local msg3 = fibaro:getValue(selfId, "ui.Message3.value")
local msg4 = fibaro:getValue(selfId, "ui.Message4.value")
local msg5 = fibaro:getValue(selfId, "ui.Message5.value")
local msg6 = fibaro:getValue(selfId, "ui.Message6.value")
local msg7 = fibaro:getValue(selfId, "ui.Message7.value")
local msg8 = fibaro:getValue(selfId, "ui.Message8.value")
local msg9 = fibaro:getValue(selfId, "ui.Message9.value")

fibaro:debug(os.date("%d/%m ")..msg)

if (TTS_Device == "sonos") and (msg ~= "") then
	-- 2124 is the Virtual Device ID
	-- 28 is the Process button ID
	local sid, bid = id2["SONOS_REMOTE"], 28
	-- Create TTS params object
	local params = {
	  -- TTS Message
	  message = msg,  
	  duration = 'auto',	-- Duration: "auto", xx seconds
	  language = "sv-SE",	-- Language: fr-FR
	  volume = 45			-- Volume
	}
	local _f = fibaro
	local _x ={root="x_sonos_object",load=function(b)local c=_f:getGlobalValue(b.root)if string.len(c)>0 then local d=json.decode(c)if d and type(d)=="table"then return d else _f:debug("Unable to process data, check variable")end else _f:debug("No data found!")end end,set=function(b,e,d)local f=b:load()if f[e]then for g,h in pairs(d)do f[e][g]=h end else f[e]=d end;_f:setGlobal(b.root,json.encode(f))end,get=function(b,e)local f=b:load()if f and type(f)=="table"then for g,h in pairs(f)do if tostring(g)==tostring(e or"")then return h end end end;return nil end}
	-- Make a request to the remote to process params object instantly
	_x:set(tostring(sid), { tts = params })
	_f:call(sid, "pressButton", bid)
end

if (TTS_Device == "karotz") and (msg ~= "") then
	local voice = "alice"
	Karotz = Net.FHttp(SARAH_KAROTZ_Ip, port)
	response = Karotz:GET("/cgi-bin/tts?engine=3&text="..msg:gsub(" ", "+").."&nocache=0")
	if (string.find(response, "played\":\"0"))
	then
		fibaro:log("OK")
	else
		fibaro:debug("ERROR")
	end
end

if (TTS_Device == "sarah") and (msg ~= "") then
	msg = urlencode(msg)
	Sarah = Net.FHttp(SARAH_KAROTZ_Ip, port)
	payloademon = "http://"..SARAH_KAROTZ_Ip.."/sarah/sonos?sonos_tts="..msg
	response, status, errorCode = Sarah:GET(payloademon)
end

if (TTS_Device == "musaic") and (msg ~= "") then
	-- Virtual device ID and button ID
	local vdID, btnID = 393, 21
	-- Create TTS params object
	local message = msg
	-- Send TTS parameters to variable
	fibaro:setGlobal("musaicTTS", message)
	fibaro:call(vdID, "pressButton", btnID)
end

fibaro:call(selfId, "setProperty", "ui.Message10.value", msg9)
fibaro:call(selfId, "setProperty", "ui.Message9.value", msg8)
fibaro:call(selfId, "setProperty", "ui.Message8.value", msg7)
fibaro:call(selfId, "setProperty", "ui.Message7.value", msg6)
fibaro:call(selfId, "setProperty", "ui.Message6.value", msg5)
fibaro:call(selfId, "setProperty", "ui.Message5.value", msg4)
fibaro:call(selfId, "setProperty", "ui.Message4.value", msg3)
fibaro:call(selfId, "setProperty", "ui.Message3.value", msg2)
fibaro:call(selfId, "setProperty", "ui.Message2.value", os.date("%d/%m %H:%M:%S")..": "..msg)

 

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

Je viens de faire fonctionner deux TTS SARAH différents sur deux SONOS différents :-)

Pratique pour les annonces vocales localisées !

Posté(e)
Mes notes:
 
1 dupliquer le dossier SARAH / SARAH2
2 adapter les scripts de démarage, la deuxième session n'a besoin que du serveur pour fonctionner apparement je mets 10 secondes entre les deux lancements (au reboot)
3 modifier le custom.prop de C:\SARAH2\server\app\data\
    - modifier le port (j'ai mis 8081, le premier SARAH étant sur 8080)
    - modifier le port remote (8889 au lieu de 8888)
exemple:
{
  "debug": false,
  "bot": {
    "name": "S.A.R.A.H. 2 SDB",
    "tagline": "Self Actuated Residential Automated Habitat",
    "answers": "Oui|Je m'en occupe|Voilà|C'est fait",
    "version": "4.0"
  },
  "http": {
    "root": "",
    "port": 8081,
    "ip": "XXX.XXX.XXX.XXX ",
    "remote": "http://XXX.XXX.XXX.XXX :8889",
    "upload": "E:\\Dropbox\\Public\\[FIXME]\\",
    "timeout": 4000,
    "proxy": "",
    "phantom": ""
  },
4 dans C:\SARAH2\client\  modifier custom.ini:
exemple:
[bot]
; Client identifier
id=SARAH2
5 lancer le serveur avec le script de lancement standard
6 aller dans la configuration: http://XXX.XXX.XXX.XXX:8081/portal/config et vérifier que les valeurs sont bonnes
7 modifier le plugin sonos (entrepôt/roulette de config/documentation/configuration) et choisir le sonos voulu pour cette deuxième instance
8 dans Type d'export, utiliser la valeur "une seule enceinte"
9 valider et redémarrer SARAH
10 dupliquer mon VD et le faire pointer vers la même IP mais avec le port 8081
 
Maintenant en fonction de la présence, de l'heure, des mouvements, je peux faire mes annonce ou il faut
j'ai également rajouté la radio dans la SDB au réveil en fonction des heures et présences, ainsi que l'auto off (mais avec mon Jeedom)
 
 
  • Upvote 1
×
×
  • Créer...