require "scripts/lua/functions" commandArray = {} -- ------------------------------------------------------------------------------ --recupere les minutes -- ------------------------------------------------------------------------------ time=os.time() minutes=tonumber(os.date('%M',time)) jour=tonumber(os.date('%w',time)) quantieme=tonumber(os.date('%j',time)) heures=tonumber(os.date('%H',time)) heurmin= heures * 60 + minutes extinction = uservariables['HEURE_EXTINCTION_FEUX'] -- ------------------------------------------------------------------------------ -- Test check -- ------------------------------------------------------------------------------ -- List all otherdevices states for debugging: -- for i, v in pairs(otherdevices) do debug(i..' '..v) end -- List all otherdevices svalues for debugging: -- for i, v in pairs(otherdevices_svalues) do debug('svalues '..i..' '..v) end -- ------------------------------------------------------------------------------ -- Pollens tous les lundis -- ------------------------------------------------------------------------------ if (jour == 1 and devicechanged['Pollens']) then debug("Nouveau bulletin pollens") commandArray['SendNotification']='Pollens#Nouveau bulletin pollen http://www.pollens.fr/docs/vigilance.html#0' end -- ------------------------------------------------------------------------------ -- Derniere détection -- ------------------------------------------------------------------------------ if devicechanged['Detecteur Salon'] or devicechanged['Detecteur Bureau'] then commandArray['Variable:DerniereDetection'] = tostring(heures)..":"..tostring(minutes) debug("DerniereDetection"..tostring(heures)..":"..tostring(minutes)) end -- ------------------------------------------------------------------------------ -- Température extérieure a changé, mise à jour du chauffage central -- ------------------------------------------------------------------------------ if devicechanged['BarometreLaGacilly'] then local variation = variationTemp('BarometreLaGacilly') --if (minutes%30==0) then --local variationBarometer = variationPressure('BarometreLaGacilly', 30) --print("variationBarometer="..tostring(variationBarometer)) local tempExt = getTemperatureFromDevice('BarometreLaGacilly') local humidityExt = getHumidityFromDevice('BarometreLaGacilly') --print(split(otherdevices_svalues['BarometreLaGacilly'],";")[1]); local consigne = 13 -- tonumber(otherdevices_svalues['ConsigneChauffageGeneral']) debug (otherdevices_svalues['BarometreLaGacilly']..' Consigne='..otherdevices_svalues['ConsigneChauffageGeneral']..' TempExt='..tostring(tempExt)..' humidityExt='..tostring(humidityExt)) if heures == 23 and minutes == 00 then if tempExt < consigne and (quantieme < 92 or quantieme > 275) then switchIfNeeded('ChauffageGeneral','On') end if tempExt >= consigne then switchIfNeeded('ChauffageGeneral','Off') end end if humidityExt > 65 then switchIfNeeded('Deshumidificateur','On') else if humidityExt < 60 then switchIfNeeded('Deshumidificateur','Off') end end debug("Retour variation="..tostring(variation).." switch="..'BarometreLaGacilly tempExt='..tostring(tempExt)) --end end -- ------------------------------------------------------------------------------ -- Test suivi consommation électrique -- ------------------------------------------------------------------------------ --debug(otherdevices['ConsoCapteurHC']) --debug("ConsocapteurHP="..otherdevices_svalues['ConsoCapteurHP']) if devicechanged['Capteur électricité'] then debug("Electricité a changé") local val local val2 val, val2 = otherdevices_svalues['Capteur électricité']:match("([^;]+);([^;]+)") val = tonumber(val) debug(val) --debug('#### HC '..otherdevices['ConsoCapteurHC']) --debug('#### HP '..otherdevices['ConsoCapteurHP']) if val > 2200 or val == nil then debug("Reception de données incohérentes pour la consommation électrique "..tostring(val)) else val = val - 50 if uservariables['HeuresCreuses'] == 'On' then -- Recuperation des valeurs du compteur global local consoCumule local consoInstant consoInstant, consoCumule = otherdevices_svalues['ConsoCapteurHC']:match("([^;]+);([^;]+)") consoInstant = tonumber(consoInstant) consoCumule = tonumber(consoCumule) debug('Conso Instant = '..tostring(consoInstant)..' / Conso Cumule = '..tostring(consoCumule)..' ') local timeLast = lastUpdateOfDevice('ConsoCapteurHC') local joules = val * timeLast -- Puissance en W * second = Joule local wattH = joules / 3600 if (consoCumule == nil) then consoCumule = 0 end if (val < 0) then wattH = 0 end commandArray['UpdateDevice'] = '197|0|'..tostring(wattH)..';'..tostring(consoCumule + wattH) debug("Ajout en heures creuses wattH "..tostring(wattH)..'; total '..tostring(consoCumule + wattH)) else -- Recuperation des valeurs du compteur global local consoCumule local consoInstant consoInstant, consoCumule = otherdevices_svalues['ConsoCapteurHP']:match("([^;]+);([^;]+)") consoInstant = tonumber(consoInstant) consoCumule = tonumber(consoCumule) debug('Conso Instant = '..tostring(consoInstant)..' / Conso Cumule = '..tostring(consoCumule)..' ') --local current = tonumber(otherdevices_svalues['ConsoCapteurHP']) --if current == nil then current = 0 end local timeLast = lastUpdateOfDevice('ConsoCapteurHP') local joules = val * timeLast -- Puissance en W * second = Joule local wattH = joules / 3600 if (val < 0) then wattH = 0 end commandArray['UpdateDevice'] = '196|0|'..tostring(wattH)..';'..tostring(consoCumule + wattH) debug("Ajout en heures pleines wattH "..tostring(wattH)..'; total '..tostring(consoCumule + wattH)) end end end -- ------------------------------------------------------------------------------ -- Mode vacances -- ------------------------------------------------------------------------------ -- ------------------------------------------------------------------------------ -- Envoi de notification -- ------------------------------------------------------------------------------ -- Vacances if devicechanged['Vacances'] then debug("Mode vacances a change") commandArray['SendNotification']='Mode vacances#Le mode vacances a ete modifie#0' if otherdevices['Vacances'] == 'On' then -- non on conserve internet switchIfNeeded('PriseInternet', 'Off') switchIfNeeded('Lampe_Halogene', 'Off') switchIfNeeded('Lampe_Buffet', 'Off') switchIfNeeded('Lampe_Tele', 'Off') switchIfNeeded('SonoJasper', 'Off') switchOffRadiateur('RadiateurManon') switchOffRadiateur('RadiateurTheo') switchOffRadiateur('RadiateurBureau') switchOffRadiateur('RadiateurChambre') switchOffRadiateur('RadiateurCuisine') switchOffRadiateur('RadiateurMilieu') switchOffRadiateur('RadiateurCheminee') end end -- ------------------------------------------------------------------------------ -- Plus d'internet on redémarre -- ------------------------------------------------------------------------------ if --otherdevices['Vacances'] == 'Off' and devicechanged['Internet'] and otherdevices['Internet'] == 'Off' then commandArray['PriseInternet'] = 'Off' sleep(10) commandArray['PriseInternet'] = 'On' end -- ------------------------------------------------------------------------------ -- Absence famille mais présence moi -- ------------------------------------------------------------------------------ if otherdevices['Vacances'] == 'Off' and devicechanged['AbsenceFamille'] then if otherdevices['AbsenceFamille'] == 'Off' then switchOffRadiateur('RadiateurTheo') switchOffRadiateur('RadiateurChambre') else switchOnRadiateur('RadiateurTheo') switchOnRadiateur('RadiateurChambre') end end -- ------------------------------------------------------------------------------ -- Determination de l'augmentation de la temperature exterieure -- ------------------------------------------------------------------------------ if devicechanged['BarometreLaGacilly'] then print("--------------TemperatureLaGacilly--------------------------------") local variation, time = getVariation('BarometreLaGacilly') local augmentation = variation * 60 / time -- ° par heure print("Retour augmentation="..tostring(augmentation)) commandArray['Variable:AugmentationTempExterieure'] = tostring(augmentation) print("------------------------------------------------------------------") --local currentTemp = tonumber(otherdevices_svalues['Bureau'] local tempExt = getTemperatureFromDevice('BarometreLaGacilly') debug("-------------- Ventilo Bureau------------------- "..tostring(tempExt)) if (tempExt < 8.5) then switchOn('VentilateurBureau') else switchOff('VentilateurBureau') end end return commandArray