Aller au contenu

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


Krikroff

Messages recommandés

snif:

 

[DEBUG] 14:29:42: SONOS Player Remote Plugin V 0.0.7 loaded in memory...
[DEBUG] 14:29:42: Benchmark [sONOS Player Remote Plugin V 0.0.7 lib]: elapsed time: 0.010 cpu secs
[ERROR] 14:29:42: line 914: attempt to index local 'value' (a function value)

Lien vers le commentaire
Partager sur d’autres sites

@labomatik,

 

peux-tu remplacer ligne 908 le pairs de la boucle for par ipairs comme ceci

for key, value in ipairs(children) do

et me dire ?

 

Merci ;)

Lien vers le commentaire
Partager sur d’autres sites

Oui je rencontre un bug avec l'analyse xml du BrowseDirectChildren donc pour utiliser les raccourcis des radios il faut définir au minimum deux radios favorites depuis l'application "desktop/ios etc" du SONOS.

 

Est-ce que les radios sont en favorites ? juste dans "mes radios" ? ou les deux ?

Lien vers le commentaire
Partager sur d’autres sites

Peux-tu pour faire un test ajouter aussi dans "mes radios" ?

 

Edit: aussi tout en bas du script du mainloop il y a

Tk.isTraceEnabled = false;

tu peux passer sur true pour avoir les "traces", par contre ne pas utiliser en production avec les traces activées ;)

Lien vers le commentaire
Partager sur d’autres sites

Oui c'est lourd mais logiquement une image doit être associée par bouton et même si il n'y a pas d’association un appui sur un bouton change l'image du vd...

Lien vers le commentaire
Partager sur d’autres sites

Je ne suis pas sur de bien répondre mais j'ai mis 2 icones différents à  un virtual device (un pour le device et un pour le bouton) et ensuite

local selfId = fibaro:getSelfId();
local icon = fibaro:get (selfId, "deviceIcon"); --  conserver la même icône que le device 

-- ici le code du bouton dans le VD


-- Après 500ms on remet l'icone principal
fibaro:sleep(500);
fibaro:call(selfId, "setProperty", "currentIcon", icon);

L'icone change lors de l'appuie bouton et reviens ensuite...

 

C'était le question, non ?

Lien vers le commentaire
Partager sur d’autres sites

@JM13, oui tu as parfaitement raison, j'utilisais le même type de technique avant ;) mais tant que la gestion des images dans le HC2 restera ainsi: upload douteux :angry: , gestionnaire :angry: , perte totale en cas de recovery :angry: les images et bien :15:

 

@labomatik, j'ajoute cela dans la prochaine version pour toi ;)

Lien vers le commentaire
Partager sur d’autres sites

Bon et bien le cache fonctionne extrêmement bien, si je peux me permettre krikroff tu devrais regarder cette histoire de cache en passant par un serveur externe.

Maintenant faut que je regarde pour modifier ton code pour reprendre la musique ^^.

Lien vers le commentaire
Partager sur d’autres sites

:60: Comme je le disais j'utilise le cache de mon coté sur mon serveur et oui c'est très clair cela marche très bien, chez moi c'est en dessous de la seconde pour lancer un stream (voir instantanément  ;))

 

Tu veux modifier quoi, le module SONOS ou le bout de code que j'avais publié pour lancer un stream ?

 

PS: @Labomatik: le patch de la ligne 914 et l'update de l'image principale du vd sont dans le v0.0.8 ;)

Lien vers le commentaire
Partager sur d’autres sites

Ha j'ai peut-etre loupé un passage alors ^^.

En faite je veux pouvoir utilisé ton device pour coupé, lancer le message et reprendre la musique.

Je vais reprendre le post depuis le début pour voir comment tu fais chez toi ^^.

Lien vers le commentaire
Partager sur d’autres sites

@Shad, Oui le device Sonos fait cela: couper, lancer un message (TTS) puis reprendre la musique tout seul ;). Juste le fonctionnement du cache que je n'ai pas exposé ici car je l'utilise autrement. Après si cela vous intéresse je peux ajouter la possibilité dans le device de gérer le TTS  depuis un serveur externe (Serveur, NAS, RPI etc...) pas de problème, si c'était cela ta demande dans les précédents messages je n'avais bien compris alors ;)

