Jump to content
  • 0

Kalendarz dni wolnych


Guest rafal_ll

Question

Guest rafal_ll

 

W HC2 miałem scenę zmieniającą zmienną którą można wykorzystywać w scenach, autorem był  barto@.

Może macie już podobne rozwiązanie do HC3 ?

Edited by rafal_ll
Link to post
Share on other sites

9 answers to this question

Recommended Posts

  • 0
W dniu 3.05.2020 o 18:38, jgab napisał:

Ok, bad topic of the thread (not only for Sweden now) but here is a more international version using the 

https://calendarific.com/#pricing

service that @Sjakie pointed at.

Holidays.fqa 5 kB · 19 pobrań

You will manage the free tier as it calls the api once a day, ~30 times a month, and it's free for 1000/month.

 

quickAppVariables:

'api_key' - the api key you get when you register

'country' - country code according to their api

'language' - only if you pay you get the data in your language of choice - otherwise english

'weekends' - if set to "no" will not consider weekends as work free days (default is yes)

 

This behaves a bit different. The QA is of type binarySwitch and will be on when it's a holiday (or weekend) and off when not (when it's a work day)

This way it's easy to test if the QA is on or off.

It also supports turnOn and turnOff commands to override the automatic setting. If you wake up in the morning and decides it should be holiday anyway... :-) 

 

Feel free to improve.

Jak to nie?? @jgab zrobił takie QA, sam z niego korzystam

Edited by michal85pl
  • Thanks 1
Link to post
Share on other sites
  • 0
1 hour ago, XTeK said:

Oleg "wakacje kociego dnia" - cat day holiday. :D

Yep ;) right 

that was my basic idea ;) for exclude some holidays when you works and not rest ;) 

so this QA can alert ONLY if working day is holiday and you can make additional automation based on it ;) 

thanks dear!

Edited by 10der
Link to post
Share on other sites
  • 0

Dzięki wielkie

Muszę przetestować wasze rozwiązania 

Wszystkie te rozwiązania są fajne  opierają się o zewnętrzne źródła danych.

 

Na HC2 miałem taką scenę bez pobierania danych

Nie pamiętam kto był twórcą, ale działała świetnie.

 

 

 

 

--[[ 
 %% autostart 
 %% properties 
 %% globals 
 --]] 

 local sourceTrigger = fibaro:getSourceTrigger(); 
 if (sourceTrigger["type"] == "autostart") then 
 while true do 

 local currentDate = os.date("*t"); 
 local startSource = fibaro:getSourceTrigger(); 
 if ( 
  ( ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "00:01") ) 
 ) 
 then 
       wolny=0 
   rok=os.date("%Y") 
   zm = (rok % 19) + 1 
   c = math.floor(rok/400) + math.floor(8*(math.floor(rok/100)+11)/25) - math.floor(rok/100) 
   s = (11 * zm + c) % 30 
   if (s < 0) then 
     s = s + 30 
   end 
   pfm = os.time{year=rok, month=4, day=19} - s * 24 * 60 * 60 
   if (pfm == os.time{year=rok, month=4, day=19}) then 
     pfm = pfm - 24 * 60 * 60 
   elseif (pfm == os.time{year=rok, month=4, day=18} and zm > 11) then 
     pfm = pfm - 24 * 60 * 60 
   end 
   niedz = pfm + (7 - tonumber(os.date("%w", pfm))) * 24 * 60 * 60 
   poniedz = niedz + 1 * 24 * 60 * 60 
   bozec = niedz + 60 * 24 * 60 * 60 

   wielkanoc = os.date("%m", niedz)..os.date("%d", niedz)  
   lanyponiedz= os.date("%m", poniedz)..os.date("%d", poniedz) 
   bozecialo= os.date("%m", bozec)..os.date("%d", bozec) 
   
 t= {"0101","0106","0501","0503","0815","1101","1111","1225","1226"} 

 table.insert(t,lanyponiedz) 
 table.insert(t,bozecialo) 

 data= tostring(os.date("%m%d")) 
 fibaro:debug(data) 
 for a, b in pairs(t) do 
  if data==b then 
 wolny = 1 
   end 
 end 

 local dzis = os.date("*t"); 
 if  (dzis.wday == 1 or dzis.wday == 7) or wolny == 1 then 
 fibaro:debug("Dzień wolny : TAK") 
 fibaro:setGlobal("dzien_wolny",1) 
 else 
 fibaro:debug("Dzień wolny : NIE") 
 fibaro:setGlobal("dzien_wolny",0)  
 end 

 end 

 fibaro:sleep(60*1000); 
 end 
 else 

 local currentDate = os.date("*t"); 
 local startSource = fibaro:getSourceTrigger(); 
 if ( 
 startSource["type"] == "other" 
 ) 
 then 
   wolny=0 
   rok=os.date("%Y") 
   zm = (rok % 19) + 1 
   c = math.floor(rok/400) + math.floor(8*(math.floor(rok/100)+11)/25) - math.floor(rok/100) 
   s = (11 * zm + c) % 30 
   if (s < 0) then 
     s = s + 30 
   end 
   pfm = os.time{year=rok, month=4, day=19} - s * 24 * 60 * 60 
   if (pfm == os.time{year=rok, month=4, day=19}) then 
     pfm = pfm - 24 * 60 * 60 
   elseif (pfm == os.time{year=rok, month=4, day=18} and zm > 11) then 
     pfm = pfm - 24 * 60 * 60 
   end 
   niedz = pfm + (7 - tonumber(os.date("%w", pfm))) * 24 * 60 * 60 
   poniedz = niedz + 1 * 24 * 60 * 60 
   bozec = niedz + 60 * 24 * 60 * 60 

   wielkanoc = os.date("%m", niedz)..os.date("%d", niedz)  
   lanyponiedz= os.date("%m", poniedz)..os.date("%d", poniedz) 
   bozecialo= os.date("%m", bozec)..os.date("%d", bozec) 
   
 t= {"0101","0106","0501","0503","0815","1101","1111","1225","1226"} 

 table.insert(t,lanyponiedz) 
 table.insert(t,bozecialo) 

 data= tostring(os.date("%m%d")) 
 fibaro:debug(data) 
 for a, b in pairs(t) do 
  if data==b then 
 wolny = 1 
   end 
 end 

 local dzis = os.date("*t"); 
 if  (dzis.wday == 1 or dzis.wday == 7) or wolny == 1 then 
 fibaro:debug("Dzień wolny : TAK") 
 fibaro:setGlobal("dzien_wolny",1) 
 else 
 fibaro:debug("Dzień wolny : NIE") 
 fibaro:setGlobal("dzien_wolny",0)  
 end 

 end 

 end 

 

 

 

 

 

Link to post
Share on other sites
  • 0
1 hour ago, Rafal_ll said:

 t= {"0101","0106","0501","0503","0815","1101","1111","1225","1226"} 

👍

Link to post
Share on other sites
  • 0
21 godzin temu, Rafal_ll napisał:

Na HC2 miałem taką scenę bez pobierania danych

Nie pamiętam kto był twórcą, ale działała świetnie.

No niby tak, ale sztuka polega na tym właśnie, żeby dni wolne aktualizowały się same, bo wpisywanie ręczne to słaba opcja...

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...