Files
Domoticz/lua/script_device_General.lua
2025-03-06 11:09:58 +01:00

230 lines
8.9 KiB
Lua
Executable File

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