Aller au contenu
Krikroff

Fibaro Hc2 Vd Sonos Remote: Télécommande Pour Diffuseur Sonos

Recommended Posts

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Is there a new version avalible? I feel that upon using big playlists its eating up all my memory of the HC2.

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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 ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

dans le bouton Process du VD principal

Partager ce message


Lien à poster
Partager sur d’autres sites

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à

Partager ce message


Lien à poster
Partager sur d’autres sites

@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

Partager ce message


Lien à poster
Partager sur d’autres sites

Je comprends :D j'avais un autre VD sans ce bouton ... merci àtous ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

merci Petermoto,

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

 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.

Partager ce message


Lien à poster
Partager sur d’autres sites

ça fonctionne !!!! mon ID SONOS avait changé :60:

merci àtous!!!!

Partager ce message


Lien à poster
Partager sur d’autres sites

 Ton bouton Process n'est pas en 28?

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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"

Partager ce message


Lien à poster
Partager sur d’autres sites

 Exactement, et si tu comptes bien, tu dois arriver à  28 (il faut compter aussi les labels).

Il faut chercher dans home center pour nous, les nuls. :)

http://www.domotique-fibaro.fr/index.php/topic/4504-module-virtuel-num%C3%A9rotation-des-boutons/

Partager ce message


Lien à poster
Partager sur d’autres sites

Post 1 mis à  jour (sans bug  :ph34r: ) merci pour vos contributions ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

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 ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

×