i-magin Posté(e) le 3 janvier 2016 Signaler Posté(e) le 3 janvier 2016 Le matin, pour mettre en route la cafetière, allumer la lumière... et mettre la radio, je teste l'état de ma PLAY:1 Pour ce dernier point, voici trois lignes utilisées : if (fibaro:get(id_vd_sonos,"ui.lblState.value") == "Stopped") then fibaro:debug(" Radio arrêtée... Lancement ") Je ne stocke donc pas la valeur dans une VG, je vais la chercher dans le label ad hoc J'avais eu aussi le problème lié au tableau des variables : ICI + là + La réponse de @Krikroff (@PITP2 ayant donné aussi la solution) 1
Sakkhho Posté(e) le 3 janvier 2016 Signaler Posté(e) le 3 janvier 2016 ha ben oui c'était plus simple lol mais pour GEA, il fallait faire un Get dans GEA puis une action. c'est vrai que j'ai tendance à tout faire avec les VGs, j'espère que ca n'alourdie pas trop la box. Mais quand on maitrise pas c'est tellement plus facile.
ADN182 Posté(e) le 11 janvier 2016 Signaler Posté(e) le 11 janvier 2016 Salut et merci pour cet épatant VD ! Petit question concernant le TTS, pourquoi ne pas avoir fais une variable global à mettre à jour puis l'appuie sur un bouton ? Du style : fibaro:setGlobal("SonosTTSPHPvol", "40"); fibaro:setGlobal("SonosTTSPHP", "Armement de l'alarme dans une minutes"); fibaro:call(VD_SonosTTSPHP, "pressButton", "1") En écrivant je viens de me rendre compte qu'il suffit de mettre le code TTS de KriKroff dans un boutton supplémentaire et de mettre en paramètre des variables global que l'on va récupérer une fois l'appuie sur ce nouveau bouton. Je trouve cela plus simple dans les scènes ou il faut faire intervenir le TTS( 4 lignes au lieu d'un paragraphe), cela allège le code des scénes se servant du TTS.
Fred.domotique Posté(e) le 15 janvier 2016 Signaler Posté(e) le 15 janvier 2016 Salut Adn, je me posait la même question, du coup as tu testé le fonctionnement via variable ?
jojo Posté(e) le 16 janvier 2016 Signaler Posté(e) le 16 janvier 2016 ha ben oui c'était plus simple lol mais pour GEA, il fallait faire un Get dans GEA puis une action. c'est vrai que j'ai tendance à tout faire avec les VGs, j'espère que ca n'alourdie pas trop la box. Mais quand on maitrise pas c'est tellement plus facile. Le matin, pour mettre en route la cafetière, allumer la lumière... et mettre la radio, je teste l'état de ma PLAY:1 Pour ce dernier point, voici trois lignes utilisées : if (fibaro:get(id_vd_sonos,"ui.lblState.value") == "Stopped") then fibaro:debug(" Radio arrêtée... Lancement ") Je ne stocke donc pas la valeur dans une VG, je vais la chercher dans le label ad hoc J'avais eu aussi le problème lié au tableau des variables : ICI + là + La réponse de @Krikroff (@PITP2 ayant donné aussi la solution) Perso, j'utilisais la solution de Sakkhho (modification du VD de Krikroff et variable globale) pour faire une annonce vocale, via GEA, lorsque le réveil s'allume le matin. Ca fonctionnait impeccable, MAIS je devais modifier le VD de Krikroff et créer 2 VG => pas cool. Donc j'ai trouvé une solution via GEA, sans VG et sans modifier le VD de Krikroff. Voici ce que j'ai fait dans GEA : if (SonosParents_Reveil == nil) then SonosParents_Reveil = 0 end function SonosParents() if (fibaro:get(DeviceID["SONOS_PARENTS"],"ui.lblState.value") == "Radio Playing" and SonosParents_Reveil == 0) then return true end end GEA.add ({"Function", function() return SonosParents() end}, 31, "Annonce radio Ch Parents", {{"VirtualDevice", DeviceID["TECHNICAL"], 9}, {"Function", function() SonosParents_Reveil = 1 end}, {"Email", UserID["Vincent"], "INFO - Sonos"}}) GEA.add (true,1, "Remise à zéro variable [SonosParents_Reveil]", {{"Time", "02:00", "02:00"}, {"Function", function() SonosParents_Reveil = 0 end}, {"Email", UserID["Vincent"], "INFO - Sonos"}}) l'instruction {"VirtualDevice", DeviceID["TECHNICAL"], 9} est pour lancer l'annonce TTS La seconde ligne GEA de remise à zéro de la variable (locale) SonosParents_Reveil, est pour que l'annonce ne passe qu'une seule fois par jour.
Did Posté(e) le 26 janvier 2016 Signaler Posté(e) le 26 janvier 2016 J'ai une chose bizarre avec l'icône du module qui passe en cube bleu le temps de l'appui sur un bouton dans le module puis revient bien ensuite mais après un appui sur process, il reste en cube bleu. En remplaçant l'icône du bouton process, j'ai réglé le soucis mais c'est juste pour savoir si c'était comme ça aussi chez vous.
i-magin Posté(e) le 26 janvier 2016 Signaler Posté(e) le 26 janvier 2016 oui @Did Pour contourner ce petit défaut, comme toi, j'ai intégré l'icône dans le bouton process (NB : je l'ai signalé le 11 décembre ) 1
Did Posté(e) le 26 janvier 2016 Signaler Posté(e) le 26 janvier 2016 Ah oui, j'étais passé à côté. Merci@i-magin.
ADN182 Posté(e) le 26 janvier 2016 Signaler Posté(e) le 26 janvier 2016 Salut Adn, je me posait la même question, du coup as tu testé le fonctionnement via variable ? Salut Fred, Voici le code à mettre dans le nouveau bouton que tu va ajouter au VD de Krikroff : local _f = fibaro local sid, bid = _f:getSelfId(), 28 -- On va récupérer la valeur de la variable TTS messageTTS = fibaro:getGlobal("TTS") local params = { -- TTS Message message = messageTTS, duration = 'auto', -- Duration: "auto", xx seconds language = "fr-FR", -- Language: fr-FR volume = 35 -- Volume } 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:sleep(1000); _f:call(sid, "pressButton", bid) Ici on récupère la valeur de la variable TTS. De ce fait après quand tu souhaite faire fonctionner le TTS dans une autre scène ou VD tu insère le code suivant : local VD_SonosKriKroff = 255; fibaro:setGlobal("TTS", "Armement de l'alarme"); fibaro:call(VD_SonosKriKroff, "pressButton", "29");
Fred.domotique Posté(e) le 27 janvier 2016 Signaler Posté(e) le 27 janvier 2016 Merci àtoi ADN, je suis un peu pris cette semaine mais je vais tacher de tester cela rapidement.
Alf Posté(e) le 27 janvier 2016 Signaler Posté(e) le 27 janvier 2016 Salut Fred, Voici le code à mettre dans le nouveau bouton que tu va ajouter au VD de Krikroff : local _f = fibaro local sid, bid = _f:getSelfId(), 28 -- On va récupérer la valeur de la variable TTS messageTTS = fibaro:getGlobal("TTS") local params = { -- TTS Message message = messageTTS, duration = 'auto', -- Duration: "auto", xx seconds language = "fr-FR", -- Language: fr-FR volume = 35 -- Volume } 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:sleep(1000); _f:call(sid, "pressButton", bid) Malheureusement, je reçois cette erreur: [DEBUG] 22:43:32: Unable to process data, check variable [ERROR] 22:43:32: line 16: attempt to index local 'f' (a nil value)
Alf Posté(e) le 27 janvier 2016 Signaler Posté(e) le 27 janvier 2016 Malheureusement, je reçois cette erreur: [DEBUG] 22:43:32: Unable to process data, check variable [ERROR] 22:43:32: line 16: attempt to index local 'f' (a nil value) Je l'ai trouvé la solution ici: la variable généré automatiquement doit être supprimé. Mais comment se fait-il?
Fred.domotique Posté(e) le 27 janvier 2016 Signaler Posté(e) le 27 janvier 2016 Pour moi cela fonctionne pas de soucis avec la variable (après je l'ai créer en manu dès le départ). Merci ADN. Maintenant je vais voir pour gérer le volume en variable et après associé la GEA.
robotica Posté(e) le 29 janvier 2016 Signaler Posté(e) le 29 janvier 2016 Sorry for my english, using google translate and use French makes it worse ;-). First off all thanks for creating this great new VD! When using this device for SONOS PLaybar and TV is playing it’s not possible to control the device in any way. It looks like the VD doesn’t understand the Playbar functions (See image). VD state is "Not_Implemented"
c-lol Posté(e) le 29 janvier 2016 Signaler Posté(e) le 29 janvier 2016 Super grand merci pour le VD, je m'amuse comme un fou. J'ai reçu mon play1 hier Par contre je rencontre un petit problème. J'ai une playlist en cours, je fais une annonce TTS, la musique reprend mais se termine à la fin de la chanson, comme si ça effacé la playlist en cours. Quelqu'un a t-il rencontrer cette situation? Et aussi je cherche à mettre en place le serveur cache, pour améliorer le souci de latence car c'est ca fait de longue pause 3-4 secondes de blanc avant le TTS et 3-4 avant la reprise de la musique. Cependant j'ai rien trouvé sur la mise en place d'un serveur cache avec le HC2. J'ai bien trouvé comment installé un serveur SQUID mais comment dire au VD Sonos de passer par le SQUID? Merci beaucoup, en attendant je vais mettre à jour mes scènes avec des annonces
jojo Posté(e) le 29 janvier 2016 Signaler Posté(e) le 29 janvier 2016 le "problème", ou plutôt l'amélioration à suggérer, est du même type que c-lol, je pense. J'ai un Play:1 dans ma chambre à coucher que j'utilise comme réveil. Il est configuré (au niveau de Sonos) pour s'éteindre automatiquement après 45 min. Après 30 sec, je diffuse le message TTS ainsi : http://www.domotique-fibaro.fr/index.php/topic/616-fibaro-hc2-vd-sonos-remote-télécommande-pour-diffuseur-sonos/?p=107563 La radio reprend bien ensuite mais elle ne s'arrête pas automatiquement après les 45 min. Je ne sais pas s'il est possible de mémoriser ce paramètre avant la diffusion du TTS, pour qu'à la reprise ce soit "transparent". Merci
jojo Posté(e) le 29 janvier 2016 Signaler Posté(e) le 29 janvier 2016 le "problème", ou plutôt l'amélioration à suggérer, est du même type que c-lol, je pense. J'ai un Play:1 dans ma chambre à coucher que j'utilise comme réveil. Il est configuré (au niveau de Sonos) pour s'éteindre automatiquement après 45 min. Après 30 sec, je diffuse le message TTS ainsi : http://www.domotique...sonos/?p=107563 La radio reprend bien ensuite mais elle ne s'arrête pas automatiquement après les 45 min. Je ne sais pas s'il est possible de mémoriser ce paramètre avant la diffusion du TTS, pour qu'à la reprise ce soit "transparent". Merci
i-magin Posté(e) le 29 janvier 2016 Signaler Posté(e) le 29 janvier 2016 Euh, j'ai pas compris @jojo... tu peux répéter ?
c-lol Posté(e) le 29 janvier 2016 Signaler Posté(e) le 29 janvier 2016 tu veux dire que après le TTS ton parametrage (les 45min avant extinction) sont supprimés?? à‡a ressemble étrangement au miens, c'est à dire après un TTS toute la configuration/playlist actuelle disparaît. Il ne garde que la piste en cours pour moi et se termine à la fin de la chanson et pour toi elle s'arrete jamais car pour la radio il n'y a pas de fin
jojo Posté(e) le 30 janvier 2016 Signaler Posté(e) le 30 janvier 2016 oui c-lol, tu as bien compris ce que je voulais dire
Ronald Posté(e) le 6 février 2016 Signaler Posté(e) le 6 février 2016 Bonsoir, escusez mon francais! J'ai un problème avec une station de radio. La station contient % (le nom de cette station de radio est 100% NL). Cette radio est pas reconnu comme une station de radio, mais comme une bande sonore normale. Et le nom devient 1-2200pctnlaac J'essayé permettant le débogage, mais la résultant est un erreur, que la format n'est pas compris, dans la ligne 67, parce que un seule % n'est pas permis dans un string format. Je fixe le trace avec trace=function(self,value,...) if self.isTraceEnabled then if value~=nil then value2= string.gsub(value, "100%%", "100%%%%"); if (value2 ~= value) then return fibaro:debug(value) else return fibaro:debug(string.format(value,...)) end end end end, Mais je n'avait pas une fixe pur le mauvais transport state. Quelqu'un sait la solution? Merci beaucoup, Ronald
Ronald Posté(e) le 6 février 2016 Signaler Posté(e) le 6 février 2016 Trouvez! Le track uri est aac: comme 'aac://stream.100p.nl/100pctnlaac' Ci-dessous est le code correct / changement. C'est seulement le code pour Sonos.getCurrentTrack dans le main loop du VD. Est'-ce-que possible de changer cette code dans le code générique ? Merci bien, Ronald Sonos.getCurrentTrack=function(a) Tk:trace("get current track request") return sendSoapMessage(a.props.controlURL.RendererAVTransport, a.props.serviceType.AVTransport, {name=a.props.actions.GetPositionInfo,service=a.props.serviceType.AVTransport},"<InstanceID>0</InstanceID><Channel>Master</Channel>",function(b)a.currentTrack.track=tonumber(b:match("<Track>(.+)</Track>")or 0)a.currentTrack.duration=tostring(b:match("<TrackDuration>(.+)</TrackDuration>")or"")a.currentTrack.relTime=tostring(b:match("<RelTime>(.+)</RelTime>")or"00:00:00")a.currentTrack.relCount=tonumber(b:match("<RelCount>(.+)</RelCount>")or 0)a.currentTrack.absCount=tonumber(b:match("<AbsCount>(.+)</AbsCount>")or 0)a.currentTrack.uri=tostring(b:match("<TrackURI>(.+)</TrackURI>")or"")local c=decode(tostring(b:match("<TrackMetaData>(.+)</TrackMetaData>")))a.currentTrack.title=string.gsub(decode(tostring(c:match("<dc:title>(.+)</dc:title>")or"")),1,22)a.currentTrack.creator=decode(tostring(c:match("<dc:creator>(.+)</dc:creator>")or""))a.currentTrack.artist=decode(tostring(c:match("<r:albumArtist>(.+)</r:albumArtist>")or""))a.currentTrack.album=decode(tostring(c:match("<upnp:album>(.+)</upnp:album>")or""))a.currentTrack.originalTrackNumber=tostring(c:match("<upnp:originalTrackNumber>(.+)</upnp:originalTrackNumber>")or"") Tk:trace(decode(a.currentTrack.uri or"")) if string.find(decode(a.currentTrack.uri or""),"x-rincon-mp3radio:",1,true)~=nil then Tk:trace("MP3 Radio") a.currentTrack.isRadio=true; a.currentTrack.isFile=false; if a:getMediaInfo()then Tk:trace(a.mediaInfo.title) a.currentTrack.title=string.gsub(a.mediaInfo.title,1,25)end elseif string.find(decode(a.currentTrack.uri or""),"aac:",1,true)~=nil then Tk:trace("AAC Radio") a.currentTrack.isRadio=true; a.currentTrack.isFile=false if a:getMediaInfo()then Tk:trace(a.mediaInfo.title) a.currentTrack.title=a.mediaInfo.title end elseif string.find(decode(a.currentTrack.uri or""),"x-file-cifs:",1,true)~=nil then Tk:trace("Track") a.currentTrack.isRadio=false; a.currentTrack.isFile=true else Tk:trace("Unknown") a.currentTrack.isRadio=false; a.currentTrack.isFile=false end end) end
Ronald Posté(e) le 7 février 2016 Signaler Posté(e) le 7 février 2016 Une autre probleme... Quand le nom du radio contenu une 1, le 1 dans le nom est remplace avec 25.dans le function Sonos.getCurrentTrack Probleme: a.currentTrack.title=string.gsub(a.mediaInfo.title,1,25)end Le correct code est a.currentTrack.title=string.sub(a.mediaInfo.title,1,25)end
Ronald Posté(e) le 7 février 2016 Signaler Posté(e) le 7 février 2016 ici la code. C'est appelle 1.0.1 ronald parceque je attendsKickoff pour créer une nouvelle version. SONOS_Remote_v1.0.1 ronald.vfib
Messages recommandés