Aller au contenu

Etat Du Ciel


Julien Lemare

Messages recommandés

Voici ma petite et très fine contribution à  ce super forum, grâce à  qui j'apprend pas mal de choses !
 
 
 
Je me suis beaucoup aidé d'un post du fofo et par la suite j'ai adapté ce qui existait pour répondre plus à  mon besoin :
 
 
- ici mon appart avec la maison de mes parents (car j'aime bien comparer au bord de mer)
Dans l'utile, j'ai appart + lieu de travail ^^,
 
 
 

 

 
 
 
J'ai quelques améliorations en vue, et je travail déjà  dessus :
 
- Étoffer le Module Virtuel avec d'autres informations.                1 ère maj
- Vocalisation des données, dans un premier temps, température mini et maxi suivi de l'état du ciel.
- Intégration d'un service météo pour l'international. 
- Conseil sur les habits à  porter ainsi que les accessoires a prendre (parapluie, etc ...)
- Enregistrement des données pour faire des comparaisons avec l'extérieur et l'intérieur. Pour l'instant je pense à  thingSpeak ( il faut dire que je connais que celui ci ^^ )      1 ère maj
 
 
J'essaierai de commenter un maximum, pour d'une part me rappeler et d'autre part me faire corriger si j'ai mal compris.
 
 
Si il y a des corrections à  faire je suis preneur, car j'apprend à  peine le LUA et j'avoue être FAN ^^,
 
 
Ci joint la V.1
Lien vers le commentaire
Partager sur d’autres sites

- Remise à  plat du code

- Ajout de valeurs

- Enregistrement des valeurs prévues avec thingspeak

 

 

J'ai 3 ville pour ma part ;-)

 

 

Appartement

Boulot

Maison de bord de mer

 

 

Il suffit juste de vous rendre sur google map pour connaitre votre possition. Attention à  bien respecter la typo de lat et lng.

 

Ligne 8 : local response, status, errorCode = HC2:GET("/services/json/lat=49.09lng=2.160");

 

 

 

local date = os.date("%d/%m/%y  %H:%M") -- Mise à  jour de l'horodatage de la Mise à  jour

fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Labelmaj.value", date);


HC2 = Net.FHttp("www.prevision-meteo.ch",80); -- Connection au site
local response, status, errorCode = HC2:GET("/services/json/lat=48.5017lng=1.3513"); --Appel du fichier JSON (changer la latitude et longitude). Possible de faire automatiquement en récupérant celle renseigner dans la config HC2. Pas dispo ici.


if (tonumber(errorCode) == 0) -- Pas d'erreur
then
jsonTable = json.decode(response); -- Création d'une table


local tempactuelle=(jsonTable.current_condition.tmp); -- Toutes les (variables) local sont propres au module virtuel. VD. Il suffit de se référer au document officiel (API) : http://www.prevision-meteo.ch/uploads/pdf/recuperation-donnees-meteo.pdf
local tempmini=(jsonTable.fcst_day_0.tmin);
local tempmaxi=(jsonTable.fcst_day_0.tmax);
local cond=(jsonTable.current_condition.condition);
local windext=fibaro:getValue(3, "Wind"); -- Pour mémo, le 3 est l'ID des infos en haut à  droite de votre interface web. Wind, Humidity et Temperature. Le dernier est à  vérifier car je ne me souvient plus ^^,
local humidite=fibaro:getValue(3, "Humidity");
local sunrise=(jsonTable.city_info.sunrise);
local sunset=(jsonTable.city_info.sunset);
local rafale=(jsonTable.current_condition.wnd_gust);
local direction=(jsonTable.current_condition.wnd_dir);


local miniprev=(jsonTable.fcst_day_1.tmin)
local maxiprev=(jsonTable.fcst_day_1.tmax)
local condprev=(jsonTable.fcst_day_1.condition)


fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Labelactuelle.value", tempactuelle.. " °c");  -- A partir du moment où nous avons nos local, je les écrit toutes sur l'étiquette adéquate.
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Labeltempmini.value", tempmini.. " °c");
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Labeltempmax.value", tempmaxi.. " °c");
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label7.value", cond.. "");
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Labelvent.value", windext.. " km/h");
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Labelhumi.value", humidite.. " %");
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label8.value", "Granville");
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label23.value", "Granville");
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Labelsunrise.value", sunrise.. "");
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Labelsunset.value", sunset.. "");
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Labelrafale.value", rafale.. " km/h");
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Labeldirection.value", direction.. "");


fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Labelminiprev.value", miniprev.. " °c");  
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Labeltempmaxiprev.value", maxiprev.. " °c");
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Labelcondprev.value", condprev.. "");


-- Ceci est valable pour les 3 boutons : Appartement, Bureau, Granville.


end

Ensuite pour l'enregistrement des valeurs, ici extérieure et salon.

Il faut juste vous créer un compte, se faire 2 graphes et rentrer votre Key API éciture (WRITE)

 

"key=5JYUD4J4FMYEQ52S&field1="

 

Vous pouvez changer cette clef en 1 clic ^^,

thingspeak = Net.FHttp('api.thingspeak.com')


local temperext=fibaro:getValue(3, "Temperature");
local temperint=fibaro:getValue(20, "value");


payload = "key=5JYUD4J4FMYEQ52S&field1=".. temperext.."&field2=".. temperint
response, status, errorCode = thingspeak:POST('/update', payload)

Le refresh : Toutes les heures à  XXh30 je refresh l'appart et Toutes les heures à  XXh00 je sauvegarde les températures.

while true do
   local minute = os.date("%M")  -- j'ouvre une variable local qui sera égale à  la minute en cour, par exemple pour 15:36.25sec. minute sera égale à  36 
   fibaro:debug("heure OS : " ..minute) -- affichage pour vérification
  
if minute == "30" then
    fibaro:call(fibaro:getSelfId(), "pressButton", "19") 
      -- refresh appartement
     end
   if minute == "00" then
    fibaro:call(fibaro:getSelfId(), "pressButton", "28") 
  end
  fibaro:sleep(59*1000)
end

 

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...