Dela prosti dnevi, prazniki, vikendi, prestopna leta,...

Vse v zvezi z vašimi samogradnjami, popravili, idejami,....

Moderator: S53AL

Dela prosti dnevi, prazniki, vikendi, prestopna leta,...

OdgovorNapisal/-a sundancer » 28 Nov 2016, 18:35

V okviru pametnih hiš sem večkrat potreboval informacijo ali je nek dan dela prosti dan. Včasih me je zanimalo samo ali je vikend, drugič ali nam ni treba na delo, tretjič samo dan v tednu. Tako sem spisal webservice kateremu povemo datum, stran pa nam vrne omenjene lastnosti za tisti dan.

Zadeva je skupaj s spodnjimi navodili dosegljiva na naslovu:
https://api.dmz6.net/datum.html

Če se komu zdi uporabno naj uporablja. Izvorno kodo bom v bližnji prihodnosti objavil na githubu. Preden to naredim se priporočam za izboljšave, ideje, kritike ipd...

Še navodila za na forum:
Ura na strežniku sinhronizirana z NTP.
Velika noč, velikonočni ponedeljek, binkoštna nedelja se preračunajo glede na podano letnico. Zadeva ne jemlje datumov pred 1.1.2013 saj je bil s tem dnem ukinjen datum 2. januar kot dela prosti dan.

Kako kličemo webservice:
https://api.dmz6.net/datum/infonow - vrne lastnosti za trenutni datum
https://api.dmz6.net/datum/info/2016/11/28 - vrne lastnosti z dne 28.11.2016

Rezultat dobimo v JSON obliki. Razlaga parametrov v rezultatu je na spodnjem primeru:
$ curl -qs https://api.dmz6.net/datum/info/2015/4/5 | jq .
{
"datum": "5.4.2015",
"holiday": true,
"businessday": false,
"weekend": true,
"weekday": 7,
"leapyear": false,
"holiday_name": "Velika noč"
}

datum, string - datum za katerega smo povpraševali
holiday, true/false - če je na ta dan praznik
businessday, true/false - vrne false, če je to dela prosti dan
weekend, true/false - vrne true kadar je sobota ali nedelja
weekday, 1 do 7 - ena je ponedeljek, dve je torek, ... sedem je nedelja
leapyear, true/false - vrne true, če je prestopno leto
holiday_name, string - pove ime praznika, parameter je nastavljen samo takrat, kadar je holiday=true
Uporabniški avatar
sundancer
 
Prispevkov: 441
Pridružen: 16 Jan 2015, 23:36
Kraj: Domžale
Zahvalil se je: 133 krat
Prejel zahvalo: 209 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 31

Re: Dela prosti dnevi, prazniki, vikendi, prestopna leta,...

OdgovorNapisal/-a sundancer » 29 Nov 2016, 10:54

UPDATE:

Za lažje delo na platformah kjer nimamo JSON parserja je na voljo tudi neposreden dostop do vseh parametrov, ki je znotraj JSON odgovora. Ravno tako je zadeva dostopna na http kakor tudi na https. Nekaj primerov je spodaj:
$ curl http://api.dmz6.net/datum/holiday/2016/12/25
true

$ curl http://api.dmz6.net/datum/weekday/2016/12/25
7

$ curl http://api.dmz6.net/datum/businessday/2016/12/25
false

Če nas zanima točen čas sta na voljo tudi naslednja klica. Uporabna sta v primeru, ko želimo nastaviti uro nekega mikrokontrolerja.
$ curl http://api.dmz6.net/datum/getTime/local
29.11.2016 09:45:45 GMT+0100 (CET)

$ curl http://api.dmz6.net/datum/getTime/epoch
1480409148.365

Slednji klic vrne število sekund ter milisekund (ločeno s piko) od 1.1.1970 00:00:00.
Uporabniški avatar
sundancer
 
Prispevkov: 441
Pridružen: 16 Jan 2015, 23:36
Kraj: Domžale
Zahvalil se je: 133 krat
Prejel zahvalo: 209 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 31

Re: Dela prosti dnevi, prazniki, vikendi, prestopna leta,...

OdgovorNapisal/-a s54mtb » 29 Nov 2016, 11:14

s54mtb
 
Prispevkov: 8166
Pridružen: 15 Jan 2015, 01:10
Zahvalil se je: 1064 krat
Prejel zahvalo: 2604 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 62

Re: Dela prosti dnevi, prazniki, vikendi, prestopna leta,...

OdgovorNapisal/-a sundancer » 29 Nov 2016, 11:33

/datum/getTime/utc sem implementiral.
Za /locator bi te pa prosil, ce imas kje na mapiranje locator -> country

:)
Uporabniški avatar
sundancer
 
Prispevkov: 441
Pridružen: 16 Jan 2015, 23:36
Kraj: Domžale
Zahvalil se je: 133 krat
Prejel zahvalo: 209 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 31

