{"id":551,"date":"2024-01-29T17:16:18","date_gmt":"2024-01-29T16:16:18","guid":{"rendered":"https:\/\/68600.fr\/D6D\/?p=551"},"modified":"2024-02-02T15:51:40","modified_gmt":"2024-02-02T14:51:40","slug":"envoyer-du-son-sur-sonos-via-crontab","status":"publish","type":"post","link":"https:\/\/68600.fr\/D6D\/envoyer-du-son-sur-sonos-via-crontab\/","title":{"rendered":"Envoyer du son sur Sonos via Crontab"},"content":{"rendered":"\n<p>Poss\u00e9der des enceintes connect\u00e9es et une domotique, c&rsquo;est avoir la possibilit\u00e9 d&rsquo;automatiser des annonces. <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"500\" src=\"https:\/\/68600.fr\/D6D\/wp-content\/uploads\/2024\/01\/sonos.jpg\" alt=\"Image Sonos\" class=\"wp-image-557\" srcset=\"https:\/\/68600.fr\/D6D\/wp-content\/uploads\/2024\/01\/sonos.jpg 500w, https:\/\/68600.fr\/D6D\/wp-content\/uploads\/2024\/01\/sonos-300x300.jpg 300w, https:\/\/68600.fr\/D6D\/wp-content\/uploads\/2024\/01\/sonos-150x150.jpg 150w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><figcaption class=\"wp-element-caption\"><em>Image Sonos<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<p>Au quotidien, il y a des choses que nous ne voulons pas rater, et je vais parler pour un exemple b\u00eate, du jour ou il faut sortir les poubelles pour que le camion les r\u00e9cup\u00e8re. Chez moi, c&rsquo;est le lundi soir pour une lev\u00e9e le mardi matin.<\/p>\n\n\n\n<p>Le lien avec la domotique, l&rsquo;automatisation : quoi qu&rsquo;il se passe dans ma journ\u00e9e, le soir, une annonce sera diffus\u00e9e dans la maison et ce gr\u00e2ce \u00e0 python et au module \u00ab\u00a0soco-cli\u00a0\u00bb<\/p>\n\n\n\n<p>Les pr\u00e9 requis, du moins dans ma version : une enceinte sonos et un actionneur domotique (j&rsquo;utilise une tache Cron) , voici la pr\u00e9paration du puzzle :<\/p>\n\n\n\n<p><span style=\"text-decoration: underline;\">A- Installer les outils sonos et trouver la commande<\/span><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt-get update\nsudo apt-get install -y pip\nsudo -H pip install -U soco-cli <\/code><\/pre>\n\n\n\n<p><span style=\"text-decoration: underline;\">B- Cr\u00e9er les sons et les tester<\/span><\/p>\n\n\n\n<p>\u00c0 d\u00e9faut d&rsquo;avoir un mp3 qui vous plaise, vous pouvez cr\u00e9er un son vous m\u00eame avec une voix de synth\u00e8se. Pour cela, utilisons la commande espeak : (qui peut etre install\u00e9e via \u00ab\u00a0apt-get install espeak\u00a0\u00bb)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>espeak -v fr \"les enfants, il faut mettre le couvert !\" --stdout | ffmpeg -y -i - -acodec libmp3lame mettrelecouvert.mp3<\/code><\/pre>\n\n\n\n<p>Pour jouer ce mp3, il faut une enceinte, alors ex\u00e9cutez la commande \u00ab\u00a0sonos-discover\u00a0\u00bb pour lister les enceintes du r\u00e9seau local. Un beau tableau avec le nom, l&rsquo;adresse IP, le mod\u00e8le appara\u00eetra.. <\/p>\n\n\n\n<p>Ensuite, par exemple, pour envoyer le fichier mettrelecouvert.mp3 sur l&rsquo;enceinte Bureau : <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sonos Bureau play_file mettrelecouvert.mp3<\/code><\/pre>\n\n\n\n<p>Il existe plein d&rsquo;options, pour ajouter une temporisation, grouper ou s\u00e9parer des enceintes, g\u00e9rer le volume.. par exemple pour grouper, g\u00e9rer le volume, lancer un mp3, les re-s\u00e9parer et remettre un volume acceptable (j&rsquo;ai ajout\u00e9 une pause d&rsquo;une seconde \u00e0 chaque fois pour les d\u00e9lais li\u00e9s aux commandes) : <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sonos Cuisine if_stopped party_mode : wait 1s : _all_ volume 45 : wait 1s : Cuisine if_stopped play_file ilest20h30.mp3 : wait 1s : _all_ volume  15 : wait 1s : Parent ungroup : wait 1s : Chambre ungroup\n\nLister les favoris et jouer le premier :<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>sonos Cuisine list_favourite\nsonos Cuisine play_favourite 1<\/code><\/pre>\n\n\n\n<p><span style=\"text-decoration: underline;\">C- Ajouter les taches dans Cron<\/span><\/p>\n\n\n\n<p>Pour la v1 de mon installation, j&rsquo;utilisais int\u00e9gralement Cron, comme ce ci : <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Sonos Crontab pour rappel - sortir les poubelles -\n## Le lundi soir 20h05 et 20h30\n0,25 20 * * 1  \/usr\/local\/bin\/sonos Kitchen play_file  \/home\/pi\/firewalla\/config\/ilfautsortirlapoubelle.mp3 <\/code><\/pre>\n\n\n\n<p>A titre d&rsquo;information, voici les autres entr\u00e9e .. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>## Programme du matin en semaine\n0 7 * * 1-5  sonos Kitchen if_stopped play_file ilest7hBonjour.mp3\n0 8 * * 1-5  sonos Kitchen play_file ilest8h.mp3\n## Programme du soir en semaine\n30 18 * * 1-5  sonos Kitchen play_file ilest18h20.mp3 \n0 19 * * 1-5  sonos Kitchen play_file mettrelatable.mp3\n## Programme du weekend\n0 19 * * 6,0  sonos Kitchen play_file ilest19h.mp3 \n30 20 * * *    sonos Kitchen play_file ilest20h30.mp3 \n45 11 * * 6,0  sonos Kitchen \n<\/code><\/pre>\n\n\n\n<p>J&rsquo;ai vite rencontr\u00e9 des limites car sur mon syst\u00e8me, la Crontab est charg\u00e9e au d\u00e9marrage et n\u00e9st ensuite, pas modifiable. Pour la prendre en compte, il basiquement, red\u00e9marrer le PC pour qu&rsquo;elle soit actualis\u00e9e. <\/p>\n\n\n\n<p>J&rsquo;ai donc d\u00e9cid\u00e9 de lancer une commande bash chaque 10 minutes, ce bash va lui v\u00e9rifier l&rsquo;heure et effectuer la tache souhait\u00e9e. Voici la tache Cron<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>*\/10 * * * *    \/home\/pi\/sonos.sh  &gt; \/dev\/null<\/code><\/pre>\n\n\n\n<p>Et le fichier sonos.sh : <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\n# Programme du matin en semaine\n\nalias sbd=\"sonos Cuisine : 'living room' group Cuisine : wait 1s : Cheminee group Cuisine : wait 1s : Bureau group Cuisine\"\nalias bye=\"sonos Cuisine if_stopped volume 10 : wait 1s : Bureau if_stopped ungroup : wait 1s : Chambre if_stopped ungroup\"\n\n#Set default configuration\nsonos 'living room' group Cuisine : wait 1s : Cheminee group Cuisine \n\nif &#91;&#91; $(date +%u) -le 5 ]]; then\n    if &#91;&#91; $(date +%H%M) -eq 700 ]]; then\n        sonos Cuisine play_file ilest7hBonjour.mp3\n    elif &#91;&#91; $(date +%H%M) -eq 800 ]]; then\n\t\tsonos Cuisine 31 : Cuisine play_file ilest8h.mp3\n    fi\nfi\n\n# Programme de tous les midis &amp; soirs\nif &#91;&#91; $(date +%H%M) -eq 1150 ]]; then\n\tsonos Bureau group Cuisine\n\tsonos Cuisine if_stopped volume 40 : Cuisine if_stopped play_file mettrelatable.mp3\nelif &#91;&#91; $(date +%H%M) -eq 2030 ]]; then\n\tsonos Cuisine if_stopped volume 31 : Cuisine if_stopped play_file ilest20h30.mp3\nfi\n\n# Programme du weekend\n#if &#91;&#91; $(date +%u) -eq 6 || $(date +%u) -eq 7 ]]; then\n    #if &#91;&#91; $(date +%H%M) -eq 1145 ]]; then\n    #fi\n#fi\n\n# Le lundi soir 19h10 et 19h20 et 20h10 et 20h20\nif &#91;&#91; $(date +%u) -eq 1 ]]; then\n    if &#91;&#91; $(date +%H%M) -eq 1940 || $(date +%H%M) -eq 2010 || $(date +%H%M) -eq 2020 ]]; then\n\t\tsonos Cuisine if_stopped volume 12 : Cuisine if_stopped play_file ilfautsortirlapoubelle.mp3\n    fi\nfi\n#Reset default configuration\nsonos Cuisine if_stopped volume 10 : wait 1s : Bureau if_stopped ungroup : wait 1s : Chambre if_stopped ungroup<\/code><\/pre>\n\n\n\n<p>C&rsquo;est d\u00e9j\u00e0 pas mal, mais c&rsquo;est tout.. vous pouvez maintenant il n&rsquo;y a qu&rsquo;\u00e0 profiter \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Poss\u00e9der des enceintes connect\u00e9es et une domotique, c&rsquo;est avoir la possibilit\u00e9 d&rsquo;automatiser des annonces&#8230; que faire avec Sonos et Crontab !<\/p>\n","protected":false},"author":1,"featured_media":557,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[57,21,32],"tags":[18,51,56],"class_list":["post-551","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-domotique","category-hors-sujet","category-informatique","tag-domotique","tag-python","tag-sonos"],"_links":{"self":[{"href":"https:\/\/68600.fr\/D6D\/wp-json\/wp\/v2\/posts\/551","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/68600.fr\/D6D\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/68600.fr\/D6D\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/68600.fr\/D6D\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/68600.fr\/D6D\/wp-json\/wp\/v2\/comments?post=551"}],"version-history":[{"count":6,"href":"https:\/\/68600.fr\/D6D\/wp-json\/wp\/v2\/posts\/551\/revisions"}],"predecessor-version":[{"id":583,"href":"https:\/\/68600.fr\/D6D\/wp-json\/wp\/v2\/posts\/551\/revisions\/583"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/68600.fr\/D6D\/wp-json\/wp\/v2\/media\/557"}],"wp:attachment":[{"href":"https:\/\/68600.fr\/D6D\/wp-json\/wp\/v2\/media?parent=551"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/68600.fr\/D6D\/wp-json\/wp\/v2\/categories?post=551"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/68600.fr\/D6D\/wp-json\/wp\/v2\/tags?post=551"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}