<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr"><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://stevefuchs.fr/feed.xml" rel="self" type="application/atom+xml" /><link href="https://stevefuchs.fr/" rel="alternate" type="text/html" hreflang="fr" /><updated>2026-04-13T21:17:46+00:00</updated><id>https://stevefuchs.fr/feed.xml</id><title type="html">Steve Fuchs - Blog</title><author><name>Steve Fuchs</name></author><entry><title type="html">Une baleine de soutien-gorge dans une machine à laver</title><link href="https://stevefuchs.fr/posts/baleine-soutien-gorge-machine-a-laver/" rel="alternate" type="text/html" title="Une baleine de soutien-gorge dans une machine à laver" /><published>2025-02-14T00:00:00+00:00</published><updated>2025-02-14T00:00:00+00:00</updated><id>https://stevefuchs.fr/posts/baleine-soutien-gorge-machine-a-laver</id><content type="html" xml:base="https://stevefuchs.fr/posts/baleine-soutien-gorge-machine-a-laver/"><![CDATA[<p>En sortie de machine à laver, on se rend compte qu’une baleine de soutien-gorge est sortie, et n’est pas dans la machine à laver. Nous avons supposé qu’elle est passé dans les trous du tambour.</p>

<h1 id="accès">Accès</h1>

<p>Débrancher la machine à laver, et mettre un tournevis entre les bornes pour une éventuelle nécéssaire décharge.</p>

<p>Enlever la plaque arrière de la machine à laver :</p>

<p><img src="/assets/20250214_1.jpg" alt="Arrière de la machine à laver" /></p>

<h1 id="dépose-de-la-résistance">Dépose de la résistance</h1>

<p>Débrancher la résistance en prenant une photo avant :</p>

<p><img src="/assets/20250214_2.jpg" alt="Arrière de la machine à laver" /></p>

<p>Retirer la résistance (je me suis aidé d’un tournevis pour faire levier) :</p>

<p><img src="/assets/20250214_3.jpg" alt="Arrière de la machine à laver" /></p>

<h1 id="observation--retrait">Observation &amp; Retrait</h1>

<p>En regardant dans le trou du logement de la résistance, j’ai vu un bout de la baleine dépasser. Celle-ci a été ensuite retiré avec un aimant sur un flexible (j’ai dû faire plusieurs essais).</p>

<p>Voici à quoi ressemble le logement de cette résistance :</p>

<p><img src="/assets/20250214_4.jpg" alt="Arrière de la machine à laver" /></p>

<p><img src="/assets/20250214_5.jpg" alt="Arrière de la machine à laver" /></p>

<p>La fameuse baleine :</p>

<p><img src="/assets/20250214_6.jpg" alt="Arrière de la machine à laver" /></p>]]></content><author><name>Steve</name></author><category term="Electroménager" /><category term="Réparation" /><summary type="html"><![CDATA[En sortie de machine à laver, on se rend compte qu’une baleine de soutien-gorge est sortie, et n’est pas dans la machine à laver. Nous avons supposé qu’elle est passé dans les trous du tambour.]]></summary></entry><entry><title type="html">Domotique / Pilotage de mes volets roulants Somfy IO</title><link href="https://stevefuchs.fr/posts/domotique-pilotage-volets-roulants-somfy-io/" rel="alternate" type="text/html" title="Domotique / Pilotage de mes volets roulants Somfy IO" /><published>2020-08-29T00:00:00+00:00</published><updated>2020-08-29T00:00:00+00:00</updated><id>https://stevefuchs.fr/posts/domotique-pilotage-volets-roulants-somfy-io</id><content type="html" xml:base="https://stevefuchs.fr/posts/domotique-pilotage-volets-roulants-somfy-io/"><![CDATA[<h1 id="histoire-du-projet">Histoire du projet</h1>

<p>L’idée de départ était de pouvoir piloter à distance mes volets roulants Somfy à distance, avec potentiellement l’exécution de scénarios.</p>

<p>Il y a deux protocoles utilisés par Somfy pour les volets roulants : RTS et IO. Mes volets sont des Somfy IO.</p>

<p>La Somfy Box répondais à mon besoin, mais elle était vraiment trop chère. J’ai trouvé des alternatives plus économiques à cette box, mais pour les commandes RTS, et non pour l’IO qui semble fermé.</p>

<p>J’ai donc démarré la réalisation d’un système domotique maison, que j’ai basé sur un Raspberry Pi pour tester cette plateforme et ses fameux ports GPIO.</p>

<h1 id="comment-sinterfacer-avec-les-volets-roulants-somfy-io-">Comment s’interfacer avec les volets roulants Somfy IO ?</h1>

<p>N’ayant pas trouvé d’interface radio compatible avec le protocole Somfy IO, j’ai pensé m’interfacer directement sur une télécommande compatible.</p>

<p>J’ai donc commandé une télécommande Somfy Telis 1 IO que j’ai configuré avec l’ensemble de mes volets roulants. Je l’ai ensuite désossé avec une perceuse Dremel et des embouts mini-scie et fraiseuse pour enlever la protection plastique des boutons de la télécommande.</p>

<p><img src="/assets/20151111_160857_R.jpg" alt="-" /></p>

<p>Je n’ai pas désoudé les boutons, car j’ai trouvé des petites pinces de connexion ou mini-grips qui permettent de s’y grefer :</p>

<p><img src="/assets/DSC04532_R.jpg" alt="-" /></p>

<h1 id="comment-agir-sur-les-boutons-de-la-télécommande-">Comment agir sur les boutons de la télécommande ?</h1>

<p>La première option qui m’est venu à l’esprit est d’utiliser des relais connectés aux GPIO pour simuler l’appui sur ces boutons via le Raspberry Pi. J’ai trouvé ensuite une autre solution, plus élégante et économique, en utilisant un octocoupleur.</p>

<p>J’ai fait des tests de la solution avec des LED pour vérifier la viabilité de l’option :</p>

<p><img src="/assets/uploads/2014/08/DSC00131.jpg" alt="-" /></p>

<p>J’utilise l’outil GPIO de Gordon Henderson: <a href="http://wiringpi.com/">Wiring Pi</a> pour commander les GPIO.</p>

<p>Après le test avec les LED, j’ai connecté les boutons de la télécommande.</p>

<p><img src="/assets/uploads/2015/11/DSC04532_R.jpg" alt="-" /></p>

<p><img src="/assets/uploads/2015/11/DSC04533_R.jpg" alt="-" /></p>

<p><img src="/assets/uploads/2015/11/DSC04665_R.jpg" alt="-" /></p>

<p><img src="/assets/uploads/2017/07/20170719_224307.jpg" alt="-" /></p>

<p>Le tout fonctionne via le Shell. Pour simuler l’appui sur un bouton, j’envoie la valeur 1 sur la sortie correspondante au bouton du GPIO, j’attends 1 secondes (commande shell &lt;sleep 1&gt;) puis j’envoie 0 sur la sortie correspondante.</p>

<h1 id="comment-piloter-les-boutons-à-distance-">Comment piloter les boutons à distance ?</h1>

<p>Une interface web m’a semblé le plus judicieux. PHP permet d’exécuter des commandes Shell pour utiliser les GPIO.</p>

<p>J’ai donc démarré un projet d’interface de commande :</p>

<p><img src="/assets/uploads/2015/11/2015-11-29_094745.png" alt="-" /></p>

<p>Que j’ai fait un peu évoluer.</p>

<p><img src="/assets/uploads/2016/12/2016-12-07_231155.png" alt="-" /></p>

<p><img src="/assets/uploads/2016/12/2016-12-07_231237.png" alt="-" /></p>

<h1 id="pourquoi-ne-pas-utiliser-une-plateforme-existante-">Pourquoi ne pas utiliser une plateforme existante ?</h1>

<p>Un collègue de travail m’a parlé de <a href="https://domoticz.com/">Domoticz</a>. J’ai testé, et même si je ne trouvais pas l’interface graphique des plus intuitives, Domoticz offre de belles possibilités d’évolutions, et un réel gain de temps comparé à l’écriture complète d’une application maison.</p>

<p>J’ai donc testé, et finalement adopté cette solution.</p>

<p>Je vous conseille de faire un tour sur <a href="https://easydomoticz.com/">EasyDomoticz</a> en passant.</p>

<p>Voici à quoi a ressemblé mon interface Domoticz :</p>

<p><img src="/assets/uploads/2017/07/2017-07-19_223923.png" alt="-" /></p>

<p>Au fur et à mesure des évolutions du Raspberry Pi, j’ai également testé d’autres systèmes domotiques libres / open source.</p>

<p>Mon choix actuel est <a href="https://www.jeedom.com/fr/">Jeedom</a>. La configuration au niveau de Jeedom s’est faite comme suit :</p>

<p><img src="/assets/Jeedom_20200830_1.PNG" alt="-" /></p>

<p><img src="/assets/Jeedom_20200830_2.PNG" alt="-" /></p>

<h1 id="pourquoi-avoir-des-piles-">Pourquoi avoir des piles ?</h1>

<p>A la télécommande Somfy Telis 1 IO présente dans mon installation, j’ai ajouté une autre télécommande afin de pouvoir gérer certains volets seulement.</p>

<p><img src="/assets/Scan2020-08-30_213137.png" alt="-" /></p>

<p>Les télécommandes Somfy Telis 1 IO utilisent 2 piles 1,5v. Et je voulais que mon installation soit alimentée par le secteur.</p>

<p>J’ai repéré que le Raspberry Pi fournissait sur une de ces broches une alimentation 3,3v.</p>

<p>J’ai connecté cette alimentation aux télécommandes pour supprimer les piles. J’ai lu qu’il y avait une limitation à 500mA, ce qui me parait suffisant.</p>

<h1 id="mise-en-boîte">Mise en boîte…</h1>

<p>Pour rendre l’ensemble un peu plus présentable et transportable, je l’ai empaqueté dans une boîte “ouverte”:</p>

<p><img src="/assets/20200829_113015_R.jpg" alt="-" /></p>

<p>L’idée est de consituer une box domotique</p>

<p><img src="/assets/20200829_120923_R.jpg" alt="-" /></p>

<p>Le tout à été mis dans mon armoire réseau :</p>

<p><img src="/assets/20200829_121256_R.jpg" alt="-" /> <img src="/assets/20200829_121328_R.jpg" alt="-" /></p>]]></content><author><name>Steve</name></author><category term="RasPi-Somfy" /><summary type="html"><![CDATA[Histoire du projet]]></summary></entry><entry><title type="html">Cheat Sheet / Powershell</title><link href="https://stevefuchs.fr/posts/cheat-sheet-powershell/" rel="alternate" type="text/html" title="Cheat Sheet / Powershell" /><published>2019-08-29T00:00:00+00:00</published><updated>2019-08-29T00:00:00+00:00</updated><id>https://stevefuchs.fr/posts/cheat-sheet-powershell</id><content type="html" xml:base="https://stevefuchs.fr/posts/cheat-sheet-powershell/"><![CDATA[<h1 id="ajouter-une-extension-à-tout-les-fichiers-dun-répertoire">Ajouter une extension à tout les fichiers d’un répertoire</h1>

<p>Dans un répertoire, pour ajouter une extension (par exemple .jpg) à tous les fichiers d’un répertoire, on peut utiliser le script ci dessous.</p>

<figure class="highlight"><pre><code class="language-powershell" data-lang="powershell"><span class="n">gci</span><span class="w"> </span><span class="nt">-ex</span><span class="w"> </span><span class="s2">"*.jpg"</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="nf">?</span><span class="p">{</span><span class="o">!</span><span class="bp">$_</span><span class="o">.</span><span class="nf">PsIsContainer</span><span class="p">}</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">ren</span><span class="w"> </span><span class="nt">-new</span><span class="w"> </span><span class="p">{</span><span class="bp">$_</span><span class="o">.</span><span class="nf">name</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s2">".jpg"</span><span class="p">}</span></code></pre></figure>]]></content><author><name>Steve</name></author><category term="Développement" /><category term="PowerShell" /><summary type="html"><![CDATA[Ajouter une extension à tout les fichiers d’un répertoire]]></summary></entry><entry><title type="html">Coller son mot de passe sur un site ne l’autorisant pas</title><link href="https://stevefuchs.fr/posts/coller-son-mot-de-passe-site-autorisant-pas/" rel="alternate" type="text/html" title="Coller son mot de passe sur un site ne l’autorisant pas" /><published>2019-06-26T00:00:00+00:00</published><updated>2019-06-26T00:00:00+00:00</updated><id>https://stevefuchs.fr/posts/coller-son-mot-de-passe-site-autorisant-pas</id><content type="html" xml:base="https://stevefuchs.fr/posts/coller-son-mot-de-passe-site-autorisant-pas/"><![CDATA[<h1 id="description-du-problème">Description du problème</h1>

<p>Certains sites comme oui.sncf ont cette facheuse politique de ne pas autoriser de faire un coller dans certains champs, comme la confirmation du mot de passe ou de l’email d’inscription.</p>

<p>C’est assez agaçant, et selon moi contre productif d’un point de vue sécurité car la tendance serait alors de choisir un mot de passe simple pour aller vite ou lieu d’utiliser un mot de passe complexe ou long.</p>

<h1 id="contournement">Contournement</h1>

<p>Les sites sur lesquels j’ai fait cette manipulation intègre jQuery, donc ceci ne s’applique que dans ce cas de figure, qui reste cependant trés courant.</p>

