Aller au contenu

Messages recommandés

Posté(e)

Ce ne sont pas mes codes, ils sont déjàdans les pages précédentes,

Message 547 page 28

Message 592 page 30

Message 655 page 33

Et aussi en page 1

  • Upvote 1
  • 4 semaines après...
Posté(e)

Ce ne sont pas mes codes, ils sont déjà  dans les pages précédentes,

Message 547 page 28

Message 592 page 30

Message 655 page 33

Et aussi en page 1

 

Did ça te dérangerait de nous refaire une synthèse avec ton code que tu utilises ?

 

Je modifierais le post 1 en complétant avec ton code pour exemple.

 

Merci

Posté(e)

Non, pas de problème, voici les trois codes à  adapter à  vos Id.

 

Code de PITP2 pour annoncer la température dans la scène.

Il faut juste changer l'id en fonction de votre module remontant la température.

--[[
%% properties
 
 
%% globals
--]]
 
 
-- 408 is the Virtual Device ID
-- 28 is the Process button ID
local sid, bid = 811, 28
-- Create TTS params object
local ValeurTemp = fibaro:getValue(61, "value")
local degre = string.gsub(ValeurTemp, '[,]' , ' degret ')
local degre = string.gsub(degre, '[.]' , ' degret ')
local degre = string.gsub(degre, '[-]' , ' moins ')
local notification = "Il fait " .. degre .. " dans le salon "
fibaro:debug(notification)
local params = {
  -- TTS Message
 
  message = notification,  
  duration = 'auto', -- Duration: "auto", xx seconds
  language = "fr-FR", -- Language: fr-FR
  volume = 23 -- 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)

Code de @i-magin pour annoncer la valeur d'une variable.

--[[
%% properties
%% globals
--]]
 
 
local sid, bid = 813, 28
-- Create TTS params object
local couleur = fibaro:getGlobalValue("le nom de ta variable")
local notification = ("La couleur de demain sera "..couleur.." Bonne journée")
fibaro:debug(notification)
local params = {
  -- TTS Message
 
  message = notification,  
  duration = 'auto', -- Duration: "auto", xx seconds
  language = "fr-FR", -- Language: fr-FR
  volume = 23 -- 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)

Code de @13013, (optimisé par @jojo) pour annoncer la date du jour, la température extérieure (j'ai changé l'Id correspondant à  ma sonde) et la météo (je n'ai pas changé le 3, qui apparemment correspond à  la météo).

-- 239 is the Virtual Device ID
-- 28 is the Process button ID
local sid, bid = 239, 28
 
local cond = fibaro:getValue(3, "WeatherConditionConverted");
local tempext = fibaro:getValue(33, "value"); -- température extérieure
fibaro:debug ("Température extérieure : "..tempext)
local degre = string.gsub(tempext, '[,]' , ' degré ')
local degre = string.gsub(degre, '[.]' , ' degré ')
local degre = string.gsub(degre, '[-]' , ' moins ')
 
local currentDate = os.date("*t")
local jourL = {"Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"}
local jour = jourL[currentDate.wday]
fibaro:debug ("Jour : "..jour)
 
local moisL = {"janvier", "février", "mars", "avril", "mai", "juin",
               "juillet", "aout", "septembre", "octobre", "novembre", "décembre"}
local mois = moisL[currentDate.month]
fibaro:debug ("Mois : "..mois)
 
local condfr ="";
if( cond == "clear" ) then condfr = "clair"; end
if( cond == "cloudy" ) then condfr = "nuageux"; end
if( cond == "rain" ) then condfr = "pluvieux"; end
if( cond == "snow" ) then condfr = "neigeux"; end
if( cond == "storm" ) then condfr = "tempete"; end
if( cond == "fog" ) then condfr = "brouillard"; end
fibaro:debug ("Conditions météorologiques : "..condfr)
 
fibaro:debug ("Création du TTS")
-- Create TTS params object
local params = {
  -- TTS Message
  message = "Bonjour a vous. Nous sommes le "..jour .." "..currentDate.day .." "..mois ..
            ". Il est ".. currentDate.hour .." heure et ".. currentDate.min .." minutes. "..
            "Le thermomètre extérieur est a "..degre ..
            ", et le temps est  "..condfr ..". ",  
  duration = 'auto',    -- Duration: "auto", xx seconds
  language = "fr-FR",    -- Language: fr-FR
  volume = 40            -- 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)
  • Upvote 2
Posté(e)

Une petite question pour la partie TTS...

J'ai installé le VD: ok.

Mais où renseigne t-on la variable voiceRssApiKey ?

 


Installation :

 

A partir de la version 1.0.0 beta:

 

3. Pour utiliser la fonction TTS VoiceRSS il faut une API Key, pour l'enregistrement (gratuit) c'est ici http://www.voicerss.org/registration.aspx

4. Renseigner la variable voiceRssApiKey avec la clé, choisir un niveau de qualité sonore pour la generation avec voiceRssSoundQuality: low, medium, high

UserParams = {
  -- Voice RSS API Key (Free Registration: http://www.voicerss.org/registration.aspx)
  voiceRssApiKey = "000000000000000000000000000",
  -- Sound quality: low, medium, high
  voiceRssSoundQuality = "medium"
}

 

Merci de vos retours ;)

Posté(e)

Bonjour

Il ce trouve en bas du module virtuel post-1332-0-34759700-1457773695_thumb.png

Apres tu vas sur l'onglet avancer et tu descend tout en bas au bouton process et tu met ton api key

post-1332-0-17372900-1457773837_thumb.png

Mais avant il faut t'enregistré sur le site de voicerss

Voilà

Posté(e)

@chrispec

 

Dans le premier post, @Krikroff donne le code lua à  utiliser pour le TTS

Et si tu regardes le post de @Did la page précédente, tu as des exemples d'utilisation du TTS

Posté(e)

Bonjour Did,

 

A quoi correspond tes ID?

 

local sid, bid = 811, 16

 

dans ta scène de température intérieur, car quand je lance le debug, j'ai bien la température qui apparait mais le TTS n'est pas joué par ma Sonos

Posté(e)

Hello relis bien le tuto de la page 1

Local sid = 811 ce chiffre est le n° du virtuel device sonos que tu trouve dans la barre d'adresse du navigateur

Et le bid= 16 c'est le bouton du virtuel device

Posté(e)

merci Petermoto,

C ok pour le local SID mais quel bouton de quel virtuel Device???

Posté(e)

oui c'est bien ce que j'avais mis mais rien ne sort de ma Play1...

Je vais manger un morceau et continuer àchercher!

Merci àtous

Posté(e)

 Où tu as vu un Id16, le bouton Process du VD, c'est 28 (à  moins que tu ais supprimé des boutons), il n'y a que l'Id du module virtuel à  renseigner.

Posté(e)

si je l'ai remis mais je ne comprend pas pourquoi 28 car il est identifié en 16..!?

Posté(e)

l'id d'un bouton n'est pas le n° affiché, mais tu dois compter tous les boutons.

Vois une explication dans la section "Pour les Nuls"

Posté(e)

pour plusieurs notifications dans une même scène, comment vous y prendriez vous ?

 

Testé sans succès ...

     
    --[[
    %% properties
    138 value
    143 value
    %% events
    %% globals
    --]]
     
     
    local sid, bid = 417, 28
    local LightMarie = 143;
    local LightMael = 138;
    local EtatLightMarie = fibaro:getValue(LightMarie, "value");
    local EtatLightMael = fibaro:getValue(LightMael, "value");

    -- Create TTS params object
    local notification 

    if (EtatLightMarie == "1") then 
        notification = "Lumière Marie allumée";
    elseif (EtatLightMarie == "0") then 
        notification = "Lumière Marie éteinte";
    elseif  (EtatLightMael == "1") then 
        notification = "Lumière Maà«l allumée";
    elseif (EtatLightMael == "0") then 
        notification = "Lumière Maà«l éteinte";
    end

    fibaro:debug(notification)
    local params = {
      -- TTS Message
     
      message = notification,  
      duration = 'auto', -- Duration: "auto", xx seconds
      language = "fr-FR", -- Language: fr-FR
      volume = 15 -- 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)

Merci de vos avis et conseils ;)

×
×
  • Créer...