{"id":2360,"date":"2017-03-19T03:08:22","date_gmt":"2017-03-19T02:08:22","guid":{"rendered":"https:\/\/www.fanjoe.be\/?p=2360"},"modified":"2017-03-19T03:08:22","modified_gmt":"2017-03-19T02:08:22","slug":"declencher-une-action-selon-les-ephemerides-du-lever-et-coucher-du-soleil","status":"publish","type":"post","link":"https:\/\/www.fanjoe.be\/?p=2360","title":{"rendered":"D\u00e9clencher une action selon les \u00e9ph\u00e9m\u00e9rides du lever et coucher du Soleil"},"content":{"rendered":"<h1>Introduction<\/h1>\n<p>Il y a quelques temps, je cherchais \u00e0 d\u00e9clencher des actions en fonction de l&rsquo;heure du coucher et du lever du soleil ; ceci afin de simuler une pr\u00e9sence chez moi.<\/p>\n<p>Concr\u00e8tement, je voulais <a href=\"https:\/\/www.fanjoe.be\/?p=2301\" target=\"_blank\">piloter une prise \u00e9lectrique 433MHz<\/a> pour allumer et \u00e9teindre un petit luminaire situ\u00e9 pr\u00e8s d&rsquo;une fen\u00eatre.<\/p>\n<h1>Sunwait<\/h1>\n<h2>Pr\u00e9sentation<\/h2>\n<p>Apr\u00e8s de nombreuses recherches sur divers scripts qui m&rsquo;auraient permis de r\u00e9aliser ceci, je suis tomb\u00e9 sur un petit utilitaire en ligne de commande qui permet de r\u00e9aliser cette t\u00e2che tr\u00e8s facilement : <a href=\"http:\/\/www.risacher.org\/sunwait\/\" target=\"_blank\">sunwait<\/a> de Dan Risacher.<\/p>\n<h2>Installation<\/h2>\n<p>On va commence par aller voir quelle est la derni\u00e8re version de l&rsquo;utilitaire sur le site du d\u00e9veloppeur :<\/p>\n<p><a href=\"http:\/\/www.risacher.org\/sunwait\/\" target=\"_blank\">http:\/\/www.risacher.org\/sunwait\/<\/a><\/p>\n<p><a href=\"https:\/\/www.fanjoe.be\/wp-content\/uploads\/2017\/03\/SunWait-01.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-2363\" src=\"https:\/\/www.fanjoe.be\/wp-content\/uploads\/2017\/03\/SunWait-01-620x297.png\" alt=\"\" width=\"620\" height=\"297\" \/><\/a><\/p>\n<p>Ici, le code n&rsquo;a semble-t-il plus \u00e9t\u00e9 mis \u00e0 jour depuis le 08 d\u00e9cembre 2004.<\/p>\n<p>Nous allons rapatrier l&rsquo;archive dans notre dossier home\u00a0 <code>~\/<\/code> avec la commande <code>wget<\/code> :<\/p>\n<pre>$ cd ~\/<\/pre>\n<pre>$ wget http:\/\/www.risacher.org\/sunwait\/sunwait-<span style=\"color: #ff0000;\">20041208<\/span>.tar.gz<\/pre>\n<p>Puis, nous allons d\u00e9sarchiver le fichier t\u00e9l\u00e9charg\u00e9 :<\/p>\n<pre>$ tar xvzf sunwait-<span style=\"color: #ff0000;\">20041208<\/span>.tar.gz<\/pre>\n<p>On se place dans le dossier nouvellement cr\u00e9\u00e9 :<\/p>\n<pre>$ cd sunwait-<span style=\"color: #ff0000;\">20041208<\/span>\/<\/pre>\n<p>On compile le code avec la commande :<\/p>\n<pre>$ make<\/pre>\n<p>Et on copie le tout dans le dossier des binaires des programmes locaux :<\/p>\n<pre>$ sudo cp sunwait \/usr\/local\/bin<\/pre>\n<p>Une fois que cette derni\u00e8re op\u00e9ration est r\u00e9alis\u00e9e, on peut tester l&rsquo;utilitaire :<\/p>\n<pre>$ sunwait -p 50.850340N 4.351710E<\/pre>\n<p>O\u00f9\u00a0<strong>50.850340N<\/strong> et <strong>4.351710E<\/strong> repr\u00e9sentent la latitude et la longitude de Bruxelles en valeurs d\u00e9cimales.<\/p>\n<p>On peut, par exemple, les trouver <a href=\"http:\/\/www.latlong.net\/\" target=\"_blank\">sur ce site<\/a>.<\/p>\n<h2>Utilisation<\/h2>\n<p>Voici la commande pour afficher l&rsquo;aide :<\/p>\n<pre>$ sunwait -h<\/pre>\n<p>Ce qui nous retourne ceci :<\/p>\n<pre>usage: sunwait [options] [sun|civ|naut|astr] [up|down] [+\/-offset] [latitude] [longitude]\r\n\r\nlatitude\/longigude are expressed in floating-point degrees, with [NESW] appended\r\n\r\nexample: sunwait sun up -0:15:10 38.794433N 77.069450W\r\nThis example will wait until 15 minutes and 10 seconds before the sun rises in Alexandria, VA\r\n\r\nThe offset is expressed as MM, or HH:MM, or HH:MM:SS,\r\nand indicates the additional amount of time to wait after \r\n(or before, if negative) the specified event.\r\n\r\noptions: -p prints a summary of relevant times\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 -z changes the printout to Universal Coordinated Time (UTC)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 -V prints the version number\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 -v increases verbosity\r\n\r\nThese options are useful mainly when used with the '-p' option\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 -y YYYY sets the year to calculate for\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 -m MM sets the month to calculate for\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 -d DD sets the day-of-month to calculate for\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 -h prints this help<\/pre>\n<p>Et on affiche les \u00e9ph\u00e9m\u00e9rides pour le lever et le coucher du soleil avec la commande :<\/p>\n<pre>$ sunwait -p 50.850340N 4.351710E<\/pre>\n<p>On obtient par exemple :<\/p>\n<pre>Using location:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 50.850340N, 4.351710E\r\nDate:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 19 Mar 2017 \r\nLocal time:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 2:21 \r\nDay length:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 12:14 hours\r\nWith civil twilight\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 13:16 hours\r\nWith nautical twilight\u00a0\u00a0\u00a0\u00a0\u00a0 14:34 hours\r\nWith astronomical twilight\u00a0 15:54 hours\r\nLength of twilight:\u00a0 civil\u00a0\u00a0 0:31 hours\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 nautical\u00a0\u00a0 1:09 hours\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 astronomical\u00a0\u00a0 1:50 hours\r\nCurrent specified time zone: CET (1 from UTC) \r\nSun transits meridian 1250 CET\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Sun rises 0644 CET, sets 1855 CET\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Civil twilight starts 0611 CET, ends 1928 CET\r\n\u00a0\u00a0\u00a0 Nautical twilight starts 0532 CET, ends 2007 CET\r\nAstronomical twilight starts 0452 CET, ends 2047 CET<\/pre>\n<h2>Fonctionnement<\/h2>\n<p>Une fois ex\u00e9cut\u00e9, l&rsquo;utilitaire va attendre jusqu&rsquo;\u00e0 ce que l&rsquo;heure de l&rsquo;\u00e9v\u00e8nement astronomique soit atteinte pour l&rsquo;endroit indiqu\u00e9.<\/p>\n<p>Puis, les autres commandes sont ex\u00e9cut\u00e9es.<\/p>\n<h2>Exemples<\/h2>\n<pre>$ sunwait sun up -1:10:00 50.850340N 4.351710E &amp;&amp; echo 'Bonjour !'<\/pre>\n<p>On ex\u00e9cute <code>sunwait<\/code> 1 heures et 10 minutes <strong>avant<\/strong> le lever du soleil \u00e0 Bruxelles<br \/>\nD\u00e8s que l&rsquo;\u00e9v\u00e9nement se produit, on \u00e9crit <em><strong>Bonjour !<\/strong><\/em> \u00e0 l&rsquo;\u00e9cran.<\/p>\n<pre>$ sunwait sun down 2:15:00 50.850340N 4.351710E &amp;&amp; echo 'Bonne nuit !'<\/pre>\n<p>On ex\u00e9cute <code>sunwait<\/code> 2 heures et 15 minutes <strong>apr\u00e8s<\/strong> le coucher du soleil \u00e0 Bruxelles<br \/>\nD\u00e8s que l&rsquo;\u00e9v\u00e9nement se produit, on \u00e9crit <em><strong>Bonne nuit !<\/strong><\/em> \u00e0 l&rsquo;\u00e9cran.<\/p>\n<h2>Automatisation dans un cron<\/h2>\n<p>Dans mon exemple du d\u00e9but, je cherchais \u00e0 allumer et \u00e9teindre une lampe tous les jours au coucher du soleil.<\/p>\n<p>Voir <a href=\"https:\/\/www.fanjoe.be\/?p=2301\" target=\"_blank\">cet article<\/a> pour la commande sans fil en 433MHz.<\/p>\n<p>On va donc utiliser le <code>cron<\/code> pour effectuer ces t\u00e2ches :<\/p>\n<pre>$ sudo crontab -e<\/pre>\n<p>On utilisera le chemin complet pour d\u00e9finir les actions :<\/p>\n<pre>00 15 * * * \/usr\/local\/bin\/sunwait sun down -0:15:00 50.850340N 4.351710E ; \/home\/pi\/433Utils\/RPi_utils\/.\/codesend XXXXXXX &gt; \/dev\/null 2&gt;&amp;1\r\n\r\n00 15 * * * \/usr\/local\/bin\/sunwait sun down +2:00:00 50.850340N 4.351710E ; \/home\/pi\/433Utils\/RPi_utils\/.\/codesend YYYYYYY &gt; \/dev\/null 2&gt;&amp;1<\/pre>\n<p>Ici, tous les jours \u00e0 15h00, on lance les 2 actions : allumer et \u00e9teindre la lampe.<\/p>\n<p>La premi\u00e8re (allumage) 15 minutes avant le coucher du soleil.<br \/>\nLa seconde (extinction) 2 heures apr\u00e8s le coucher du soleil.<\/p>\n<p><code>XXXXXXX<\/code> est le code correspondant au bouton ON de la t\u00e9l\u00e9commande.<br \/>\n<code>YYYYYYY<\/code> est le code correspondant au bouton OFF de la t\u00e9l\u00e9commande.<\/p>\n<p><strong>NB<\/strong>: <em>sunwait<\/em> ne bloque pas les autres lignes\/actions du <em>cron<\/em>.<\/p>\n<h2>R\u00e9f\u00e9rences<\/h2>\n<p><a href=\"https:\/\/meanderingpi.wordpress.com\/sunwait\/\">https:\/\/meanderingpi.wordpress.com\/sunwait\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction <\/p>\n<p>Il y a quelques temps, je cherchais \u00e0 d\u00e9clencher des actions en fonction de l&rsquo;heure du coucher et du&#8230;<\/p>\n","protected":false},"author":1,"featured_media":2361,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","jetpack_post_was_ever_published":false},"categories":[179,10,3,173,12],"tags":[256,265,17,264,261,260,263,262,266],"class_list":["post-2360","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-domotique","category-geek","category-informatique","category-linux","category-raspberrypi","tag-433mhz","tag-coucher","tag-domotique","tag-lever","tag-soleil","tag-sun","tag-sunrise","tag-sunset","tag-sunwait","end"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/www.fanjoe.be\/wp-content\/uploads\/2017\/03\/SunWait-00.png","_links":{"self":[{"href":"https:\/\/www.fanjoe.be\/index.php?rest_route=\/wp\/v2\/posts\/2360","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fanjoe.be\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fanjoe.be\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fanjoe.be\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fanjoe.be\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2360"}],"version-history":[{"count":0,"href":"https:\/\/www.fanjoe.be\/index.php?rest_route=\/wp\/v2\/posts\/2360\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fanjoe.be\/index.php?rest_route=\/wp\/v2\/media\/2361"}],"wp:attachment":[{"href":"https:\/\/www.fanjoe.be\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2360"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fanjoe.be\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2360"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fanjoe.be\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2360"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}