Aller au contenu
Krikroff

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

Recommended Posts

Il y a 23 heures, jojo a dit :

voici le chemin que j'ai ais

//IPSYNO/music/iTunes/Sons/Intrusion.mp3

et l'utilisateur GUEST devait avoir les droits sur ce répertoire (site me souviens bien)

@jojo

tu peux revérifier stp quand tu as un moment.

je n'arrive pas à jouer le son pourtant la commande passe sur la sonos, mais aucun sons;

 

le user guest etait désactivé chez moi, j'ai remis mais il a tjr besoin d'un password. toi aussi ?

Partager ce message


Lien à poster
Partager sur d’autres sites

je viens de regarder : en fait Gest, c'est pour Kodi => pas nécessaire pour Sonos.

Par contre, j'ai créé un utilisateur Sonos, avec les droits de Lecture/écriture sur la bibliothèque musicale.

Cet utilisateur, tu dois le renseigner quand tu créés ta bibliothèque musicale sur ton sonos. (Il te faut sur l'application sonos une bibliothèque musicale qui réfère aux mp3 que tu voudras ensuite lire via le VD)

 

Jr nr duid pas faire plus de tests car je n'ai plus de HC2 depuis plus de 2 ans

Partager ce message


Lien à poster
Partager sur d’autres sites

est-ce que le TTS avec la nouvelle clé fonctionne toujours chez vous ?

Car ça ne va pas sur Lifedomus.

Alors, si ça fonctionne sur Fibaro, les développeurs polonais ont marqués des points par rapport aux développeurs français ...

Partager ce message


Lien à poster
Partager sur d’autres sites

Aux dernières nouvelles cela fonctionne !
Mais heu... Je ne suis pas polonais@Jojo

  • Like 1
  • Haha 1

Partager ce message


Lien à poster
Partager sur d’autres sites

sorry, juste, cela faisait tellement partie de ma solution Fibaro, que ça aurait dû être natif Fibaro.

C'est vrai que sic était toi qui avait programmé la HC2, je serais encore chez Fibaro.

SORY pour la méprise.

Partager ce message


Lien à poster
Partager sur d’autres sites

Faut pas t’excuser@jojo

C’est dommage de devoir passer encore par le VD depuis le temps alors que cela pourrait être un Plugin made in Fibaro

Partager ce message


Lien à poster
Partager sur d’autres sites

oui cela remarche avec la nouvelle clé avec Fibaro. Clairement cela devrait etre natif à la BOX via plug in.

Modifié par Lorenzo

Partager ce message


Lien à poster
Partager sur d’autres sites

Petite question,

 

J'ai les infos des lectures en cours qui ne remonte pas dans le VD Sonos. 

Alors je précise j'ai déjà scratché la variable et après ré enregistrement les infos du VD enregistré remonte. Par contre ayant plusieurs Sonos et donc plusieurs VD je constate que les autres VD (hormis celui qui avec lequel j'ai re créer la variable) ne remonte rien. 

Faut il une variable par VD ?? il me semble que jusqu'à maintenant la réponse était non. Ou avez vous une piste pour moi.

 

Merci à tous.

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

j'ai un truc que j'arrive pas à résoudre.

J'utilise le du TTS pour avoir un "dialoge" avec ma box :)

Alors je passais dans des scripts et tout était parfait.

Maintenant j'ai créé un VD avec deux boutons. Un sert le matin pour le réveil et un le soir au coucher.

Chaque boutons exécute du code LUA qui balance une phrase TTS.

 

Mon problème : Lors de l'exécution du matin, j'ai le message du soir et lors de l'exécution du soir, j'ai le message du matin.

Pourtant les autres tâches des boutons (allumage lumière, café … le matin et extinction le soir) sont bien ok c'est dont les bon scripts qui se lance.

J'ai ajouté un envoi de mail dans le code et je reçois par mail le bon message mais par TTS le mauvaise.

 

Du coup, comment je peux faire ? Ya une variable à cleaner avant l'exécution ? Avez-vous déjà rencontrés ce genre de comportement ?

De mémoire avant de passer par le VD, ça fonctionnait correctement.

 

Merci de votre aide

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

depuis le début de mois, comme tout le monde ici, mon sonos ne me causait plus.

Aujourd'hui, j'ai enfin eu le temps de m'occuper de ça. J'ai généré une nouvelle clé, et mis à jour le plugin, mais rien à faire, mon sonos ne répond plus.

J'ai même une erreurs bizarre quand j'utilise les boutons du VD :

 