<p>Voici l’exemple de la manipulation sur le dernier site qui m’a posé un souci: oui.sncf</p>

<p>Pour s’inscrire, il faut saisir son mot de passe, que je génère habituellement via une application, et que je colle ensuite dans les champs. Or sur ce site, je ne peux pas coller le mot de passe dans le champt de confirmation du mot de passe.</p>

<p><img src="/assets/SNAG- 26-06-2019 12.49.59 0000.png" alt="" /></p>

<p>Il faut alors démarrer le mode développeur / debug (touche F12 sur Chrome), et accéder à la console.</p>

<p><img src="/assets/SNAG- 26-06-2019 12.50.38 0001.png" alt="" /></p>

<p>Faire un clic droit sur le champ que l’on veut remplir, et choisir “Inspect” sur Chrome.</p>

<p>Ceci vous montre le bout de code HTML correspondant à ce champ.</p>

<p><img src="/assets/SNAG- 26-06-2019 12.51.06 0004.png" alt="" /></p>

<p>Repérer le champ “id”, dans mon cas id=pwdConfirm</p>

<p>Il faut alors se rendre dans la console, et saisir un petit peu de code.</p>

<figure class="highlight"><pre><code class="language-javascript" data-lang="javascript"><span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">#pwdConfirm</span><span class="dl">'</span><span class="p">).</span><span class="nf">val</span><span class="p">(</span><span class="dl">'</span><span class="s1">VotreMotDePasse</span><span class="dl">'</span><span class="p">)</span></code></pre></figure>

<p><img src="/assets/SNAG- 26-06-2019 12.51.30 0005-1.png" alt="" /></p>

<p>Le champ se remplit avec la valeur donné (le nouveau mot de passe collé dans la console)</p>

<p><img src="/assets/SNAG- 26-06-2019 12.51.30 0005.png" alt="" /></p>

<p>Et vous permet de valider le formulaire.</p>

<p><img src="/assets/SNAG- 26-06-2019 12.51.40 0006.png" alt="" /></p>]]></content><author><name>Steve</name></author><category term="Hack" /><category term="JavaScript" /><summary type="html"><![CDATA[Description du problème]]></summary></entry><entry><title type="html">Trading de monnaies virtuelles</title><link href="https://stevefuchs.fr/posts/trading-de-monnaies-virtuelles/" rel="alternate" type="text/html" title="Trading de monnaies virtuelles" /><published>2018-01-17T20:06:20+00:00</published><updated>2018-01-17T20:06:20+00:00</updated><id>https://stevefuchs.fr/posts/trading-de-monnaies-virtuelles</id><content type="html" xml:base="https://stevefuchs.fr/posts/trading-de-monnaies-virtuelles/"><![CDATA[<p>Pour expérimenter le trading de cryptomonnaies (Bitcoin et autres), j’ai ouvert un compte sur <a href="https://www.kraken.com/">Kraken</a> mais le site ne fonctionnait pas très bien, j’avais beaucoup d’erreurs, il était très lent et je n’arrivais pas à démarrer le processus de vérification. Un message indiquait dans un bandeau que le site était surchargé et que des améliorations étaient en cours. J’ai patienté 3 jours mais rien ne s’est amélioré.</p>

<p>Je me suis alors tourné vers la plateforme <a href="https://www.coinbase.com/join/5a4e8f80d920eb0524bceec2">Coinbase</a> (lien avec code de parrainage). Le site est rapide et traduit en français en plus. Aucun problème pour créer un compte. La vérification d’identité se fait en présentant une pièce d’identité via sa webcam ou son mobile, sur une page Internet dont le lien est envoyé par sms (n’a pas fonctionné pour moi) ou sur l’application mobile Coinbase que j’ai utilisé.</p>

<p><img src="/assets/uploads/2018/01/2018-01-05_235032.png" alt="-" /></p>

<p>Une fois l’identité vérifiée, on peut commencer à acheter du Bitcoin ou les autres monnaies gérées par Coinbase, avec sa carte bancaire qu’on aura préalablement enregistrée. C’est très simple.</p>

<p>J’ai effectué 2 transactions: achat pour 30 € en Bitcoin et 30 € en Ethereum.</p>

<p>Pour donner une idées des frais liés à l’achat:</p>

<p>Achat d’Ethereum:</p>

<p>0,03403390 ETH – Taux de change @ €831,23 / ETH<br />
Sous-total €28,29<br />
Frais Coinbase 1,00 € + Frais associés à la méthode de paiement 0,71 €<br />
Total €30,00</p>

<p>Achat de Bitcoin:</p>

<p>0,00202252 BTC – Taux de change @ €13 987,50 / BTC<br />
Sous-total €28,29<br />
Frais Coinbase 1,00 € + Frais associés à la méthode de paiement 0,71 €<br />
Total €30,00</p>

<p>Les frais Coinbase sont constants jusqu’au plafond d’achat possible avec la carte bancaire, les frais associés à la méthode de paiement sont variables selon le montant. Il y a peut-être moins de frais en passant par un virement bancaire lors de l’achat.</p>

<p>Mon portefeuille est dorénavant près pour démarrer les cycles de ventes et d’achats pour essayer de le faire fructifier…</p>

<p><img src="/assets/uploads/2018/01/2018-01-06_000608.png" alt="-" /></p>

<p><strong>Mise à jour 10 Janvier 2018</strong></p>

<p>4 jours après mon achat, je suis en mesure de revendre à une valeur me permettant de récupérer ma mise (frais déduits).</p>

<p>Mon portefeuille est le suivant:</p>

<p><img src="/assets/uploads/2018/01/2018-01-10_181739.png" alt="-" /></p>

<p>L’Ethereum a fait un bond de +25%, le Bitcoin a chuté de -18%.</p>

<p>La valorisation totale est de 62,24 €. En vendant les deux lignes (frais de 1€ par ligne), je pourrais récupérer les 60 € misé au départ.</p>

<p><img src="/assets/uploads/2018/01/2018-01-10_205707.png" alt="-" /></p>

<p><strong>Mise à jour 17 Janvier 2018</strong></p>

<p>Les cours ont fortement chuté. Pour illustrer mon propos, voici le cours du bitcoin sur les 7 derniers jours. Ça illustre bien les fluctuations vertigineuses que le cours des cryptomonnaies peut subir.</p>

<p><img src="/assets/uploads/2018/01/2018-01-17_210454.png" alt="-" /></p>]]></content><author><name>Steve</name></author><category term="365" /><category term="365" /><category term="finance" /><summary type="html"><![CDATA[Pour expérimenter le trading de cryptomonnaies (Bitcoin et autres), j’ai ouvert un compte sur Kraken mais le site ne fonctionnait pas très bien, j’avais beaucoup d’erreurs, il était très lent et je n’arrivais pas à démarrer le processus de vérification. Un message indiquait dans un bandeau que le site était surchargé et que des améliorations étaient en cours. J’ai patienté 3 jours mais rien ne s’est amélioré.]]></summary></entry><entry><title type="html">Synology hébergé chez iKoula</title><link href="https://stevefuchs.fr/posts/synology-heberge-chez-ikoula/" rel="alternate" type="text/html" title="Synology hébergé chez iKoula" /><published>2017-09-25T20:32:53+00:00</published><updated>2017-09-25T20:32:53+00:00</updated><id>https://stevefuchs.fr/posts/synology-heberge-chez-ikoula</id><content type="html" xml:base="https://stevefuchs.fr/posts/synology-heberge-chez-ikoula/"><![CDATA[<h1 id="pour-quoi-">Pour quoi ?</h1>

<p>Un NAS Synology est vraiment pratique. Je cherche cependant une solution pour faire des sauvegardes sur un autre site pour sécuriser mes données, et l’une des solutions est d’avoir un autre NAS Synology sur un site distant (chez un tiers de confiance par exemple).</p>

<p>J’ai vu dans le Linux Magazine de mois un publicité d’iKoula pour une location de NAS Synology hébergé chez eux. J’ai eu envie de tester cette offre.</p>

<h1 id="offres">Offres</h1>

<p>L’offre est variée, mais je trouve ça un peu cher.</p>

<p><img src="/assets/uploads/2017/09/2017-09-05_215408.png" alt="-" /></p>

<p>J’ai pris un DS115J sur un mois, avec 2 To (offre la moins chère), pour mes tests.</p>

<p>A la date d’écriture de cet article, sur LDLC, le DS115J est à 100 €. Un disque WD Red 2 To SATA 6Gb/s est à 105 €. Avec la promotion, on arrive à l’équivalent du prix d’achat au bout de 2 ans et 3 mois environs.</p>

<p>Pour un DS216J, qui est à 180 €, et le même disque, on arrive à l’équivalent du prix d’achat au bout de 1 an et 7 mois.</p>

<p>Pour comparaison, mon Synology a été acheté fin 2012 (DS213), j’y ai mis deux disques de 2 To (dont un de récupération) et il fonctionne toujours sans soucis après presque 5 ans.</p>

<h1 id="commande-et-livraison">Commande et livraison</h1>

<p>Pas de surprise, la commande est facile a faire, et les options sont claires.</p>

<p><img src="/assets/uploads/2017/09/2017-09-05_142248.png" alt="-" /></p>

<p>La livraison est faite dans l’heure:</p>

<p><img src="/assets/uploads/2017/09/2017-09-05_210509.png" alt="-" /></p>

<p><img src="/assets/uploads/2017/09/2017-09-05_210528.png" alt="-" /></p>

<p><img src="/assets/uploads/2017/09/2017-09-05_210617.png" alt="-" /></p>

<p>L’interface de connexion est similaire à celle de mon Synology maison mais avec un arrière plan personnalisé iKoula:</p>

<p><img src="/assets/uploads/2017/09/2017-09-05_210603.png" alt="-" /></p>

<p><img src="/assets/uploads/2017/09/2017-09-05_211733.png" alt="-" /></p>

<p><img src="/assets/uploads/2017/09/2017-09-05_211931.png" alt="-" /></p>

<h1 id="utilisation-comme-solution-de-sauvegarde">Utilisation comme solution de sauvegarde</h1>

<p>Pour mon test, j’ai fait une sauvegarde de mon NAS Synology local vers mon NAS Synology iKoula</p>

<h2 id="préparation-du-synology-distant">Préparation du Synology distant</h2>

<p>Sur le Synology iKoula, j’ai créé un dossier partagé « Backup » et installeé Hyper Backup Vault.</p>

<p><img src="/assets/uploads/2017/09/2017-09-05_212231.png" alt="-" /></p>

<h2 id="configuration-de-mon-synology-local">Configuration de mon Synology local</h2>

<p>J’ai ouvert Hyper Backup pour créer une sauvegarde sur « Synology NAS distant »:</p>

<p><img src="/assets/uploads/2017/09/2017-09-05_212101.png" alt="-" /></p>

<p>Utilisation de l’adresse IP du NAS iKoula et le compte admin directement:</p>

<p><img src="/assets/uploads/2017/09/2017-09-05_212822.png" alt="-" /></p>

<p>J’ai démarré la sauvegarde, et j’ai attendu…</p>

<p>Côté NAS distant:</p>

<p><img src="/assets/uploads/2017/09/2017-09-05_213321.png" alt="-" /></p>

<p>Côté NAS local:</p>

<p><img src="/assets/uploads/2017/09/2017-09-05_213334.png" alt="-" /></p>

<h2 id="performances">Performances</h2>

<p>J’ai observé une progression de 292 Mo au bout de 54 minutes.</p>

<p>Si j’extrapole: 1 Go au bout de 4 heures environs, 1 To au bout de 166 jours.</p>

<p><img src="/assets/uploads/2017/09/2017-09-05_222837.png" alt="-" /></p>

<p>Avec une bonne connexion, je pense qu’on peut bien réduire cette durée.</p>

<h1 id="conclusion">Conclusion</h1>

<p>La solution est intéressante, a le mérite d’exister, est simple à mettre en oeuvre, mais pour de la sauvegarde comme dans mon cas, il y a moins cher.</p>

<p>EDIT / 25 septembre 2017: un sympathique collaborateur de iKoula m’a appelé pour en savoir plus sur ma résiliation et me proposer d’éventuelles solutions aux problèmes rencontrés. J’ai apprécié.</p>]]></content><author><name>Steve</name></author><category term="Hardware" /><category term="synology" /><summary type="html"><![CDATA[Pour quoi ?]]></summary></entry><entry><title type="html">Cheat Sheet / Azure DevOps Server</title><link href="https://stevefuchs.fr/posts/cheat-sheet-azure-devops-server/" rel="alternate" type="text/html" title="Cheat Sheet / Azure DevOps Server" /><published>2017-09-22T00:00:00+00:00</published><updated>2017-09-22T00:00:00+00:00</updated><id>https://stevefuchs.fr/posts/cheat-sheet-azure-devops-server</id><content type="html" xml:base="https://stevefuchs.fr/posts/cheat-sheet-azure-devops-server/"><![CDATA[<h1 id="utilisation-librairie-dbatools-dans-un-pipeline-azure-devops-server">Utilisation librairie dbatools dans un pipeline Azure DevOps Server</h1>

<h2 id="description-du-problème">Description du problème</h2>

<p>L’utilisation des fonctions de la librairie dbatools (Restore-DbaDatabase par exemple) dans une tâche PowerShell dans un pipeline de build Azure DevOps Server retourne une erreur “The term ‘xxx’ is not recognized as the name of a cmdlet, function, script file, or operable program”.</p>

<p>La librairie est pourtant installé sur l’ordinateur de l’agent.</p>

<p>La commande que je veux exécuter dans une tâche PowerShell d’un build:</p>

<figure class="highlight"><pre><code class="language-powershell" data-lang="powershell"><span class="n">Restore-DbaDatabase</span><span class="w"> </span><span class="nt">-SqlInstance</span><span class="w"> </span><span class="s1">'db.xxx.xxx,11000'</span><span class="w"> </span><span class="nt">-DatabaseName</span><span class="w"> </span><span class="nx">XXX</span><span class="w"> </span><span class="nt">-Path</span><span class="w"> </span><span class="s1">'\\...\XXX_Refresh.bak'</span><span class="w"> </span><span class="nt">-DestinationFilePrefix</span><span class="w"> </span><span class="nx">DEV_</span><span class="w"> </span><span class="nt">-WithReplace</span></code></pre></figure>

<p>Le log retourné (la tâche a finie en erreur)</p>

<figure class="highlight"><pre><code class="language-text" data-lang="text">2019-08-14T10:05:29.6137215Z ##[section]Starting: restore database AFS DEV from prod
2019-08-14T10:05:29.6140173Z ==============================================================================
2019-08-14T10:05:29.6140221Z Task         : PowerShell
2019-08-14T10:05:29.6140250Z Description  : Run a PowerShell script on Windows, macOS, or Linux.
2019-08-14T10:05:29.6140279Z Version      : 2.140.2
2019-08-14T10:05:29.6140308Z Author       : Microsoft Corporation
2019-08-14T10:05:29.6140381Z Help         : [More Information](https://go.microsoft.com/fwlink/?LinkID=613736)
2019-08-14T10:05:29.6140407Z ==============================================================================
2019-08-14T10:05:30.2243645Z Generating script.
2019-08-14T10:05:30.2638292Z ##[command]"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command ". 'D:\DevOpsAgent-DEV\_work\_temp\839121d7-6979-4263-b668-e5ce29c52078.ps1'"
2019-08-14T10:05:31.6888554Z Restore-DbaDatabase : The term 'Restore-DbaDatabase' is not recognized as the name of a cmdlet, function, script file, 
2019-08-14T10:05:31.6888836Z or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and 
2019-08-14T10:05:31.6888881Z try again.
2019-08-14T10:05:31.6889028Z At D:\DevOpsAgent-DEV\_work\_temp\839121d7-6979-4263-b668-e5ce29c52078.ps1:4 char:1
2019-08-14T10:05:31.6889586Z + Restore-DbaDatabase -SqlInstance "db.xxx.xxx,11000" - ...
2019-08-14T10:05:31.6889869Z + ~~~~~~~~~~~~~~~~~~~
2019-08-14T10:05:31.6890270Z     + CategoryInfo          : ObjectNotFound: (Restore-DbaDatabase:String) [], ParentContainsErrorRecordException
2019-08-14T10:05:31.6890481Z     + FullyQualifiedErrorId : CommandNotFoundException
2019-08-14T10:05:31.6890793Z  
2019-08-14T10:05:31.7398929Z ##[error]PowerShell exited with code '1'.
2019-08-14T10:05:31.7659253Z ##[section]Finishing: restore database XXX from prod</code></pre></figure>

<h2 id="résolution">Résolution</h2>

<p>Il semble que l’exécution d’un tâche PowerShell au niveau d’un agent n’a pas accès à l’ensemble des librairies de l’hôte, car il devrait s’exécuter avec des privilèges avancés.</p>

<p>J’ai modifié la commande du build comme suit pour exécuter la commande sans problème:</p>

<figure class="highlight"><pre><code class="language-powershell" data-lang="powershell"><span class="kr">if</span><span class="w"> </span><span class="p">(</span><span class="n">Get-Module</span><span class="w"> </span><span class="nt">-ListAvailable</span><span class="w"> </span><span class="nt">-Name</span><span class="w"> </span><span class="nx">dbatools</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="n">Write-Host</span><span class="w"> </span><span class="s2">"Module dbatools exists"</span><span class="w">
</span><span class="p">}</span><span class="w"> 
</span><span class="kr">else</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="n">Write-Host</span><span class="w"> </span><span class="s2">"Module dbatools does not exist"</span><span class="w">
    </span><span class="n">Install-PackageProvider</span><span class="w"> </span><span class="nt">-Name</span><span class="w"> </span><span class="nx">NuGet</span><span class="w"> </span><span class="nt">-Force</span><span class="w"> </span><span class="nt">-Scope</span><span class="w"> </span><span class="nx">CurrentUser</span><span class="w">
    </span><span class="n">Install-Module</span><span class="w"> </span><span class="nt">-Name</span><span class="w"> </span><span class="nx">dbatools</span><span class="w"> </span><span class="nt">-Force</span><span class="w"> </span><span class="nt">-Verbose</span><span class="w"> </span><span class="nt">-Scope</span><span class="w"> </span><span class="nx">CurrentUser</span><span class="w">
</span><span class="p">}</span><span class="w">

</span><span class="n">Restore-DbaDatabase</span><span class="w"> </span><span class="nt">-SqlInstance</span><span class="w"> </span><span class="s1">'db.xxx.xxx,11000'</span><span class="w"> </span><span class="nt">-DatabaseName</span><span class="w"> </span><span class="nx">XXX</span><span class="w"> </span><span class="nt">-Path</span><span class="w"> </span><span class="s1">'\\...\XXX_Refresh.bak'</span><span class="w"> </span><span class="nt">-DestinationFilePrefix</span><span class="w"> </span><span class="nx">DEV_</span><span class="w"> </span><span class="nt">-WithReplace</span></code></pre></figure>

<h1 id="vue-sql-workitemslatestused-inexistante-avec-tfs-2017">Vue SQL WorkItemsLatestUsed inexistante avec TFS 2017</h1>

<p>Avec TFS 2013.5, j’utilisais la vue SQL WorkItemsLatestUsed pour calculer certains indicateurs.</p>

<p>J’ai migré en TFS 2017, et cette vue n’existe plus. J’ai cependant trouvé mon bonheur en utilisant d’autres vues:</p>

<ul>
  <li>vw_denorm_WorkItemCoreLatest: contient les données actuelles des work items, mais des champs sont manquants de l’ancienne vue sont manquants</li>
  <li>vw_denorm_WorkItemCustomLatest: contient les données actuelles des autres champs (que j’appellerais non standards) des work items, sur le modèle 1 ligne correspond à 1 champ</li>
  <li>tbl_field: cette table permet de savoir l’id d’un champ non standard</li>
</ul>

<p>Pour retrouver un équivalent de l’ancienne vue WorkItemsLatestUsed et avoir une table contenant l’ensemble de mes work items, j’utilise donc dorénavant la requête suivante:</p>

<figure class="highlight"><pre><code class="language-sql" data-lang="sql"><span class="k">SELECT</span> <span class="n">Core</span><span class="p">.[</span><span class="k">System</span><span class="p">.</span><span class="n">Id</span><span class="p">]</span> <span class="k">as</span> <span class="n">SystemId</span>
<span class="p">,</span><span class="n">Core</span><span class="p">.[</span><span class="k">System</span><span class="p">.</span><span class="n">TeamProject</span><span class="p">]</span> <span class="k">as</span> <span class="n">SystemTeamProject</span>
<span class="p">,</span><span class="n">Core</span><span class="p">.[</span><span class="k">System</span><span class="p">.</span><span class="n">ChangedDate</span><span class="p">]</span> <span class="k">as</span> <span class="n">SystemChangedDate</span>
<span class="p">,</span><span class="n">Core</span><span class="p">.[</span><span class="k">System</span><span class="p">.</span><span class="n">CreatedDate</span><span class="p">]</span> <span class="k">as</span> <span class="n">SystemCreatedDate</span>
<span class="p">,</span><span class="n">ClosedDate</span><span class="p">.</span><span class="n">DateTimeValue</span> <span class="k">as</span> <span class="n">MicrosoftVSTSCommonClosedDate</span>
<span class="p">,</span><span class="n">OriginalEstimate</span><span class="p">.</span><span class="n">FloatValue</span> <span class="k">as</span> <span class="n">MicrosoftVSTSSchedulingOriginalEstimate</span>
<span class="p">,</span><span class="n">RemainingWork</span><span class="p">.</span><span class="n">FloatValue</span> <span class="k">as</span> <span class="n">MicrosoftVSTSSchedulingRemainingWork</span>
<span class="p">,</span><span class="n">CompletedWork</span><span class="p">.</span><span class="n">FloatValue</span> <span class="k">as</span> <span class="n">MicrosoftVSTSSchedulingCompletedWork</span>
<span class="p">,</span><span class="n">rtrim</span><span class="p">(</span><span class="k">left</span><span class="p">(</span><span class="n">Core</span><span class="p">.[</span><span class="k">System</span><span class="p">.</span><span class="n">AssignedTo</span><span class="p">],</span> <span class="n">charindex</span><span class="p">(</span><span class="s1">'&amp;lt;'</span><span class="p">,</span><span class="n">Core</span><span class="p">.[</span><span class="k">System</span><span class="p">.</span><span class="n">AssignedTo</span><span class="p">])</span><span class="o">-</span><span class="mi">1</span><span class="p">))</span> <span class="k">as</span> <span class="n">SystemAssignedTo</span>
<span class="p">,</span><span class="n">Core</span><span class="p">.[</span><span class="k">System</span><span class="p">.</span><span class="n">WorkItemType</span><span class="p">]</span> <span class="k">as</span> <span class="n">SystemWorkItemType</span>
<span class="p">,</span><span class="n">Title</span><span class="p">.</span><span class="n">TextValue</span> <span class="k">as</span> <span class="n">SystemTitle</span>
<span class="p">,</span><span class="n">Core</span><span class="p">.[</span><span class="k">System</span><span class="p">.</span><span class="k">State</span><span class="p">]</span> <span class="k">as</span> <span class="n">SystemState</span>
<span class="k">FROM</span> <span class="p">[</span><span class="n">dbo</span><span class="p">].[</span><span class="n">vw_denorm_WorkItemCoreLatest</span><span class="p">]</span> <span class="n">Core</span>
<span class="k">left</span> <span class="k">join</span> <span class="p">[</span><span class="n">dbo</span><span class="p">].[</span><span class="n">vw_denorm_WorkItemCustomLatest</span><span class="p">]</span> <span class="n">OriginalEstimate</span> <span class="k">on</span> <span class="n">Core</span><span class="p">.[</span><span class="k">System</span><span class="p">.</span><span class="n">Id</span><span class="p">]</span> <span class="o">=</span> <span class="n">OriginalEstimate</span><span class="p">.</span><span class="n">Id</span> <span class="k">and</span> <span class="n">OriginalEstimate</span><span class="p">.</span><span class="n">FieldId</span> <span class="o">=</span> <span class="mi">10021</span>
<span class="k">left</span> <span class="k">join</span> <span class="p">[</span><span class="n">dbo</span><span class="p">].[</span><span class="n">vw_denorm_WorkItemCustomLatest</span><span class="p">]</span> <span class="n">RemainingWork</span> <span class="k">on</span> <span class="n">Core</span><span class="p">.[</span><span class="k">System</span><span class="p">.</span><span class="n">Id</span><span class="p">]</span> <span class="o">=</span> <span class="n">RemainingWork</span><span class="p">.</span><span class="n">Id</span> <span class="k">and</span> <span class="n">RemainingWork</span><span class="p">.</span><span class="n">FieldId</span> <span class="o">=</span> <span class="mi">10020</span>
<span class="k">left</span> <span class="k">join</span> <span class="p">[</span><span class="n">dbo</span><span class="p">].[</span><span class="n">vw_denorm_WorkItemCustomLatest</span><span class="p">]</span> <span class="n">CompletedWork</span> <span class="k">on</span> <span class="n">Core</span><span class="p">.[</span><span class="k">System</span><span class="p">.</span><span class="n">Id</span><span class="p">]</span> <span class="o">=</span> <span class="n">CompletedWork</span><span class="p">.</span><span class="n">Id</span> <span class="k">and</span> <span class="n">CompletedWork</span><span class="p">.</span><span class="n">FieldId</span> <span class="o">=</span> <span class="mi">10022</span>
<span class="k">left</span> <span class="k">join</span> <span class="p">[</span><span class="n">dbo</span><span class="p">].[</span><span class="n">vw_denorm_WorkItemCustomLatest</span><span class="p">]</span> <span class="n">ClosedDate</span> <span class="k">on</span> <span class="n">Core</span><span class="p">.[</span><span class="k">System</span><span class="p">.</span><span class="n">Id</span><span class="p">]</span> <span class="o">=</span> <span class="n">ClosedDate</span><span class="p">.</span><span class="n">Id</span> <span class="k">and</span> <span class="n">ClosedDate</span><span class="p">.</span><span class="n">FieldId</span> <span class="o">=</span> <span class="mi">10009</span>
<span class="k">left</span> <span class="k">join</span> <span class="p">[</span><span class="n">dbo</span><span class="p">].[</span><span class="n">vw_denorm_WorkItemCustomLatest</span><span class="p">]</span> <span class="n">Title</span> <span class="k">on</span> <span class="n">Core</span><span class="p">.[</span><span class="k">System</span><span class="p">.</span><span class="n">Id</span><span class="p">]</span> <span class="o">=</span> <span class="n">Title</span><span class="p">.</span><span class="n">Id</span> <span class="k">and</span> <span class="n">Title</span><span class="p">.</span><span class="n">FieldId</span> <span class="o">=</span> <span class="mi">1</span>
<span class="k">where</span> <span class="n">Core</span><span class="p">.[</span><span class="n">IsDeleted</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span></code></pre></figure>]]></content><author><name>Steve</name></author><category term="Développement" /><category term="SQL" /><category term="TFS" /><category term="Azure DevOps" /><summary type="html"><![CDATA[Utilisation librairie dbatools dans un pipeline Azure DevOps Server]]></summary></entry><entry><title type="html">Changement ventilateur Synology DS216+II</title><link href="https://stevefuchs.fr/posts/changement-ventilateur-synology-ds216ii/" rel="alternate" type="text/html" title="Changement ventilateur Synology DS216+II" /><published>2017-08-14T19:03:59+00:00</published><updated>2017-08-14T19:03:59+00:00</updated><id>https://stevefuchs.fr/posts/changement-ventilateur-synology-ds216ii</id><content type="html" xml:base="https://stevefuchs.fr/posts/changement-ventilateur-synology-ds216ii/"><![CDATA[<p>J’ai fait l’acquisition d’un Synology DS216+II pour remplacer mon Synology DS213, mais j’ai été déçu en découvrant que le ventilateur ne s’éteignait pas en mode hibernation. Après quelques recherches, il s’avère que ce mode de fonctionnement est normal avec les modèles Synology équipés de processeurs Celeron.</p>

<p>J’ai mis le ventilateur dans le mode calme, ce dernier est peu audible hormis des tout petits claquements qui se font entendre depuis le ventilateur et qui s’avèrent agaçant.</p>

<p>J’ai cherché et trouvé plusieurs articles (en particulier celui de <a href="https://lokan.jp/2016/03/17/silence-remplace-ventilateur-nas-synology/">Lokan.jp</a>) expliquant qu’il est possible de changer le ventilateur.</p>

<p>J’ai donc commandé un Noctua NF-A9 PWM 92 mm sur <a href="https://www.amazon.fr/NF-A9-PWM-ventilateur-refroidisseur-radiateur/dp/B00RUZ059O/">Amazon</a> qui semblait le avoir les bonnes dimensions et qui était le plus plébiscité.</p>

<p>Déballage du paquet du ventilateur Noctua:</p>

<p><img src="/assets/uploads/2017/08/DSC09892.jpg" alt="-" /></p>

<p>Pour accéder au ventilateur du DS216+II, il faut le démonter.</p>

<p>Il y a 4 vis pour le ventilateur à l’arrière à enlever (facile).</p>

<p>Après j’ai un peu cherché pour sortir le ventilateur. Il s’avère qu’il faut ouvrir le boitier du NAS. Pour ce faire, sortir les disques durs, et vous remarquerez 2 points d’accroches en plastique. Il faut un peu faire levier sur la barre métallique pour que les deux parties du Synology se déboîtent. Faites attention, ça peut vite rentrer un peu dans la chair 🙂</p>

<p><img src="/assets/uploads/2017/08/DSC09896.jpg" alt="-" /></p>

<p><img src="/assets/uploads/2017/08/DSC09897.jpg" alt="-" /></p>

<p>Vu sur le ventilateur et sa connectique:</p>

<p><img src="/assets/uploads/2017/08/DSC09898.jpg" alt="-" /></p>

<p><img src="/assets/uploads/2017/08/DSC09899.jpg" alt="-" /></p>

<p><img src="/assets/uploads/2017/08/DSC09900.jpg" alt="-" /></p>

<p>Le ventilateur d’origine du DS216+II:</p>

<p><img src="/assets/uploads/2017/08/DSC09901.jpg" alt="-" /></p>

<p>Comparaison entre les deux ventilateurs (origine à gauche, Noctua à droite): les épaisseurs sont identiques (hormis les petits amortisseurs des bords du Noctua que l’on peut enlever)</p>

<p><img src="/assets/uploads/2017/08/DSC09902.jpg" alt="-" /></p>

<p><img src="/assets/uploads/2017/08/DSC09903.jpg" alt="-" /></p>

<p>Mise en place:</p>

<p><img src="/assets/uploads/2017/08/DSC09904.jpg" alt="-" /></p>

<p><img src="/assets/uploads/2017/08/DSC09905.jpg" alt="-" /></p>

<p>J’ai essayé d’utiliser les fixations caoutchoucs fournies (prévues pour des grilles) au lieu des vis mais sans succès, ce n’est pas adapté. A moins de démonter tout le NAS, il n’est pas possible de fixer l’un des coins.</p>

<p><img src="/assets/uploads/2017/08/DSC09907.jpg" alt="-" /></p>

<p>J’ai donc remis les vis du ventilateur d’origine en laissant les petits amortisseurs caoutchoucs (fragiles), mais je doute que cela soit utile :</p>

<p><img src="/assets/uploads/2017/08/DSC09908.jpg" alt="-" /></p>

<p>Pour la connectique, il faut brancher le câble du ventilateur avec connecteur 4 fils sur le connecteur 3 points du NAS. J’ai fait un premier test et ça fonctionne sans problème.</p>

<p><img src="/assets/uploads/2017/08/DSC09911.jpg" alt="-" /></p>

<p><img src="/assets/uploads/2017/08/DSC09913.jpg" alt="-" /></p>

<p><img src="/assets/uploads/2017/08/DSC09915.jpg" alt="-" /></p>

<p>J’ai ensuite testé avec le petit câble Low-Noise Adapter (L.N.A.) founie avec le Noctua qu’il suffit de brancher en premier (brancher le ventilateur sur ce câble). Et c’est encore plus silencieux.</p>

<p><img src="/assets/uploads/2017/08/DSC09917.jpg" alt="-" /></p>

<p>Quelques photos du montage final:</p>

<p><img src="/assets/uploads/2017/08/DSC09918.jpg" alt="-" /></p>

<p><img src="/assets/uploads/2017/08/DSC09919.jpg" alt="-" /></p>

<p>En conclusion, le remplacement du ventilateur d’origine du DS216+II par un ventilateur Noctua ne réduit pas au silence son NAS, mais il m’a permis de supprimer ce petit claquement désagréable que j’entendais. Au démarrage, le NAS fait tout de même des petits claquements qui disparaissent une fois l’initialisation terminée. Le changement me convient tout à fait.</p>]]></content><author><name>Steve</name></author><category term="Hardware" /><category term="NAS" /><category term="silence" /><category term="stockage" /><category term="synology" /><summary type="html"><![CDATA[J’ai fait l’acquisition d’un Synology DS216+II pour remplacer mon Synology DS213, mais j’ai été déçu en découvrant que le ventilateur ne s’éteignait pas en mode hibernation. Après quelques recherches, il s’avère que ce mode de fonctionnement est normal avec les modèles Synology équipés de processeurs Celeron.]]></summary></entry><entry><title type="html">Changement manchon aspirateur balai Rowenta</title><link href="https://stevefuchs.fr/posts/changement-manchon-de-laspirateur-rowenta-air-force/" rel="alternate" type="text/html" title="Changement manchon aspirateur balai Rowenta" /><published>2017-02-25T13:21:02+00:00</published><updated>2017-02-25T13:21:02+00:00</updated><id>https://stevefuchs.fr/posts/changement-manchon-de-laspirateur-rowenta-air-force</id><content type="html" xml:base="https://stevefuchs.fr/posts/changement-manchon-de-laspirateur-rowenta-air-force/"><![CDATA[<p>Le manchon de mon aspirateur balai sans sac Rowenta Air Force 24V (RH8565.01) s’est fendu après environ 3 ans.</p>

<p><img src="/assets/uploads/2017/03/61xJsETG6yL._SL1500_.jpg" alt="-" /></p>

<p>J’ai trouvé la pièce sur différents site dont Amazon, en cherchant « Raccord flexible Rowenta » avec le modèle de l’aspirateur.</p>

<p>Le manchon a coûté un peu moins de 5 euros, il était différent de l’original. Ce dernier était de forme circulaire, et le nouveau reçu de forme plus carré. Sûrement une évolution.</p>

<p>Le changement du manchon sur l’aspirateur a été relativement facile, malgré sa forme plus carré. J’ai trouvé une très bonne vidéo décrivant l’opération sur <a href="https://www.youtube.com/watch?v=misPNKmOcV8">YouTube</a>, créé par la société <a href="http://www.miss-pieces.com/">Mena Isère Service (MISS-pieces.com)</a>.</p>

<p><img src="/assets/uploads/2017/02/DSC08171.jpg" alt="-" /></p>

<p><img src="/assets/uploads/2017/02/DSC08173.jpg" alt="-" /></p>

<p><img src="/assets/uploads/2017/02/DSC08174.jpg" alt="-" /></p>

<p><img src="/assets/uploads/2017/02/DSC08175.jpg" alt="-" /></p>

<p><img src="/assets/uploads/2017/02/DSC08177.jpg" alt="-" /></p>

<p><img src="/assets/uploads/2017/02/DSC08178.jpg" alt="-" /></p>]]></content><author><name>Steve</name></author><category term="365" /><category term="365" /><summary type="html"><![CDATA[Le manchon de mon aspirateur balai sans sac Rowenta Air Force 24V (RH8565.01) s’est fendu après environ 3 ans.]]></summary></entry><entry><title type="html">Une tablette et Internet au Portugal</title><link href="https://stevefuchs.fr/posts/tablette-internet-portugal/" rel="alternate" type="text/html" title="Une tablette et Internet au Portugal" /><published>2016-09-07T20:38:12+00:00</published><updated>2016-09-07T20:38:12+00:00</updated><id>https://stevefuchs.fr/posts/tablette-internet-portugal</id><content type="html" xml:base="https://stevefuchs.fr/posts/tablette-internet-portugal/"><![CDATA[<p>Un proche m’a parlé d’un besoin « Je vais au Portugal en vacances et j’aimerais que tu m’achètes une tablette, dans les 300 ou 400 €, pour que je puisse accéder à Internet quand je suis là-bas d’un peu n’importe où ».</p>

<p>Une bonne occasion d’essayer plusieurs choses… Je n’ai pas de tablette et ça me permettra d’en tester une, et également trouver une solution pour l’accès à Internet.</p>

<p>Concernant l’accès à Internet, après quelques recherches, j’ai vu 2 possibles solutions: par wifi (via des hotspots publics ou éventuellement un modem 4G/3G) ou par réseau téléphonique type 4G/3G. Le wifi ne m’a pas semblé approprié vu l’utilisation prévue. J’ai donc choisi l’option du réseau téléphonique. Il me faut donc une tablette acceptant une carte SIM.</p>

<p>Dans le monde des tablettes, il y a vraiment de tout. Trop de choix tue le choix, et les références sont nombreuses et pas forcément clairement indiqué, et les spécifications difficiles à trouver. J’ai par exemple vu des tablettes assez chères, marquées sans GPS sur certains sites et pas sur d’autres alors que je pense que les modèles en question l’avaient.</p>

<p>J’ai choisi une tablette Samsung (pure préférence personnel) Galaxy Tab A 2016 (SM-T585) à 369 € chez Darty via Internet. J’aurais pu trouver sûrement moins chers mais impossible de comparer un modèle bien précis de tablette, car les références d’un modèle ne sont jamais claires.</p>

<p>Pour le forfait, j’ai cherché plusieurs options: forfait local (opérateur portugais) ou forfait français. J’ai trouvé ce qui pourrait correspondre avec le forfait Free qui permet 35 jours de connexions à l’étranger dans certains pays, avec une limite de 3Go, largement suffisant. J’ai donc commandé le forfait Free à 20 € par mois, et reçu la carte SIM quelques jours plus tard. Manque de bol j’ai choisi le mauvais format (il me fallait un Nano SIM) et j’ai dû payer 10 € supplémentaire…</p>

<p>Une fois la carte SIM activée et en place dans la tablette, tout a directement fonctionné (connexion au réseau 4G opérationnel).</p>

<p>J’ai activé l’itinérance des données mobiles, et je suis allé en Allemagne tester le tout. J’ai commuté sur le réseau Vodafone.de en passant la frontière, tout en conservant le réseau des données mobiles.</p>

<p>Le soir, j’ai pu vérifier sur l’espace abonné de Free que la consommation web a bien été décomptée en Allemagne, et n’a pas été hors forfait. Parfait.</p>

<p>J’ai donné la tablette transmise à la personne qui est donc partie au Portugal. Ça s’est très bien passé: la tablette a commuté sur les réseaux locaux sans souci. Le tout en restant inclus dans le forfait.</p>

<p>Le suivi Free Mobile permet d’avoir un bon détail, et il m’a également permet de confirmer que le décompte des 35 jours de connexion par an était par pays:</p>

<p><img src="/assets/uploads/2016/09/Utilisation-du-forfait-free-mobile-au-Portugal-.png" alt="utilisation-du-forfait-free-mobile-au-portugal" /></p>]]></content><author><name>Steve</name></author><category term="Hardware" /><summary type="html"><![CDATA[Un proche m’a parlé d’un besoin « Je vais au Portugal en vacances et j’aimerais que tu m’achètes une tablette, dans les 300 ou 400 €, pour que je puisse accéder à Internet quand je suis là-bas d’un peu n’importe où ».]]></summary></entry></feed>