Rem's Posté(e) le 3 février 2017 Signaler Posté(e) le 3 février 2017 bonjour à tous, j'utilise l'excellent VD d'un des membres de cet excellent forum, pour avoir la remontée des données météo de ma station NETATMO. Je voudrai lui faire dire la température par le biais du TTS - voice RSS. Le truc, je ne sais pas extraire et stocker ces données pour le renvoyer dans le TTS. Pouvez vous m'aider ...?? Merci du coup de main.
Peter Posté(e) le 3 février 2017 Signaler Posté(e) le 3 février 2017 (modifié) Salut @Rem's moi pour faire sa je passe par les sonos avec les infos de la station netatmo Regarde ici tu as des exeemples de code Sinon voici le code a mettre dans un VD qui fonctionne avec sonos remote -- 219 se Virtual Device ID -- 28 is the Process button ID local sid, bid = 219, 28 local cond = fibaro:getValue(3, "WeatherCondition"); local tempext = fibaro:getValue(30, "value"); -- température extérieure Netatmo 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 = 50 -- 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) W Modifié le 3 février 2017 par Peter
Rem's Posté(e) le 3 février 2017 Auteur Signaler Posté(e) le 3 février 2017 Super !! , merci beaucoup. Je vais m'y pencher ce WE, ... je vous tiens au jus
Rem's Posté(e) le 4 février 2017 Auteur Signaler Posté(e) le 4 février 2017 Je m'auto répond, grâce à votre aide, c'est tout bon. Je le poste pour ceux qui seraient interressé .... -- 219 se Virtual Device ID -- 28 is the Process button ID local sid, bid = 536, 28 local cond = fibaro:getValue(3, "WeatherCondition"); local tempext = fibaro:getGlobalValue("NetTempExt"); -- température extérieure Netatmo 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. 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 = 35 -- 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) fibaro:sleep(3*1000); fibaro:call(selfId, "setProperty", "currentIcon", icon); fibaro:call(401, "setProperty", "ui.status.value", "");
Peter Posté(e) le 4 février 2017 Signaler Posté(e) le 4 février 2017 de rien sa fait plaisir de pouvoir aider et partager quand je sais content que sa fknctionne
q.philippe Posté(e) le 4 février 2017 Signaler Posté(e) le 4 février 2017 salut sib et bid ? what is it ? j'ai un défaut : [ERROR] 16:57:47: line 7: attempt to concatenate local 'tempext' (a nil value)[ERROR] 16:59:13: line 7: attempt to concatenate local 'tempext' (a nil value)
Peter Posté(e) le 4 février 2017 Signaler Posté(e) le 4 février 2017 (modifié) @q.philippe Sid:le numéro du virtuel device sonos remote bid: le numéro du bouton process du virtuel device sonos remote regarde le lien donné @ Rem's tout y est expliqué sens oublie de mettre l'ID de la sonde extérieur sonos dans la variable ligne 7 pour moi elle a l'ID 30 @q.philippe je pense que c'est sa ton problème car l'erreur indique nill value met l'ID de n'importe quelle sonde pour tester Modifié le 4 février 2017 par Peter 1
q.philippe Posté(e) le 4 février 2017 Signaler Posté(e) le 4 février 2017 Thank@Peter J'essaye dès demain
q.philippe Posté(e) le 4 février 2017 Signaler Posté(e) le 4 février 2017 @Peter sonos: j'ai le plugin, avec mes 5 sonos et le Bridge.Il faut absolument device virtuel sonos alors je suppose?
Peter Posté(e) le 4 février 2017 Signaler Posté(e) le 4 février 2017 @q.philippe effectivement il te faut le module virtuel,de krikroff sonos remote pour pouvoir faire du TTS moi je m'en sert pour avoir la temperature Exterieure et les conditions météorologiques le matin pour savoir comment ont doit habiller les enfants
Messages recommandés