Lien vers le commentaire
Partager sur d’autres sites

:60: Comme je le disais j'utilise le cache de mon coté sur mon serveur et oui c'est très clair cela marche très bien, chez moi c'est en dessous de la seconde pour lancer un stream (voir instantanément  ;))

 

Tu veux modifier quoi, le module SONOS ou le bout de code que j'avais publié pour lancer un stream ?

 

PS: @Labomatik: le patch de la ligne 914 et l'update de l'image principale du vd sont dans le v0.0.8 ;)

génial ;-)

Lien vers le commentaire
Partager sur d’autres sites

Actuellement ma méthode playFile permet de lancer un stream de type local sur serveur, un stream de type mp3 depuis Internet (radio, etc.) ou un tts.

 

Il ressemble à  cela ...

-- Stream object paramters are
-- stream: the file / uri
-- source: "local" or "http", "local" is setted by default
-- duration: play duration in seconds (option)
-- volume: the volume for playing the stream

-- TTS Object parameters are
-- lng: the language
-- message: the message
-- provider: "google", "tts-api" (only english)

local dtChangeOfSeasons = { stream = "//HOME-SERVER/Musique/CD/Dream Theater/A Change of Seasons/01-A Change of Seasons [Medley].flac", source = "local", volume = 3};
local bell1 = { stream = "//s3.amazonaws.com/smartapp-media/sonos/bell1.mp3", source = "http", duration = 8, volume = 3};
local bell2 = { stream = "//s3.amazonaws.com/smartapp-media/sonos/bell2.mp3", source = "http", duration = 8, volume = 3};
local fireAlarm = { stream = "//s3.amazonaws.com/smartapp-media/sonos/alarm.mp3", source = "http", duration = 17, volume = 3};

local tts = { 
  tts = { 
    lng = "fr", 
    message = "Google parle maintenant en Français.",
    provider = "google"
  }, 
  duration = 15, 
  volume = 10
};

-- tts
playFile(tts);
-- stream
playFile(dtChangeOfSeasons);
-- radio type
playFile(bell1);

cela vous semble clair ou pas ?

Lien vers le commentaire
Partager sur d’autres sites

Pas trop (au moins pour moi)  ;)

 

Ma situation :

 

J'utilise les 2 scripts que tu as proposé pour SONOS

 

1) Pour le premier, j'utilise 

fibaro:setGlobal("SonosTTS", "lng="..langue.."|dr=auto|vol="..volume.."|txt="..Mon_Message..". . .|"); -- dans un bouton du VD

Le script V0.0.07 dans le main loop

Temps de latence important mais je peux "construire" des messages en dynamique (inclusion de température par exemple dans le message)

 

2) Pour le deuxième, j'utilise

playFile("//"..IP_NAS.."/web/Sonos/audio/fr/TTS-MSG"..Num_Message..".mp3", tonumber(Volume_Message));

où j'ai une base de messages en mp3 enregistrés et sockés sur mon NAS pour les messages répétitifs

Pas de latence

Semble plus robuste

Une latence constatée entre 2 messages consécutifs 

 

 

Pour répondre à  ta question, comme le format du paramètre n'est pas le même...ai-je le bon fichier "playFile ?

Lien vers le commentaire
Partager sur d’autres sites

Pas de problème, la méthode par le setGlobal va évoluée et prendra en paramètre un objet, le tout reste dynamique il y aura juste la possibilité d'utiliser le cache (au second passage) ;)

local object = { 
  tts = { 
    lng = "fr", 
    message = "Google parle maintenant en Français.",
    provider = "google",
    cache = {
      activated = true,
      ip = "192.168.1.250",
      port = 81,
      uri = "/handlers/tts.ashx"
    }
  }, 
  duration = 15, 
  volume = 10
};

playFile(object);

-- ou depuis une scène ou autre...
fibaro:setGlobal("SonoTTS", json.encode(object))

je travail aussi àéliminer totalement la latence inhérente au vd, technique déjàen place sur d'autres vd perso mais du taff pour le faire ici... c'est en cours ;)

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...