Aller au contenu

Sakkhho

Membres confirmés
  • Compteur de contenus

    3 709
  • Inscription

  • Dernière visite

  • Jours gagnés

    18

Tout ce qui a été posté par Sakkhho

  1. merci jojo je mets à jour le 1er post. oui la 1.3 à la split comme vu le screenshot du 1er post Test en temps réel, pluie sur Paris j'utilise cette station : http://www.wunderground.com/personal-weather-station/dashboard?ID=ISAINTGE24 elle vient de remontée 0.25mm de pluie --> cool ça marche bien par contre l'appel du JSON donne encore car je pense car c'est un nombre entier et que ça affichera qu'à partir de 1mm si je prends une station ou il a plus plu (3mm) http://www.wunderground.com/personal-weather-station/dashboard?ID=IILEDEFR53 le JSON remonte bien "precip_1hr_metric":" 2", "precip_today_metric":"3" faudra donc être patient et regarder la pluie tomber :-)
  2. pour le main loop si vous avez pas GEA, je pense qq chose de ce style (corrigez moi si je me trompe) while true do local Var_Heure = os.date("%H:%M") --fibaro:debug("heure OS : " ..Var_Heure) if Var_Heure == "02:01" then fibaro:call(fibaro:getSelfId(), "pressButton", "9") fibaro:debug("heure OS : " ..Var_Heure .."Historique des 5 derniers jours récupéré") elseif Var_Heure == "03:01" then fibaro:call(fibaro:getSelfId(), "pressButton", "10") fibaro:debug("heure OS : " ..Var_Heure .."Historique des 10 derniers jours récupéré") end fibaro:sleep(60*1000) end par contre l'appuie régulier toutes les 15mn faut que je regarde de plus près - V.1.3 de dispo sur le 1er post - je regarde encore ce qu'il faut mettre dans le main loop pour l'appuie régulier
  3. effectivement c'est plus propre :-)
  4. @cybersquat ; merci ! @jojo, l'appuie régulier sur les boutons, ne gardera pas l'icône de calcul (un appui sur le futur bouton Today, prendra l'icône de ce meme bouton, pas l'icone du calcul d'arrosage) D'ou le main loop. mais comme toi j'aime pas le mainloop (peut être injustifié) je vais donc mettre le calcul de l'icone dans 3 boutons (jour,prevision et calcul arrosage) voila le GEA que je propose -- Arrosage GEA.add(true, 15*60, "", {{"VirtualDevice", id["CALCUL_ARROSAGE"], 8},{"Repeat"}}) -- Historique Jour et derniere heure GEA.add(true, 30, "", {{"Time", "02:00", "02:01"},{"VirtualDevice", id["CALCUL_ARROSAGE"], 9}}) -- Historique 5 Jours Pluie GEA.add(true, 30, "", {{"Time", "03:00", "03:01"},{"VirtualDevice", id["CALCUL_ARROSAGE"], 10}}) -- Historique 10 Jours Pluie GEA.add(true, 15*60, "", {{"VirtualDevice", id["CALCUL_ARROSAGE"], 11},{"Repeat"}}) -- Prévisions à 2 jours GEA.add(true, 20*60, "", {{"VirtualDevice", id["CALCUL_ARROSAGE"], 12},{"Repeat"}}) -- Calcul Arrosage qui donne : 1*4*24+6+10+1*4*24=208 appel jour et si l'appel 10days, ne tombe pas dans la meme minute qu'un autre appel alors on est safe ...
  5. je vais regarder dans la prochaine version pour mettre les appuies dans le main loop pour ceux qui n'ont pas GEA
  6. Sakkhho

    Support Gea

    hello petite question, si j'ai un VD avec un bouton double ? (ID12 donc mon cas) comment avec GEA je click sur le bouton ID12-1 et ID12-2 de façon indépendante ? merci
  7. c'est bon je l'ai eut :-) ---- id des icones --- local Iconeleger = 1100 local Iconeimportant = 1100 local Iconeoff = 1099 ------------------------- local selfId = fibaro:getSelfId() local Situation = fibaro:getGlobalValue("Arrosage") if (Situation == ("Non")) then NumIcone = Iconeoff elseif (Situation == ("Leger")) then NumIcone = Iconeleger else NumIcone = Iconeimportant end fibaro:call(selfId ,"setProperty","currentIcon", NumIcone) est ce que c'est genant d'avoir cela dans le main loop ?
  8. je suis vraiment une quiche avec les boucles if pour être plus propres avec les icones je voulais mettre dans le main loop ---- id des icones --- local Icone_leger = 1100 local Icone_important = 1100 local Icone_off = 1099 ------------------------- local selfId = fibaro:getSelfId() local Situation = fibaro:getGlobalValue("Arrosage") if (Situation == ("Non")) then Num_Icone = Icone_off Elseif (Situation == ("Leger")) then Num_Icone = Icone_leger Elseif (Situation == ("Important")) then Num_Icone = Icone_important End fibaro:call(selfId , "setProperty", "currentIcon", Num_Icone) sauf que comme d'hab il me jette avec mes "if" [ERROR] 11:13:53: line 12: unexpected symbol near 'then'
  9. peut être bien possible si on va interroger le "Hourly" http://www.wunderground.com/weather/api/d/docs?d=data/hourly faut que je regarder comment est construit le json ici mais tu penses vraiment que cela soit utile ? la fonction c'est de savoir si il a plu ou si il va pleuvoir, pour ne pas arroser pour rien dans l'Heure, c'est juste pour afficher : il pleut, l'info en tant que tel est pas vraiment utile, et consolidé dans le "jour" l'important c'est de savoir si il a plu aujourd'hui : Jour et si il a plu Hier et le cumul des derniers jours 5jours est important, 10jours un peu mois (si mega orage il y a 10jours, mais temps très sec depuis, je devrai arroser) avoir l'info de 6h 12h 18h, c'est plus pour le fun non ?
  10. Sakkhho

    Showroom Configs Gea

    Voici ma config, beaucoup de choses qui sont tirées de vos configs, mais si ca peut aider certains... --[[ %% autostart %% properties 318 power 50 value 67 value 147 value 167 value 181 value 215 value 244 value 250 value 262 value %% globals Etat_Alarme Tele --]] -- v 5.40 -- Optimisation possible, cf : GEA.optimize = GEA.typeOptimize["IMEDIATE_ONLY"] -- ================================================== -- GEA : Gestionnaire d'Evénements Automatique -- ================================================== -- [FR] Scénario permettant de contrôler si une périphérique est -- activé depuis trop longtemps ou lancer un push d'avertissement -- Ce scénario permet une annotation plus simple que le code LUA -- il nécessite néanmoins quelques connaissances -- -- [EN] This scene allow you to check every X second the status -- of a module and send actions if the module is activated since too long. -- This scene allow you a more simple annotation than LUA -- it requires some knowledge -- -- Auteur : Steven P. with modification of Hansolo and Shyrka973 -- Version : 5.40 function yourcode() -- ================================================== -- [FR] A VOUS DE JOUER -- [EN] YOUR TIME TO PLAY -- ================================================== GEA.isVersionFour = true --- On est en version 4.017 Beta ou suppérieur -- [FR] Votre langue : FR (default) -- [EN] Your language : EN GEA.language = "FR"; -- [FR] On vérifie toutes les X secondes (default : 30) -- [EN] Check every X seconds GEA.checkEvery = 30 -- [FR] Liste des portables devant recevoir une notification {70, 71} -- [EN] Smarphones you want to be notified {XX, XX} for more than one GEA.portables = {200,226} -- [FR] Affichage des traces dans la console (default : false) -- [EN] Show trace in the debug window GEA.debug = false -- GEA.catchError=false -- option : GEA.typeOptimize["NONE"], GEA.typeOptimize["IMEDIATE_ONLY"], GEA.typeOptimize["ALL"] -- permet d'optimiser les soucis liés au getName et getRoom de fibaro mais n'affiche plus le nom des modules concernés. GEA.optimize = GEA.typeOptimize["IMEDIATE_ONLY"] -- [FR] Tableau d'identifiant (facultatif) -- [EN] ID table (optional) -- IDs générés le : 31/12/15 à16:31:01 local id = { -- SECTION : Cave -- ROOM : Buanderie ALARME_HEAT_CAVE = 208, ECL_CAVE = 257, ECL_BUANDERIE = 259, TEMP_CAVE = 52, TEMP_SMOKE_CAVE = 207, WP_LAVE_LINGE = 18, SMOKE_CAVE = 206, OUV_CAVE = 50, -- SECTION : Etage -- ROOM : Chambre_Amis TEMP_CHAMBRE_AMIS = 169, OUV_CHAMBRE_AMIS = 167, -- ROOM : Couloir MOV_COULOIR = 221, TEMP_SMOKE_COULOIR = 304, SMOKE_COULOIR = 303, ALARME_HEAT_COULOIR = 305, TEMP_COULOIR = 222, LUM_COULOIR = 223, -- SECTION : Exterieur -- ROOM : Jardin HUM_JARDIN_NETATMO = 111, TEMP_JARDIN_NETATMO = 110, ARROSAGE_JARDIN = 233, ARROSAGE_BORDURES = 235, ECL_EXT = 229, -- ROOM : Parking PORTE_GARAGE = 237, OUV_PORTAIL = 295, PORTAIL = 268, OUV_PORTE_GARAGE = 244, -- SECTION : Global -- ROOM : Gestion TOUTES_LUMIERES = 260, DAY_PHASE = 186, VARIABLES_GLOBALES = 183, GRAPHIQUES = 188, CALCUL_ARROSAGE = 199, FREBOX_SERVEUR = 323, TOP_10_POWER = 195, ETAT_TRAFIC = 310, ETAT_ALARME = 182, METEO = 309, TRAJET_BUREAU = 308, JOUR_CHOME = 141, MY_BATTERIES = 139, EVENEMENTS = 53, MODE_MAISON = 142, HC2_DIAGNOSTICS = 70, NETWORK_MONITOR = 307, CLOCK_SYNC = 210, -- ROOM : Scenes BACKUP_VARIABLES = 225, -- SECTION : RDC -- ROOM : Bureau WP_BUREAU = 4, TEMP_BUREAU = 148, LUM_BUREAU = 149, TT_BUREAU = 115, MOV_BUREAU = 147, -- ROOM : Chambre_Parents ECL_CHAMBRE_PARENTS = 181, -- ROOM : Entrée LUM_COULOIR_BAS = 252, CAMERA_ENTREE = 324, SIRENE = 248, MOV_ENTREE = 67, LUM_ENTREE = 69, TEMP_COULOIR_BAS = 251, TEMP_ENTREE = 68, MOV_COULOIR_BAS = 250, -- ROOM : Salon/Cuisine STATION_NETATMO = 103, THERMOSTAT_NETATMO = 306, WP_BAR = 49, WP_LISEUSE = 312, PRISE_FREBOXSERVER = 315, PRISE_PS3 = 320, SONOS_REMOTE = 322, TEMP_SALON_NETATMO = 105, PRISE_SONOS = 319, PRISE_HC2 = 317, PRISE_TELE = 318, PRISE_FREBOXPLAYER = 316, CO2_SALON_NETATMO = 106, TEMP_SALON = 263, HUM_SALON_NETATMO = 107, CAMERA_SALON = 242, THERMOSTAT_NETATMO_SALON_CUISINE = 301, TT_CUISINE = 119, TV_SAMSUNG = 125, VOLETS_SALON = 121, VOLETS_CUISINE = 134, GESTION_CAMERA = 246, SON_SALON_NETATMO = 109, PRESS_SALON_NETATMO = 108, TT_SALON = 113, LUM_SALON = 264, MOV_SALON = 262, ECL_SALON_PHARE = 202, -- ROOM : Sdb_Bas TEMP_SDB_BAS = 217, TT_SDB_BAS = 117, OUV_SDB_BAS = 215, } -- ------------------------------------------------------------ -- [FR] Variable Globale optionnel pour autorisé GEA de s'exécuté -- [FR] Usage : GEA.getGlobalForActivation = {"<globalvar>", "<value pour autoriser l'execution>"} -- [EN] Optional Global Variable to allow GEA to run -- [EN] Usage : GEA.getGlobalForActivation = {"<globalvar>", "<value for activation>"} -- ------------------------------------------------------------ GEA.getGlobalForActivation = {"GEA_Status", "Active"} -- ---------------------------------------------------------------- -- [FR] A partir d'ici vous trouverez ma propre configuration -- [FR] vous permettant ainsi d'avoir une série d'exemple -- [EN] From here are ma own configuration -- [EN] just to allow you to see some examples -- ---------------------------------------------------------------- -- Mon GEA ----------------------------------------------------- local atHome = {"Global", "JourChome", "OUI"} local atWork = {"Global", "JourChome", "NON"} local onVacation = {"Global", "Mode_Maison", "Vacances"} local notVacation = {"Global!", "Mode_Maison", "Vacances"} local Present = {"Global", "Mode_Maison", "Present"} local Absent = {"Global", "Mode_Maison", "Absent"} local Menage = {"Global", "Mode_Maison", "Menage"} local Journee = {"Global!", "Day_Phase", "7 - Nuit"} local Night = {"Global", "Day_Phase", "7 - Nuit"} local Soir = {"Global", "Day_Phase", "6 - Soir"} local notSick = {"Global!", "Mode_Maison", "Malade"} local Intrusion = {"Global", "Etat_Alarme", "Intrusion"} local Canicule = {"Global", "Canicule", "Yes"} -- Timer toutes les 30 mn GEA.add(true, 30*60, "") -- Actions sur les VD GEA.add(true, 30, "", {{"Time", "00:01", "00:02"}, {"Time", "05:00", "05:01"}, {"VirtualDevice", id["JOUR_CHOME"], 3}}) -- Calcul du jour chômé GEA.add(true, 30, "", {{"Time", "01:00", "01:00"}, {"Time", "14:00", "14:00"}, {"VirtualDevice", id["MY_BATTERIES"], 11},}) -- Verification Batteries GEA.add(true, 30, "", {{"Time", "02:00", "02:01"},{"VirtualDevice", id["CLOCK_SYNC"], 1}}) -- Syncro de l'horloge GEA.add(true, 20*30, "", {{"VirtualDevice", id["TOP_10_POWER"], 1},{"Repeat"}}) -- Top 10 power GEA.add(true, 5*60, "", {{"VirtualDevice", id["NETWORK_MONITOR"], 1},{"Repeat"}}) -- Check Internet GEA.add(true, 60*60, "", {{"VirtualDevice", id["EVENEMENTS"], 11},{"Repeat"}}) -- Derniers Evénements GEA.add(true, 60*60, "", {{"VirtualDevice", id["VARIABLES_GLOBALES"], 11},{"Repeat"}}) -- Dernièrs changements des VGs GEA.add(true, 15*33, "", {{"VirtualDevice", id["HC2_DIAGNOSTICS"], 1},{"Repeat"}}) -- Diagnostics de la HC2 -- Ram HC2 -- GEA.add({{"Global-", "RamFree", 40}}, 30, "RAM inférieure à40%", {{"Time", "21:00", "21:01"}}) -- Push si Ram faible GEA.add({{"Global-", "RamFree", 35}}, 30, "Reboot HC2 car RAM inférieure à35%", {{"Time", "02:45", "02:50"},{"VirtualDevice", id["HC2_DIAGNOSTICS"], 16}}) -- Reboot HC2 si RAM faible -- Definition du Mode_Maison GEA.add({notVacation, notSick, atWork}, 30, "", {{"Days", "Monday, Tuesday, Wednesday, Thursday, Friday"}, {"Time", "08:40", "08:41"}, {"VirtualDevice", id["MODE_MAISON"], 2}}) GEA.add({notVacation, notSick, atWork}, 30, "", {{"Days", "Monday"}, {"Time", "13:00", "13:01"}, {"VirtualDevice", id["MODE_MAISON"], 3}}) GEA.add({notVacation, notSick, atWork}, 30, "", {{"Days", "Monday, Tuesday, Thursday"}, {"Time", "17:30", "17:31"}, {"VirtualDevice", id["MODE_MAISON"], 1}}) GEA.add({notVacation, notSick, atWork}, 30, "", {{"Days", "Wednesday"}, {"Time", "11:30", "11:31"}, {"VirtualDevice", id["MODE_MAISON"], 1}}) GEA.add({notVacation, notSick, atWork}, 30, "", {{"Days", "Friday"}, {"Time", "16:00", "16:01"}, {"VirtualDevice", id["MODE_MAISON"], 1}}) -- Maison en mode manuel GEA.add({{"Global", "Mode_Maison", "Manuel"}}, 30, "", {{"setDisarmed",id["MOV_ENTREE"]},{"setDisarmed",id["MOV_SALON"]},{"setDisarmed",id["OUV_CAVE"]},{"setDisarmed",id["OUV_CHAMBRE_AMIS"]},{"setDisarmed",id["MOV_BUREAU"]},{"VirtualDevice", id["ETAT_ALARME"], 1}}) -- Tous devices désarmés GEA.add({{"Global", "Mode_Maison", "Manuel"}}, 60, "Maison en Manuel", {{"Portable", 200},{"Portable", 240},{"Portable", 226},{"Global", "GEA_Status", "Desactive"}}) -- Gea en stdby -- Gestion des volets -- Ouverture tous les matin hors Vacances GEA.add({atWork, Present}, 1*60, "Ouverture Volets Semaine", {{"Time", "07:15", "07:20"}, {"Open",id["VOLETS_SALON"],100},{"Open",id["VOLETS_CUISINE"],100},{"VirtualDevice", id["GESTION_CAMERA"], 5}}) GEA.add({atHome, Present}, 1*60, "Ouverture Volets Weekend & Vacances", {{"Time", "08:15", "08:20"}, {"Open",id["VOLETS_SALON"],100},{"Open",id["VOLETS_CUISINE"],100},{"VirtualDevice", id["GESTION_CAMERA"], 5}}) GEA.add({Present, Canicule}, 1*60, "Ouverture Volets Canicule", {{"Time", "04:15", "04:20"}, {"Open",id["VOLETS_SALON"],90},{"VirtualDevice", id["METEO"], 12},{"VirtualDevice", id["GESTION_CAMERA"], 5}}) -- Fermeture matin semaine volets cuisine GEA.add({atWork, Absent}, 1*60, "Fermeture Volets Semaine", {{"Time", "08:45", "08:46"}, {"Close",id["VOLETS_CUISINE"],100},{"VirtualDevice", id["GESTION_CAMERA"], 6}}) -- Gestion de l'alarme -- Armement de l'alarme GEA.add(onVacation, 10*60, "Alarme ON Vacances", {{"setArmed",id["MOV_ENTREE"]},{"setArmed",id["MOV_SALON"]},{"setArmed",id["OUV_CAVE"]},{"setArmed",id["OUV_CHAMBRE_AMIS"]},{"setArmed",id["MOV_BUREAU"]},{"setArmed",id["MOV_COULOIR"]},{"setArmed",id["MOV_COULOIR_BAS"]},{"setArmed",id["OUV_SDB_BAS"]},{"setArmed",id["OUV_PORTE_GARAGE"]},{"setArmed",id["OUV_PORTAIL"]},{"VirtualDevice", id["ETAT_ALARME"], 2},{"VirtualDevice", id["GESTION_CAMERA"], 6},{"VirtualDevice", id["GESTION_CAMERA"], 2},{"VirtualDevice", id["GESTION_CAMERA"], 10}}) GEA.add(Absent, 1*60, "Alarme ON Absent", {{"setArmed",id["MOV_ENTREE"]},{"setArmed",id["MOV_SALON"]},{"setArmed",id["OUV_CAVE"]},{"setArmed",id["OUV_CHAMBRE_AMIS"]},{"setArmed",id["MOV_BUREAU"]},{"setArmed",id["OUV_SDB_BAS"]},{"setArmed",id["MOV_COULOIR"]},{"setArmed",id["MOV_COULOIR_BAS"]},{"setArmed",id["OUV_PORTE_GARAGE"]},{"setArmed",id["OUV_PORTAIL"]},{"VirtualDevice", id["ETAT_ALARME"], 2},{"VirtualDevice", id["GESTION_CAMERA"], 6},{"VirtualDevice", id["GESTION_CAMERA"], 2},{"VirtualDevice", id["GESTION_CAMERA"], 10}}) GEA.add(Night, 10*60, "Alarme ON Nuit", {{"setArmed",id["OUV_CAVE"]},{"setArmed",id["OUV_CHAMBRE_AMIS"]},{"setArmed",id["OUV_SDB_BAS"]},{"setArmed",id["OUV_PORTE_GARAGE"]},{"setArmed",id["OUV_PORTAIL"]},{"VirtualDevice", id["ETAT_ALARME"], 2}}) -- Désarmement de l'alarme GEA.add({Present, Journee, atWork}, 30, "Alarme OFF Présence Semaine", {{"setDisarmed",id["MOV_ENTREE"]},{"setDisarmed",id["MOV_SALON"]},{"setDisarmed",id["MOV_BUREAU"]},{"setDisarmed",id["OUV_SDB_BAS"]},{"setDisarmed",id["MOV_COULOIR"]},{"setDisarmed",id["MOV_COULOIR_BAS"]},{"setDisarmed",id["OUV_PORTE_GARAGE"]},{"setDisarmed",id["OUV_PORTAIL"]},{"VirtualDevice", id["ETAT_ALARME"], 1},{"VirtualDevice", id["GESTION_CAMERA"], 3},{"VirtualDevice", id["GESTION_CAMERA"], 8}}) GEA.add({Present, Journee, atHome}, 30, "Alarme OFF Présence Weekend - Vacances", {{"setDisarmed",id["MOV_ENTREE"]},{"setDisarmed",id["MOV_SALON"]},{"setDisarmed",id["OUV_CAVE"]},{"setDisarmed",id["MOV_COULOIR_BAS"]},{"setDisarmed",id["OUV_CHAMBRE_AMIS"]},{"setDisarmed",id["MOV_BUREAU"]},{"setDisarmed",id["MOV_COULOIR"]},{"setDisarmed",id["OUV_SDB_BAS"]},{"setDisarmed",id["OUV_PORTE_GARAGE"]},{"setDisarmed",id["OUV_PORTAIL"]},{"VirtualDevice", id["ETAT_ALARME"], 1},{"VirtualDevice", id["GESTION_CAMERA"], 3},{"VirtualDevice", id["GESTION_CAMERA"], 8}}) GEA.add({Menage, Journee}, 5*60, "Alarme OFF Ménage", {{"setDisarmed",id["MOV_ENTREE"]},{"setDisarmed",id["MOV_SALON"]},{"setDisarmed",id["MOV_BUREAU"]},{"setDisarmed",id["MOV_COULOIR_BAS"]},{"setDisarmed",id["MOV_COULOIR"]},{"VirtualDevice", id["ETAT_ALARME"], 1},{"VirtualDevice", id["GESTION_CAMERA"], 3},{"VirtualDevice", id["GESTION_CAMERA"], 8}}) -- Intrusion -- Action quand Variable àIntrusion GEA.add({Intrusion}, 5*60, "Mode Intrusion depuis #duration#",{{"Portable", 200},{"Portable", 240},{"Portable", 226},{"Repeat"}}) GEA.add({Intrusion,Night}, 30, "", {{"turnOn",id["ECL_BUANDERIE"]},{"turnOn",id["ECL_CAVE"]}}) -- On allume la cave si mode Intrusion GEA.add(id["SIRENE"], 5*60, "Sirene OFF",{{"turnOff",id["SIRENE"]},{"Global", "Etat_Alarme", "ON"}}) -- On stoppe la sirène apres 5mn -- Gestion de l'éclairage GEA.add(true, 5*60, "", {{"VirtualDevice", id["TOUTES_LUMIERES"], 14},{"Repeat"}}) GEA.add (id["ECL_CAVE"], 10*60, "Extinction Lumière cave, car allumée depuis #duration#", {{"turnOff"}, {"Portable", 200},{"Portable", 240},{"Portable", 226}}) GEA.add (id["ECL_BUANDERIE"], 10*60, "Extinction Lumière buanderie, car allumée depuis #duration#", {{"turnOff"}, {"Portable", 200},{"Portable", 240},{"Portable", 226}}) GEA.add({id["ECL_CAVE"]}, 30, "", {{"Inverse"},{"turnOff",id["ECL_BUANDERIE"]}}) -- Eclairaige Buanderie éteint si on eteint Eclairage Cave GEA.add({id["OUV_PORTAIL"], Soir}, 30, "", {{"turnOn",id["ECL_EXT"]},{"Global", "Portail", "Ouvert"}}) -- Eclairaige Exterieur On si Portail s'ouvre et Mode Soir --GEA.add({"Global","Portail", "Ouvert"}, 30, "", {{"turnOn",id["WP_GUIRLANDE"]}}) -- Mode Noel ; Eclairaige Guirlande quand on rentre le soir GEA.add({id["MOV_COULOIR_BAS"],{"Global","Portail", "Ouvert"}}, 60, "Extinction Eclairage Extérieur", {{"turnOff",id["ECL_EXT"]},{"Global","Portail", "Ferme"}}) -- On eteint l'Eclairage Exterieur une fois dans la maison -- Gestion des appareils -- Lave Linge GEA.add({"Global", "Lave_Linge", "En Attente"}, 5*60, "La machine est terminée depuis #duration#",{{"Portable", 200},{"Portable", 240},{"Portable", 226}}) GEA.add({"Sensor-", id["WP_LAVE_LINGE"], 2.8}, 30*60, "", {{"Global", "Lave_Linge", "Arret"}}) GEA.add({"Sensor+", id["WP_LAVE_LINGE"], 3}, 2*60, "", {{"Global", "Lave_Linge", "Lavage"}}) GEA.add({{"Sensor+", id["WP_LAVE_LINGE"], 1},{"Sensor-", id["WP_LAVE_LINGE"], 2.8}, {"Global", "Lave_Linge", "Lavage"}}, 1*60, "", {{"Global", "Lave_Linge", "En Attente"}}) -- Télé GEA.add({"Global", "Tele", "On"}, 30, "", {{"Slider", id["SONOS_REMOTE"], 15, 80}}) -- On fixe le son de la PlayBar à80% GEA.add({"Power-", id["PRISE_TELE"], 20}, 30, "", {{"Global", "Tele", "Off"},{"Slider", id["SONOS_REMOTE"], 15, 10}}) -- On repasse le son de la PlayBar à10% GEA.add({"Global", "Soiree", "TV"}, 30, "", {{"turnOn",id["WP_BAR"]},{"turnOff",id["ECL_SALON_PHARE"]},{"turnOff",id["WP_LISEUSE"]},{"Close",id["VOLETS_SALON"],65},{"Close",id["VOLETS_CUISINE"],100}}) -- Passage en Mode TV -- WP iMac GEA.add({"Sensor-", id["WP_BUREAU"], 20}, 60*60, "", {{"turnOff"}}) GEA.add(Present, 1*30, "",{{"Days", "Monday, Tuesday, Thursday, Friday"},{"Time", "17:30", "20:00"}, {"turnOn", id["WP_BUREAU"]}}) GEA.add(Present, 1*30, "",{{"Days", "Saturday, Sunday"},{"Time", "8:00", "10:00"}, {"turnOn", id["WP_BUREAU"]}}) GEA.add(Present, 1*30, "",{{"Days", "Wednesday"},{"Time", "11:30", "13:30"}, {"turnOn", id["WP_BUREAU"]}}) -- Playbar GEA.add(true, 60, "", {{"Days", "Monday"},{"Time", "20:00", "20:01"},{"VirtualDevice", id["SONOS_REMOTE"], 30}}) -- Annonce TTS2 (Déchets Verts) GEA.add(true, 60, "", {{"Days", "Tuesday"},{"Time", "20:00", "20:01"},{"VirtualDevice", id["SONOS_REMOTE"], 31}}) -- Annonce TTS3 (Déchets recyclabes) GEA.add(true, 60, "", {{"Days", "Thursday, Sunday"},{"Time", "20:00", "20:01"},{"VirtualDevice", id["SONOS_REMOTE"], 32}}) -- Annonce TTS4 (Poubelles) GEA.add({"Global", "SortirVerres", "Yes"}, 60, "", {{"Time", "20:00", "20:01"},{"VirtualDevice", id["SONOS_REMOTE"], 33}}) -- Annonce TTS5 (Verres) GEA.add({"Global", "SortirEncombrants", "Yes"}, 60, "", {{"Time", "20:00", "20:01"},{"VirtualDevice", id["SONOS_REMOTE"], 34}}) -- Annonce TTS6 (Encombrants) GEA.add({"Global", "EtatPlaybar", "Stopped"}, 15*60, "",{{"Slider", id["SONOS_REMOTE"], 15, 10}}) -- On fixe le son de la Playbar à10% si non utilisée --Gestion des portes GEA.add({Soir,id["OUV_CAVE"]}, 5*60, "La porte de la cave est toujours ouverte",{{"Portable", 200},{"Portable", 240},{"Portable", 226},{"Repeat"}}) GEA.add({Soir,id["OUV_CHAMBRE_AMIS"]}, 5*60, "La porte de la chambre d'amis est toujours ouverte",{{"Portable", 200},{"Portable", 240},{"Portable", 226},{"Repeat"}}) GEA.add({Soir,id["OUV_PORTE_GARAGE"]}, 5*60, "La porte du garage est toujours ouverte",{{"Portable", 200},{"Portable", 240},{"Portable", 226},{"Repeat"}}) --Gestion de l'arrosage GEA.add({id["ARROSAGE_BORDURES"]}, 15*60, "Arrêt du goutte àgoutte après #duration#", {{"Portable", 200},{"Portable", 240},{"Portable", 226},{"turnOff"},{"Repeat"}}) GEA.add({id["ARROSAGE_JARDIN"]}, 10*60, "Arret arrosage jardin après #duration#", {{"Portable", 200},{"Portable", 240},{"Portable", 226},{"turnOff"},{"VirtualDevice", id["CALCUL_ARROSAGE"], 11},{"Repeat"}}) GEA.add(true, 15*60, "", {{"VirtualDevice", id["CALCUL_ARROSAGE"], 2},{"Repeat"}}) -- Rafraichir les données pluie Jour Et Previsions GEA.add(true, 30, "", {{"Time", "00:06", "00:07"},{"VirtualDevice", id["CALCUL_ARROSAGE"], 14}}) -- Traitement de l'Historique Pluie GEA.add({{"Global+", "ConsoEau", 500}}, 30, "Attention Conso d'eau élevée", {{"Time", "21:00", "21:01"}}) -- Push si Conso d'eau > 1000 litres -- Push Météo GEA.add(true, 60*60, "", {{"VirtualDevice", id["METEO"], 1},{"Repeat"}}) -- Previsions Meteo GEA.add ({{"Global!", "Meteo_Actuelle_Jou", ""},atWork, Present}, 30, "#value#",{{"Time", "07:20", "07:21"},{"Portable", 200},{"Portable", 240},{"Portable", 226}}) -- push météo le matin GEA.add ({{"Global!", "Meteo_Lendemain", ""},Present}, 30, "#value#",{{"Time", "20:00", "20:01"},{"Portable", 200},{"Portable", 240},{"Portable", 226}}) -- push météo le soir -- Push Trafic GEA.add(true, 2*60, "", {{"VirtualDevice", id["ETAT_TRAFIC"], 1},{"Repeat"}}) -- Refresh toutes les 2mn l'etat du trafic GEA.add ({"Global!", "EtatTrafic", "OK"}, 15*60, "#value#",{{"Repeat"}}) -- Push EtatTrafic si NOK toutes les 15mn -- Fin Mon GEA ------ et Debut Mon GEA Instantané---------------------------- -- Gestion de l'alarme -- Intrusion -- Variable àIntrusion si module en alerte et armé GEA.add({id["OUV_CAVE"]}, -1, "Alerte intrusion ! Porte Cave - #date# #time#", {{"Armed"}, {"VirtualDevice", id["ETAT_ALARME"], 3}, {"VirtualDevice", id["GESTION_CAMERA"], 2}, {"VirtualDevice", id["GESTION_CAMERA"], 6}}) GEA.add({id["OUV_CHAMBRE_AMIS"]}, -1, "Alerte intrusion ! Porte Chambre Amis - #date# #time#", {{"Armed"}, {"VirtualDevice", id["ETAT_ALARME"], 3}, {"VirtualDevice", id["GESTION_CAMERA"], 2}, {"VirtualDevice", id["GESTION_CAMERA"], 6}}) GEA.add({id["OUV_SDB_BAS"]}, -1, "Alerte intrusion ! Porte Salle de Bain - #date# #time#", {{"Armed"}, {"VirtualDevice", id["ETAT_ALARME"], 3}, {"VirtualDevice", id["GESTION_CAMERA"], 2}, {"VirtualDevice", id["GESTION_CAMERA"], 6}}) GEA.add({id["MOV_BUREAU"]}, -1, "Alerte intrusion ! Bureau - #date# #time#", {{"Armed"}, {"VirtualDevice", id["ETAT_ALARME"], 3}, {"VirtualDevice", id["GESTION_CAMERA"], 2}, {"VirtualDevice", id["GESTION_CAMERA"], 6}}) GEA.add({id["MOV_ENTREE"]}, -1, "Alerte intrusion ! Entrée - #date# #time#", {{"Armed"}, {"VirtualDevice", id["ETAT_ALARME"], 3}, {"VirtualDevice", id["GESTION_CAMERA"], 2}, {"VirtualDevice", id["GESTION_CAMERA"], 6}}) GEA.add({id["MOV_COULOIR_BAS"]}, -1, "Alerte intrusion ! Couloir Bas - #date# #time#", {{"Armed"}, {"VirtualDevice", id["ETAT_ALARME"], 3}, {"VirtualDevice", id["GESTION_CAMERA"], 2}, {"VirtualDevice", id["GESTION_CAMERA"], 6}}) GEA.add({id["MOV_SALON"]}, -1, "Alerte intrusion ! Salon - #date# #time#", {{"Armed"}, {"VirtualDevice", id["ETAT_ALARME"], 3}, {"VirtualDevice", id["GESTION_CAMERA"], 2}, {"VirtualDevice", id["GESTION_CAMERA"], 7}}) GEA.add({id["OUV_PORTE_GARAGE"]}, -1, "Alerte intrusion ! Garage - #date# #time#", {{"Armed"}, {"VirtualDevice", id["ETAT_ALARME"], 3}, {"VirtualDevice", id["GESTION_CAMERA"], 2}, {"VirtualDevice", id["GESTION_CAMERA"], 7}}) -- Si Variable deja àIntrusion et 2nde détection et Mode Vacances alors Sirene ON GEA.add({id["OUV_CAVE"],Intrusion, onVacation}, -1, "Intrusion confirmée! Porte Cave - Sirene ON - #date# #time#", {{"Armed"}, {"turnOn",id["SIRENE"]},{"Repeat"}}) GEA.add({id["OUV_CHAMBRE_AMIS"],Intrusion, onVacation}, -1, "Intrusion confirmée! Porte Chambre Amis - Sirene ON - #date# #time#", {{"Armed"},{"turnOn",id["SIRENE"]},{"Repeat"}}) GEA.add({id["OUV_SDB_BAS"],Intrusion, onVacation}, -1, "Intrusion confirmée! Porte Salle de Bain - Sirene ON - #date# #time#", {{"Armed"},{"turnOn",id["SIRENE"]},{"Repeat"}}) GEA.add({id["MOV_BUREAU"],Intrusion, onVacation}, -1, "Intrusion confirmée! Bureau - Sirene ON - #date# #time#", {{"Armed"},{"turnOn",id["SIRENE"]},{"Repeat"}}) GEA.add({id["MOV_ENTREE"],Intrusion, onVacation}, -1, "Intrusion confirmée! Entrée - Sirene ON - #date# #time#", {{"Armed"},{"turnOn",id["SIRENE"]},{"Repeat"}}) GEA.add({id["MOV_COULOIR_BAS"],Intrusion, onVacation}, -1, "Intrusion confirmée! Couloir Bas - Sirene ON - #date# #time#", {{"Armed"},{"turnOn",id["WP_LISEUSE"]},{"Repeat"}}) GEA.add({id["MOV_SALON"],Intrusion, onVacation}, -1, "Intrusion confirmée! Salon - Sirene ON - #date# #time#", {{"Armed"},{"turnOn",id["SIRENE"]},{"Repeat"}}) GEA.add({id["OUV_PORTE_GARAGE"],Intrusion, onVacation}, -1, "Intrusion confirmée! Garage - Sirene ON - #date# #time#", {{"Armed"},{"turnOn",id["SIRENE"]},{"Repeat"}}) -- Arret Scene Intrusion GEA.add({id["ECL_CHAMBRE_PARENTS"], Intrusion}, -1, "Mode Panic OFF", {{"Inverse"},{"VirtualDevice", id["ETAT_ALARME"], 1}}) -- Gestion de l'éclairage -- Eclairage de la cave GEA.add({id["OUV_SDB_BAS"]}, -1, "", {{"turnOn",id["ECL_CAVE"]},{"turnOn",id["ECL_BUANDERIE"]}}) -- Eclairage le soir GEA.add({{"power-", id["PRISE_TELE"], 20},{"Global", "Tele", "On"}}, -1, "",{{"Time", "21:00", "23:00"},{"Value", id["ECL_CHAMBRE_PARENTS"], 35}, {"turnOn",id["ECL_SALON_PHARE"]},{"Global", "Tele", "Off"},{"VirtualDevice", id["MODE_MAISON"], 1},{"Close",id["VOLETS_SALON"],100},{"Close",id["VOLETS_CUISINE"],100},{"VirtualDevice", id["GESTION_CAMERA"], 6}}) --même ligne sans éclairage chambre --GEA.add({{"power-", id["PRISE_TELE"], 20},{"Global", "Tele", "On"}}, -1, "",{{"Time", "21:00", "23:00"}, {"turnOn",id["ECL_SALON_PHARE"]},{"Global", "Tele", "Off"},{"VirtualDevice", id["MODE_MAISON"], 1},{"Close",id["VOLETS_SALON"],100},{"Close",id["VOLETS_CUISINE"],100},{"VirtualDevice", id["GESTION_CAMERA"], 6}}) -- Gestion Sonos GEA.add({"Power+", id["PRISE_TELE"], 80}, -1, "", {{"Global", "Tele", "On"},{"VirtualDevice", id["SONOS_REMOTE"], 8}}) -- Fin Mon GEA Instantanée -----------------------------------------------------
  11. je suis d'accord avec toi, mais c'était pour éviter de faire trop de boutons. J'avais rassemblé de 0 à 5 jours ensemble. peut être que cela charge le système pour rien. si on fait ce que tu proposes ca donne historique du jour : la dernière heure, et aujourd'hui. Interrogé toutes les 30 min = 2/h * 24h = 48 appels / j historique des 5 derniers jours : interrogé 1 fois par jour à 2h : 5 appels / j + 1 pour Hier historique des 10 derniers jours : interrogé 1 fois par jour à 3h : 10 appels / j (! de ne pas rentrer en conflict avec historique du jour et prévision, mais c'est gérable facilement grâce à GEA) prévision 3 jours : interrogé toutes les 30 min = 2/h*24h = 48 appels / j = 112, il y a de la marge on pourrait donc augmenter en faisant; historique du jour : la dernière heure, et aujourd'hui. Interrogé toutes les 15 min = 4h * 24h = 96 appels / j historique des 5 derniers jours : interrogé 1 fois par jour à 2h : 5 appels / j + 1 pour Hier historique des 10 derniers jours : interrogé 1 fois par jour à 3h : 10 appels / j (! de ne pas rentrer en conflict avec historique du jour et prévision, mais c'est gérable facilement grâce à GEA) prévision 3 jours : interrogé toutes les 15 min = 4/h*24h = 96 appels / j = 208 faut faire attention que l'appel de 10jours ne tombe pas la meme minute que l'historique ou que la prevision, sinon tu dépasses les 10 appels minutes. avec 2 clé on est tranquille ... et ca prends 2secondes pour en créer une. tiens une question pour les icônes, comment faire pour que les icônes change uniquement quand appuie sur le bouton calcul ? car la chaque appuie sur prevision ou historique remets l'icone dans un autre état. faut mettre cela dans le main loop ?
  12. oui sauf que le bouton 10jours fait 10appel en moins d'1 minute, donc tu peux pas le coupler avec un autre, sauf faire un fibaro(sleep) dans la boucle. (pourquoi pas..) pour le reste - la mise à jour depends de la station que tu interroges j'ai pu lire, certaines font ca toutes les 5mn, d'autres tous les 30mn, c'est pour cela qu'avec GEA je fais un appel toutes les 30mn. Ca suffit largement et ca permet de ne pas saturer les appels. - prevision 3jours, je sais pas trop la fréquence de mise à jours, mais bon j'ai regler mon GEA pour qu'avec la meme clé que le bouton 1 ca passe.
  13. hop V1.2 avec les icônes (icônes léger en attente ;-) j'ai passer la prévisions à 2 jours - mais vous pouvez la remonter à 3 si vous le souhaitez. je trouve que 2jours de sol très sec c'est suffisant pour déclencher un arrosage à j-2 pour éviter l'import du VD à rajouter au debut ---- id des icones --- local Icone_leger = 1100 local Icone_important = 1100 local Icone_off = 1099 puis suivant le passage de la variable "arrosage" Num_Icone = Icone_off ou Num_Icone = Icone_important ou Num_Icone = Icone_leger suivant le cas et à la fin fibaro:call(selfId , "setProperty", "currentIcon", Num_Icone) Calcul_Arrosage V1.2.vfib
  14. Oui c est sympa. Par contre c est pas forcément lié (goutte àgoutte et arroseur) Obliger de demander àCouillerot de nous faire un icône arossage long/court. :-)
  15. oui je vois bien ;-) d'ailleurs j'ai trouvé comment exporter le VD... en fait sous SAFARI ca bug, sous CHROME c'était ok voici le code ligne 13 à 43 bouton 5jours -- precipitations derniere heure et aujourd'hui -- local response ,status, err = WGROUND:GET("/api/"..cle_api.."/conditions/lang:FR/q/pws:"..pws..".json") local jsonTable = json.decode(response) fibaro:debug(jsonTable.current_observation.precip_1hr_metric) if tonumber(jsonTable.current_observation.precip_1hr_metric) ~= nil then rain1hour = jsonTable.current_observation.precip_1hr_metric end fibaro:debug(jsonTable.current_observation.precip_today_metric) if tonumber(jsonTable.current_observation.precip_today_metric) ~= nil then raintoday = jsonTable.current_observation.precip_today_metric end -- precipitations hier -- local response ,status, err = WGROUND:GET("/api/"..cle_api.."/history_".. os.date("%Y%m%d",os.time()-1*24*3600) .."/lang:FR/q/pws:"..pws..".json") local jsonTable = json.decode(response) fibaro:debug(os.date("%Y%m%d",os.time()-1*24*3600)) fibaro:debug(jsonTable.history.dailysummary[1].precipm) if tonumber(jsonTable.history.dailysummary[1].precipm) ~= nil then rainyesterday = rainyesterday + jsonTable.history.dailysummary[1].precipm end -- precipitations des 5 derniers jours -- for i = 1, previous_day do local response ,status, err = WGROUND:GET("/api/"..cle_api.."/history_".. os.date("%Y%m%d",os.time()-i*24*3600) .."/lang:FR/q/pws:"..pws..".json") local jsonTable = json.decode(response) fibaro:debug(os.date("%Y%m%d",os.time()-i*24*3600)) fibaro:debug(jsonTable.history.dailysummary[1].precipm) if tonumber(jsonTable.history.dailysummary[1].precipm) ~= nil then rain5days = rain5days + jsonTable.history.dailysummary[1].precipm end end ligne 7-15 boutons 10jours for i = 1, previous_10days do local response ,status, err = WGROUND:GET("/api/"..cle_api.."/history_".. os.date("%Y%m%d",os.time()-i*24*3600) .."/lang:FR/q/pws:"..pws..".json") local jsonTable = json.decode(response) fibaro:debug(os.date("%Y%m%d",os.time()-i*24*3600)) fibaro:debug(jsonTable.history.dailysummary[1].precipm) if tonumber(jsonTable.history.dailysummary[1].precipm) ~= nil then rain10days = rain10days + jsonTable.history.dailysummary[1].precipm end end je touche pas le bouton prévisions car je pense pas que ca buggera celui la.
  16. peut être un problème sur la station que tu interroges. voici la V1.1 suite à tes conseils. Calcul_Arrosage V1.1.vfib
  17. fait toi plaisir :-) si ca se trouve c'est deja compatible ? par contre une remarque, ou plutôt un ordre : passe en 4.042 !!!!!!!
  18. Pluviométrie Avec WeatherUnderground Bonjour, Sur une idée originale de Steven, qui remonte les données d'un pluviomètre Netatmo et récupère les previsions depuis le site de WU, j'ai crée ce VD qui permet de s'affranchir de l'achat d'un pluviomètre et de faire appel uniquement à WU pour récupérer les précipitations (de la dernière heure, du jour, d'hier, des 5 derniers jours et des 10 derniers jours) d'une station WU proche de chez vous; Suite à ca on fait un rapide calcul (à affiner selon vos besoins) pour mettre à jour une variable globale. (credit Steven aussi - je n'ai pas encore affiner ce calcul avec les datas que je remonte - ca sera une V2) Cette variable sert ensuite chez moi à déclencher l'arrosage automatique. HC2 en V4 (et 3.6 après le test de Jojo) 1ère étape - Creation des clefs WU à l'adresse ici Pour crée un compte : http://www.wundergro...pi/d/login.html Pour trouver sa "station ID" : http://www.wundergro...dCountry=France La création du compte va vous permettre d'obtenir une "cle api" Et la recherche de la station la plus proche de chez vous, une station ID (attention à bien choisir une station qui mesure à les precipitations .. ;-) Important Les clés gratuites permettent 500 appels par jour et 10appels par minutes. Dans le VD vous avez 4 boutons - Today qui fait 1 appel - Last Days, qui fait 10 appels - Next 2 days, qui fait 1 appel il faut donc faire attention à vos clicks :-) si vous dépasser la limite, c'est le carton jaune, au bout de 3 carton jaune, c'est le rouge et la clé est HS. (Perso ce que j'ai fait c'est créer une clé pour les 10jours. et une autre pour les 2 autres boutons, et j'utilise GEA pour cliquer à intervalle régulier sur les boutons, sans dépasser les 500 appels jours / clef.) -- Arrosage GEA.add(true, 10*60, "", {{"VirtualDevice", id["CALCUL_ARROSAGE"], 2},{"Repeat"}}) -- Historique Pluie du Jour et derniere heure GEA.add(true, 30, "", {{"Time", "02:06", "02:07"},{"VirtualDevice", id["CALCUL_ARROSAGE"], 5}}) -- Historique Pluie jusqu'à 10jours GEA.add(true, 10*60, "", {{"VirtualDevice", id["CALCUL_ARROSAGE"], 9},{"Repeat"}}) -- Prévisions à 2 jours ce qui donne 300 appels par jour et max 10appels /mn - donc ok pour 1clef, sauf si l'appel 10jours passe la meme minutes qu'un autre appel ... Pour ceux qui n'ont pas GEA, voici ce que vous pouvez mettre dans le main loop (j'ai pas testé donc merci pour vos retours si ça fonctionne pas) while true do local Var_Heure = os.date("%H:%M") local Var_Min = os.date("%M") --fibaro:debug("heure OS : " ..Var_Heure) if Var_Heure == "02:06" then fibaro:call(fibaro:getSelfId(), "pressButton", "5") fibaro:debug("heure OS : " ..Var_Heure .."Historique des derniers jours récupéré") end if Var_Min =="00" or Var_Min == "15" or Var_Min == "30" or Var_Min == "45" then fibaro:call(fibaro:getSelfId(), "pressButton", "2") fibaro:debug("heure OS : " ..Var_Heure .."Historique du jour récupéré") fibaro:call(fibaro:getSelfId(), "pressButton", "9") fibaro:debug("heure OS : " ..Var_Heure .."Prévisions récupérées") end fibaro:sleep(60*1000) -- sleep 1 min end 2eme étape - Importer le VD - Modifier la clé (ou les clefs) API et la Station ID dans tous les boutons (sauf calcul) - Modifier l'id de votre smartphone dans le bouton calcul arrosage - Modifier les ID de vos icones dans la bouton calcul arrosage 3eme étape - Créer une variable "Arrosage" avec 3 valeurs Non, Leger, Important J'utilise les icônes de Couillerot merci à lui. Merci. Mon 1er VD partagé sur le forum. En remerciement pour tout ce que je prends/deja pris et ce que j'apprends ! V.1.0 V.1.1: optimisation sur conseil de jojo V.1.2: integration des icônes en fonction de l'arrosage nécessaire (toujours sur idée de jojo) V.1.3: meilleure gestion des appels et 1clé WU peut suffire V.1.4: fine tuning V.1.5: optimisation des appels historiques sur 1 bouton (merci jojo) -- 15 Mai 2015 -- V2.1 : ici Calcul_Arrosage V1.5.vfib
  19. Oui c était l idée mais je ça sera demain je pense car peu le temps d ici ce soir. EDIT : ici http://www.domotique-fibaro.fr/index.php/topic/4740-pluviométrie-avec-weatherunderground/
  20. Nous y sommes ;-) Voila le code pour les precipitations antérieurs et futures basées uniquement sur WU. peut être qu'il faut que je créer un autre topic pour cela. (en meme temps j'ai bien pollué le tuto de steven depuis ) Un bouton pour 1heure, aujourd'hui, hier et les 5 derniers jours local cle_api = "key1" -- cle api de chez Wunderground local pws = "Your station" -- station ID local WGROUND = Net.FHttp("api.wunderground.com",80) local previous_day = 5 rain1hour = 0 raintoday = 0 rain5days = 0 rainyesterday = 0 -- 7 calls API WU ici +1 Prevision = 8 -- precipitations derniere heure et aujourd'hui -- local response ,status, err = WGROUND:GET("/api/"..cle_api.."/conditions/lang:FR/q/pws:"..pws..".json") local jsonTable = json.decode(response) fibaro:debug(jsonTable.current_observation.precip_1hr_metric) rain1hour = jsonTable.current_observation.precip_1hr_metric fibaro:debug(jsonTable.current_observation.precip_today_metric) raintoday = jsonTable.current_observation.precip_today_metric -- precipitations hier -- local response ,status, err = WGROUND:GET("/api/"..cle_api.."/history_".. os.date("%Y%m%d",os.time()-1*24*3600) .."/lang:FR/q/pws:"..pws..".json") local jsonTable = json.decode(response) fibaro:debug(os.date("%Y%m%d",os.time()-1*24*3600)) fibaro:debug(jsonTable.history.dailysummary[1].precipm) rainyesterday = rainyesterday + jsonTable.history.dailysummary[1].precipm -- precipitations des 5 derniers jours -- for i = 1, previous_day do local response ,status, err = WGROUND:GET("/api/"..cle_api.."/history_".. os.date("%Y%m%d",os.time()-i*24*3600) .."/lang:FR/q/pws:"..pws..".json") local jsonTable = json.decode(response) fibaro:debug(os.date("%Y%m%d",os.time()-i*24*3600)) fibaro:debug(jsonTable.history.dailysummary[1].precipm) rain5days = rain5days + jsonTable.history.dailysummary[1].precipm end fibaro:debug(" Il est tombé " .. rain1hour .. " mm depuis 1 heure") fibaro:debug(" Il est tombé " .. raintoday .. " mm aujourd'hui") fibaro:debug(" Il est tombé " .. rainyesterday .. " mm hier") fibaro:debug(" Il est tombé " .. rain5days .. " mm depuis " .. previous_day .. " jours") -- label -- fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblHeure.value", rain1hour .. " ") fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblJour.value", raintoday .. " ") fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblHier.value", rainyesterday .. " ") fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lbl5.value", rain5days .. " ") un bouton pour les 10 derniers jours local cle_api = "key2" -- cle api de chez Wunderground local pws = "Your station " -- station ID local WGROUND = Net.FHttp("api.wunderground.com",80) local previous_10days = 10 -- max 10 calls per minute rain10days = 0 for i = 1, previous_10days do local response ,status, err = WGROUND:GET("/api/"..cle_api.."/history_".. os.date("%Y%m%d",os.time()-i*24*3600) .."/lang:FR/q/pws:"..pws..".json") local jsonTable = json.decode(response) fibaro:debug(os.date("%Y%m%d",os.time()-i*24*3600)) fibaro:debug(jsonTable.history.dailysummary[1].precipm) rain10days = rain10days + jsonTable.history.dailysummary[1].precipm end fibaro:debug(" Il est tombé " .. rain10days .. " mm depuis " .. previous_10days .. "jours") fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lbl10.value", rain10days .. " ") Un bouton prevision (celui de Steven) local max_day = 3 -- 3 par défaut local cle_api = "key1" -- cle api de chez Wunderground local pws = "your station" -- station ID local WGROUND = Net.FHttp("api.wunderground.com",80) local response ,status, err = WGROUND:GET("/api/"..cle_api.."/forecast/lang:FR/q/pws:"..pws..".json") local rain = -1 if (response ~= nil) then rain = 0 local jsonTable = json.decode(response) max_day = max_day + 1 if (#jsonTable.forecast.simpleforecast.forecastday < max_day) then max_day = #jsonTable.forecast.simpleforecast.forecastday end for i = 1, max_day do fibaro:debug(jsonTable.forecast.simpleforecast.forecastday[i].conditions) fibaro:debug(jsonTable.forecast.simpleforecast.forecastday[i].qpf_allday.mm) rain = rain + jsonTable.forecast.simpleforecast.forecastday[i].qpf_allday.mm end fibaro:debug("Prévision pour les " .. (max_day-1) .. " prochains jours : " .. rain .. " mm") end fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblPrevu.value", rain) je vous conseille d'avoir 2 clé d'API WU, car on est limité à 10 appels minutes pour la clé gratuite. et de jouer avec les boutons "en bon pere de famille" :-) sinon c'est le carton rouge assuré. on doit probablement pouvoir optimisé les appels, mais mes competences étant niveau 0.1, je vais difficilement pouvoir faire mieux; A++
  21. en parralle je cherche à exploiter les datas CONDITIONS http://www.wunderground.com/weather/api/d/docs?d=data/conditions pour remonter les données precip_1hr_metric precip_today_metric sauf que j'arrive pas a décortiquer le Json je pensais faire simplement un local jsonTable = json.decode(response) fibaro:debug(jsonTable.conditions.precip_today_metric) mais ca marche pas. vous avez une idée ? l'idée est de proposer un VD 'précipitations" au fofo avec uniquement les datas de WU. 1hour, Aujourd'hui, Hier, Il y a 5 jours, Il y a 10jours, j'ai les 3 derniers, me manquent ceux du Json "Conditions" EDIT ; je commence à mieux comprendre la syntaxe du JSON ... :-) je l'ai
  22. petite question quand je suis dans ma boucle, je voudrai si i =1 (donc Hier) récupérer la valeiur for i = 1, previous_day do local response ,status, err = WGROUND:GET("/api/"..cle_api.."/history_".. os.date("%Y%m%d",os.time()-i*24*3600) .."/lang:FR/q/pws:"..pws..".json") local jsonTable = json.decode(response) fibaro:debug(os.date("%Y%m%d",os.time()-i*24*3600)) fibaro:debug(jsonTable.history.dailysummary[1].precipm) rain5days = rain5days + jsonTable.history.dailysummary[1].precipm if (i = 1) then rainyesterday = JsonTable.history.dailysummary[1].precipm end end sauf qu'il me dit [ERROR] 08:57:45: line 23: ')' expected near '=' ligne 23, c'est la ligne de mon if (i=1 ...) qu'est ce que j'ai loupé ? merci
  23. ha non dommage, si je comprends bien c'est le min/max/average d'une periode mais pas un cumul. par ce que sinon c'est un carton jaune !
  24. avec http://www.wunderground.com/weather/api/d/docs?d=data/planner on peut aussi recuperer les 30 derniers jours roulants ;-) je regarde ca dans les jours qui viennent
  25. ok clair, faudra pas que GEA appuie sur le bouton toutes les 30s sinon WU va nous jeter ... une compte gratuit c'est 500 demandes par jour, l'historique fait deja 7 demandes + 1 previsions ... max 62 "click" par jour donc max toutes les 30mn
×
×
  • Créer...