This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

Fasades lighting script by time and outside sensor
#1
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)
end
   

BR, 

Alex
Reply
#2
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.
Reply
#3
Yes, but customer wants such way. I will try to propose sunset/sunrise variant to him.

Alex
Reply
#4
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.
Reply
#5
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)
end

Script 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)
end

Script 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.
end

Then 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.

Attached Files Thumbnail(s)
   
Reply


Forum Jump: