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 905
  • Inscription

  • Dernière visite

Réputation sur la communauté

615 Excellent

À propos de pepite

Profile Information

  • Sexe :
    Homme
  • Ville :
    Neuilly Sur Marne
  • Box
    Home Center 2
  • Version
    4.130

Visiteurs récents du profil

697 visualisations du profil
  1. On est 2 ;-)
  2. 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}})
  3. Oui ok pour la défaillance du module, et pour la defaillance de la box ? Pareil ? Il a du bien chauffer ce we non ? ;-)
  4. 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 ?
  5. Certainement, de bonne augure ou non, on le saura avec le temps. Je trouve dommage les ruptures de stock de nouveaux produits.
  6. 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"]}})
  7. Super merci :-) Au fait, tu as prévu la panne de la domotique ?
  8. Patientons, si ca peut nous aider, et surtout la douloureuse tarifaire n'est pas annoncée ;-)
  9. 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)
  10. oui on peut cliquer pour suivre, mais je m'annonce officiellement ;-)
  11. @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é ?
  12. 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/
  13. Bonjour les bricoleurs, Alors alors, patience ;-) http://blog.domadoo.fr/65604-cubit-metre-connecte-revolutionne-bricolage/
  14. 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