Kirjautuminen

Haku

Tehtävät

Kilpailu

Murra koodi!
Lue ja osallistu!
Voittajia 1 + yrittäjiä 1

Keskustelu: Koodit: 8th: Auringon nousu ja lasku

jalski [24.04.2022 12:44:51]

#

Katselin Raspberry PI foorumeilla, että siellä osa käyttäjistä käytti "sunwait" nimistä apuohjelmaa yksinkertaiseen kotiautomaatio-ohjaukseen odottamaan auringon laskua ja nousua ulkovaloja päälle ja pois päältä ohjattaessa.

Vastaavan toiminnallisuuden toteuttaa itsekin muutamalla rivillä koodia. Alla esimerkkiohjelma, mikä nukkuu auringonlaskuun asti.

needs date/sunrise

\ Set location
: location!  \ latitude longitude --
  d:longitude ! d:latitude ! ;

\ Return sunrise and sunset times as datetime
: astro  \ d -- sunrise sunset
  "%Z" over d:format ":" s:/ ' >n a:map >r d:sunrise swap
  60 n:* 60 n:/mod swap 2 a:close r@ ' n:+ a:2map "%02d:%02d" s:strfmt d:parse
  swap 60 n:* 60 n:/mod swap 2 a:close r> ' n:+ a:2map "%02d:%02d" s:strfmt d:parse ;

: sunrise?
  d:new astro drop ;

: sunset?
  d:new astro nip ;

\ Sleep until given datetime
: sleep-until \ d --
  d:>msec d:msec n:-
  0 over n:> if drop ;then
  1000 n:/ sleep ;

: app:main
  60.99596 24.46434 location!  \ Hämeenlinna, Finland
  sunset? sleep-until ;        \ Sleep until sunset

Vastaus

Muista lukea kirjoitusohjeet.
Tietoa sivustosta