Cisco Posté(e) le 17 septembre 2015 Signaler Partager Posté(e) le 17 septembre 2015 Bonjour a tous, L'hvier approche et je vais redémarrer mes radiateurs. Je souhaiterai essayer d'améliorer mon système qui est basé seulement sur les panneaux de chauffage et un hystérésis. J'ai vu que pour d'autre box, des gars avaient été plus loin et avaient codé un thermostat plus ou moins PID. Avant de me lancer dans la démarche de coder un tel VD en LUA pour la HC2, je voulais être sur que personne ne l'avait fait avant. J'ai vu que le sujet revenait souvent sur le tapis dans différent topic mais je ne penses pas que quelqu'un l'ai déja fait. Savez-vous si ce merveilleux VD existe déja ? 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lazer Posté(e) le 18 septembre 2015 Signaler Partager Posté(e) le 18 septembre 2015 Je ne crois pas avoir vu cela passer, même si on en a parlé plusieurs fois. Je serais intéressé par ton module si tu y arrives Lien vers le commentaire Partager sur d’autres sites More sharing options...
Gazous Posté(e) le 18 septembre 2015 Signaler Partager Posté(e) le 18 septembre 2015 En effet, ça serait intéressant d'avoir ce type de module qui serait associé àune pièce et sa sonde de température et X radiateurs. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Nico Posté(e) le 18 septembre 2015 Signaler Partager Posté(e) le 18 septembre 2015 J'avais aussi jeter un Å“il la dessus l'an passé. Mais finalement pas besoin chez moi, j'y arrive bien avec le panneau de chauffage + tête Danfoss. Mais effectivement, je pense que tu trouveras un paquet de personne intéressée. Lien vers le commentaire Partager sur d’autres sites More sharing options...
pepite Posté(e) le 18 septembre 2015 Signaler Partager Posté(e) le 18 septembre 2015 cisco, cisco, cisco... :60: :60: Et je pense que tu trouveras de l'aide sur e forum si tu as besoin ;-) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Cisco Posté(e) le 18 septembre 2015 Auteur Signaler Partager Posté(e) le 18 septembre 2015 Bon c'est décidé ça sera mon fil rouge pour les semaines à venir Mais bon avant de commencer, je pars en vacances demain pour 1 semaine histoire de prendre un maximum d'énergie Dès mon retour je vous posterai mes premères lignes 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
CaptainIgloo Posté(e) le 19 septembre 2015 Signaler Partager Posté(e) le 19 septembre 2015 TLD : http://www.touteladomotique.com/forum/viewtopic.php?f=48&t=14320 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Gazous Posté(e) le 19 septembre 2015 Signaler Partager Posté(e) le 19 septembre 2015 Intéressant ce thread de TLD. Moi je suis loin de tout ça pour le moment avec ma seule gestion horaire des ordres ECO et CONFORT... Je devrait pouvoir très largement améliorer ça mais entre les changements de radiateurs, les thermostats et des modules FP 6 ordres et surtout le bidget que je n'ai pas encore. Je ne sais pas trop vers où aller... Ce qui est sûr c'est que le confort de mon chauffage actuel n'est pas satisfaisant. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lazer Posté(e) le 19 septembre 2015 Signaler Partager Posté(e) le 19 septembre 2015 Pas mal les explications sur TLD. J'avais déjà noté ça chez eedomus, mais c'est moins complet : http://doc.eedomus.com/view/Algorithme_Chauffage http://doc.eedomus.com/view/Programmation_Thermostat_Virtuel Lien vers le commentaire Partager sur d’autres sites More sharing options...
BenjyNet Posté(e) le 19 septembre 2015 Signaler Partager Posté(e) le 19 septembre 2015 Effectivement le PID de FHEM est un truc de malade ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sp0oNy Posté(e) le 23 septembre 2015 Signaler Partager Posté(e) le 23 septembre 2015 Très intéressé également ! C'est le manque de plugin thermostat et de gestion des sondes via RFXCOM qui m'a fait hésiter longtemps avant de migrer sur la HC2... J'avais bookmarqué le site d'Antor avec son plugin pour Vera à l'époque : http://www.antor.fr/apps/smart-virtual-thermostat/ (Je ne sais pas s'il est toujours d'actualité c'est bloqué par le proxy du boulot) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Cisco Posté(e) le 9 octobre 2015 Auteur Signaler Partager Posté(e) le 9 octobre 2015 Bon j'ai un peu avancé pas autant que j'aurais voulus car j'ai pas mal galéré sur plusieurs trucs mais bon passons Je me suis basé sur le thermostat de l'eedomus (http://www.domo-blog.fr/maj-gestion-dun-chauffage-centrale-via-leedomus/) qui n'ait pas un vrai PID (car ils ont simplifiés la dérivé) mais qui en est très proche. Le module attaché fonctionne en v4 mais il est encore en phase beta. Il permet d'utiliser les infos du panneau de chauffage ainsi que la temperature vacances qui est ici associé à hors gel. Il prend en parametre une sonde, un radiateur, un panneau de chauffage et une variable Globale "ThermostatMode". J'utilise les labels pour les modifications du mode Forcé Pour l'utiliser il faut : Il faut créer un panneau de chauffage puis récupérer son id afin de le renseinger dans la main loop Il faut créer une variable Globale "ThermostatMode" qui peut prendre 4 valeurs : Auto, HorsGel, Forced, OFF Il faut renseigner dans la boucle principale les champs suivants : IntTempSensorID, RadDeviceID, HeatingPanelID Les pb connus : Pb d'affichage des températures Dut à l'utilisation de la boucle principale, il n'y a pas détection lors du changement de la varaible globale du mode du chauffage et il faut attendre la fin du cycle en cours pour que la modif soit prise en compte Voici le code de la boucle principale : --[[ %% autostart %% properties ThermostatMode %% globals ThermostatMode --]] local DureeCycle = 60 -- Durée d'un cycle de chauffe en minutes local DureeCycleMini = 6 -- Durée minimum de chauffe durant un cycle en minutes local DureeForcedDefault = 60 -- Durée par défaut d'un cylé forcé en minutes local TempForcedDefault = 22 -- Température par défaut en mode forcé local ExtTempSensorID = 0 -- Renseigner les ids de vos sondes exterieures, Si vous laissez à 0 alor son utilise la température récupéré par le HC2 local IntTempSensorID = 41 -- Renseigner les ids de vos sondes interieures local RadDeviceID = 177 -- Renseigner les ids de vos radiateurs local HeatingPanelID = 163 -- Renseigner l'id de votre panneau de chauffage local CoeffProp = 0.6 -- Coefficient propositionnel local CoeffDepThermique = 0.01 -- Coefficient de déperdition thermique local InfluenceExt = 0.3 -- Coefficient d'influence de la température exterieure local RadOn = "turnOff" -- Commande de mise sous tension du radiateur local RadOff = "turnOn" -- Commande de mise hors tension du radiateur ------------------------------------- -- Ne rien modifier ci-dessous -- ------------------------------------- local TempHorsGel = 0 -- Température par défaut de temp Hors-Gel local TempConsigne = 0 -- Température par défaut de temp Consigne local MobileId = fibaro:getGlobalValue("MobileIdCortex"); -- Renseigner l'id du portable local InfluenceInt = 1 - InfluenceExt local RadMode = fibaro:getGlobalValue("ThermostatMode"); function getHC2TempExt() HC2 = Net.FHttp("127.0.0.1",11111); local response, status, errorCode = HC2:GET("/api/weather"); if (tonumber(errorCode) == 0) then jsonTable = json.decode(response); end local HC2TempExt = (jsonTable.Temperature); return HC2TempExt end function getHC2TempPanel() local currentDay = string.lower(os.date("%A")); local currentTime = tonumber(os.date("%H%M")); local HC2 = Net.FHttp("127.0.0.1",11111) response, status, errorCode = HC2:GET("/api/panels/heating?id="..HeatingPanelID) if tonumber(status) == 200 then local jsonTable = json.decode(response) -- On parse le tableau -- On définit nos variables en fonction du jour de la semaine if (currentDay == 'monday') then jourMorningTime = tonumber(string.format("%02d%02d",jsonTable.properties.monday.morning.hour,jsonTable.properties.monday.morning.minute)) jourMorningTemperature = tonumber(jsonTable.properties.monday.morning.temperature) jourDayTime = tonumber(string.format("%02d%02d",jsonTable.properties.monday.day.hour,jsonTable.properties.monday.morning.minute)) jourDayTemperature = tonumber(jsonTable.properties.monday.day.temperature) jourEveningTime = tonumber(string.format("%02d%02d",jsonTable.properties.monday.evening.hour,jsonTable.properties.monday.evening.minute)) jourEveningTemperature = tonumber(jsonTable.properties.monday.evening.temperature) jourNightTime = tonumber(string.format("%02d%02d",jsonTable.properties.monday.night.hour,jsonTable.properties.monday.night.minute)) jourNightTemperature = tonumber(jsonTable.properties.monday.night.temperature) elseif (currentDay == 'tuesday') then jourMorningTime = tonumber(string.format("%02d%02d",jsonTable.properties.tuesday.morning.hour,jsonTable.properties.tuesday.morning.minute)) jourMorningTemperature = tonumber(jsonTable.properties.tuesday.morning.temperature) jourDayTime = tonumber(string.format("%02d%02d",jsonTable.properties.tuesday.day.hour,jsonTable.properties.tuesday.morning.minute)) jourDayTemperature = tonumber(jsonTable.properties.tuesday.day.temperature) jourEveningTime = tonumber(string.format("%02d%02d",jsonTable.properties.tuesday.evening.hour,jsonTable.properties.tuesday.evening.minute)) jourEveningTemperature = tonumber(jsonTable.properties.tuesday.evening.temperature) jourNightTime = tonumber(string.format("%02d%02d",jsonTable.properties.tuesday.night.hour,jsonTable.properties.tuesday.night.minute)) jourNightTemperature = tonumber(jsonTable.properties.tuesday.night.temperature) elseif (currentDay == 'wednesday') then jourMorningTime = tonumber(string.format("%02d%02d",jsonTable.properties.wednesday.morning.hour,jsonTable.properties.wednesday.morning.minute)) jourMorningTemperature = tonumber(jsonTable.properties.wednesday.morning.temperature) jourDayTime = tonumber(string.format("%02d%02d",jsonTable.properties.wednesday.day.hour,jsonTable.properties.wednesday.morning.minute)) jourDayTemperature = tonumber(jsonTable.properties.wednesday.day.temperature) jourEveningTime = tonumber(string.format("%02d%02d",jsonTable.properties.wednesday.evening.hour,jsonTable.properties.wednesday.evening.minute)) jourEveningTemperature = tonumber(jsonTable.properties.wednesday.evening.temperature) jourNightTime = tonumber(string.format("%02d%02d",jsonTable.properties.wednesday.night.hour,jsonTable.properties.wednesday.night.minute)) jourNightTemperature = tonumber(jsonTable.properties.wednesday.night.temperature) elseif (currentDay == 'thursday') then jourMorningTime = tonumber(string.format("%02d%02d",jsonTable.properties.thursday.morning.hour,jsonTable.properties.thursday.morning.minute)) jourMorningTemperature = tonumber(jsonTable.properties.thursday.morning.temperature) jourDayTime = tonumber(string.format("%02d%02d",jsonTable.properties.thursday.day.hour,jsonTable.properties.thursday.morning.minute)) jourDayTemperature = tonumber(jsonTable.properties.thursday.day.temperature) jourEveningTime = tonumber(string.format("%02d%02d",jsonTable.properties.thursday.evening.hour,jsonTable.properties.thursday.evening.minute)) jourEveningTemperature = tonumber(jsonTable.properties.thursday.evening.temperature) jourNightTime = tonumber(string.format("%02d%02d",jsonTable.properties.thursday.night.hour,jsonTable.properties.thursday.night.minute)) jourNightTemperature = tonumber(jsonTable.properties.thursday.night.temperature) elseif (currentDay == 'friday') then jourMorningTime = tonumber(string.format("%02d%02d",jsonTable.properties.friday.morning.hour,jsonTable.properties.friday.morning.minute)) jourMorningTemperature = tonumber(jsonTable.properties.friday.morning.temperature) jourDayTime = tonumber(string.format("%02d%02d",jsonTable.properties.friday.day.hour,jsonTable.properties.friday.morning.minute)) jourDayTemperature = tonumber(jsonTable.properties.friday.day.temperature) jourEveningTime = tonumber(string.format("%02d%02d",jsonTable.properties.friday.evening.hour,jsonTable.properties.friday.evening.minute)) jourEveningTemperature = tonumber(jsonTable.properties.friday.evening.temperature) jourNightTime = tonumber(string.format("%02d%02d",jsonTable.properties.friday.night.hour,jsonTable.properties.friday.night.minute)) jourNightTemperature = tonumber(jsonTable.properties.friday.night.temperature) elseif (currentDay == 'saturday') then jourMorningTime = tonumber(string.format("%02d%02d",jsonTable.properties.saturday.morning.hour,jsonTable.properties.saturday.morning.minute)) jourMorningTemperature = tonumber(jsonTable.properties.saturday.morning.temperature) jourDayTime = tonumber(string.format("%02d%02d",jsonTable.properties.saturday.day.hour,jsonTable.properties.saturday.morning.minute)) jourDayTemperature = tonumber(jsonTable.properties.saturday.day.temperature) jourEveningTime = tonumber(string.format("%02d%02d",jsonTable.properties.saturday.evening.hour,jsonTable.properties.saturday.evening.minute)) jourEveningTemperature = tonumber(jsonTable.properties.saturday.evening.temperature) jourNightTime = tonumber(string.format("%02d%02d",jsonTable.properties.saturday.night.hour,jsonTable.properties.saturday.night.minute)) jourNightTemperature = tonumber(jsonTable.properties.saturday.night.temperature) elseif (currentDay == 'sunday') then jourMorningTime = tonumber(string.format("%02d%02d",jsonTable.properties.sunday.morning.hour,jsonTable.properties.sunday.morning.minute)) jourMorningTemperature = tonumber(jsonTable.properties.sunday.morning.temperature) jourDayTime = tonumber(string.format("%02d%02d",jsonTable.properties.sunday.day.hour,jsonTable.properties.sunday.morning.minute)) jourDayTemperature = tonumber(jsonTable.properties.sunday.day.temperature) jourEveningTime = tonumber(string.format("%02d%02d",jsonTable.properties.sunday.evening.hour,jsonTable.properties.sunday.evening.minute)) jourEveningTemperature = tonumber(jsonTable.properties.sunday.evening.temperature) jourNightTime = tonumber(string.format("%02d%02d",jsonTable.properties.sunday.night.hour,jsonTable.properties.sunday.night.minute)) jourNightTemperature = tonumber(jsonTable.properties.sunday.night.temperature) end if (currentTime >= jourMorningTime and currentTime < jourDayTime) then jourPeriode = "Morning" jourPeriodeTime = jourMorningTime jourPeriodeTemperature = jourMorningTemperature elseif (currentTime >= jourDayTime and currentTime < jourEveningTime) then jourPeriode = "Day" jourPeriodeTime = jourDayTime jourPeriodeTemperature = jourDayTemperature elseif (currentTime >= jourEveningTime and currentTime < jourNightTime) then jourPeriode = "Evening" jourPeriodeTime = jourEveningTime jourPeriodeTemperature = jourEveningTemperature elseif (currentTime >= jourNightTime and currentTime < jourMorningTime) then jourPeriode = "Night" jourPeriodeTime = jourNightTime jourPeriodeTemperature = jourNightTemperature end fibaro:debug("Day = "..currentDay.." | Période = "..jourPeriode.." | Temp Consigne = "..jourPeriodeTemperature) return jourPeriode, jourPeriodeTemperature else fibaro:log("--- ERROR ---") fibaro:debug('status='..status..', errorCode='..errorCode..', response='..response) end end function getHC2TempVacation() local currentDay = string.lower(os.date("%A")); local currentTime = tonumber(os.date("%H%M")); local HC2 = Net.FHttp("127.0.0.1",11111) response, status, errorCode = HC2:GET("/api/panels/heating?id="..HeatingPanelID) if tonumber(status) == 200 then local jsonTable = json.decode(response) -- On parse le tableau TempVacation = tonumber(jsonTable.properties.vacationTemperature) return TempVacation else fibaro:log("--- ERROR ---") fibaro:debug('status='..status..', errorCode='..errorCode..', response='..response) end end while true do RadMode = fibaro:getGlobalValue("ThermostatMode"); IntLastTemp = fibaro:getValue(IntTempSensorID,"value"); fibaro:debug("La Température intérieure relevé est de : " .. IntLastTemp); -- affichage de la Température Intérieure relevé par la sonde if (ExtTempSensorID == 0) then ExtLastTemp = getHC2TempExt() fibaro:debug("La Température Exterieure relevé est de : " .. ExtLastTemp); -- affichage de la Température Extérieure récupéré par la HC2 else ExtLastTemp = fibaro:getValue(ExtTempSensorID,"value") fibaro:debug("La Température Exterieure relevé est de : " .. ExtLastTemp); -- affichage de la Température Exterieure relevé par la sonde end if (RadMode == "Auto") then PeriodeTempConsigne, TempConsigne = getHC2TempPanel() local IntImpact = (CoeffProp * (TempConsigne - IntLastTemp)) local ExtImpact = (CoeffDepThermique * (TempConsigne - ExtLastTemp)) RadHotPercent = (100 * ((InfluenceExt * ExtImpact) + (InfluenceInt * IntImpact))) RadHotTime = math.ceil(DureeCycle * ((InfluenceExt * ExtImpact) + (InfluenceInt * IntImpact))) if (math.abs(RadHotTime)) >= DureeCycle then RadHotTime = DureeCycle elseif (math.abs(RadHotTime)) <= DureeCycleMini then RadHotTime = DureeCycleMini else RadHotTime = math.abs(RadHotTime) end fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblModeChauffage.value", RadMode ); -- On mets à jour l'étiquette Mode du chauffage fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblTmpInterieure.value", IntLastTemp ); -- On mets à jour l'étiquette Temp Interieure fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblTmpExterieure.value", ExtLastTemp ); -- On mets à jour l'étiquette Temp Exterieure fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblTempConsigne.value", TempConsigne ); -- On mets à jour l'étiquette Temp de la consigne fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblTempHorsGel.value", "Not Used" ); -- On mets à jour l'étiquette Temp Hors-gel fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblDureeForce.value", "Not Used" ); -- On mets à jour l'étiquette Duree du mode Force fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblTempForce.value", "Not Used" ); -- On mets à jour l'étiquette Temp du mode Force fibaro:debug("La Température de consigne est de : " .. TempConsigne); -- affichage de la Temp Consigne fibaro:debug("Le radiateur chauffera pendant : " .. RadHotPercent .. " % de la durée du cycle ("..DureeCycle..") soit environ : ".. RadHotTime .. " minutes"); elseif (RadMode == "HorsGel") then TempHorsGel = getHC2TempVacation() local IntImpact = (CoeffProp * (TempHorsGel - IntLastTemp)) local ExtImpact = (CoeffDepThermique * (TempHorsGel - ExtLastTemp)) RadHotPercent = (100 * ((InfluenceExt * ExtImpact) + (InfluenceInt * IntImpact))) RadHotTime = math.ceil(DureeCycle * ((InfluenceExt * ExtImpact) + (InfluenceInt * IntImpact))) if (TempHorsGel > tonumber(IntLastTemp)) then if (math.abs(RadHotTime)) >= DureeCycle then RadHotTime = DureeCycle elseif (math.abs(RadHotTime)) <= DureeCycleMini then RadHotTime = 0 else RadHotTime = math.abs(RadHotTime) end else RadHotTime = 0 end fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblModeChauffage.value", RadMode ); -- On mets à jour l'étiquette Mode du chauffage fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblTmpInterieure.value", IntLastTemp ); -- On mets à jour l'étiquette Temp Interieure fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblTmpExterieure.value", ExtLastTemp ); -- On mets à jour l'étiquette Temp Exterieure fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblTempConsigne.value", "Not Used" ); -- On mets à jour l'étiquette Temp de la consigne fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblTempHorsGel.value", TempHorsGel ); -- On mets à jour l'étiquette Temp Hors-gel fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblDureeForce.value", "Not Used" ); -- On mets à jour l'étiquette Duree du mode Force fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblTempForce.value", "Not Used" ); -- On mets à jour l'étiquette Temp du mode Force fibaro:debug("La Température Hors-Gel est de : " .. TempHorsGel); -- affichage de la Temp Hors-Gel fibaro:debug("Le radiateur chauffera pendant : " .. RadHotPercent .. " % de la durée du cycle ("..DureeCycle..") soit environ : ".. RadHotTime .. " minutes"); elseif (RadMode == "Forced") then TempForced = fibaro:getValue(fibaro:getSelfId(), "ui.lblTempForce.value") DureeForced = fibaro:getValue(fibaro:getSelfId(), "ui.lblDureeForce.value") if (TempForced == "Not Used") then TempForced = TempForcedDefault else TempForced = TempForced end if (DureeForced == "Not Used") then DureeForced = DureeForcedDefault else DureeForced = tonumber(DureeForced) end if (TempForced >= IntLastTemp) then RadHotTime = DureeForced else RadHotTime = 0 end fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblModeChauffage.value", RadMode ); -- On mets à jour l'étiquette Mode du chauffage fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblTmpInterieure.value", IntLastTemp ); -- On mets à jour l'étiquette Temp Interieure fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblTmpExterieure.value", ExtLastTemp ); -- On mets à jour l'étiquette Temp Exterieure fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblTempConsigne.value", "Not Used" ); -- On mets à jour l'étiquette Temp de la consigne fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblTempHorsGel.value", "Not Used" ); -- On mets à jour l'étiquette Temp Hors-gel fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblDureeForce.value", DureeForced ); -- On mets à jour l'étiquette Duree du mode Force fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblTempForce.value", TempForced ); -- On mets à jour l'étiquette Temp du mode Force fibaro:debug("La Température Forcé est de : " .. TempForced .." et la durée du cycle Forcé est de : " ..DureeForced.." minutes"); -- affichage de la Temp Forcé et de sa durée elseif (RadMode == "OFF") then RadHotTime = 0 fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblModeChauffage.value", RadMode ); -- On mets à jour l'étiquette Mode du chauffage fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblTmpInterieure.value", IntLastTemp ); -- On mets à jour l'étiquette Temp Interieure fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblTmpExterieure.value", ExtLastTemp ); -- On mets à jour l'étiquette Temp Exterieure fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblTempConsigne.value", "Not Used" ); -- On mets à jour l'étiquette Temp de la consigne fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblTempHorsGel.value", "Not Used" ); -- On mets à jour l'étiquette Temp Hors-gel fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblDureeForce.value", "Not Used" ); -- On mets à jour l'étiquette Duree du mode Force fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblTempForce.value", "Not Used" ); -- On mets à jour l'étiquette Temp du mode Force end if (RadHotTime > 0) then fibaro:call(RadDeviceID, RadOn); -- Mise sous tension du radiateur fibaro:debug("Le radiateur "..RadDeviceID.." de la chambre01 a été allumé en mode "..RadMode); fibaro:call(MobileId, "sendPush", "Le radiateur "..RadDeviceID.." de la chambre01 a été allumé en mode "..RadMode) -- On envoie une notif sur le portable id MobileIdCortex fibaro:sleep(RadHotTime*60*1000); -- durée de chauffe durant un cycle fibaro:debug("Le radiateur "..RadDeviceID.." de la chambre01 a finis son temps de chauffe de "..RadHotTime.. " minutes en mode "..RadMode); fibaro:call(MobileId, "sendPush", "Le radiateur "..RadDeviceID.." de la chambre01 a finis son temps de chauffe de "..RadHotTime.. " minutes en mode "..RadMode) -- On envoie une notif sur le portable id MobileIdCortex fibaro:call(RadDeviceID, RadOff); -- Mise hors tension du radiateur fibaro:debug("Le radiateur "..RadDeviceID.." de la chambre01 a été éteint en mode "..RadMode); fibaro:call(MobileId, "sendPush", "Le radiateur "..RadDeviceID.." de la chambre01 a été éteint en mode "..RadMode) -- On envoie une notif sur le portable id MobileIdCortex else fibaro:call(RadDeviceID, RadOff); -- Mise hors tension du radiateur fibaro:call(MobileIdCortex, "sendPush", "Le radiateur "..RadDeviceID.." de la chambre01 a été éteint en mode "..RadMode) -- On envoie une notif sur le portable id MobileIdCortex end fibaro:sleep((DureeCycle-RadHotTime)*60*1000); -- durée restante avant le prochain cycle de chauffe end Voici le module : ThermostatRoom01_v0.01.vfib Bon weekend à tous 2 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sakkhho Posté(e) le 10 octobre 2015 Signaler Partager Posté(e) le 10 octobre 2015 merci pour ce VD je vais regarder si utilisable chez moi. ma très faible contribution sur l'affichage des temps; de mémoire faut rajouter un .. " " à la fin fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblTmpInterieure.value", IntLastTemp .. " "); Lien vers le commentaire Partager sur d’autres sites More sharing options...
iman Posté(e) le 28 novembre 2016 Signaler Partager Posté(e) le 28 novembre 2016 bonjour pourrait on avoir d'avantage explication pour le réglage et utilisation de ce VD qui m'intéresse énormément car j'ai un plancher chauffant et donc une grand inertie. Merci d'avance Lien vers le commentaire Partager sur d’autres sites More sharing options...
Cisco Posté(e) le 30 novembre 2016 Auteur Signaler Partager Posté(e) le 30 novembre 2016 Bonjour, J'ai pas vraiment progresser sur ce sujet par manque de temps mais tu trouveras sur un autre fil un thermostat pid pour notre HC2 : Lien vers le commentaire Partager sur d’autres sites More sharing options...
iman Posté(e) le 30 novembre 2016 Signaler Partager Posté(e) le 30 novembre 2016 bonjour cisco, j'avais vu entre temps ce sujet et j'essaye de comprendre le fonctionnement...mais l'espagnole et moi ça fait 2, merci pour le retour sinon ton VD est-il dispo en beta? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés