<?xml 
version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="https://www.momh.fr/spip.php?page=backend.xslt" ?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom"
>

<channel xml:lang="fr">
	<title>momh</title>
	<link>https://momh.fr/</link>
	<description>My Own Memory Hole se veut une sorte de &#171;&#160;vitrine&#160;&#187; de mon parcours et de mon exp&#233;rience mais aussi de mes centres d'int&#233;r&#234;t et constitue donc en quelque sorte ma m&#233;moire en ligne, m&#233;moire virtuelle d&#233;localis&#233;e mais ordonn&#233;e et index&#233;e&#8230;</description>
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>
	<atom:link href="https://www.momh.fr/spip.php?id_mot=10&amp;page=backend" rel="self" type="application/rss+xml" />




<item xml:lang="fr">
		<title>Raspbian Bullseye Lite sur NAS Argon Eon</title>
		<link>https://www.momh.fr/raspbian-bullseye-lite-sur-nas-argon-eon</link>
		<guid isPermaLink="true">https://www.momh.fr/raspbian-bullseye-lite-sur-nas-argon-eon</guid>
		<dc:date>2022-01-27T16:59:15Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Brice Boucard</dc:creator>


		<dc:subject>Raspberry Pi</dc:subject>
		<dc:subject>&lt;span class=&#034;caps&#034;&gt;NAS&lt;/span&gt;</dc:subject>
		<dc:subject>mpd</dc:subject>
		<dc:subject>torrent</dc:subject>

		<description>
&lt;p&gt;On choisit pour notre nouveau &lt;span class=&#034;caps&#034;&gt;NAS&lt;/span&gt; Argon Eon &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;propuls&#233;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187; par un Raspberry Pi de se passer d'interface graphique et on opte donc pour la distribution Raspbian Bullseye Lite. &lt;br class='autobr' /&gt; Une fois notre carte microSD cr&#233;&#233;e (merci &#224; l'utilitaire rpi-imager) et les premi&#232;res configurations r&#233;alis&#233;es gr&#226;ce &#224; l'outil raspi-config (changement de mot de passe, localisation, clavier...), on peut passer &#224; sa pr&#233;paration&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;; au programme&#160;: alsa et bluetooth, partage de fichiers, mpd, transmission-daemon, flexget,&#160;(&#8230;)&lt;/p&gt;


-
&lt;a href="https://www.momh.fr/blog" rel="directory"&gt;Blog&lt;/a&gt;

