![]() |
|
Fasades lighting script by time and outside sensor - Printable Version +- LogicMachine Forum (https://forum.logicmachine.net) +-- Forum: LogicMachine eco-system (https://forum.logicmachine.net/forumdisplay.php?fid=1) +--- Forum: Scripting (https://forum.logicmachine.net/forumdisplay.php?fid=8) +--- Thread: Fasades lighting script by time and outside sensor (/showthread.php?tid=4322) |
Fasades lighting script by time and outside sensor - AlexLV - 25.10.2022 Hi, I started to create widget for fasades lighting and easy script, but all not so easy for me. Idea - swich On/off by time or/and outside sensor. At widget I need enter hour/min for On time and hour.min for Off time. Also I added Sensor control - Light level form sensor, Lux when Light will be On, and Delta when Light should be off. Below my widget (not finished) and script. Some moments I need help: 1. How to show zero in front if hours or minutes from 0 to 9 ? 2. For me my idea not forking correctly, fasades light is flashing some times. 3. How check "mistakes" settings better? Not found example at forum. i used resident script 1 minute. Code: HStart = grp.getvalue('0/1/100') -- Hours to start Fasades Light On
MinStart = grp.getvalue('0/1/101') -- Minutes to start Fasades Light On
HStop = grp.getvalue('0/1/102') -- Hours to stop Fasades Light On
MinStop = grp.getvalue('0/1/103') -- Minutes to stop Fasades Light On
SensorValue = grp.getvalue('1/0/100') -- Outside Light Sensor Value LUX
SensorLightOn = grp.getvalue('0/1/105') -- LightOn Value LUX
LightOffHysteresis = grp.getvalue('0/1/106') -- LightOff Hysteresis LUX
-------------------------------------------------------------------------
now = os.date('*t')
-- time table
time = {
day = wday,
hour = now.hour,
minute = now.min,
second = now.sec,
}
if (now.hour == HStart) and (now.min == MinStart)then
FasadesLightTime = 1
grp.write ('0/2/19', 1) -- Group Fasades Light
end
if (now.hour == HStop) and (now.min == MinStop) then
FasadesLightTime = 0
grp.write ('0/2/19', 0)
end
if SensorValue <= SensorLightOn then
SensorOn = 1
grp.write ('0/2/19', 1)
end
if SensorValue > SensorLightOn + LightOffHysteresis then
SensorOn = 0
grp.write ('0/2/19', 0)
endBR, Alex RE: Fasades lighting script by time and outside sensor - admin - 25.10.2022 You have 4 independent IF statements. This causes the light to flicker if more than one statement is true. I think it makes more sense to create a scheduler tied to sunrise/sunset instead of manually specifying the time. RE: Fasades lighting script by time and outside sensor - AlexLV - 25.10.2022 Yes, but customer wants such way. I will try to propose sunset/sunrise variant to him. Alex RE: Fasades lighting script by time and outside sensor - admin - 25.10.2022 Then you need to define your logic correctly. Right now time and sensor value are independent. I suppose you want to control the light using sensor value only when the current time is between user-defined on/off time. RE: Fasades lighting script by time and outside sensor - Gadjoken - 26.10.2022 Hello, I use several scripts to achieve I think what you want: Script 1 : Scheduled Minute 1,16,31,46 every Hour every Month every day name COMMANDE ECLAIRAGE EXTERIEUR (The name is used in a script to disable it): Code: -- Commande Eclairage exterieur
ConsigneLux = grp.getvalue('35/1/3') -- Consigne Lux spaceLYNK
StationBat = grp.getvalue('3/0/0') -- Valeur station météo
if ConsigneLux > StationBat then
grp.write('0/0/53', true)
grp.write('0/0/54', true)
--grp.write('0/0/63', true)
elseif ConsigneLux < StationBat then
grp.write('0/0/53', false)
grp.write('0/0/54', false)
--grp.write('0/0/63', false)
endScript 2 : Event-Based sur 35/1/2=Commande calendrier éclairage extérieur : Code: ConsigneH = event.getvalue() -- Retour calendrier - Eclairage exterieur
AutoManu = grp.getvalue('35/1/1') -- Auto / Manu Eclairage exterieur (true=Auto false=Manu)
if ConsigneH == true and AutoManu == true then
script.enable('COMMANDE ECLAIRAGE EXTERIEUR')
elseif ConsigneH == false and AutoManu == true then
script.disable('COMMANDE ECLAIRAGE EXTERIEUR')
grp.write('0/0/53', false)
grp.write('0/0/54', false)
--grp.write('0/0/63', false)
endScript 3 : Event-Based sur 35/1/1=Auto/manu eclairage extérieur : Code: ConsigneLux = grp.getvalue('35/1/3') -- Consigne Lux spaceLYNK
StationBat = grp.getvalue('3/0/0') -- Valeur station
ConsigneH = grp.getvalue('35/1/2') -- Retour calendrier - Eclairage exterieur
AutoManu = grp.getvalue('35/1/1') -- Auto / Manu Eclairage exterieur (true=Auto false=Manu)
if AutoManu == false then
script.disable('COMMANDE ECLAIRAGE EXTERIEUR') -- Si nous passons en Mode Manu. alors nous désactivons le script de l'auto. nous gardons l'état précédent de l'éclairage
elseif ConsigneH == true and AutoManu == true and ConsigneLux > StationBat then
grp.write('0/0/53', true)
grp.write('0/0/54', true)
--grp.write('0/0/63', true)
script.enable('COMMANDE ECLAIRAGE EXTERIEUR') -- Si nous passons en Auto. et qu'il y a besoin de l'éclairage, que nous sommes dans la tranche Horraire alors nous allumons et nous activons le script Auto.
elseif ConsigneH == true and AutoManu == true and ConsigneLux < StationBat then
grp.write('0/0/53', false)
grp.write('0/0/54', false)
--grp.write('0/0/63', false)
script.enable('COMMANDE ECLAIRAGE EXTERIEUR') -- Si nous passons en Auto. et qu'il n'y a pas besoin de l'éclairage, que nous sommes dans la tranche Horraire alors nous éteignons et nous activons le script Auto.
elseif ConsigneH == false and AutoManu == true then
grp.write('0/0/53', false)
grp.write('0/0/54', false)
--grp.write('0/0/63', false)
script.enable('COMMANDE ECLAIRAGE EXTERIEUR') -- Si nous passons en Auto. et que nous ne sommes pas dans la tranche Horraire alors nous éteignons et nous désactivons le script Auto.
endThen you create a calendar with 35/1/2 Exterior lighting control and you integrate it in addition to your lux setpoint (35/1/3) in your supervision which will give the attached photo, the customer can modify via the schedule the start/stop times in the morning and evening as well as the lux setpoint. I also added on another page the auto/manu object so that the customer can turn on or off his lighting as he wishes without this automation. B.R. |