[DEBUG] 19:16:17: Unable to process data, check variable
[ERROR] 19:16:17: line 5: attempt to index local 'f' (a nil value)

 

en utilisant le bouton du TTS, j'ai ce message d'erreur :

 

[DEBUG] 19:19:00: -------------------------------------------------------------------------
[DEBUG] 19:19:00: -- HC2 Toolkit Framework version 1.0.6
[DEBUG] 19:19:00: -- Current interpreter version is Lua 5.1
[DEBUG] 19:19:00: -- Total memory in use by Lua: 262.32 Kbytes
[DEBUG] 19:19:00: -------------------------------------------------------------------------
[DEBUG] 19:19:00: Toolkit.Debug loaded in memory...
[DEBUG] 19:19:00: Benchmark [Toolkit.Debug lib]: elapsed time: 0.001 cpu secs
[DEBUG] 19:19:00: Toolkit.Collections.Queue loaded in memory...
[DEBUG] 19:19:00: Benchmark [Toolkit.Collections.Queue lib]: elapsed time: 0.001 cpu secs
[DEBUG] 19:19:00: Toolkit.Net loaded in memory...
[DEBUG] 19:19:00: Benchmark [Toolkit.Net lib]: elapsed time: 0.001 cpu secs
[DEBUG] 19:19:00: Toolkit.Xml loaded in memory...
[DEBUG] 19:19:00: Benchmark [Toolkit.Xml lib]: elapsed time: 0.001 cpu secs
[DEBUG] 19:19:00: Toolkit.HttpUtility loaded in memory...
[DEBUG] 19:19:00: Benchmark [Toolkit.HttpUtility lib]: elapsed time: 0.001 cpu secs
[DEBUG] 19:19:00: Unable to process data, check variable

 

Je ne sais pas quoi faire : tout réinstaller le VD ou remplacer les '_f' dans le code par 'fibaro'

Quelqu'un a constaté ce problème ?

 

Merci

Partager ce message


Lien à poster
Partager sur d’autres sites

La variable est certainement corrompue, il faut la supprimer puis recharger le VD via le bouton ‘save’ enfin la petite disquette ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

la variable a été corrompue parce que tu as cliqué sur la bouton "Save" dans le panneaux des variables. Il ne faut JAMAIS appuyer sur le bouton Save du panneau des variables

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci les amis, c'est bien ça. Ma maison recommence à me parler.

Partager ce message


Lien à poster
Partager sur d’autres sites

Je suis entrain d'essayer le plugin mais impossible de jouer une station radio.

J'ai 4 favoris Sonos en radio et aussi dans  mes stations radio de tuneIN.

Quand je regarde les logs du plugin il me dit qu'il y a aucune station radio à lancer.

Quelqu'un à une idée svp ?

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 13/03/2014 à 19:54, Krikroff a dit :

Hello à tous, 

 

j'essaie de m'installer ce VD TTS qui à l'air parfait, merci @Krikroff de partager ton bébé- 

 

J'ai réussi à faire les étapes de 1 à 5, comme indiqué ci-dessous.

Ensuite il faut ajouter du code à une scène existante si j'ai bien compris... ?!? ou faut-il créer une nouvelle scène. J'ai pas compris comment procéder pour cette étape.

 

Mon premier TTS , serait qu'il annonce l'état de fermeture des stores (lors ce que la scène est terminer par exemple) 

Merci de votre soutien 

 

 

Le 13/03/2014 à 19:54, Krikroff a dit :

 

 

 

Le 13/03/2014 à 19:54, Krikroff a dit :

 


 
Installation :

 

A partir de la version 1.0.0 beta:

 

1. Télécharger puis importer le vd.

2. Renseigner l’adresse IP du diffuseur SONOS (le coordinateur) dans le vd ainsi que le port 1400

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"
}

5. Enregistrer les modifications, c'est bon...

 

Utilisation :
 
TTS : Pour utiliser le TTS depuis une scène ou un périphérique virtuel il faut juste exécuter le code LUA suivant avec les bons paramètres.


-- 408 is the Virtual Device ID
-- 28 is the Process button ID
local sid, bid = 408, 28
-- Create TTS params object
local params = {
  -- TTS Message
  message = "La température extérieure actuelle est de 21,2°C",  
  duration = 'auto',	-- Duration: "auto", xx seconds
  language = "fr-FR",	-- Language: fr-FR
  volume = 10			-- 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)

Les options de l'objet params:

 

- message: le message tts

- language: la source du flux (http ou local, local est attribué par défaut)

