Aller au contenu
Rem's

Faire parler la station Netatmo

Recommended Posts

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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é par Peter

Partager ce message


Lien à poster
Partager sur d’autres sites

Super !! , merci beaucoup.

Je vais m'y pencher ce WE, ... je vous tiens au jus

Partager ce message


Lien à poster
Partager sur d’autres sites

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

 

Partager ce message


Lien à poster
Partager sur d’autres sites

de rien sa fait plaisir de pouvoir aider et partager quand je sais 

content que sa fknctionne 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

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)

 

Partager ce message


Lien à poster
Partager sur d’autres sites

@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é par Peter
  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

@Peter sonos: j'ai le plugin, avec mes 5 sonos et le Bridge.
Il faut absolument device virtuel sonos alors je suppose?

Partager ce message


Lien à poster
Partager sur d’autres sites

@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

 

Partager ce message


Lien à poster
Partager sur d’autres sites

×