Aller au contenu

Dragoniacs

Membres confirmés
  • Compteur de contenus

    554
  • Inscription

  • Dernière visite

Réputation sur la communauté

125 Excellent

À propos de Dragoniacs

  • Rang
    Membre accro
  • Date de naissance 16/04/1982

Profile Information

  • Sexe :
    Femme
  • Ville :
    Chatou
  • Intéret :
    Furets, poissons, jeux vidéo (ZELDAAAAAAAAAAAAAAAAA)
  • Box
    Home Center 2
  • Version
    La dernière, mais pas en béta :)

Visiteurs récents du profil

619 visualisations du profil
  1. Dragoniacs

    Infos Météo avec Weatherbit

    Pareil ce matin chez moi. A priori y a une info qui n'est plus dispo dans le json, et du coup le VD n'arrive pas à concaténer les lignes. Il va falloir que je mette en place une vérification des infos pour éviter ça. J'espère que ça n'arrivera pas trop souvent, et que cet API est fiable... Envoyé de mon SM-A530F en utilisant Tapatalk
  2. Dragoniacs

    Infos Météo avec Weatherbit

    @Did passe à la V2 et tout ira mieux. J'ai raté mon code sur le jour de la semaine, c'est corrigé. @pepite voilà, voilà, c'est dispo dans le 1er post
  3. Dragoniacs

    Infos Météo avec Weatherbit

    La V2.0 est arrivée !!! Enjoy
  4. Dragoniacs

    Infos Météo avec Weatherbit

    La scène ne se lance qu'a la fréquence de mise à jour que tu as défini. 30min si tu n'as rien changé. Normalement il n'y a qu'une instance à la fois. Peux tu m'envoyer une photo du debug de la scène ? EDIT : ne te fatigue pas, j'ai trouvé le bug, je suis dessus.
  5. Dragoniacs

    Infos Météo avec Weatherbit

    Bon j'ai plein d'idées pour améliorer mon VD mais pas eu le temps de bien finaliser tout ça. Il faudra patienter jusque demain pour la V2.0 Envoyé de mon BTV-W09 en utilisant Tapatalk
  6. Dragoniacs

    Infos Météo avec Weatherbit

    Oups, oui, tu as raison @Barelle, je vais corriger
  7. Dragoniacs

    Infos Météo avec Weatherbit

    J'ai mis un nota dans le 1er post pour tenir compte des SONOSiens Oui @Did, il faut cliquer sur les poubelles en face de chaque variable, mais sans toucher à la disquette !
  8. Dragoniacs

    Infos Météo avec Weatherbit

    Ca m'a l'air d'être ça Je n'ai pas de SONOS pour tester, mais si tu remplaces l'ancienne variable "speach" par la nouvelle, ça devrait le faire.
  9. Dragoniacs

    Infos Météo avec Weatherbit

    Lapin ou Sonos, c'est pareil : tu fais lire la variable globale "wbit_today_sp" pour la météo du jour, ou "wbit_tomorrow_sp" pour la météo du lendemain. Après je ne sais pas comment tu actives la lecture via Sonos: un VD ou GEA ?
  10. Dragoniacs

    Infos Météo avec Weatherbit

    C'est fait ! Il a la classe mon VD maintenant
  11. Dragoniacs

    Banque Icones Hc2 Et Hcl

    Topissime ! Merci @Did
  12. Dragoniacs

    Banque Icones Hc2 Et Hcl

    J'ai trouvé cette image sur leur page Facebook Ca serait possible de l'avoir dans un rond pour le VD et sur un "clap" pour la scène ?
  13. Dragoniacs

    Infos Météo avec Weatherbit

    On a droit à 1000 requêtes par jour, c'est large Merci pour ta demande d'icône. Je suis en train de bosser une V2.0 avec des notifications.
  14. Dragoniacs

    Yams Wu - Yet Another Meteo Station (Wunderground Version)

    Voici ma modeste contribution, très très fortement inspirée des YAMS et WeatherBit de @sebcbien et @Dgille que je salue & remercie chaleureusement
  15. Dragoniacs

    Infos Météo avec Weatherbit

    Bonjour à tous, Suite à la disparition de l'API Wunderground, je me suis permise de reprendre en partie le YAMS de @sebcbien, en utilisant également le travail de @Dgille, afin de nous concocter un nouveau VD de gestion météo. Cela surtout pour me permettre de faire de nouveau parler mon lapin Codes sources : https://www.domotique-fibaro.fr/topic/6446-yams-wu-yet-another-meteo-station-wunderground-version/ https://www.domotique-fibaro.fr/topic/13120-météo-avec-weatherbitio/ Prérequis Ouvrir un compte sur le site https://www.weatherbit.io/ Dans vos paramètres de compte, vous devrez récupérer votre clé pour pourvoir utiliser les API Installation Importez le VD. WeatherBit_Dragoniacs_V2.vfib Créez une nouvelle scène, et collez le code suivant : ------------------------------------------------------------------------------- -- SCENE REALISEE PAR DRAGONIACS POUR www.domotique-fibaro.fr -- UTILISATION LIBRE DE DROITS -- MERCI A Dgille & Sebcbien POUR LES CODES DONT JE ME SUIS FORTEMENT INSPIREE -- VERSION 2.0 ------------------------------------------------------------------------------- -- Quelques paramétres à fixer WBApikey = "xxxxxxxxxxxxxxxxxxxx" -- API Key WeatherBit WBCityid ="" -- Code ville, sinon vide pour latitude longitude de la HC2 WBlang = "fr" WDelai = 30 -- Période d'actualisation en minute (minimum 2, max 45) -- Déclaration des variables globales (Merci Steven !!) VG={getValue=function(self,b)return fibaro:getGlobalValue(b)end,setValue=function(self,b,c)fibaro:setGlobal(b,c)end,getDateModification=function(self,b)return os.date("*t",fibaro:getGlobalModificationTime(b))end,supprimer=function(self,b)api.delete("/globalVariables/"..b)end,modifier=function(self,b,c,d)local e={}e.value=tostring(c)e.isEnum=false;if type(d)~="nil"then e.isEnum=true;e.enumValues=d end;api.put("/globalVariables/"..b,e)end,ajouter=function(self,b,c,d)local f=0;if type(d)~="nil"then f=1 end;api.post("/globalVariables",{name=b,isEnum=f})self:modifier(b,c,d)end,traiter=function(self,b,c,d)if fibaro:getGlobalValue(b)==nil then self:ajouter(b,c,d)elseif type(d)=="nil"then self:setValue(b,c)else self:modifier(b,c,d)end end,getInfo=function(self,b)return api.get("/globalVariables/"..b)end} -- On évite la surcharge if fibaro:countScenes() > 1 then fibaro:abort() end -- Mise à jour des tableaux function getResponseData(Vglobal, url, method, body, func) VG:traiter(Vglobal, "") fibaro:debug(fibaro:getGlobalValue(Vglobal)) local http = net.HTTPClient() http:request(url, { options = { method = method, headers = { ["User-Agent"] = "Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/64.0", ["Content-Type"] = "application/json", }, data = body }, success = function(response) fibaro:debug(" Analyse de la réponse du site..") if (response.status==200) then VG:setValue(Vglobal,response.data) fibaro:debug("Mise à jour réussie")-- : .. "..fibaro:getGlobalValue(Vglobal)) else fibaro:debug ("Erreur de récupération des données :"..response.status) fibaro:abort() end end, error = function(err) fibaro:debug("Erreur.."..response.status) fibaro:abort() end, }) end -- Boucle principale function Update() -- Construction de l'URL local url_today, url_tomorrow if (WBCityid=="" )then fibaro:debug ("Pas de code ville - Utilisation de la localisation de la HC2") local loc=api.get("/settings/location") url_today = "https://api.weatherbit.io/v2.0/current?lat="..loc.latitude.."&lon="..loc.longitude.."&lang="..WBlang.."&key="..WBApikey url_tomorrow = "https://api.weatherbit.io/v2.0/forecast/daily?lat="..loc.latitude.."&lon="..loc.longitude.."&lang="..WBlang.."&key="..WBApikey else fibaro:debug ("Utilisation du code ville fourni.") url_today = "https://api.weatherbit.io/v2.0/current?city_id="..WBCityid.."&lang="..WBlang.."&key="..WBApikey url_tomorrow = "https://api.weatherbit.io/v2.0/forecast/daily?city_id="..WBCityid.."&lang="..WBlang.."&key="..WBApikey end fibaro:debug ("Lancement de la scéne") VG:traiter("wbit_today_sp","") VG:traiter("wbit_tomorrow_sp","") fibaro:debug ("Appel de l'URL du jour :"..url_today) getResponseData("weatherbit_today",url_today, "GET", nil) fibaro:debug ("Appel de l'URL des prévisions :"..url_tomorrow) getResponseData("weatherbit_tomorrow",url_tomorrow, "GET", nil) setTimeout(Update,WDelai*60*1000 -13*1000) end fibaro:debug("Scene activée par le VD") Update() N'oubliez pas d'inscrire votre clé. Vous pouvez mettre le code de votre ville (à trouver sur le site de WeatherBit), ou laisser le champ vide pour utiliser la postition de la HC2. Les variables globales son créées par la scène. Dans le mainloop du VD, il faut préciser le numéro de la scène et la fréquence de mise à jour. Et sourtout, n'oubliez pas d'utiliser les icônes, gentillement mises à dispo par @Did Nota : pour ceux qui utilisent le VD SONOS, il faut remplacer la ligne qui était utilisée avec le YAMS Wunderground local meteo_day = fibaro:getGlobalValue("Meteo_Day_Speech") par local meteo_day = fibaro:getGlobalValue("wbit_today_sp") Publication de la V2.0 : - Possibilité d'utiliser des notifications - Other minor fixes Si vous avez déjà installé le V1.0, remplacez simplement le code du main loop par celui ci : ------------------------------------------------------------------------------- -- VD REALISE PAR DRAGONIACS POUR www.domotique-fibaro.fr -- UTILISATION LIBRE DE DROITS -- MERCI A Dgille & Sebcbien POUR LES CODES DONT JE ME SUIS FORTEMENT INSPIREE -- VERSION 2.0 ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- -- PARAMETRAGE UTILISATEUR ------------------------------------------------------------------------------- WSceneId = 629 -- Id de la scéne pour actualisation de la météo WPushMatin = "07:00" -- Heure d'envoi des infos le matin, laisser vide si pas de push WPushSoir = "17:00" -- Heure d'envoie des infos le soir, laisser vide si pas de push WPushDemain = "21:00" -- Heure d'envoi des infos du lendemain, laisser vide si pas de push WPush_type = {"SMS","Push","eMail"} -- Préciser le type de notification souhaitée WPush_Email = 2 -- Préciser le numéro de user qui doit recevoir les email WPush_Phone = 592 -- Préciser le numéro du téléphone qui doit recevoir les push WPush_VG = "Pushover" -- Préciser nom de la variable globale utilisée dans le VD de SMS WPush_VD = "" --Préciser l'ID du VD de SMS, ou laisser vide si pas besoin WPush_VD_button = "" --Préciser le numéro du bouton d'action du VD de SMS, ou laisser vide si pas besoin WPush_Prio = "0" --Si vous utiliser le VD Pushover avec gestion des priorités, préciser le niveau de priorité choisi ------------------------------------------------------------------------------- -- FIN DU PARAMETRAGE UTILISATEUR ------------------------------------------------------------------------------- VD = fibaro:getSelfId() -- Traductions function Jours(J) if J > 7 then J = 1 end local Nom_jour = {"Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimanche"} return Nom_jour[J] end -- Gestion des arrondis pour l'afichage & le speak function round(num, numDecimalPlaces) local mult = 10^(numDecimalPlaces or 0) return math.floor(num * mult + 0.5) / mult end -- Lance la scene d'actualisation fibaro:debug ("Lancement de la scène") fibaro:startScene(WSceneId) -- On patiente un peut fibaro:sleep (10*1000) -- récupération des données et actualisation des labels fibaro:debug ("Actualisation des labels") today_datas = fibaro:getGlobal("weatherbit_today") tomorrow_datas = fibaro:getGlobal("weatherbit_tomorrow") jsonTable0 = json.decode(today_datas) jsonTable1 = json.decode(tomorrow_datas) fibaro:call(VD,"setProperty","ui.lblMAJ.value","Observation: ".. jsonTable0.data[1].city_name .." | ".. jsonTable0.data[1].ob_time) fibaro:call(VD,"setProperty","ui.lblTemp.value","T° Ressentie: ".. jsonTable0.data[1].app_temp .."°C | "..jsonTable0.data[1].rh .."% Humidité") fibaro:call(VD,"setProperty","ui.lblVent.value","Vent: ".. math.floor(jsonTable0.data[1].wind_spd*3.600) .." km/h | Pluie : ".. jsonTable0.data[1].precip .." mm/h") fibaro:call(VD,"setProperty","ui.lblCiel.value",Jours(tonumber(os.date("%w"))) .." : ".. jsonTable0.data[1].weather.description) fibaro:call(VD,"setProperty","ui.lblPrevi.value",round(jsonTable1.data[1].min_temp,0) .."°C/".. round(jsonTable1.data[1].max_temp,0) .."°C | ".. round(jsonTable1.data[1].precip,0) .."mm | ".. math.floor(jsonTable1.data[1].wind_spd*3.600) .."Km/h (".. jsonTable1.data[1].wind_cdir ..")") fibaro:call(VD,"setProperty","ui.lblCiel2.value",Jours(tonumber(os.date("%w")+1)) .." : ".. jsonTable1.data[2].weather.description) fibaro:call(VD,"setProperty","ui.lblPrevi2.value",round(jsonTable1.data[2].min_temp,0) .."°C/".. round(jsonTable1.data[2].max_temp,0) .."°C | ".. round(jsonTable1.data[2].precip,0) .."mm | ".. math.floor(jsonTable1.data[2].wind_spd*3.600) .."Km/h (".. jsonTable1.data[2].wind_cdir ..")") fibaro:call(VD,"setProperty","ui.lblCiel3.value",Jours(tonumber(os.date("%w")+2)) .." : ".. jsonTable1.data[3].weather.description) fibaro:call(VD,"setProperty","ui.lblPrevi3.value",round(jsonTable1.data[3].min_temp,0) .."°C/".. round(jsonTable1.data[3].max_temp,0) .."°C | ".. round(jsonTable1.data[3].precip,0) .."mm | ".. math.floor(jsonTable1.data[3].wind_spd*3.600) .."Km/h (".. jsonTable1.data[3].wind_cdir ..")") fibaro:call(VD,"setProperty","ui.lblMAJVD.value","Mise à jour: "..os.date("%d/%m").." "..os.date("%H:%M")) -- Définition des textes audio local today_speach = Jours(tonumber(os.date("%w"))) .." : " .." Température entre ".. round(jsonTable1.data[1].min_temp,0) .." et ".. round(jsonTable1.data[1].max_temp,0) .." degrès. " .." Vent de ".. math.floor(jsonTable1.data[1].wind_spd*3.600) .." kilomètres par heure, en direction ".. jsonTable1.data[1].wind_cdir_full ..". " .." Précipitations de ".. round(jsonTable1.data[1].precip,0) .. " milimètres. " local tomorrow_speach = Jours(tonumber(os.date("%w"))+1) .." : " .." Température entre ".. round(jsonTable1.data[2].min_temp,0) .." et ".. round(jsonTable1.data[2].max_temp,0) .." degrès. " .." Vent de ".. math.floor(jsonTable1.data[2].wind_spd*3.600) .." kilomètres par heure, en direction ".. jsonTable1.data[2].wind_cdir_full ..". " .." Précipitations de ".. round(jsonTable1.data[2].precip,0) .. " milimètres. " -- Pushs et verbalisation des infos fibaro:setGlobal("wbit_today_sp",today_speach) fibaro:setGlobal("wbit_tomorrow_sp",tomorrow_speach) function Notification(message,param) local message = message or "<vide>" for _, notif in ipairs(param) do -- Envoi Push if notif == "Push" and WPush_Phone ~="" then fibaro:debug("Envoi du push") fibaro:call(WPush_Phone,"sendPush",message) -- Envoi Email elseif notif == "eMail" and WPush_Email~="" then fibaro:debug("Envoi du mail") fibaro:call(WPush_Email,"sendEmail","Infos WeatherBit",message) -- Envoi SMS elseif notif == "SMS" and WPush_VG~="" then if WPush_Prio ~="" then message = "&"..WPush_Prio.."&"..message end fibaro:debug("Envoi du SMS") fibaro:setGlobal(WPush_VG, message) if WPush_VD ~="" then fibaro:call(WPush_VD,"pressButton",WPush_VD_button) end end end end if WPushMatin ~="" and os.date("%H:%M") == WPushMatin then fibaro:debug("Envoie du push matin") Notification(today_speach,WPush_type) end if WPushSoir ~="" and os.date("%H:%M") == WPushSoir then fibaro:debug("Envoie du push soir") Notification(today_speach,WPush_type) end if WPushDemain ~="" and os.date("%H:%M") == WPushDemain then fibaro:debug("Envoie du push demain") Notification(tomorrow_speach,WPush_type) end fibaro:sleep(50*1000)
×