- duration: durée du tts. (en secondes ou "auto")

- volume: le volume utilisé pour la lecture du tts si différent du volume en cours d'utilisation

 

Le programme en cours de diffusion au moment de la demande reprendra après la diffusion complète du TTS. Reprise de la radio, de la piste à  l’endroit précis avant arrêt, reprise de l’état du diffuseur : Volume, Mute, Play, Stop.
 

STREAM: Pour utiliser la lecture de Stream depuis une scène ou un périphérique virtuel il faut exécuter le code LUA suivant avec les bons paramètres.


-- 408 is the Virtual Device ID
-- 28 is the Process button ID
local sid, bid = 408, 28
-- Create STREAM params object
local params = {
  -- stream: the file / uri
  stream = "//s3.amazonaws.com/smartapp-media/sonos/bell1.mp3",
  -- source: "local" or "http", "local" is setted by default
  source = "http",
  -- duration: play duration in seconds (option) or "auto"
  duration = 8,
  -- volume: the volume for playing the stream
  volume = 10
}
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), { stream = params })
_f:call(sid, "pressButton", bid)

Les options de l'objet params:

 

- stream: le chemin du flux

- source: la source du flux (http ou local, local est attribué par défaut)

- duration: durée du stream. (en secondes ou "auto")

- volume: le volume utilisé pour la lecture du flux si différent du volume en cours d'utilisation

 

Quelques exemples:

Annoncer la température dans une scène :


--[[
%% 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)

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) 

Annoncer la date du jour, la température extérieure et 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) 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Hej, mam problem ze sceną czytania na zewnątrz

 

- 391 do identyfikator Urządzenia wirtualnego
- 28, aby identyfikator Procesu
lokalnego identyfikatora przycisku sid oferty = 391, 28
 
miejscowy cond = Fibaro: getValue (3 "WeatherConditionConverted");
local tempext = fibaro: getValue (3, „wartość”); - temperatura zewnętrzna
fibaro: debugowanie ("Temperatura zewnętrzna:" ..tempext)
stopień lokalny = string.gsub (tempext, "[,]", "stopień")
stopień lokalny = string.gsub (stopień, "[.]", „Stopień”)
lokalny stopień = string.gsub (stopień, „[-]”, „minus”)
 
lokalny currentDate = os.date („* t”)
lokalny dzień L = {„niedziela”, „poniedziałek”, „wtorek ”,„ Środa ”,„ Czwartek ”,„ Piątek ”,„ Sobota ”}
dzień lokalny = dzień L [bieżąca data.

................

 

 

debug

 

[DEBUG] 15:03:37: 2019-08-18 15: 03: 37.057226 [fatal] Nieznany wyjątek: /opt/fibaro/scenes/148.lua:7: próba połączenia całkowitego "tempo" (wartość zero)

 

 

I jak dotąd działało dobrze

 

@@Krikroff  aider?

 

 

Modifié par wojtas810

Partager ce message


Lien à poster
Partager sur d’autres sites

DEBUG] 21:17:38: Unable to process data, check variable
[ERROR] 21:17:38: line 5: attempt to index local 'f' (a nil value)

 

Bonsoir,

Je rentre de vacance et impossible de refaire fonctionner mes sonos.

Quelqu'un a déjà eu ce genre d'erreur?

 

Merci

Partager ce message


Lien à poster
Partager sur d’autres sites

hello tu as jeté un oeil du coté des variables globales ? peut être détruire celle du vd sonos, le vd va la recréer automatiquement après avoir appuyé sur save. 

Modifié par TonyC

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui mais non.... car l'API a changé, et les anciens VD ne savent plus créer les variables globales, donc en attendant que tous les auteurs de VD mettent à jour leur code, il faut recréer les variables globales à la main.

On en parle sur plusieurs topics, le dernier en date c'était GEA je crois.

 

Et là :

 

 

 

  • Thanks 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Sa marchait très bien avant. En plus la variable _f est une locale :/.
Bon en tous cas sa veut dire que je suis le seul xd.

Envoyé de mon SM-G965F en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

mince pas cool, merci @Lazer pour le pointeur sur le sujet !

@Shad c'est probablement ta global x_sonos_object qui est vérolée, détruit la et re-crées la à la mano, quasiment certain que c'est ça. faudra tout de même je pense sauvegarder de nouveau le vd pour qu'il puisse alimenter la variable avec les info attendues.

Modifié par TonyC

Partager ce message


Lien à poster
Partager sur d’autres sites

×