Re: Dela prosti dnevi, prazniki, vikendi, prestopna leta,...

OdgovorNapisal/-a s54mtb » 29 Nov 2016, 11:38

s54mtb
 
Prispevkov: 8166
Pridružen: 15 Jan 2015, 01:10
Zahvalil se je: 1064 krat
Prejel zahvalo: 2604 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 62

Re: Dela prosti dnevi, prazniki, vikendi, prestopna leta,...

OdgovorNapisal/-a sundancer » 29 Nov 2016, 11:55

Ce imas moznost tole C# kodo kje pognat in zgenerirat koordinatorje za prva dva para v lokatorju (dve crki + dve stevilki) potem bom s pomocjo googlovega apija pogledal kaksni so offseti za posamezen lokator in se bo dalo preracunat kolk je tam ura.

https://developers.google.com/maps/docu ... zone/start
Uporabniški avatar
sundancer
 
Prispevkov: 441
Pridružen: 16 Jan 2015, 23:36
Kraj: Domžale
Zahvalil se je: 133 krat
Prejel zahvalo: 209 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 31

Re: Dela prosti dnevi, prazniki, vikendi, prestopna leta,...

OdgovorNapisal/-a sundancer » 29 Nov 2016, 14:09

UPDATE:

Če nam datum ni znan lahko uporabimo "now":
$ curl http://api.dmz6.net/datum/holiday/now
false

$ curl http://api.dmz6.net/datum/weekday/now
2

$ curl http://api.dmz6.net/datum/businessday/now
true
Uporabniški avatar
sundancer
 
Prispevkov: 441
Pridružen: 16 Jan 2015, 23:36
Kraj: Domžale
Zahvalil se je: 133 krat
Prejel zahvalo: 209 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 31

Re: Dela prosti dnevi, prazniki, vikendi, prestopna leta,...

OdgovorNapisal/-a smatjaz » 29 Nov 2016, 19:43

Pozdravljen.

SUPER NAREJENO.
Hvala za trud.

Ali bo to trajno dosegljivo?

LPM.
Uporabniški avatar
smatjaz
 
Prispevkov: 101
Pridružen: 13 Feb 2015, 09:22
Zahvalil se je: 0 krat
Prejel zahvalo: 1 krat
Uporabnika povabil: DusanK
Število neizkoriščenih povabil: 0

Re: Dela prosti dnevi, prazniki, vikendi, prestopna leta,...

OdgovorNapisal/-a sundancer » 29 Nov 2016, 19:45

smatjaz je napisal/-a:Pozdravljen.

SUPER NAREJENO.
Hvala za trud.

Ali bo to trajno dosegljivo?

LPM.


Hvala.
Si bom prizadeval, da bo. Namreč nameravam uporabljati tudi sam.
Uporabniški avatar
sundancer
 
Prispevkov: 441
Pridružen: 16 Jan 2015, 23:36
Kraj: Domžale
Zahvalil se je: 133 krat
Prejel zahvalo: 209 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 31

Re: Dela prosti dnevi, prazniki, vikendi, prestopna leta,...

OdgovorNapisal/-a s54mtb » 29 Nov 2016, 20:29

Bom nartedil tisto poizvedbo na gugl api....

Trajnost se lahko poveča, če bi dal source pa si namestimo še na svoje serverje... pa se omogoči dostopnost. Kakšna je pa praksa v takem primeru glede izbire dostopa, če imaš več redundančnih servisov?
s54mtb
 
Prispevkov: 8166
Pridružen: 15 Jan 2015, 01:10
Zahvalil se je: 1064 krat
Prejel zahvalo: 2604 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 62

Re: Dela prosti dnevi, prazniki, vikendi, prestopna leta,...

OdgovorNapisal/-a sundancer » 29 Nov 2016, 20:35

Bom dal na github, sam da tole mal zazivi in dozori :)
Uporabniški avatar
sundancer
 
Prispevkov: 441
Pridružen: 16 Jan 2015, 23:36
Kraj: Domžale
Zahvalil se je: 133 krat
Prejel zahvalo: 209 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 31

Re: Dela prosti dnevi, prazniki, vikendi, prestopna leta,...

OdgovorNapisal/-a sundancer » 29 Nov 2016, 20:41

s54mtb je napisal/-a:Kakšna je pa praksa v takem primeru glede izbire dostopa, če imaš več redundančnih servisov?


Najlazje je naredit redundanco na nivoju DNS. Naprimer, da kaze zapis api.dmz6.net na vec IPjev in potem vsak klient izbere enega na random. Pod pogojem, da so full blown DNS klienti in ne neke embedded zadeve, ki vzamejo le prvi IP naslov v odgovoru. Druga moznost je http load balancer vendar je potem on single point of failure. Torej bi potreboval vsaj dve masini ki si posiljata keepalive in je vedno eden master.
Bomo ze kaj nagruntali, ko bo potreba :)
Uporabniški avatar
sundancer
 
Prispevkov: 441
Pridružen: 16 Jan 2015, 23:36
Kraj: Domžale
Zahvalil se je: 133 krat
Prejel zahvalo: 209 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 31

Re: Dela prosti dnevi, prazniki, vikendi, prestopna leta,...

OdgovorNapisal/-a s54mtb » 29 Nov 2016, 21:43

Saj v tem primeru morda ni potrebe, je pa koristno poznati prakso.
s54mtb
 
Prispevkov: 8166
Pridružen: 15 Jan 2015, 01:10
Zahvalil se je: 1064 krat
Prejel zahvalo: 2604 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 62

Re: Dela prosti dnevi, prazniki, vikendi, prestopna leta,...

OdgovorNapisal/-a Protoncek » 30 Nov 2016, 08:24

sundancer je napisal/-a:Zadeva ne jemlje datumov pred 1.1.2013 saj je bil s tem dnem ukinjen datum 2. januar kot dela prosti dan.

Hm...kot kaže boš moral tole popraviti. Ravno te dni odločajo, da bi spet uvedli 2.januar kot dela prost dan. Zadeva naj bi bila aktualna takoj, torej že 2017.
Sicer pa pohvalno!
Uporabniški avatar
Protoncek
 
Prispevkov: 2742
Pridružen: 17 Jan 2015, 21:41
Kraj: Mengeš
Zahvalil se je: 223 krat
Prejel zahvalo: 271 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 58

Re: Dela prosti dnevi, prazniki, vikendi, prestopna leta,...

OdgovorNapisal/-a sundancer » 30 Nov 2016, 12:40

Sem bral o tem ja.
No, v kodi en if stanek ne stane toliko časa, denarja in človekur, kot njih posedanje v DZ ter opravljanje protokolarnih mahinacij za odločitev.
To je prva in upam da zadnja koda, ki se dotika politike. Rajši bitshiftam levo in desno kot implementiram politične odločitve v kodi. Že s54mtb je dregnil z lokatorjem, ker padem v različne časovne zone ter kdaj kdo uro prestavlja. Ampak ok, malo truda za ham špirit ;)
Uporabniški avatar
sundancer
 
Prispevkov: 441
Pridružen: 16 Jan 2015, 23:36
Kraj: Domžale
Zahvalil se je: 133 krat
Prejel zahvalo: 209 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 31

Re: Dela prosti dnevi, prazniki, vikendi, prestopna leta,...

OdgovorNapisal/-a s54mtb » 30 Nov 2016, 13:20

Lokator v Lat/Lon:

Koda: Izberi vse
lonmin = (5 * (gridsq[5]-'A')) + 2.5 ;   /* center */
londeg = 180 -( 20 * (gridsq[1]-'A'))    /* tens of deg */
          - ( 2 * (gridsq[3]-'0')) ;     /* two deg */
lon = londeg - (lonmin/60) ;

latdeg = -90 + ( 10 * (gridsq[2]-'A'))   /* tens of deg */
                 + (gridsq[4]-'0');      /* degrees */
latmin = 2.5 * (gridsq[6]-'A')           /* minutes */
         + 1.25 ;                        /* for center */
lat = latdeg + (latmin/60) ;



Na začetku dodaš še kontrolo, če je dolžina 4, dodaš na koncu "LL", kar postavi točko v center. Format je pa AA00AA.

Iz Lat/Lon pa z enim hitrim search-em dobiš country s pomočjo te tabele:
https://gist.githubusercontent.com/laur ... g,timezone
s54mtb
 
Prispevkov: 8166
Pridružen: 15 Jan 2015, 01:10
Zahvalil se je: 1064 krat
Prejel zahvalo: 2604 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 62

Re: Dela prosti dnevi, prazniki, vikendi, prestopna leta,...

OdgovorNapisal/-a sundancer » 04 Dec 2016, 01:02

UPDATE:

V okviru klicev s parametrom 'now' je možno pridobiti tudi informacijo v kakšnem tarifnem obdobju se trenutno nahajamo glede zaračunavanja porabe električne energije. Kot rezultat dobimo string MT ali VT, odvisno od časa ob katerem je strežnik sprejel takšen klic.
$ curl http://api.dmz6.net/datum/tariff/now
MT

Poizvedovanje o tarifnem obdobju v primeru datumskega klica (npr: /datum/tariff/2016/1/1) ne bo uspelo.
Uporabniški avatar
sundancer
 
Prispevkov: 441
Pridružen: 16 Jan 2015, 23:36
Kraj: Domžale
Zahvalil se je: 133 krat
Prejel zahvalo: 209 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 31

Re: Dela prosti dnevi, prazniki, vikendi, prestopna leta,...

OdgovorNapisal/-a sundancer » 23 Feb 2017, 18:26

Priponke
nodered-date-properties-flow.png
Uporabniški avatar
sundancer
 
Prispevkov: 441
Pridružen: 16 Jan 2015, 23:36
Kraj: Domžale
Zahvalil se je: 133 krat
Prejel zahvalo: 209 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 31

Re: Dela prosti dnevi, prazniki, vikendi, prestopna leta,...

OdgovorNapisal/-a LiPo » 23 Feb 2017, 19:32

Ali bi mogoče se dodal cas sončnega vzhoda in zahoda?

Kaj pravis?


LPG
Uporabniški avatar
LiPo
 
Prispevkov: 695
Pridružen: 04 Apr 2015, 17:30
Kraj: LJUBLJANA
Zahvalil se je: 22 krat
Prejel zahvalo: 84 krat
Uporabnika povabil: cimabella
Število neizkoriščenih povabil: 16

Re: Dela prosti dnevi, prazniki, vikendi, prestopna leta,...

OdgovorNapisal/-a sundancer » 23 Feb 2017, 19:40

Za nodered ze obstaja node (to je blok, ki opravlja neko funkcijo), ki odda poljubno sporocilo ob soncnem vzhodu ter zahodu. Imenuje se BigTimer.
Moja koda pa reagira samo takrat kadar v blok prispe sporocilo in mu doda ustrezne lastnosti. Za nodered torej tega ne nameravam implementirati, saj bi s tem podvajal funkcionalnost.

Za web vmesnik bi pa lahko vendar ne vem kako naj ugotovim cas vzhoda in zahoda pri cemer nocem biti odvisen od nekega zunanjega web vmesnika iz katerega bi pobiral ta podatek.
Uporabniški avatar
sundancer
 
Prispevkov: 441
Pridružen: 16 Jan 2015, 23:36
Kraj: Domžale
Zahvalil se je: 133 krat
Prejel zahvalo: 209 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 31

Re: Dela prosti dnevi, prazniki, vikendi, prestopna leta,...

OdgovorNapisal/-a sundancer » 23 Feb 2017, 23:53

https://github.com/mourner/suncalc

Kaj od tega je zanimivo za implementacijo na WEB API vmesnik?


  • sunrise - sunrise (top edge of the sun appears on the horizon)
  • sunriseEnd - sunrise ends (bottom edge of the sun touches the horizon)
  • goldenHourEnd - morning golden hour (soft light, best time for photography) ends
  • solarNoon - solar noon (sun is in the highest position)
  • goldenHour - evening golden hour starts
  • sunsetStart - sunset starts (bottom edge of the sun touches the horizon)
  • sunset - sunset (sun disappears below the horizon, evening civil twilight starts)
  • dusk - dusk (evening nautical twilight starts)
  • nauticalDusk - nautical dusk (evening astronomical twilight starts)
  • night - night starts (dark enough for astronomical observations)
  • nadir - nadir (darkest moment of the night, sun is in the lowest position)
  • nightEnd - night ends (morning astronomical twilight starts)
  • nauticalDawn - nautical dawn (morning nautical twilight starts)
  • dawn - dawn (morning nautical twilight ends, morning civil twilight starts)
Uporabniški avatar
sundancer
 
Prispevkov: 441
Pridružen: 16 Jan 2015, 23:36
Kraj: Domžale
Zahvalil se je: 133 krat
Prejel zahvalo: 209 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 31

Re: Dela prosti dnevi, prazniki, vikendi, prestopna leta,...

OdgovorNapisal/-a Kroko » 24 Feb 2017, 00:12

implementiraj azimut in altitude sonca glede na longitude/latitude in čas.
se mi zdi, da zna biti zanimivo
lahko pa razširimo na ostale nebesne pojave.
lahko pomagam pri matematiki.
http://www.planet-cnc.com poskakuješ na eni nogi in žvižgaš alpske podoknice Kroko was here!
Uporabniški avatar
Kroko
 
Prispevkov: 4076
Pridružen: 14 Jan 2015, 12:12
Kraj: Ljubljana
Zahvalil se je: 616 krat
Prejel zahvalo: 1314 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 242

Re: Dela prosti dnevi, prazniki, vikendi, prestopna leta,...

OdgovorNapisal/-a sundancer » 12 Feb 2018, 22:14

Kocno sem spravil na github.
https://github.com/mrizvic/js-prazniki

LP, Marko
Uporabniški avatar
sundancer
 
Prispevkov: 441
Pridružen: 16 Jan 2015, 23:36
Kraj: Domžale
Zahvalil se je: 133 krat
Prejel zahvalo: 209 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 31


Vrni se na Pametne hiše

Kdo je na strani

Po forumu brska: 0 registriranih uporabnikov in 1 gost