Welcome to Domotique-fibaro

 

Inscrivez-vous maintenant pour accéder à toutes nos fonctionnalités. Une fois inscrit et connecté, vous serez en mesure de contribuer à ce site en soumettant votre propre contenu ou en répondant au contenu existant. Vous serez en mesure de personnaliser votre profil, de recevoir des points de réputation comme une récompense pour la soumission de contenu, tout en communiquant avec d'autres membres via votre boîte de réception privée, et bien plus encore! Ce message sera supprimé une fois que vous vous êtes connecté.

 

Register now to gain access to all of our features. Once registered and logged in, you will be able to contribute to this site by submitting your own content or replying to existing content. You'll be able to customize your profile, receive reputation points as a reward for submitting content, while also communicating with other members via your own private inbox, plus much more! This message will be removed once you have signed in.

pepite

Membres confirmés
  • Compteur de contenus

    5 906
  • Inscription

  • Dernière visite

Tout ce qui a été posté par pepite

  1. @samhuin, donc en fonction de ce que tu as parametre dans le VD, la VG se met à OUI ou non ? Donc pour moi, tu testes la variable comme tu as fait et ce sera bon non ? Je n'ai aps installé le VD, je n'en sais pas plus la-dessus. Dans les lignes que tu as partagées dans ton post précédent on voit bien que la VG passe à oui, si le rapport besoin/quantite est OK
  2. On est 2 ;-)
  3. Bonjour, Avis aux possesseurs de Tesla ou futur possesseurs. Juste dingue non ;-) http://www.ca-sert-a-quoi.com/domotique/tuto-piloter-une-tesla-avec-la-domotique-jeedom/
  4. Salut @fredokl, Tu peux essayer cela, relance de la tache d'extinction si detection de mouvement. On peut peut-etre optimisé, mais je suis parti sur tes conditions. local lampe_var_couloir_off = GEA.add({id["DETECTEUR_MOUVEMENT_COULOIR"],{"Global","Jour_Nuit","Nuit"}, {"value+", id["LAMPE_VAR_COULOIR"],0}},1,"", {{"Inverse"}, {"turnOff", id["LAMPE_VAR_COULOIR"]}, {"NotStarted"}}) GEA.add({id["DETECTEUR_MOUVEMENT_COULOIR"],{"Global","Jour_Nuit","Nuit"}},-1,"", {{"Time", "20:00", "22:00"}, {"value", id["LAMPE_VAR_COULOIR"],20}, {"RestartTask", lampe_var_couloir_off}}) GEA.add({id["DETECTEUR_MOUVEMENT_COULOIR"],{"Global","Jour_Nuit","Nuit"}},-1,"", {{"Time", "20:00", "22:00"}, {"RestartTask", lampe_var_couloir_off}})
  5. Oui ok pour la défaillance du module, et pour la defaillance de la box ? Pareil ? Il a du bien chauffer ce we non ? ;-)
  6. Bonjour, Tu utilises quel VD Arrosage ? Ce n'est pas prévu ? Pour moi GEA ne va pas relancer l'arrosage si la variable globale est à non ? Dans te slignes précédentes, tu testais la variable Arrosage ?
  7. Certainement, de bonne augure ou non, on le saura avec le temps. Je trouve dommage les ruptures de stock de nouveaux produits.
  8. Bonjour, La durée est MAX de 30 minutes ? Elle varie beaucoup ? GEA est une scene "normal" en lua tu dois donc pouvoir récupérer la valeur de ta VG ;-) Pour plus d lisibilité je ferais comme ceci local duree_arrosage = tonumber(fibaro:getGlobalValue("duree_arrosage")) GEA.add(id["JARELECTRO1"], 60*duree_arrosage, "", {{"turnOff",id["JARELECTRO1"]}})
  9. Bonjour les bricoleurs, Alors alors, patience ;-) http://blog.domadoo.fr/65604-cubit-metre-connecte-revolutionne-bricolage/
  10. Super merci :-) Au fait, tu as prévu la panne de la domotique ?
  11. Patientons, si ca peut nous aider, et surtout la douloureuse tarifaire n'est pas annoncée ;-)
  12. Bonjour, Voici le code qui fonctionne chez moi. N'oublie pas de créer les variables globales --------------------------------- -- Script de collecte de quelques indicateurs solaire -- Auteur : Sébastien Joly -- Date : 29 août 2015 -- Eléments de calculs : -- http://www.plevenon-meteo.info/technique/theorie/enso/ensoleillement.html -- http://herve.silve.pagesperso-orange.fr/solaire.htm --------------------------------- -- Fonction déterminant si année bissextile function AnneeBissextile(annee) return annee%4==0 and (annee%100~=0 or annee%400==0) end --------------------------------- -- Fonction de chargement de label function setDevicePropertyValue(id, label, value) fibaro:call(id, "setProperty", "ui."..label..".value", value) end --------------------------------- -- Fonction spliter function split(s, delimiter) result = {}; for match in (s..delimiter):gmatch("(.-)"..delimiter) do table.insert(result, match); end return result; end --------------------------------- -- Fonction de calcul de la distance entre deux points géographique en D°.DD function geo_distance (lat1, lon1, lat2, lon2) if lat1 == nil or lon1 == nil or lat2 == nil or lon2 == nil then return nil end local dlat = math.rad(lat2-lat1) local dlon = math.rad(lon2-lon1) local sin_dlat = math.sin(dlat/2) local sin_dlon = math.sin(dlon/2) local a = sin_dlat * sin_dlat + math.cos(math.rad(lat1)) * math.cos(math.rad(lat2)) * sin_dlon * sin_dlon local c = 2 * math.atan2(math.sqrt(a), math.sqrt(1-a)) -- 6378 km est le rayon terrestre au niveau de l'équateur local d = 6378 * c return d end --------------------------------- -- Fonction Arrondir function arrondir(num, dec) if num == 0 then return 0 else local mult = 10^(dec or 0) return math.floor(num * mult + 0.5) / mult end end --------------------------------- -- Procedure principale --------------------------------- -- Initilise la variable local de l'ID du VD local VDid = fibaro:getSelfId() --------------------------------- -- Requête API loopback pour récupérer Latitude & Longitude des paramètres HC loopback = Net.FHttp("127.0.0.1",11111) local response = loopback:GET("/api/settings/location") jsonTable = json.decode(response) local Ville = (jsonTable.city) local Latitude = (jsonTable.latitude) local Longitude = (jsonTable.longitude) --------------------------------- -- Elevation Google API (Free) GoogleElevation = Net.FHttp("maps.googleapis.com") local response = GoogleElevation:GET("/maps/api/elevation/json?locations=".. Latitude .. "," .. Longitude .. "&sensor=false") --local jsonTable = json.decode(response["results"][1]) --local Altitude = jsonTable.elevation jsonTable = json.decode(response) Altitude = jsonTable.results[1].elevation --------------------------------- -- Meteo API OpenWeatherMap OpenWeatherMap = Net.FHttp("api.openweathermap.org") local response = OpenWeatherMap:GET("/data/2.5/weather?lat=".. Latitude .. "&lon=" .. Longitude .. "&units=metric&APPID=45364c39c24cc5802fb99ade1f4677a4") local jsonTable = json.decode(response) local Temperature = jsonTable.main.temp local PressionRelative = jsonTable.main.pressure local Humidite = jsonTable.main.humidity local Nebulosite = jsonTable.clouds.all --------------------------------- DateHeure = os.date("%d-%m-%Y %H:%M:%S", os.time()) -- Début debug fibaro:debug("=====================================") fibaro:debug(os.date("%d-%m-%Y %H:%M:%S", os.time())) fibaro:debug(Ville .. ", " .. Latitude .. ", " .. Longitude) fibaro:debug("Altitude = " .. tostring(Altitude) .. " m") local An = os.date("%Y") local NiemeJourDeLAnnee = os.date("%j") fibaro:debug("NiemeJourDeLAnnee = " .. NiemeJourDeLAnnee) if AnneeBissextile(An) == true then fibaro:debug( An .. " est bissextile.") JourDansLAnnee = 366 else fibaro:debug( An .. " n'est pas bissextile.") JourDansLAnnee = 365 end --------------------------------- -- Vitesse angulaire = Combien de degrés par jour VitesseAngulaire = 360/365.25 ----JourDansLAnnee -- ou approximativement 365.25 fibaro:debug("Vitesse angulaire = " .. VitesseAngulaire .. " par jour") --------------------------------- -- Formule Declinaison = ArcSin(0,3978 x Sin(Va x (j - (81 - 2 x Sin(Va� x (j - 2)))))) local Declinaison = math.deg(math.asin(0.3978 * math.sin(math.rad(VitesseAngulaire) *(NiemeJourDeLAnnee - (81 - 2 * math.sin((math.rad(VitesseAngulaire) * (NiemeJourDeLAnnee - 2)))))))) fibaro:debug("La déclinaison = " .. Declinaison .. "°") --------------------------------- -- Temps universel décimal (UTC) TempsDecimal = (os.date("!%H") + os.date("!%M") / 60) fibaro:debug("Temps universel decimal (UTC)".. TempsDecimal .." H.dd") --------------------------------- -- Temps solaire HeureSolaire = TempsDecimal + (4 * Longitude / 60 ) fibaro:debug("Temps solaire ".. HeureSolaire .." H.dd") --------------------------------- -- Angle horaire du soleil AngleHoraire = 15 * ( 12 - HeureSolaire ) fibaro:debug("Angle Horaire = ".. AngleHoraire .. "°") --------------------------------- -- La hauteur du soleil (Elévation ou altitude) HauteurSoleil = math.deg(math.asin(math.sin(math.rad(Latitude))* math.sin(math.rad(Declinaison)) + math.cos(math.rad(Latitude)) * math.cos(math.rad(Declinaison)) * math.cos(math.rad(AngleHoraire)))) fibaro:debug("Hauteur du soleil = " .. HauteurSoleil .. "°") local Azimut = math.acos((math.sin(math.rad(Declinaison)) - math.sin(math.rad(Latitude)) * math.sin(math.rad(HauteurSoleil))) / (math.cos(math.rad(Latitude)) * math.cos(math.rad(HauteurSoleil) ))) * 180 / math.pi local SinAzimut = (math.cos(math.rad(Declinaison)) * math.sin(math.rad(AngleHoraire))) / math.cos(math.rad(HauteurSoleil)) if(SinAzimut<0) then Azimut=360-Azimut end fibaro:debug("Azimut du soleil = " .. Azimut .. "°") --------------------------------- -- La durée d'insolation journalière - non stockée en VG DureeInsolation = math.deg(2/15 * math.acos(- math.tan(math.rad(Latitude)) * math.tan(math.rad(Declinaison)))) DureeInsolation = arrondir(DureeInsolation,2) fibaro:debug("La durée d'insolation journalière = " .. DureeInsolation .." H.dd") --------------------------------- -- Constantes Solaire ConstanteRatiationSolaire = 1361 -- W/m² ConstanteRadiationLux = 200000 -- Lux --------------------------------- -- Rayonnement solaire (en W/m²) présent à l'entrée de l'atmosphère. RadiationAtm = ConstanteRatiationSolaire * (1 +0.034 * math.cos( math.rad( 360 * NiemeJourDeLAnnee / JourDansLAnnee ))) fibaro:debug("Radiation max en atmosphère = " .. arrondir(RadiationAtm,2) .. " W/m²") --------------------------------- -- Coefficient d'attenuation M PressionAbsolue = PressionRelative - arrondir((Altitude/ 8.3),1) -- hPa fibaro:debug("Pression relative locale = " .. PressionRelative .. " hPa") fibaro:debug("Pression absolue atmosphère = " .. PressionAbsolue .. " hPa") SinusHauteurSoleil = math.sin(math.rad(HauteurSoleil)) M0 = math.sqrt(1229 + math.pow(614 * SinusHauteurSoleil,2)) - 614 * SinusHauteurSoleil M = M0 * PressionRelative/PressionAbsolue fibaro:debug("Coefficient d'attenuation = " .. M ) --------------------------------- -- Récupérer message SYNOP avec un Get HTTP sur le site Ogimet heureUTCmoins1 = os.date("!%H")-1 if string.len(heureUTCmoins1) == 1 then heureUTCmoins1 = "0" .. heureUTCmoins1 end UTC = os.date("%Y%m%d").. heureUTCmoins1.."00" -- os.date("!%M") fibaro:debug("Horodatage UTC = " .. UTC) -- WMOID = "07643" local WMOID = fibaro:get(fibaro:getSelfId(), "IPAddress") fibaro:debug("Station SYNOP = " .. WMOID) ogimet = Net.FHttp("www.ogimet.com") local synop = ogimet:GET("/cgi-bin/getsynop?block=".. WMOID.."&begin=" .. UTC) --fibaro:debug(synop) ---temporaire rslt = split(synop,",") CodeStation = rslt[1] Coupure = " ".. CodeStation .. " " --fibaro:debug(rslt[1]) rslt = split(synop, " "..CodeStation.. " ") -- fibaro:debug(rslt[2]) Trame = string.gsub(rslt[2], "=", "") Trame = CodeStation .." ".. Trame --fibaro:debug(Trame) rslt = split(Trame, " ") --------------------------------- -- Récupérer le premier caractere du 3eme mot = Nebulosité en Octa Octa = string.sub(rslt[3], 1, 1) fibaro:debug( Octa .. " Octa") -- 0 Pas de couverture nuageuse -- 1-8 Huitième -- 9 Brouillard -- / Couverture indiscernable -- cas particulier si valeur indéterminé un slash est renvoyé. Afin d'être le plus pénalisant 8 sera retenu. if Octa == "/" then Octa = 8 elseif Octa == "9" then Octa = 8 end --------------------------------- -- Facteur d'atténuation des couches nuageuses Kc -- Kc=1-(0.75*((OCTA)**(3.4)) Kc=1-0.75*(math.pow(Octa/8,3.4)) fibaro:debug("Kc = " .. Kc) --------------------------------- -- Au lever/coucher du soleil, on atteind les limites de précisions de ces calculs. -- J'interrompts donc le calcul de radiation dès 1°. if HauteurSoleil > 1 then -- Radiation directe RadiationDirecte = RadiationAtm * math.pow(0.6,M) * SinusHauteurSoleil fibaro:debug("RadiationDirecte = ".. arrondir(RadiationDirecte,2) .." W/m²") -- Radiation Diffuse RadiationDiffuse = RadiationAtm * (0.271 - 0.294 * math.pow(0.6,M)) * SinusHauteurSoleil fibaro:debug("Radiation Diffuse = ".. arrondir(RadiationDiffuse,2) .." W/m²") -- Radiation totale RadiationTotale = RadiationDiffuse + RadiationDirecte fibaro:debug("Radiation totale = " .. arrondir(RadiationTotale,2) .." W/m²") -- Radiation en Lux : -- 1 Lux = 0,0079 W/m² Lux = RadiationTotale / 0.0079 --Lux = ConstanteRadiationLux / ConstanteRatiationSolaire * RadiationTotale fibaro:debug("Radiation totale en lux = ".. arrondir(Lux,2).." Lux") -- Le rayonnement solaire avec ciel nuageux RTOTC = RadiationTotale * Kc fibaro:debug("Le rayonnement solaire avec pondération = " .. arrondir(RTOTC,2)) -- Radiation en Lux pondéré -- LuxPondere = ConstanteRadiationLux / ConstanteRatiationSolaire * RTOTC LuxPondere = RTOTC / 0.0079 fibaro:debug("Radiation totale en lux pondéré = ".. arrondir(LuxPondere,2).." Lux") else RadiationDirecte = 0 RadiationDiffuse = 0 RadiationTotale = 0 Lux = 0 RTOTC = 0 LuxPondere = 0 end --------------------------------- -- Stocker les variables globales -- Créer les variables globales suivantes : -- VDSoleilAzimut -- VDSoleilHauteur -- VDSoleilRadiDir -- VDSoleilRadiDif -- VDSoleilRadiTot -- VDSoleilLuxTot -- VDSoleilOcta -- VDSoleilRadiPon -- VDSoleilLuxPon fibaro:setGlobal("VDSoleilAzimut", arrondir(Azimut,2)) fibaro:setGlobal("VDSoleilHauteur", arrondir(HauteurSoleil,2)) fibaro:setGlobal("VDSoleilRadiDir", arrondir(RadiationDirecte,2)) fibaro:setGlobal("VDSoleilRadiDif", arrondir(RadiationDiffuse,2)) fibaro:setGlobal("VDSoleilRadiTot", arrondir(RadiationTotale,2)) fibaro:setGlobal("VDSoleilLuxTot", arrondir(Lux,2)) fibaro:setGlobal("VDSoleilOcta", Octa) fibaro:setGlobal("VDSoleilRadiPon", arrondir(RTOTC,2)) fibaro:setGlobal("VDSoleilLuxPon", arrondir(LuxPondere,2)) --------------------------------- -- Mise à jour des labels setDevicePropertyValue(VDid, "LabelAzimut", arrondir(Azimut,0).."°" ) setDevicePropertyValue(VDid, "LabelHauteur", arrondir(HauteurSoleil,0) .. "°" ) setDevicePropertyValue(VDid, "LabelNebulosite", Octa .. "/8") setDevicePropertyValue(VDid, "LabelNebPourCent", Nebulosite .. "%") setDevicePropertyValue(VDid, "LabelMaj",DateHeure) setDevicePropertyValue(VDid, "LabelRadiationDirecte", arrondir(RadiationDirecte,0) .. " W/m²") setDevicePropertyValue(VDid, "LabelRadiationDiffuse", arrondir(RadiationDiffuse,0) .. " W/m²") setDevicePropertyValue(VDid, "LabelRadiationTotale", arrondir(RadiationTotale,0) .. " W/m²") setDevicePropertyValue(VDid, "LabelLux",arrondir(Lux,0) .. " Lx") setDevicePropertyValue(VDid, "LabelRTOTC", arrondir(RTOTC,0) .. " W/m²") setDevicePropertyValue(VDid, "LabelLuxPondere", arrondir(LuxPondere,0) .. " Lx") --------------------------------- -- Tag widget fibaro:log(DateHeure)
  13. oui on peut cliquer pour suivre, mais je m'annonce officiellement ;-)
  14. @gom, au TOP du TOP. FELICITATIONS (et je ne dis pas ca parce que j'ai le même ballon que toi ;-)) Plus qu'a faire un petit tuto ;-) Quel mode alors as tu utilisé ?
  15. Je comprends, mais si tes valeurs oscillent, tes capteurs ne sont ils pas trop sensibles ? Tu pourrais augmenter la valeur de luminosité qui provoque la remontée à la HC2
  16. Sympa ta gestion @jjacques68, je ne comprends pas pourquoi ta scène toutes les 15 mins ? Pourquoi la différence ? Je dis différence, mais ça peut être que la température extérieure soit inférieure à la température intérieure. Imaginons qu'en journée tu doives fermer les volets, faut bien les rouvrir pour aèrer ou rafraichir. Je ne l'utilise pas, mais je pense que ce serait pas mal.
  17. Bonsoir, Le TOP du TOP pour moi est le VD Indicateur solaire de @CaptainIgloo, juste TOP, Azimut, hauteur, éclairement..Tu rajoutes à cela la température intérieure, ma température extérieure, la différence des 2 températures, présence ou absence, et tu ne peux pas être plus précis. Je ne l'ai pas encore utilisé dans mes scénarios..et pour cause, mon étage n'est pas fini et tous les volets ne sont pas encore électriques lol .;Mais pour moi juste superbe ce VD, et je l'ai installé depuis sa sortie, dingue :-)
  18. Tu dois pouvoir l'écrire comme ceci, plus lisible ;-) GEA.add({553, {"Value", 485, 1}}, -1, "", {{"VirtualDevice",483,"1"}})
  19. Je commente pour suivre :-) Envoyé de mon Nexus 5X en utilisant Tapatalk
  20. Oui avec les graphiques c'est incontestable, impressionnant !! Envoyé de mon Nexus 5X en utilisant Tapatalk
  21. Tuto HC2

    Pourquoi pas, mais cela t'obligera à mettre TOUS les ID de TOUTES les lumieres sous %%properties.
  22. Tuto HC2

    L' entête de la scène te permet de déclencher une scène sur un évènement, ce qui évite de faire boucler une scène. Le déclenchement sur "evenment" est à préféré dès que c'est possible en fonction du besoin, c'est plus optimisé en terme de charge.
  23. Tuto HC2

    Question bete : tu avais des lampes allumées ;-) ? Bon changement de fusil d'épaules car je comprends pas ou je me plante avec ce code. Suis parti sur la même base que la scène d'extinction en filtrant sur les lumières ;-) et en modifiant le code du master @Steven ---------------------------------- -- User Settings ---------------------------------- --- Scene Interactive push ------- local Smartphone = XX local id_de_la_scene_qui_eteint = XX fibaro:debug("Smartphone : " ..Smartphone.. " - ID Scène extinction : " ..id_de_la_scene_qui_eteint) ---------------------------------------------------------------------- local message = "" for _,v in ipairs(fibaro:getDevicesId({properties = {isLight=true}})) do fibaro:debug("entree dans la boucle filtrée LUMIERE") local DeviceName = fibaro:getName(v) local DeviceValue = tonumber(fibaro:getValue(v, "value")) if DeviceValue > 0 then DeviceName = string.gsub(DeviceName," ","_") fibaro:debug("Lampes Allumées : " ..DeviceName) if (message ~= "") then message = message .. ", " end message = message .. DeviceName fibaro:debug("Message : " ..message) end end if (message ~= "") then if (message:find(","))then message = message .. " sont allumés, voulez-vous les éteindre ?" else message = message .. " est allumé, voulez-vous l'éteindre ?" end api.post('/mobile/push', { ["mobileDevices"]={Smartphone}, ["message"]=message, ["title"]='Question:', ["category"]='YES_NO', ["data"]={["sceneId"]=id_de_la_scene_qui_eteint} } ) end