/ 
&lt;a href="https://www.momh.fr/raspberry-pi" rel="tag"&gt;Raspberry Pi&lt;/a&gt;, 
&lt;a href="https://www.momh.fr/nas" rel="tag"&gt;&lt;span class=&#034;caps&#034;&gt;NAS&lt;/span&gt;&lt;/a&gt;, 
&lt;a href="https://www.momh.fr/mpd" rel="tag"&gt;mpd&lt;/a&gt;, 
&lt;a href="https://www.momh.fr/torrent" rel="tag"&gt;torrent&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;On choisit pour notre nouveau &lt;span class=&#034;caps&#034;&gt;NAS&lt;/span&gt; Argon Eon &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;propuls&#233;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187; par un Raspberry Pi de se passer d'interface graphique et on opte donc pour la distribution Raspbian Bullseye Lite.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Une fois notre carte microSD cr&#233;&#233;e (merci &#224; l'utilitaire &lt;a href=&#034;https://www.raspberrypi.com/software/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;rpi-imager&lt;/a&gt;) et les premi&#232;res configurations r&#233;alis&#233;es gr&#226;ce &#224; l'outil &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;raspi-config&lt;/code&gt; (changement de mot de passe, localisation, clavier...), on peut passer &#224; sa pr&#233;paration&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;; au programme&#160;: alsa et bluetooth, partage de fichiers, mpd, transmission-daemon, flexget, Spotify Connect...&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Maintenance et configuration&lt;/h2&gt;
&lt;p&gt;On commence par r&#233;aliser une mise &#224; jour du syst&#232;me&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo apt update &amp;&amp; sudo apt upgrade &amp;&amp; sudo reboot &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Puis on installe l'utilitaire de gestion du &lt;span class=&#034;caps&#034;&gt;NAS&lt;/span&gt; Argon Eon, qui g&#232;re notamment la vitesse de ventilation&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;curl https://download.argon40.com/argoneon.sh | bash &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;Wi-Fi et &lt;span class=&#034;caps&#034;&gt;IP&lt;/span&gt; fixe&lt;/h2&gt;
&lt;p&gt;Pour se connecter &#224; un r&#233;seau Wi-Fi, il suffit d'utiliser l'utilitaire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;raspi-config&lt;/code&gt; et d'initier le premier choix, &lt;i&gt;Wireless Lan&lt;/i&gt;, du premier menu, &lt;i&gt;System Options&lt;/i&gt;.&lt;/p&gt;
&lt;p&gt;Les informations de connexion devrait alors se retrouver dans le fichier &lt;i&gt;/etc/wpa_supplicant/wpa_supplicant.conf&lt;/i&gt;&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 country=FR network={ ssid=&#034;SSID&#034; psk=&#034;PASSWORD&#034; } &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pour attribuer une &lt;span class=&#034;caps&#034;&gt;IP&lt;/span&gt; fixe &#224; votre Raspberry, il convient tout d'abord d'identifier l'interface r&#233;seau Wi-Fi, a priori &lt;i&gt;wlan0&lt;/i&gt;, gr&#226;ce &#224; la commande &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ifconfig&lt;/code&gt;. Ensuite, il faut &#233;diter le fichier &lt;i&gt;/etc/dhcpcd.conf&lt;/i&gt; et ajouter une nouvelle interface&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;interface wlan0 static ip_address=192.168.1.56 static routers=192.168.1.1 static domain_name_servers=80.67.169.12 80.67.169.40 2001:910:800::12 2001:910:800::40 &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;La derni&#232;re ligne permet d'utiliser &lt;a href=&#034;https://www.fdn.fr/actions/dns/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;les serveurs &lt;span class=&#034;caps&#034;&gt;DNS&lt;/span&gt; de French Data Network&lt;/a&gt; et de ne plus subir certaines restrictions, notamment celles limitant l'acc&#232;s &#224; des sites de torrents (cf. infra).&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Alsa et bluetooth&#160;: bluealsa&lt;/h2&gt;
&lt;p&gt;Il semble que le paquet bluealsa ne soit plus disponible dans la branche stable de Debian et ne se trouve que dans unstable...&lt;br class='autobr' /&gt;
Plut&#244;t que de le compiler depuis &lt;a href=&#034;https://github.com/Arkq/bluez-alsa&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;ses sources&lt;/a&gt;, j'ai r&#233;cup&#233;r&#233; les paquets n&#233;cessaires dans &lt;a href=&#034;https://packages.debian.org/source/sid/bluez-alsa&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;les d&#233;p&#244;ts Debian&lt;/a&gt; et les ai simplement install&#233; avec &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;apt&lt;/code&gt;&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;wget http://ftp.fr.debian.org/debian/pool/main/b/bluez-alsa/libasound2-plugin-bluez_3.0.0-2_armhf.deb wget http://ftp.fr.debian.org/debian/pool/main/b/bluez-alsa/bluez-alsa-utils_3.0.0-2_armhf.deb sudo apt install ./libasound2-plugin-bluez_3.0.0-2_armhf.deb sudo apt install ./bluez-alsa-utils_3.0.0-2_armhf.deb &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On cr&#233;e ensuite un service systemd pour bluealsa, en reprenant celui propos&#233; par &lt;a href=&#034;https://github.com/bablokb/pi-btaudio/blob/master/files/etc/systemd/system/bluealsa.service&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;bablokb/pi-btaudio&lt;/a&gt;&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo nano /etc/systemd/system/bluealsa.service &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;# -------------------------------------------------------------------------- # Modified version of bluealsa.service unit definition # (replaced WantedBy=graphical.target with WantedBy=bluetooth.target) # # Author: Bernhard Bablok # License: GPL3 # # Website: https://github.com/bablokb/pi-btaudio # # -------------------------------------------------------------------------- [Unit] Description=BluezALSA proxy Requires=bluetooth.service After=bluetooth.service [Service] Type=simple User=root ExecStart=/usr/bin/bluealsa [Install] WantedBy=bluetooth.target &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On lance ensuite le service&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo systemctl enable bluealsa.service sudo service bluealsa start &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On &#233;dite ensuite le fichier &lt;i&gt;/etc/asound.conf&lt;/i&gt; en suivant l&#224; encore ce que propose &lt;a href=&#034;https://github.com/bablokb/pi-btaudio/blob/master/files/etc/asound.conf&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;bablokb/pi-btaudio&lt;/a&gt;&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;pcm.!default &#034;bluealsa&#034; ctl.!default &#034;bluealsa&#034; defaults.bluealsa.interface &#034;hci0&#034; defaults.bluealsa.device &#034;FC:58:FA:14:27:BC&#034; defaults.bluealsa.profile &#034;a2dp&#034; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Dans notre cas, nous ajoutons une sortie pour notre ampli bluetooth Tangent Ampster&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;pcm.tangent { type plug slave { pcm { type bluealsa device FC:58:FA:14:27:BC profile &#034;a2dp&#034; } } hint { show on description &#034;Tangent Ampster BT&#034; } } &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;Partages &lt;span class=&#034;caps&#034;&gt;SAMBA&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Une fois install&#233;&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo apt install samba &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On peut configurer nos partages en &#233;ditant le fichier &lt;i&gt;/etc/samba/smb.conf&lt;/i&gt;. &lt;br class='autobr' /&gt;
Ainsi danse mon cas, j'ajoute cette section &#224; la toute fin du fichier, le r&#233;pertoire /home/pi/shares/ contenant l'ensemble des points de montage des disques du &lt;span class=&#034;caps&#034;&gt;NAS&lt;/span&gt;.&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;[shares] comment = Argon Eon NAS Shares path = /home/pi/shares read only = no browsable = yes writable = yes valid users = pi &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Une fois le fichier enregistr&#233;, il convient d'attribuer un mot de passe &#224; votre utilisateur (dans mon cas, pi)&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo smbpasswd -a pi &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;puis de red&#233;marrer le service&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo service smbd restart &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ensuite, sur le client&#160;: on commence par cr&#233;er un fichier contenant les informations de connexion&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;touch ~/.nascredentials chmod 600 ~/.nascredentials nano ~/.nascredentials &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;user=pi password= &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Puis on &#233;dite le fichier &lt;i&gt;/etc/fstab&lt;/i&gt; pour monter au d&#233;marrage&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;//192.168.1.56/shares /home/bbrice/NAS cifs defaults,credentials=/home/bbrice/.nascredentials,uid=1000,gid=1000,file_mode=0755,dir_mode=0755 0 0 &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;Librespot&#160;: un client Spotify Connect&lt;/h2&gt;
&lt;p&gt;On commence par installer &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;rust&lt;/code&gt; et ses utilitaires n&#233;cessaires &#224; la compilation ainsi que les d&#233;pendances, avant de cloner le d&#233;p&#244;t et de lancer la compilation&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh sudo apt install build-essential libpulse-dev git clone https://github.com/librespot-org/librespot.git cd librespot cargo build --release --no-default-features --features &#034;alsa-backend&#034; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On cr&#233;e ensuite un service systemd&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;mkdir -p ~/.config/systemd/user/ nano ~/.config/systemd/user/librespot.service &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;[Unit] Description=Librespot (an open source Spotify client) Documentation=https://github.com/librespot-org/librespot Documentation=https://github.com/librespot-org/librespot/wiki/Options Wants=network.target sound.target After=network.target sound.target [Service] Restart=always RestartSec=10 ExecStart=/usr/bin/librespot --name &#034;%u@%H&#034; --device bluealsa [Install] WantedBy=default.target &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;et on le lance&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;systemctl --user enable librespot.service systemctl --user start librespot.service &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;T&#233;l&#233;chargements automatis&#233;s&#160;: Flexget et transmission-daemon&lt;/h2&gt;
&lt;p&gt;Pour ce qui est de l'installation et la configuration de Flexget, il suffit de se reporter &#224; cet article&#160;: &lt;a href='https://www.momh.fr/telecharger-ses-series-avec-flexget' class=&#034;spip_in&#034;&gt;T&#233;l&#233;charger ses s&#233;ries avec Flexget&lt;/a&gt;&lt;br class='autobr' /&gt;
Il convient de veiller &#224; utiliser un &lt;span class=&#034;caps&#034;&gt;DNS&lt;/span&gt; neutre afin de pouvoir acc&#233;der au flux d'&lt;span class=&#034;caps&#034;&gt;EZTV&lt;/span&gt;... Pour ce faire, comme &lt;a href='https://www.momh.fr/changer-ses-dns-sous-raspbian-buster' class=&#034;spip_in&#034;&gt;sous Raspbian Buster&lt;/a&gt;, il suffit d'&#233;diter le fichier &lt;i&gt;/etc/dhcpcd.conf&lt;/i&gt;.&lt;/p&gt;
&lt;p&gt;Pour ce qui est de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;transmission-daemon&lt;/code&gt;, la t&#226;che est un peu plus ardue mais &lt;a href=&#034;https://pimylifeup.com/raspberry-pi-transmission/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;pimylifeup.com&lt;/a&gt; nous apporte une solution qui fonctionne parfaitement.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;&lt;span class=&#034;caps&#034;&gt;MPD&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Pour ce qui est de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mpd&lt;/code&gt;, rien de bien complexe, il suffit juste de se replonger dans &lt;a href='https://www.momh.fr/mpd' class=&#034;spip_in&#034;&gt;mes anciens articles&lt;/a&gt;... le point essentiel &#233;tant d'utiliser notre ampli Tangent Ampster connect&#233; en bluetooth comme sortie&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;; il suffit d'ajouter cette section (en la modifiant en fonction de la configuration vue ci-dessus dans &lt;i&gt;/etc/asound.conf&lt;/i&gt;) dans le fichier &lt;i&gt;/etc/mpd.conf&lt;/i&gt;&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;audio_output { type &#034;alsa&#034; name &#034;Tangent Ampster BT - ALSA Bluetooth&#034; device &#034;tangent&#034; mixer_type &#034;software&#034; format &#034;44100:16:2&#034; } &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;puis de relancer le service&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo service mpd restart &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&#8203;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Spotify Connect et PulseAudio sous Raspbian Bullseye</title>
		<link>https://www.momh.fr/spotify-connect-et-pulseaudio-sous-raspbian-bullseye</link>
		<guid isPermaLink="true">https://www.momh.fr/spotify-connect-et-pulseaudio-sous-raspbian-bullseye</guid>
		<dc:date>2022-01-19T21:00:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Brice Boucard</dc:creator>


		<dc:subject>bluetooth</dc:subject>
		<dc:subject>Raspberry Pi</dc:subject>
		<dc:subject>Spotify</dc:subject>
		<dc:subject>PulseAudio</dc:subject>

		<description>
&lt;p&gt;Si raspotify m'a donn&#233; pleinement satisfaction pendant quelques ann&#233;es comme client Spotify Connect sur mon Raspberry Pi, il n'en va plus de m&#234;me depuis une importante mise &#224; jour du logiciel&#160;: impossible de le combiner avec PulseAudio et de diriger le son vers mon ampli connect&#233; via Bluetooth. Du coup on se tourne directement vers la librairie librespot. &lt;br class='autobr' /&gt; Si l'on peut installer librespot tout simplement via le gestionnaire de paquet Rust cargo, l'on a pr&#233;f&#233;r&#233; directement le compiler avec&#160;(&#8230;)&lt;/p&gt;


-
&lt;a href="https://www.momh.fr/blog" rel="directory"&gt;Blog&lt;/a&gt;

/ 
&lt;a href="https://www.momh.fr/bluetooth" rel="tag"&gt;bluetooth&lt;/a&gt;, 
&lt;a href="https://www.momh.fr/raspberry-pi" rel="tag"&gt;Raspberry Pi&lt;/a&gt;, 
&lt;a href="https://www.momh.fr/spotify" rel="tag"&gt;Spotify&lt;/a&gt;, 
&lt;a href="https://www.momh.fr/pulseaudio" rel="tag"&gt;PulseAudio&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Si &lt;a href='https://www.momh.fr/raspbian-spotify-et-pulseaudio' class=&#034;spip_in&#034;&gt;raspotify&lt;/a&gt; m'a donn&#233; pleinement satisfaction pendant quelques ann&#233;es comme client Spotify Connect sur mon Raspberry Pi, il n'en va plus de m&#234;me depuis une importante mise &#224; jour du logiciel&#160;: impossible de le combiner avec PulseAudio et de diriger le son vers mon ampli connect&#233; via Bluetooth.&lt;br class='autobr' /&gt;
Du coup on se tourne directement vers la librairie &lt;a href=&#034;https://github.com/librespot-org/librespot&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;librespot&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Si l'on peut installer librespot tout simplement via le gestionnaire de paquet Rust &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;cargo&lt;/code&gt;, l'on a pr&#233;f&#233;r&#233; directement le compiler avec le support du backend PulseAudio... en suivant scrupuleusement &lt;a href=&#034;https://github.com/librespot-org/librespot/blob/master/COMPILING.md&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;la documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Installation de Rust et des d&#233;pendances&lt;/h2&gt;
&lt;p&gt;Il faut donc commencer par installer Rust et l'on proc&#232;de comme recommand&#233; gr&#226;ce &#224; l'utilitaire &lt;a href=&#034;https://rustup.rs/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;rustup&lt;/a&gt;&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Une fois cela fait, on installe plus prosa&#239;quement les d&#233;pendances n&#233;cessaires &#224; la compilation&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo apt install build-essential libpulse-dev &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;Compilation&lt;/h2&gt;
&lt;p&gt;On commence par r&#233;cup&#233;rer les sources via Git&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;git clone https://github.com/librespot-org/librespot.git &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Puis, dans le dossier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;librespot&lt;/code&gt;, on lance la compilation&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;cd librespot ~/.cargo/bin/cargo build --no-default-features --features &#034;pulseaudio-backend&#034; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;Premier test et lancement au d&#233;marage&lt;/h2&gt;
&lt;p&gt;Pour lancer le client Spotify Connect, il suffit alors de lancer la commande suivante&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;.~/librespot/target/debug/librespot &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;et vous devriez pouvoir vous connecter depuis votre application Spotify.&lt;/p&gt;
&lt;p&gt;Si tout fonctionne, on peut alors copier l'ex&#233;cutable&#160;/librespot/target/debug/librespot dans le $&lt;span class=&#034;caps&#034;&gt;PATH&lt;/span&gt; et cr&#233;er le service systemd.&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo cp ~/librespot/target/debug/librespot /usr/bin/ mkdir -p ~/.config/systemd/user cp ~/librespot/contrib/librespot.user.service ~/.config/systemd/user/ systemctl --user enable librespot.user.service &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&#8203;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>T&#233;l&#233;charger ses s&#233;ries avec Flexget</title>
		<link>https://www.momh.fr/telecharger-ses-series-avec-flexget</link>
		<guid isPermaLink="true">https://www.momh.fr/telecharger-ses-series-avec-flexget</guid>
		<dc:date>2021-08-21T05:22:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Brice Boucard</dc:creator>


		<dc:subject>Linux</dc:subject>
		<dc:subject>Raspberry Pi</dc:subject>
		<dc:subject>torrent</dc:subject>

		<description>
&lt;p&gt;Cela fait quelques ann&#233;es que j'utilise Flexget &#8212; relativement basiquement &#8212; pour t&#233;l&#233;charger automatiquement les &#233;pisodes des s&#233;ries que je suis mais ce n'est que depuis r&#233;cemment que je suis parvenu &#224; une configuration pleinement satisfaisante. &lt;br class='autobr' /&gt; Flexget est un outil d'automation pour m&#233;dias, notamment pour s&#233;ries et animes, permettant entre autres de t&#233;l&#233;charger et d'organiser les &#233;pisodes... Je ne pr&#233;tends pas ici pr&#233;senter l'outil dans ses moindre d&#233;tails mais simplement pr&#233;senter la&#160;(&#8230;)&lt;/p&gt;


-
&lt;a href="https://www.momh.fr/blog" rel="directory"&gt;Blog&lt;/a&gt;

/ 
&lt;a href="https://www.momh.fr/linux" rel="tag"&gt;Linux&lt;/a&gt;, 
&lt;a href="https://www.momh.fr/raspberry-pi" rel="tag"&gt;Raspberry Pi&lt;/a&gt;, 
&lt;a href="https://www.momh.fr/torrent" rel="tag"&gt;torrent&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Cela fait quelques ann&#233;es que j'utilise Flexget &#8212; relativement basiquement &#8212; pour t&#233;l&#233;charger automatiquement les &#233;pisodes des s&#233;ries que je suis mais ce n'est que depuis r&#233;cemment que je suis parvenu &#224; une configuration pleinement satisfaisante.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;&lt;a href=&#034;https://flexget.com/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Flexget&lt;/a&gt; est un outil d'automation pour m&#233;dias, notamment pour s&#233;ries et animes, permettant entre autres de t&#233;l&#233;charger et d'organiser les &#233;pisodes...&lt;br class='autobr' /&gt;
Je ne pr&#233;tends pas ici pr&#233;senter l'outil dans ses moindre d&#233;tails mais simplement pr&#233;senter la configuration utilis&#233;e sur mon Raspberry Pi qui envoie les torrents &#224; un &lt;i&gt;daemon&lt;/i&gt; Transmission qui tourne sur mon &lt;span class=&#034;caps&#034;&gt;NAS&lt;/span&gt; D-Link &lt;span class=&#034;caps&#034;&gt;DNS&lt;/span&gt;-320 avec fun_plug (cf. &lt;a href='https://www.momh.fr/spip.php?page=article&amp;id_article=47'&gt;cet article&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Pour l'installation, on choisit l'option &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;virtualenv&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187; de &lt;a href=&#034;https://flexget.com/InstallWizard/Linux&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;la documentation&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;python3 -m venv ~/flexget/ cd ~/flexget/ bin/pip install flexget &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Cependant, si vous souhaitez utiliser le plugin Transmission de Flexget, il vous faudra installer le paquet &lt;i&gt;transmission-rpc&lt;/i&gt;&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;bin/pip install transmission-rpc&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;sinon vos logs (dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;~/.config/flexget/flexget.log&lt;/code&gt;) vous afficheront des lignes de ce type&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;2021-10-29 09:09:48 WARNING task feed-eztv Aborting task (plugin: transmission) 2021-10-29 09:09:51 CRITICAL transmission feed-rarbg transmission-rpc module version 3.0 or higher required. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;La configuration de FlexGet se fait dans le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;~/.config/flexget/config.yml&lt;/code&gt; et n&#233;cessite de pr&#234;ter une attention toute particuli&#232;re aux indentations...&lt;/p&gt;
&lt;p&gt;Sans entrer dans le d&#233;tail&#160;: on se connecte &#224; une instance de Transmission, on d&#233;finit les crit&#232;res de t&#233;l&#233;chargement des torrents des s&#233;ries que l'on suit (depuis le site &lt;a href=&#034;https://www.pogdesign.co.uk/cat/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;&lt;span class=&#034;caps&#034;&gt;TV&lt;/span&gt; Calendar&lt;/a&gt;) en rejetant les s&#233;ries issues de certains &lt;i&gt;networks&lt;/i&gt; et on envoie un mail pour annoncer les &#233;pisodes t&#233;l&#233;charg&#233;s.&lt;br class='autobr' /&gt;
Et ce pour deux flux &lt;span class=&#034;caps&#034;&gt;RSS&lt;/span&gt; diff&#233;rents, chacun faisant l'objet d'une t&#226;che que l'on lance automatiquement toutes les heures.&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;yaml&#034; class='spip_code spip_code_block language-yaml' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;templates: tv: transmission: host: 192.168.X.XX port: 9091 # username: username # password: password configure_series: settings: timeframe: 12 hours target: 1080p quality: 720p-1080p propers: 3 days from: pogcal: username: azerty@uiop.fr password: XXXXX thetvdb_lookup: yes if: - &#034;tvdb_network and tvdb_network=='Netflix'&#034;: reject - &#034;tvdb_network and tvdb_network=='Amazon'&#034;: reject notify: task: template: html # Optional, if you want html instead of plain text via: - email: from: azerty@uiop.fr to: - azerty@uiop.fr - qwerty@uiop.com smtp_host: smpt.host.com smtp_port: 587 smtp_username: azerty@uiop.fr smtp_password: &#034;XXXXXX&#034; smtp_tls: yes html: yes # To parse template as HTML tasks: feed-eztv: priority: 1 template: tv rss: https://eztv.re/ezrss.xml feed-rarbg: priority: 2 template: tv rss: http://rarbg.to/rssdd.php?categories=2;18;41;49 schedules: - tasks: '*' interval: hours: 1 &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;L'id&#233;e est donc de faire tourner FlexGet en mode &lt;i&gt;daemon&lt;/i&gt; et de lui faire d&#233;clencher des t&#226;ches r&#233;guli&#232;rement (la section &lt;i&gt;schedules&lt;/i&gt; en toute fin de fichier). Pour ce faire, on le lance ainsi&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;~/flexget/bin/flexget --loglevel VERBOSE daemon start --autoreload-config -d &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pour que FlexGet se lance automatiquement &#224; chaque d&#233;marrage, on cr&#233;e une t&#226;che Cron gr&#226;ce &#224; la commande &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;crontab -e&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;@reboot /home/pi/flexget/bin/flexget --loglevel VERBOSE daemon start --autoreload-config -d &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>WeeWX, MQTT et skin Belchertown</title>
		<link>https://www.momh.fr/weewx-mqtt-et-skin-belchertown</link>
		<guid isPermaLink="true">https://www.momh.fr/weewx-mqtt-et-skin-belchertown</guid>
		<dc:date>2020-12-20T15:14:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Brice Boucard</dc:creator>


		<dc:subject>Linux</dc:subject>
		<dc:subject>Raspberry Pi</dc:subject>
		<dc:subject>WeeWX</dc:subject>

		<description>
&lt;p&gt;Le skin Belchertown pour WeeWX propos&#233; par Pat O'Brien est extr&#234;mement complet (et complexe, du moins pour moi) et est particuli&#232;rement int&#233;ressant pour ses graphiques dynamiques en JavaScript. &lt;br class='autobr' /&gt; Installation et configuration de base &lt;br class='autobr' /&gt;
Son installation n'est pas particuli&#232;rement difficile puisqu'il suffit de suivre les instructions fournies&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;; ainsi, &#224; ce jour&#160;: bash wget https://github.com/poblabs/weewx-belchertown/releases/download/weewx-belchertown-1.2/weewx-belchertown-release-1.2.tar.gz&#160;(&#8230;)&lt;/p&gt;


-
&lt;a href="https://www.momh.fr/blog" rel="directory"&gt;Blog&lt;/a&gt;

/ 
&lt;a href="https://www.momh.fr/linux" rel="tag"&gt;Linux&lt;/a&gt;, 
&lt;a href="https://www.momh.fr/raspberry-pi" rel="tag"&gt;Raspberry Pi&lt;/a&gt;, 
&lt;a href="https://www.momh.fr/weewx" rel="tag"&gt;WeeWX&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Le &lt;a href=&#034;https://github.com/poblabs/weewx-belchertown&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;skin Belchertown&lt;/a&gt; pour WeeWX propos&#233; par Pat O'Brien est extr&#234;mement complet (et complexe, du moins pour moi) et est particuli&#232;rement int&#233;ressant pour ses graphiques dynamiques en JavaScript.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;spip&#034;&gt;Installation et configuration de base&lt;/h2&gt;
&lt;p&gt;Son installation n'est pas particuli&#232;rement difficile puisqu'il suffit de suivre les instructions fournies&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;; ainsi, &#224; ce jour&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;wget https://github.com/poblabs/weewx-belchertown/releases/download/weewx-belchertown-1.2/weewx-belchertown-release-1.2.tar.gz sudo wee_extension --install weewx-belchertown-release-1.2.tar.gz &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ensuite, il convient de passer &#224; sa configuration en ayant pris soin, afin de b&#233;n&#233;ficier de certaines options dont le module de pr&#233;visions &#224; sept jours, de &lt;a href=&#034;https://github.com/poblabs/weewx-belchertown#requirements&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;remplir certaines conditions&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;La configuration de base est la suivante&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo nano /etc/weewx/weewx.conf &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;[StdReport] ... [[Belchertown]] skin = Belchertown HTML_ROOT = /var/www/html/weewx/ &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;&lt;span class=&#034;caps&#034;&gt;MQTT&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Nous allons surtout nous int&#233;resser &#224; la mise en place du rafra&#238;chissement automatique des graphiques et de l'affichage des donn&#233;es permises par ce skin gr&#226;ce au protocole &lt;span class=&#034;caps&#034;&gt;MQTT&lt;/span&gt; (Message Queuing Telemetry Transport). Il convient d'abord d'installer et de configurer un &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;serveur&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;, un &lt;i&gt;broker&lt;/i&gt;, en l'occurrence &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mosquitto&lt;/code&gt; tel que nous l'avons vu dans &lt;a href='https://www.momh.fr/mosquitto-un-broker-mqtt' class=&#034;spip_in&#034;&gt;un pr&#233;c&#233;dent article&lt;/a&gt; &#224; partir du post de Pat O'Brien &lt;a href=&#034;https://obrienlabs.net/how-to-setup-your-own-mqtt-broker/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;sur son blog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Bien s&#251;r, dans mon cas, WeeWX ne r&#233;cup&#233;rant des donn&#233;es de la station m&#233;t&#233;o que toutes les cinq voire dix minutes, l'utilisation du plugin weewx-mqtt ne se justifie pas forc&#233;ment...&lt;/p&gt;
&lt;p&gt;Une fois le &lt;i&gt;broker&lt;/i&gt; Mosquitto install&#233; et configur&#233;, il faut installer le plugin &lt;a href=&#034;https://github.com/matthewwall/weewx-mqtt&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;weewx-mqtt&lt;/a&gt;&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo pip3 install paho-mqtt wget -O weewx-mqtt.zip https://github.com/matthewwall/weewx-mqtt/archive/master.zip wee_extension --install weewx-mqtt.zip &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On modifie ensuite sa configuration qui d&#233;pend de la section [Restful] dans le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/etc/weewx/weewx.conf&lt;/code&gt;&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;[Restful] ... [[MQTT]] server_url = mqtt://USER:PASSWORD@SERVER:PORT/ topic = weewx unit_system = METRIC binding = archive, loop aggregation = aggregate [[[tls]]] tls_version = tlsv12 ca_certs = /etc/ssl/certs/ca-certificates.crt &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On en profite pour &#233;diter la configuration du skin Belchertown de la sorte&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;[StdReport] ... [[Belchertown]] skin = Belchertown HTML_ROOT = /var/www/html/weewx/ mqtt_websockets_enabled = 1 mqtt_websockets_host = &#034;SERVER&#034; mqtt_websockets_port = 9001 mqtt_websockets_ssl = 1 mqtt_websockets_topic = &#034;weather/loop&#034; disconnect_live_website_visitor = 1800000 &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Il ne nous reste plus qu'&#224; relancer weewx&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo service restart weewx &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On peut v&#233;rifier le bon fonctionnement du plugin weewx-mqtt en lan&#231;ant la commande &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mosquitto_sub&lt;/code&gt; pour suivre le topic &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;weewx/loop&lt;/code&gt; ou en &#233;pluchant &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/var/log/syslog&lt;/code&gt; &#224; la recherche d'une ligne de ce type&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;tail -f /var/log/syslog | grep weewx [snip] Mar 1 06:48:23 raspberrypi weewx[3998] INFO weewx.restx: MQTT: Published record 2021-03-01 06:45:00 CET (1614588300) [snip] &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Mosquitto, un broker MQTT</title>
		<link>https://www.momh.fr/mosquitto-un-broker-mqtt</link>
		<guid isPermaLink="true">https://www.momh.fr/mosquitto-un-broker-mqtt</guid>
		<dc:date>2020-12-11T22:21:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Brice Boucard</dc:creator>


		<dc:subject>Linux</dc:subject>
		<dc:subject>Raspberry Pi</dc:subject>

		<description>
&lt;p&gt;J'ai d&#233;couvert le protocole &lt;span class=&#034;caps&#034;&gt;MQTT&lt;/span&gt; (Message Queuing Telemetry Transport) lors de l'interfa&#231;age de ma station m&#233;t&#233;o Netatmo et du logiciel WeeWX sur mon Raspberry Pi&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;; il s'agit d'un protocole de messagerie de type publication-abonnement, extr&#234;mement rapide et l&#233;ger, utilis&#233; notamment dans l'internet des objets. &lt;br class='autobr' /&gt; Nous allons ici voir comment installer et configurer un broker, un agent &lt;span class=&#034;caps&#034;&gt;MQTT&lt;/span&gt;, en l'occurrence Mosquitto, en nous appuyant tr&#232;s largement sur l'article &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;How to setup your own &lt;span class=&#034;caps&#034;&gt;MQTT&lt;/span&gt;&#160;(&#8230;)&lt;/p&gt;


-
&lt;a href="https://www.momh.fr/blog" rel="directory"&gt;Blog&lt;/a&gt;

/ 
&lt;a href="https://www.momh.fr/linux" rel="tag"&gt;Linux&lt;/a&gt;, 
&lt;a href="https://www.momh.fr/raspberry-pi" rel="tag"&gt;Raspberry Pi&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;J'ai d&#233;couvert le protocole &lt;span class=&#034;caps&#034;&gt;MQTT&lt;/span&gt; (Message Queuing Telemetry Transport) lors de l'interfa&#231;age de ma station m&#233;t&#233;o Netatmo et du logiciel WeeWX sur mon Raspberry Pi&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;; il s'agit d'un protocole de messagerie de type publication-abonnement, extr&#234;mement rapide et l&#233;ger, utilis&#233; notamment dans l'internet des objets.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Nous allons ici voir comment installer et configurer un broker, un agent &lt;span class=&#034;caps&#034;&gt;MQTT&lt;/span&gt;, en l'occurrence Mosquitto, en nous appuyant tr&#232;s largement sur l'article &lt;a href=&#034;https://obrienlabs.net/how-to-setup-your-own-mqtt-broker/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;&#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;How to setup your own &lt;span class=&#034;caps&#034;&gt;MQTT&lt;/span&gt; Broker&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187; de Pat O'Brien&lt;/a&gt;.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Installation et premiers tests&lt;/h2&gt;
&lt;p&gt;On commence par l'installer&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo apt install mosquitto mosquitto-clients &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Nous pouvons d&#232;s lors &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;jouer&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187; un peu...&lt;br class='autobr' /&gt;
On peut commencer par v&#233;rifier la version de notre agent ou le temps &#233;coul&#233; depuis son lancement&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;mosquitto_sub -t \$SYS/broker/version mosquitto_sub -t \$SYS/broker/uptime &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Puis commencez par ouvrir deux sessions dans votre terminal (on ne saurait trop vous conseiller d'utiliser tmux, pr&#233;sent&#233; &lt;a href='https://www.momh.fr/spip.php?page=article&amp;id_article=25'&gt;dans cet article&lt;/a&gt;)&#160;: dans la premi&#232;re, on lance la commande &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mosquitto_sub -t test/#&lt;/code&gt; puis dans la seconde on lance &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mosquitto_pub -t test/test -m &#034;Test message&#034;&lt;/code&gt;...&lt;/p&gt;
&lt;div class='spip_document_37 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://www.momh.fr/IMG/png/mosquitto_a.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://www.momh.fr/local/cache-vignettes/L500xH281/mosquitto_a-7ed6c.png?1726958336' width='500' height='281' alt='' /&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;Configuration, acc&#232;s, &lt;span class=&#034;caps&#034;&gt;SSL&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Il convient de pr&#233;ciser d'embl&#233;e que Mosquitto est tr&#232;s regardant sur le formatage de ses fichiers de configuration et qu'il n'accepte pas d'espace en fin de ligne.&lt;/p&gt;
&lt;p&gt;On commence par &#233;diter un fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/etc/mosquitto/conf.d/myconfig.conf&lt;/code&gt;&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;persistence false # mqtt listener 1883 protocol mqtt # websockets listener 9001 protocol websockets &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On red&#233;marre alors Mosquitto&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo service mosquitto restart &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3&gt;Gestion des acc&#232;s&lt;/h3&gt;
&lt;p&gt;Mosquitto permet de g&#233;rer topic par topic les droits de publication et d'abonnement.&lt;/p&gt;
&lt;p&gt;On commence par g&#233;n&#233;rer un couple identifiant / mot de passe, ainsi&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo mosquitto_passwd -c /etc/mosquitto/passwd USER &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;puis on &#233;dite un fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/etc/mosquitto/acl&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;# Autoriser l'abonnement anonyme &#224; $SYS topic read $SYS/# # Autoriser l'abonnement et la publication anonymes &#224; test topic test/# # Autoriser le seul abonnement anonyme &#224; testlecture topic read testlecture/# # Acc&#232;s limit&#233; pour l'&#233;criture sur testlecture # Abonnement et publication sur secret pour USER seulement user USER topic write testlecture topic secret/# &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;on &#233;dite ensuite le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/etc/mosquitto/conf.d/myconfig.conf&lt;/code&gt; pour qu'il ressemble &#224; cela&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;persistence false allow_anonymous true password_file /etc/mosquitto/passwd acl_file /etc/mosquitto/acl # mqtt listener 1883 protocol mqtt # websockets listener 9001 protocol websockets &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On red&#233;marre le service avant de v&#233;rifier avec la commande &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;netstat&lt;/code&gt; que les ports d&#233;clar&#233;s sont bien ouverts&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;$ sudo service mosquitto restart $ sudo netstat -tulpn | grep 1883 tcp 0 0 0.0.0.0:1883 0.0.0.0:* LISTEN 142015/mosquitto tcp6 0 0 :::1883 :::* LISTEN 142015/mosquitto $ sudo netstat -tulpn | grep 9001 tcp6 0 0 :::9001 :::* LISTEN 142015/mosquitto &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pour le canal &lt;i&gt;test&lt;/i&gt;, accessible sans authentification ni pour l'abonnement ni pour la publication, on v&#233;rifie avec cette commande dans notre premi&#232;re session&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;mosquitto_sub -h localhost -p 1883 -t test/# &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;et dans la seconde nous lan&#231;ons&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;mosquitto_pub -h localhost -p 1883 -t test/1 -m &#034;Hello topic test/1&#034; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Le canal &lt;i&gt;testlecture&lt;/i&gt; ne devrait &#234;tre accessible anonymement qu'en lecture&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;mosquitto_sub -h localhost -p 1883 -t testlecture/# &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;La premi&#232;re des deux commandes suivantes ne devrait rien renvoyer dans notre premi&#232;re session&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;; il convient en effet de s'authentifier pour publier dans ce canal&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;mosquitto_pub -t testlecture/test -m &#034;test&#034; mosquitto_pub -u USER -P PASSWORD -t testlecture/test -m &#034;test&#034; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Enfin, le canal secret n&#233;cessite de s'authentifier aussi bien pour l'abonnement que pour la publication&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;mosquitto_sub -u USER -P PASSWORD -t secret/# &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;mosquitto_pub -u USER -P PASSWORD -t secret/test -m &#034;test&#034; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3&gt;Certificat &lt;span class=&#034;caps&#034;&gt;SSL&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;Il est bien &#233;videmment possible de rendre cet agent &lt;span class=&#034;caps&#034;&gt;MQTT&lt;/span&gt; accessible sur Internet et de le configurer pour qu'il utilise une connexion s&#233;curis&#233;e gr&#226;ce &#224; un certificat comme ceux propos&#233;s par Let's Encrypt. Nous allons consid&#233;rer ici que vous avez d&#233;j&#224; configur&#233; votre nom de domaine et g&#233;n&#233;r&#233; le certificat, &lt;a href='https://www.momh.fr/auto-hebergement-dynhost-ovh-et-certificat-let-s-encrypt-sous-raspbian' class=&#034;spip_in&#034;&gt;comme &#233;voqu&#233; ici&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ainsi, dans mon cas, vous devriez pouvoir vous abonner au canal &lt;i&gt;weather&lt;/i&gt; produit par WeeWX et son plugin weewx-mqtt avec la commande suivante&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;mosquitto_sub -h meteo.momh.fr -p 8883 --capath /etc/ssl/certs/ -t weather/# &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Il convient, apr&#232;s avoir g&#233;n&#233;r&#233; son certificat, d'&#233;diter le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/etc/mosquitto/conf.d/myconfig.conf&lt;/code&gt; de la sorte&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;# Insecure mqtt to localhost only, and secure mqtt listener 1883 localhost listener 8883 certfile /etc/letsencrypt/live/DOMAINE/cert.pem cafile /etc/letsencrypt/live/DOMAINE/chain.pem keyfile /etc/letsencrypt/live/DOMAINE/privkey.pem protocol mqtt # websockets listener 9001 certfile /etc/letsencrypt/live/DOMAINE/cert.pem cafile /etc/letsencrypt/live/DOMAINE/chain.pem keyfile /etc/letsencrypt/live/DOMAINE/privkey.pem protocol websockets &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Apr&#232;s avoir red&#233;marr&#233; le service&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo service mosquitto restart &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;on peut tester ainsi, avec pour chacune de nos deux sessions, les commandes&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;mosquitto_sub -h DOMAINE -p 8883 --capath /etc/ssl/certs/ -u USER -P PASSWORD -t secret/# &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;mosquitto_pub -h DOMAINE -p 8883 -u USER -P PASSWORD --capath /etc/ssl/certs/ -t secret/test -m &#034;Test message dans le canal secret&#034; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Nous pouvons d&#233;sormais utiliser notre agent &lt;span class=&#034;caps&#034;&gt;MQTT&lt;/span&gt; &lt;a href='https://www.momh.fr/weewx-mqtt-et-skin-belchertown' class=&#034;spip_in&#034;&gt;avec WeeWX&lt;/a&gt;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;!&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Auto-h&#233;bergement, DynHost OVH et certificat Let's Encrypt sous Raspbian</title>
		<link>https://www.momh.fr/auto-hebergement-dynhost-ovh-et-certificat-let-s-encrypt-sous-raspbian</link>
		<guid isPermaLink="true">https://www.momh.fr/auto-hebergement-dynhost-ovh-et-certificat-let-s-encrypt-sous-raspbian</guid>
		<dc:date>2020-12-06T09:28:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Brice Boucard</dc:creator>


		<dc:subject>Linux</dc:subject>
		<dc:subject>WeeWX</dc:subject>
		<dc:subject>auto-h&#233;bergement</dc:subject>
		<dc:subject>Raspberry Pi</dc:subject>

		<description>
&lt;p&gt;Ayant &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;associ&#233;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187; ma station m&#233;t&#233;o Netatmo &#224; mon Raspberry Pi gr&#226;ce &#224; WeeWX (lire ce post), je souhaite d&#233;sormais rendre accessible sur Internet le site web ainsi g&#233;n&#233;r&#233;. Je consid&#232;re ainsi que vous avez d&#233;j&#224; un serveur Apache fonctionnel et configur&#233; (m&#234;me si nous aborderons la cr&#233;ation d'un VirtualHost par la suite). &lt;br class='autobr' /&gt; DynHost et mise &#224; jour de l'&lt;span class=&#034;caps&#034;&gt;IP&lt;/span&gt; &lt;br class='autobr' /&gt;
&#201;tant chez &lt;span class=&#034;caps&#034;&gt;OVH&lt;/span&gt;, je profite de leur service DynHOST qui &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;permet de faire pointer un sous-domaine vers une adresse &lt;span class=&#034;caps&#034;&gt;IP&lt;/span&gt; dynamique qui sera&#160;(&#8230;)&lt;/p&gt;


-
&lt;a href="https://www.momh.fr/blog" rel="directory"&gt;Blog&lt;/a&gt;

/ 
&lt;a href="https://www.momh.fr/linux" rel="tag"&gt;Linux&lt;/a&gt;, 
&lt;a href="https://www.momh.fr/weewx" rel="tag"&gt;WeeWX&lt;/a&gt;, 
&lt;a href="https://www.momh.fr/auto-hebergement" rel="tag"&gt;auto-h&#233;bergement&lt;/a&gt;, 
&lt;a href="https://www.momh.fr/raspberry-pi" rel="tag"&gt;Raspberry Pi&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Ayant &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;associ&#233;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187; ma station m&#233;t&#233;o Netatmo &#224; mon Raspberry Pi gr&#226;ce &#224; WeeWX (&lt;a href='https://www.momh.fr/station-meteo-netatmo-weewx-bis' class=&#034;spip_in&#034;&gt;lire ce post&lt;/a&gt;), je souhaite d&#233;sormais rendre accessible sur Internet le site web ainsi g&#233;n&#233;r&#233;. Je consid&#232;re ainsi que vous avez d&#233;j&#224; un serveur Apache fonctionnel et configur&#233; (m&#234;me si nous aborderons la cr&#233;ation d'un VirtualHost par la suite).&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;spip&#034;&gt;DynHost et mise &#224; jour de l'&lt;span class=&#034;caps&#034;&gt;IP&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&#201;tant chez &lt;span class=&#034;caps&#034;&gt;OVH&lt;/span&gt;, je profite de leur service DynHOST qui &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&lt;i&gt;permet de faire pointer un sous-domaine vers une adresse &lt;span class=&#034;caps&#034;&gt;IP&lt;/span&gt; dynamique qui sera mise &#224; jour dans votre zone &lt;span class=&#034;caps&#034;&gt;DNS&lt;/span&gt; &#224; chaque changement de celle-ci.&lt;/i&gt;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;.&lt;/p&gt;
&lt;p&gt;On cr&#233;e notre DynHost puis on en g&#232;re les acc&#232;s, en cr&#233;ant un nouvel identifiant. Puis, sur notre Raspberry Pi, on installe &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ddclient&lt;/code&gt;&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo apt install ddclient &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Lors de l'installation, des &#233;crans successifs vont nous permettre de le configurer&#160;:&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;i&gt;Fournisseur de service de &lt;span class=&#034;caps&#034;&gt;DNS&lt;/span&gt; dynamique&#160;:&lt;/i&gt; Autre&lt;/li&gt;&lt;li&gt; &lt;i&gt;Protocole de mise &#224; jour du &lt;span class=&#034;caps&#034;&gt;DNS&lt;/span&gt; dynamique&#160;:&lt;/i&gt; dyndns2&lt;/li&gt;&lt;li&gt; &lt;i&gt;Serveur de &lt;span class=&#034;caps&#034;&gt;DNS&lt;/span&gt; dynamique&#160;:&lt;/i&gt; &lt;a href=&#034;http://www.ovh.com&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;www.ovh.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;i&gt;Mandataire &lt;span class=&#034;caps&#034;&gt;HTTP&lt;/span&gt;&#160;:&lt;/i&gt; n&#233;ant&lt;/li&gt;&lt;li&gt; &lt;i&gt;Identifiant&#160;:&lt;/i&gt; l'identifiant saisi pr&#233;c&#233;demment (comprenant le nom de domaine en pr&#233;fixe)&lt;/li&gt;&lt;li&gt; &lt;i&gt;Mot de passe&#160;:&lt;/i&gt; le mot de passe correspondant&lt;/li&gt;&lt;li&gt; &lt;i&gt;M&#233;thode de d&#233;couverte d'adresse &lt;span class=&#034;caps&#034;&gt;IP&lt;/span&gt;&#160;:&lt;/i&gt; Service de d&#233;couverte d'&lt;span class=&#034;caps&#034;&gt;IP&lt;/span&gt; bas&#233;e sur le web&lt;/li&gt;&lt;li&gt; &lt;i&gt;H&#244;tes &#224; mettre &#224; jour&#160;:&lt;/i&gt; le DynHost cr&#233;&#233; pr&#233;c&#233;demment&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;La configuration peut se faire sinon &#224; la main, en &#233;ditant le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/etc/ddclient.conf&lt;/code&gt; qui doit ressembler &#224; cela&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;protocol=dyndns2 use=web, web=checkip.dyndns.com server=www.ovh.com login=DOMAINE-USER password='PASSWORD' DYNHOST &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Il vous faut ensuite &#233;diter le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/etc/default/ddclient&lt;/code&gt; et veiller &#224; bien avoir&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;run_daemon=&#034;true&#034; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Et enfin, on red&#233;marre ddclient&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo service ddclient restart &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;Redirection des ports&lt;/h2&gt;
&lt;p&gt;Ensuite, il faut se rendre dans l'interface de gestion de votre Box Internet et configurer, dans la section &lt;span class=&#034;caps&#034;&gt;NAT&lt;/span&gt;, la redirection des port 80 et 443 vers ceux de votre Raspberry Pi (pour en conna&#238;tre l'&lt;span class=&#034;caps&#034;&gt;IP&lt;/span&gt; sur votre r&#233;seau local, utilisez la commande &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;hostname -I&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;D&#233;sormais, en saisissant l'&lt;span class=&#034;caps&#034;&gt;URL&lt;/span&gt; de votre DynHost, vous devriez acc&#233;der &#224; la m&#234;me page que lorsque vous acc&#233;dez &#224; l'adresse localhost.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Mise en place du &lt;span class=&#034;caps&#034;&gt;HTTPS&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Pour ce faire, nous allons g&#233;n&#233;rer un certificat Let's Encrypt pour notre DynHost.&lt;/p&gt;
&lt;p&gt;On commence par copier, dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/etc/apache2/sites-available/&lt;/code&gt;, le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;000-default.conf&lt;/code&gt; vers &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;DYNHOST.conf&lt;/code&gt;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;; par exemple&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/meteo.momh.fr.conf &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;puis par le configurer pour pointer vers notre r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/var/www/html/weewx&lt;/code&gt; ou autre r&#233;pertoire en fonction du ou des skin(s) que vous utilisez. Par exemple, minimalement&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;apacheconf&#034; class='spip_code spip_code_block language-apacheconf' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;&lt;VirtualHost *:80&gt; ServerName meteo.momh.fr ServerAdmin webmaster@localhost DocumentRoot /var/www/html/weewx ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined &lt;/VirtualHost&gt; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pour g&#233;n&#233;rer le certificat, nous allons utiliser &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;certbot&lt;/code&gt;, qu'il convient d'installer&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo apt install certbot python3-certbot-apache &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;puis d'activer le module ssl d'Apache&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo a2enmode ssl sudo systemctl restart apache2 &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On peut alors g&#233;n&#233;rer notre certificat avec la commande suivante&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo certbot --apache -d DynHOST &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Il vous est propos&#233; de rediriger l'&#233;ventuel traffic &lt;span class=&#034;caps&#034;&gt;HTTP&lt;/span&gt; vers &lt;span class=&#034;caps&#034;&gt;HTTPS&lt;/span&gt;&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2 &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Un certificat est alors g&#233;n&#233;r&#233; et un nouvel h&#244;te virtuel est configur&#233; dans Apache, &#224; l'emplacement &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/etc/apache2/sites-available/DYNHOST-le-ssl.conf&lt;/code&gt;. Si vous avez choisi l'option 2, le VirtualHost pr&#233;sent&#233; ci-dessus se voit modifi&#233; avec les lignes suivantes&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;apacheconf&#034; class='spip_code spip_code_block language-apacheconf' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;RewriteEngine on RewriteCond %{SERVER_NAME} =DYNHOST RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pour voir que tout fonctionne, on peut utiliser l'outil de test propos&#233; par &lt;a href=&#034;https://www.ssllabs.com/ssltest/analyze.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;ssllabs.com&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Station m&#233;t&#233;o Netatmo &amp; WeeWX [bis]</title>
		<link>https://www.momh.fr/station-meteo-netatmo-weewx-bis</link>
		<guid isPermaLink="true">https://www.momh.fr/station-meteo-netatmo-weewx-bis</guid>
		<dc:date>2020-11-05T09:13:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Brice Boucard</dc:creator>


		<dc:subject>Linux</dc:subject>
		<dc:subject>Raspberry Pi</dc:subject>
		<dc:subject>WeeWX</dc:subject>

		<description>
&lt;p&gt;Suite &#224; mon premier post sur le sujet (auquel il convient de se reporter pour la configuration et l'utilisation d'une base de donn&#233;e MySQL), je me suis attel&#233; plus longuement &#224; la compatibilit&#233; du plugin weewx-netatmo de Matthew Wall avec les versions 4 de WeeWX sous Python 3. &lt;br class='autobr' /&gt; Installation &lt;br class='autobr' /&gt;
De ce fait, on n'a plus besoin d'installer une ancienne version de WeeWX et l'on peut se reporter sur la version disponible dans les d&#233;p&#244;ts&#160;: bash wget -qO - https://weewx.com/keys.html | sudo apt-key&#160;(&#8230;)&lt;/p&gt;


-
&lt;a href="https://www.momh.fr/blog" rel="directory"&gt;Blog&lt;/a&gt;

/ 
&lt;a href="https://www.momh.fr/linux" rel="tag"&gt;Linux&lt;/a&gt;, 
&lt;a href="https://www.momh.fr/raspberry-pi" rel="tag"&gt;Raspberry Pi&lt;/a&gt;, 
&lt;a href="https://www.momh.fr/weewx" rel="tag"&gt;WeeWX&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Suite &#224; &lt;a href='https://www.momh.fr/station-meteo-netatmo-weewx' class=&#034;spip_in&#034;&gt;mon premier post sur le sujet&lt;/a&gt; (auquel il convient de se reporter pour la configuration et l'utilisation d'une base de donn&#233;e MySQL), je me suis attel&#233; plus longuement &#224; la compatibilit&#233; du &lt;a href=&#034;https://github.com/matthewwall/weewx-netatmo&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;plugin weewx-netatmo de Matthew Wall&lt;/a&gt; avec les versions 4 de &lt;a href=&#034;https://www.weewx.com&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;WeeWX&lt;/a&gt; sous Python 3.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;spip&#034;&gt;Installation&lt;/h2&gt;
&lt;p&gt;De ce fait, on n'a plus besoin d'installer une ancienne version de WeeWX et l'on peut se reporter sur la version disponible dans les d&#233;p&#244;ts&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;wget -qO - https://weewx.com/keys.html | sudo apt-key add - wget -qO - https://weewx.com/apt/weewx-python3.list | sudo tee /etc/apt/sources.list.d/weewx.list sudo apt update sudo apt install weewx &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;D&#233;sormais, la configuration et autres skins ne se trouvent plus dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/home/weewx&lt;/code&gt; mais dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/etc/weewx&lt;/code&gt;. L'installation du plugin weewx-netatmo peut se faire depuis mon fork du plugin&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;wget -O weewx-netatmo.zip https://github.com/bricebou/weewx-netatmo/archive/master.zip sudo wee_extension --install weewx-netatmo.zip sudo wee_config --reconfigure &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On ouvre ensuite le fichier de configuration &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/etc/weewx/weewx.conf&lt;/code&gt; pour v&#233;rifier que nos identifiants Netatmo soient bien pris en compte. Ensuite, on red&#233;marre WeeWX&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo service weewx restart &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;Modifications apport&#233;es&lt;/h2&gt;
&lt;p&gt;Pour ce faire, on utilise l'outil &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;2to3&lt;/code&gt;&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo pip3 install 2to3 &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;puis on lance la commande&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;2to3 -w netatmo.py &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Une erreur subsistait mais le probl&#232;me avait d&#233;j&#224; &#233;t&#233; r&#233;solu par &lt;a href=&#034;https://github.com/matthewwall/weewx-netatmo/issues/15#issuecomment-628994957&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;kwalker05&lt;/a&gt;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;; il suffit, &#224; la ligne 521, de remplacer&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;python&#034; class='spip_code spip_code_block language-python' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;params = urlencode(params) &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;python&#034; class='spip_code spip_code_block language-python' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;params = urlencode(params).encode(&#034;utf-8&#034;) &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>ncspot, un client ncurse pour Spotify</title>
		<link>https://www.momh.fr/ncspot-un-client-ncurse-pour-spotify</link>
		<guid isPermaLink="true">https://www.momh.fr/ncspot-un-client-ncurse-pour-spotify</guid>
		<dc:date>2020-10-03T09:22:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Brice Boucard</dc:creator>


		<dc:subject>Linux</dc:subject>
		<dc:subject>Raspberry Pi</dc:subject>
		<dc:subject>terminal</dc:subject>
		<dc:subject>Spotify</dc:subject>
		<dc:subject>LastFM</dc:subject>

		<description>
&lt;p&gt;Si mes recherches pour utiliser Spotify depuis mon Raspverry Pi sous Raspbian Buster m'ont tout d'abord conduit &#224; la prise en charge des &lt;span class=&#034;caps&#034;&gt;DRM&lt;/span&gt; pour utiliser le client web open.spotify.com puis au client Spotify Connect raspotify, j'ai enfin d&#233;couvert un client Spotify ne n&#233;cessitant pas de serveur X&#160;: ncspot est ainsi un client ncurse pour Spotify &#233;crit en Rust et hautement inspir&#233; des clients ncmpc ou ncmpcpp pour &lt;span class=&#034;caps&#034;&gt;MPD&lt;/span&gt;. &lt;br class='autobr' /&gt; Installation &lt;br class='autobr' /&gt;
On commence par installer les d&#233;pendances&#160;: bash sudo&#160;(&#8230;)&lt;/p&gt;


-
&lt;a href="https://www.momh.fr/blog" rel="directory"&gt;Blog&lt;/a&gt;

/ 
&lt;a href="https://www.momh.fr/linux" rel="tag"&gt;Linux&lt;/a&gt;, 
&lt;a href="https://www.momh.fr/raspberry-pi" rel="tag"&gt;Raspberry Pi&lt;/a&gt;, 
&lt;a href="https://www.momh.fr/terminal" rel="tag"&gt;terminal&lt;/a&gt;, 
&lt;a href="https://www.momh.fr/spotify" rel="tag"&gt;Spotify&lt;/a&gt;, 
&lt;a href="https://www.momh.fr/lastfm" rel="tag"&gt;LastFM&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Si mes recherches pour utiliser Spotify depuis mon Raspverry Pi sous Raspbian Buster m'ont tout d'abord conduit &#224; &lt;a href='https://www.momh.fr/spip.php?page=article&amp;id_article=35'&gt;la prise en charge des &lt;span class=&#034;caps&#034;&gt;DRM&lt;/span&gt;&lt;/a&gt; pour utiliser le client web open.spotify.com puis au &lt;a href='https://www.momh.fr/raspbian-spotify-et-pulseaudio' class=&#034;spip_in&#034;&gt;client Spotify Connect raspotify&lt;/a&gt;, j'ai enfin d&#233;couvert un client Spotify ne n&#233;cessitant pas de serveur X&#160;: &lt;a href=&#034;https://github.com/hrkfdn/ncspot&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;ncspot&lt;/a&gt; est ainsi un client ncurse pour Spotify &#233;crit en Rust et hautement inspir&#233; des clients ncmpc ou ncmpcpp pour &lt;span class=&#034;caps&#034;&gt;MPD&lt;/span&gt;.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;spip&#034;&gt;Installation&lt;/h2&gt;
&lt;p&gt;On commence par installer les d&#233;pendances&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo apt install libncursesw5-dev libdbus-1-dev libpulse-dev libssl-dev libxcb1-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On installe ensuite une &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;instance&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187; de Rust, gr&#226;ce au script &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;rustup&lt;/code&gt;&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;avant de lancer l'installation &#224; proprement parler de ncspot&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;cargo install ncspot &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;Usage et configuration&lt;/h2&gt;
&lt;p&gt;Il suffit alors de lancer la commande &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ncspot&lt;/code&gt; et l'on peut alors naviguer entre trois &#233;crans gr&#226;ce aux touches &lt;kbd&gt;F1&lt;/kbd&gt;, &lt;kbd&gt;F2&lt;/kbd&gt; et &lt;kbd&gt;F3&lt;/kbd&gt;&#160;: queue, recherche, biblioth&#232;que.&lt;/p&gt;
&lt;p&gt;Pour en savoir plus, il suffit d'acc&#233;der &#224; l'&#233;cran d'aide avec la touche &lt;kbd&gt;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;?&lt;/kbd&gt;.&lt;/p&gt;
&lt;p&gt;La configuration se fait dans le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;~/.config/ncspot/config.toml&lt;/code&gt; avec a possibilit&#233; de d&#233;finir soi-m&#234;me des raccourcis clavier au sein d'une section &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;[keybindings]&lt;/code&gt; et un th&#232;me au sein d'une section &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;[theme]&lt;/code&gt; (&lt;a href=&#034;https://ncspot-theme-generator.vaa.red/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;un g&#233;n&#233;rateur&lt;/a&gt; vous en facilite la cr&#233;ation)&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;toml&#034; class='spip_code spip_code_block language-toml' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;backend = &#034;pulseaudio&#034; [saved_state] volume = 70 repeat = &#034;no&#034; shuffle = true [keybindings] &#034;Shift+p&#034; = &#034;pause&#034; [theme] background = &#034;black&#034; primary = &#034;green&#034; secondary = &#034;cyan&#034; title = &#034;magenta&#034; playing = &#034;black&#034; playing_selected = &#034;blue&#034; playing_bg = &#034;magenta&#034; highlight = &#034;black&#034; highlight_bg = &#034;green&#034; error = &#034;white&#034; error_bg = &#034;red&#034; statusbar = &#034;magenta&#034; statusbar_progress = &#034;magenta&#034; statusbar_bg = &#034;black&#034; cmdline = &#034;cyan&#034; cmdline_bg = &#034;light black&#034; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;Scrobbling&lt;/h2&gt;
&lt;p&gt;Si l'on souhaite scrobbler ce que l'on &#233;coute avec ncspot, il convient d'installer &lt;a href=&#034;https://github.com/InputUsername/rescrobbled&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;rescrobbled&lt;/code&gt;&lt;/a&gt;, &#233;crit lui aussi en Rust&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;wget https://github.com/InputUsername/rescrobbled/archive/v0.2.0.tar.gz tar xvzf v0.2.0.tar.gz cd rescrobbled-0.2.0/ cargo install --path . &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;La configuration se fait &#224; travers le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;~/.config/rescrobbled/config.toml&lt;/code&gt; mais n&#233;cessite d'avoir g&#233;n&#233;r&#233; au pr&#233;alable un couple cl&#233;-secret via &lt;a href=&#034;https://www.last.fm/api/account/create&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;cette page de Last.fm&lt;/a&gt;&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;mkdir ~/.config/rescrobbled/ nano ~/.config/rescrobbled/config.toml &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;toml&#034; class='spip_code spip_code_block language-toml' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;lastfm-key = &#034;Last.fm API key&#034; lastfm-secret = &#034;Last.fm API secret&#034; #listenbrainz-token = &#034;ListenBrainz API token&#034; enable-notifications = false min-play-time = 0 # in seconds player-whitelist = [ &#034;ncspot&#034; ] # if empty or ommitted, will allow all players &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Il faut ensuite lancer la commande &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;rescrobbled&lt;/code&gt; alors que le lecteur ncspot fonctionne&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;; il vous sera alors demander votre identifiant et votre mot de passe.&lt;br class='autobr' /&gt;
Pour lancer le service en tant que d&#233;mon, il faut placer le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;~/rescrobbled-0.2.0/rescrobbled.service&lt;/code&gt; dans votre r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;~/.config/systemd/user/&lt;/code&gt;&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;mkdir -p ~/.config/systemd/user cp ~/rescrobbled-0.2.0/rescrobbled.service ~/.config/systemd/user/ &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Lancez ensuite la commande suivante pour lancer rescrobbled au d&#233;marrage&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;systemctl --user enable rescrobbled.service &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;et pour le lancer sans avoir &#224; red&#233;marrer&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;systemctl --user start rescrobbled.service &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Raspbian, Spotify et PulseAudio</title>
		<link>https://www.momh.fr/raspbian-spotify-et-pulseaudio</link>
		<guid isPermaLink="true">https://www.momh.fr/raspbian-spotify-et-pulseaudio</guid>
		<dc:date>2020-10-02T09:32:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Brice Boucard</dc:creator>


		<dc:subject>Linux</dc:subject>
		<dc:subject>PulseAudio</dc:subject>
		<dc:subject>Raspberry Pi</dc:subject>
		<dc:subject>Spotify</dc:subject>

		<description>
&lt;p&gt;Il est possible d'utiliser son Raspberry Pi sous Raspbian comme client Spotify Connect, c'est-&#224;-dire d'en faire une sorte de module de sortie audio, et ce gr&#226;ce &#224; Raspotify. &lt;br class='autobr' /&gt; Il est &#224; noter que sous Raspbian Bullseye et suite &#224; une &#233;volution majeure de Raspotify, nous pr&#233;f&#233;rons utiliser directement la librairie librespot comme expliqu&#233; dans cet article. &lt;br class='autobr' /&gt;
Installation &lt;br class='autobr' /&gt;
Pour l'installer, rien de plus simple&#160;: bash sudo apt -y install curl apt-transport-https curl -sSL&#160;(&#8230;)&lt;/p&gt;


-
&lt;a href="https://www.momh.fr/blog" rel="directory"&gt;Blog&lt;/a&gt;

/ 
&lt;a href="https://www.momh.fr/linux" rel="tag"&gt;Linux&lt;/a&gt;, 
&lt;a href="https://www.momh.fr/pulseaudio" rel="tag"&gt;PulseAudio&lt;/a&gt;, 
&lt;a href="https://www.momh.fr/raspberry-pi" rel="tag"&gt;Raspberry Pi&lt;/a&gt;, 
&lt;a href="https://www.momh.fr/spotify" rel="tag"&gt;Spotify&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Il est possible d'utiliser son Raspberry Pi sous Raspbian comme client Spotify Connect, c'est-&#224;-dire d'en faire une sorte de module de sortie audio, et ce gr&#226;ce &#224; &lt;a href=&#034;https://dtcooper.github.io/raspotify/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Raspotify&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Il est &#224; noter que sous Raspbian Bullseye et suite &#224; une &#233;volution majeure de Raspotify, nous pr&#233;f&#233;rons utiliser directement la librairie &lt;a href=&#034;https://github.com/librespot-org/librespot&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;librespot&lt;/a&gt; comme expliqu&#233; dans &lt;a href='https://www.momh.fr/spotify-connect-et-pulseaudio-sous-raspbian-bullseye' class=&#034;spip_in&#034;&gt;cet article&lt;/a&gt;.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Installation&lt;/h2&gt;
&lt;p&gt;Pour l'installer, rien de plus simple&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo apt -y install curl apt-transport-https curl -sSL https://dtcooper.github.io/raspotify/key.asc | sudo apt-key add -v - echo 'deb https://dtcooper.github.io/raspotify raspotify main' | sudo tee /etc/apt/sources.list.d/raspotify.list sudo apt-get update sudo apt-get -y install raspotify &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ensuite, depuis votre application Spotify, il suffit de s&#233;lectionner la sortie &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;Raspotify&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187; dans les options propos&#233;es dans le menu accessible depuis l'icone dans le bas inf&#233;rieur gauche de l'&#233;cran de lecture&#160;:&lt;/p&gt;
&lt;div class='spip_document_40 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://www.momh.fr/IMG/jpg/spotify_select.jpg' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/jpeg&#034;&gt; &lt;img src='https://www.momh.fr/local/cache-vignettes/L500xH890/spotify_select-99408.jpg?1724896677' width='500' height='890' alt='' /&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div class='spip_document_41 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://www.momh.fr/IMG/jpg/spotify_select_raspotify.jpg' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/jpeg&#034;&gt; &lt;img src='https://www.momh.fr/local/cache-vignettes/L500xH890/spotify_select_raspotify-474d0.jpg?1724896677' width='500' height='890' alt='' /&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;Configuration&lt;/h2&gt;
&lt;p&gt;Raspotify est fonctionnel out of the box mais, s'il en est besoin, il est possible de jouer sur certains param&#232;tres dans le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/etc/default/raspotify&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;En cas de modification, il convient alors de relancer le service raspotify&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo service raspotify restart &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;Raspotify &amp; PulseAudio&lt;/h2&gt;
&lt;p&gt;Pour que Raspotify utilise PulseAudio, il suffit de suivre &lt;a href=&#034;https://github.com/dtcooper/raspotify/issues/154#issuecomment-442299432&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;la d&#233;marche propos&#233;e par Marc Fauvain&lt;/a&gt;&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo mkdir /var/cache/raspotify/.pulse sudo sh -c 'echo &#034;default-server = 127.0.0.1&#034; &gt; /var/cache/raspotify/.pulse/client.conf' sudo chown -R raspotify:raspotify /var/cache/raspotify/.pulse &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Il faut &#233;galement &#233;diter le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/etc/asound.rc&lt;/code&gt;&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo nano /etc/asound.rc &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;pcm.!default { type pulse } ctl.!default { type pulse } &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>MPD, PulseAudio et Bluetooth sous Raspbian Buster</title>
		<link>https://www.momh.fr/mpd-pulseaudio-et-bluetooth-sous-raspbian-buster</link>
		<guid isPermaLink="true">https://www.momh.fr/mpd-pulseaudio-et-bluetooth-sous-raspbian-buster</guid>
		<dc:date>2020-09-29T10:58:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Brice Boucard</dc:creator>


		<dc:subject>Linux</dc:subject>
		<dc:subject>mpd</dc:subject>
		<dc:subject>PulseAudio</dc:subject>
		<dc:subject>Raspberry Pi</dc:subject>
		<dc:subject>bluetooth</dc:subject>

		<description>
&lt;p&gt;Alors que je venais juste de mettre en place la cohabitation entre &lt;span class=&#034;caps&#034;&gt;MPD&lt;/span&gt; et mon ampli connect&#233; en Bluetooth sur mon Raspberry Pi 2 (voir ici), je basculais sur un mod&#232;le 4, modifiant quelque peu mes usages et utiisant cette fois-ci l'interface graphique (afin de profiter notamment de Spotify, une fois la gestion des &lt;span class=&#034;caps&#034;&gt;DRM&lt;/span&gt; ajout&#233;e). Et du coup, afin d'avoir une ma&#238;trise plus fine de mes sorties audio, j'ai opt&#233; pour l'utilisation de PulseAudio. &lt;br class='autobr' /&gt; On commence par purger bluealsa s'il est install&#233;&#160;(&#8230;)&lt;/p&gt;


-
&lt;a href="https://www.momh.fr/blog" rel="directory"&gt;Blog&lt;/a&gt;

/ 
&lt;a href="https://www.momh.fr/linux" rel="tag"&gt;Linux&lt;/a&gt;, 
&lt;a href="https://www.momh.fr/mpd" rel="tag"&gt;mpd&lt;/a&gt;, 
&lt;a href="https://www.momh.fr/pulseaudio" rel="tag"&gt;PulseAudio&lt;/a&gt;, 
&lt;a href="https://www.momh.fr/raspberry-pi" rel="tag"&gt;Raspberry Pi&lt;/a&gt;, 
&lt;a href="https://www.momh.fr/bluetooth" rel="tag"&gt;bluetooth&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Alors que je venais juste de mettre en place la cohabitation entre &lt;span class=&#034;caps&#034;&gt;MPD&lt;/span&gt; et mon ampli connect&#233; en Bluetooth sur mon Raspberry Pi 2 (voir &lt;a href='https://www.momh.fr/mpd-et-bluetooth-sur-raspberry-pi-2' class=&#034;spip_in&#034;&gt;ici&lt;/a&gt;), je basculais sur un mod&#232;le 4, modifiant quelque peu mes usages et utiisant cette fois-ci l'interface graphique (afin de profiter notamment de Spotify, une fois &lt;a href='https://www.momh.fr/spip.php?page=article&amp;id_article=35'&gt;la gestion des &lt;span class=&#034;caps&#034;&gt;DRM&lt;/span&gt; ajout&#233;e&lt;/a&gt;). Et du coup, afin d'avoir une ma&#238;trise plus fine de mes sorties audio, j'ai opt&#233; pour l'utilisation de PulseAudio.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;On commence par purger &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;bluealsa&lt;/code&gt; s'il est install&#233;&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo apt purge bluealsa &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;puis on installe tout ce qui concerne le Bluetooth et PulseAudio&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo apt install pi-bluetooth pulseaudio pulseaudio-module-bluetooth paprefs pavumeter pavucontrol pasystray &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On v&#233;rifie la configuration de PulseAudio (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/etc/pulse/default.pa&lt;/code&gt;) notamment pour ce qui est du Bluetooth&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;### Automatically load driver modules for Bluetooth hardware .ifexists module-bluetooth-policy.so load-module module-bluetooth-policy .endif .ifexists module-bluetooth-discover.so load-module module-bluetooth-discover .endif &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;et on ajoute ces &#233;l&#233;ments&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;# automatically switch to newly-connected devices load-module module-switch-on-connect load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 # IP of localhost &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On tue PulseAudio&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;pulseaudio -k &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;S'il ne red&#233;marre pas tout seul, il suffit de lancer la commande&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;pulseaudio -D &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On veille &#224; bien connecter notre enceinte Bluetooth via l'utilitaire en ligne de commande &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;bluetoothctl&lt;/code&gt;&#160;: on commence par rechercher les p&#233;riph&#233;riques disponibles (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;scan on&lt;/code&gt;), puis on lui accorde notre confiance (pas d'authentification n&#233;cessaire, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;trust&lt;/code&gt;) avant de faire l'appairage avec le bon device (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;pair&lt;/code&gt;) et de nous y connecter (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;connect&lt;/code&gt;)&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;; on peut alors cesser la recherche (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;scan off&lt;/code&gt;)&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;bluetoothctl &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;Agent registered [bluetooth]# scan on Discovery started [CHG] Controller 00:1A:7D:DA:71:15 Discovering: yes [CHG] Device FC:58:FA:14:27:BC RSSI: -71 [CHG] Device FC:58:FA:14:27:BC TxPower: 4 [...] [bluetooth]# pair FC:58:FA:14:27:BC Attempting to pair with FC:58:FA:14:27:BC [CHG] Device FC:58:FA:14:27:BC Connected: yes [...] [CHG] Device FC:58:FA:14:27:BC ServicesResolved: yes [CHG] Device FC:58:FA:14:27:BC Paired: yes Pairing successful [CHG] Device FC:58:FA:14:27:BC ServicesResolved: no [CHG] Device FC:58:FA:14:27:BC Connected: no [bluetooth]# trust FC:58:FA:14:27:BC [CHG] Device FC:58:FA:14:27:BC Trusted: yes Changing FC:58:FA:14:27:BC trust succeeded [bluetooth]# connect FC:58:FA:14:27:BC Attempting to connect to FC:58:FA:14:27:BC [CHG] Device FC:58:FA:14:27:BC Connected: yes Connection successful [CHG] Device FC:58:FA:14:27:BC ServicesResolved: yes [Tangent Ampster BT]# scan off Discovery stopped [...] [Tangent Ampster BT]# exit &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On configure une sortie PulseAudio dans la configuration de mpd, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/etc/mpd.conf&lt;/code&gt;&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo nano /etc/mpd.conf &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;audio_output { type &#034;pulse&#034; name &#034;My Pulse Output&#034; server &#034;localhost&#034; mixer_type &#034;software&#034; } &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On relance &lt;span class=&#034;caps&#034;&gt;MPD&lt;/span&gt; et l'affaire est jou&#233;e&#160;:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;bash&#034; class='spip_code spip_code_block language-bash' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;sudo service mpd restart &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>



</channel>

</rss>
