# Comparer les prix des carburants de vos stations préférées

**URL:** <https://forum.hacf.fr/t/comparer-les-prix-des-carburants-de-vos-stations-preferees/434>\
**Category:** Intégration\
**Created:** [Août 15, 2020, 9:46 UTC](https://forum.hacf.fr/t/comparer-les-prix-des-carburants-de-vos-stations-preferees/434 "2020-08-15T21:46:51Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![Clemalex](https://forum.hacf.fr/user_avatar/forum.hacf.fr/clemalex/32/3691_2.png) [@Clemalex](https://forum.hacf.fr/u/Clemalex)\
**Post date:** [Août 15, 2020, 9:46 UTC](https://forum.hacf.fr/t/comparer-les-prix-des-carburants-de-vos-stations-preferees/434/1 "2020-08-15T21:46:51Z")

</div>

Bonjour à tous,

Ceci est mon premier article, il fait suite au [commentaire](https://forum.hacf.fr/t/et-moi-cest-clemalex/432/4) de @Christianb233.

N'hésitez pas à me faire des remarques !

Je vous propose de (re)découvrir l'intégration 'scrape' de Home Assistant.

> **[Scrape](https://www.home-assistant.io/integrations/scrape/)**
>
> Instructions on how to integrate Web scrape sensors into Home Assistant.

- **Scrape, Scraping ???**

Le scraping est le simple fait d'extraire des données d'une page web et on va l'utiliser pour récupérer le prix du carburant de plusieurs stations afin de faire quelques économies en ciblant la station la moins chère et l'afficher sur votre dashboard.

J'ai cherché pas mal de site internet qui renseignent les prix du carburant. Celui que j'ai retenu est [Carbu.com](https://carbu.com/france). Ce site est mis à jour aussi régulièrement que le [site officiel](https://www.prix-carburants.gouv.fr/) du gouvernement.

Après plusieurs jours de suivi de prix entre les deux sites, je me suis rendu compte que les deux sites avaient constamment les mêmes prix affichés.

Le site officiel du gouvernement ne permet pas d'utiliser la plateforme 'scrape' car le site ne contient pas d'adresse unique pour chaque station, ce qui est le cas de [Carbu.com](http://Carbu.com).

- **Pré-requis**

Je pars du principe que vous pouvez accéder aux fichiers de votre serveur tels que 'configuration.yaml' ou tout autre fichier, dossier si vous utilisez une [configuration fractionner](https://hacf.fr/organiser-son-fichier-de-configuration-sur-home-assistant/), sinon allez jeter un œil sur [cet article](https://hacf.fr/file-editor-et-home-assistant-modifier-vos-fichiers/) ou [cet article](https://hacf.fr/partager-votre-installation-home-assistant-via-samba-share/).

1. Récupération des adresses web de vos stations d'essences préférées

Rendez-vous sur le site [Carbu.com](http://Carbu.com), renseigner votre localité, votre carburant puis cliquez sur "Comparez !".

En dessous de la carte de France (qui est agrandi sur votre ville), est apparue la liste des stations essences de votre ville et de votre région.

Pour chaque station pour laquelle vous voulez récupérer le prix d'un carburant, cliquer sur ![image](https://forum.hacf.fr/uploads/default/original/1X/93150887cd404d275fe209c8c24466f9020dbe68.png) afin d'ouvrir la page web de la station. Ne fermez pas la page encore, vous en aurez besoin pour configurer le capteur de prix dans l'étape 2.

**2. Création manuelle des capteurs**

La création des capteurs se fait dans le fichier 'sensors.yaml' (ou tout autre fichier suivant votre méthode de configuration)

**2a. Prix du Carburant**

Renseigner comme ceci :

> ```
> - platform: scrape
> resource: https://carbu.com/france/index.php/station/auchan/bordeaux/33000/5246
> select: ".price"  
> index: 0
> name: hacf_essence_bordeaux_auchan_SP98_price
> 
> ```

Où :

- "resource" : correspond à l'adresse de la page web du détail de la station qui est la page web affichée lorsque vous avez cliquez sur ![image](https://forum.hacf.fr/uploads/default/original/1X/93150887cd404d275fe209c8c24466f9020dbe68.png) lors de l'étape précédente

- "select" : correspond à la classe html/css contenant le prix du carburant récupérable en affichant les outils de dévelopement de votre navigateur préféré ( ![image](https://forum.hacf.fr/uploads/default/original/1X/c6ee057760ea7c28eee997b469cca233a7bcaa27.png) )

- "index" : correspond au numéro de carburant de la station. Chaque station dispose de plus ou moins de carburant et donc le numéro de l''index' peut varier d'une station à l'autre. Pour le site [Carbu.com](http://Carbu.com), la logique du numéro de l'index est le suivant : 

- "index" : correspond au nom de l'entité dans Home Assistant

**2b. Nom du Carburant**

Une fois, la station près de chez moi à retiré un carburant de la vente ce qui a eu pour conséquence de décaler les prix récupéré et donc m'afficher le prix du gazole au lieu du prix du SP95 (je l'ai vite remarqué au vu de la différence de prix 😉)  
J'ai donc décidé de récupérer également le nom du carburant afin de vérifier la correspondance entre le prix récupéré et le nom du carburant.

Renseigner comme ceci :

> ```
> - platform: scrape
> resource: https://carbu.com/france/index.php/station/auchan/bordeaux/33000/5246
> select: ".title"  
> index: 0
> name: hacf_essence_bordeaux_auchan_SP98_title
> 
> ```

Où 'select' change car on récupére maintenant le contenu de la classe '.title' : ![image](https://forum.hacf.fr/uploads/default/original/1X/433d24162277863c7e0cdce74c2d08e9dbace801.png) et 'name'.

**3. Fichier complet pour 2 stations**

Ci dessous, les définitions des capteurs afin de récupérer le prix du gazole et de l'essence entre deux stations :

> ```
> - platform: scrape
> resource: https://carbu.com/france/index.php/station/auchan/bordeaux/33000/5246
> select: ".title"  
> index: 0
> name: hacf_essence_bordeaux_auchan_SP98_title
> - platform: scrape
> resource: https://carbu.com/france/index.php/station/auchan/bordeaux/33000/5246
> select: ".price"  
> index: 0
> name: hacf_essence_bordeaux_auchan_SP98_price
> - platform: scrape
> resource: https://carbu.com/france/index.php/station/auchan/bordeaux/33000/5246
> select: ".title"  
> index: 5
> name: hacf_essence_bordeaux_auchan_gazole_b10_title
> - platform: scrape
> resource: https://carbu.com/france/index.php/station/auchan/bordeaux/33000/5246
> select: ".price"  
> index: 5
> name: hacf_essence_bordeaux_auchan_gazole_b10_price
> - platform: scrape
> resource: https://carbu.com/france/index.php/station/intermarche/bordeaux/33000/8753
> select: ".title"  
> index: 1
> name: hacf_essence_bordeaux_SP95_e5_title
> - platform: scrape
> resource: https://carbu.com/france/index.php/station/intermarche/bordeaux/33000/8753
> select: ".price"  
> index: 1
> name: hacf_essence_bordeaux_SP95_e5_price
> - platform: scrape
> resource: https://carbu.com/france/index.php/station/intermarche/bordeaux/33000/8753
> select: ".title"  
> index: 4
> name: hacf_essence_bordeaux_inter_gazole_b7_title
> - platform: scrape
> resource: https://carbu.com/france/index.php/station/intermarche/bordeaux/33000/8753
> select: ".price"  
> index: 4
> name: hacf_essence_bordeaux_inter_gazole_b7_price
> 
> ```

**4. Le moins cher**

Vous pouvez faire ressortir le carburant le moins cher en créant un autre capteur (ici pour le gazole) à partir des capteurs précédemment créés :

> ```
> - platform: template
> sensors: 
> essence_gazole_best_price:
> entity_id: sensor.hacf_essence_bordeaux_auchan_gazole_b10_price, sensor.hacf_essence_bordeaux_inter_gazole_b7_price
> value_template: >
> {% set hacf_essence_bordeaux_auchan_gazole_b10_price = states.sensor.hacf_essence_bordeaux_auchan_gazole_b10_price.state %}
> {% set hacf_essence_bordeaux_inter_gazole_b7_price = states.sensor.hacf_essence_bordeaux_inter_gazole_b7_price.state %}
>             
> {% if (hacf_essence_bordeaux_auchan_gazole_b10_price <= hacf_essence_bordeaux_inter_gazole_b7_price)
> and (hacf_essence_bordeaux_auchan_gazole_b10_price <= hacf_essence_bordeaux_inter_gazole_b7_price)
> and (hacf_essence_bordeaux_auchan_gazole_b10_price <= hacf_essence_bordeaux_inter_gazole_b7_price)
> and (hacf_essence_bordeaux_auchan_gazole_b10_price <= hacf_essence_bordeaux_inter_gazole_b7_price)
> %}
> Auchan
> {% elif (hacf_essence_bordeaux_inter_gazole_b7_price <= hacf_essence_bordeaux_auchan_gazole_b10_price)
> and (hacf_essence_bordeaux_inter_gazole_b7_price <= hacf_essence_bordeaux_auchan_gazole_b10_price)
> and (hacf_essence_bordeaux_inter_gazole_b7_price <= hacf_essence_bordeaux_auchan_gazole_b10_price)
> and (hacf_essence_bordeaux_inter_gazole_b7_price <= hacf_essence_bordeaux_auchan_gazole_b10_price)
> %}
> Intermaché
> {% endif %}  
> 
> ```

**5. Affichage dans Lovelace**

Après avoir redémarrer votre serveur Home Assistant, vous pouvez maintenant afficher dans une cartes 'Entités' les prix des carburants des différentes stations:

 ![image](https://forum.hacf.fr/uploads/default/original/1X/5fd4c44cc70bd1a4921bd9ab2ac0340e94708b18.png)

Code de la carte :

> ```
> entities:
> - entity: sensor.gazole_best_price
> name: Le moins cher
> icon: 'mdi:cart'
> - entity: sensor.hacf_essence_bordeaux_auchan_gazole_b10_title
> icon: 'mdi:gas-station'
> name: Auchan B10
> - entity: sensor.hacf_essence_bordeaux_auchan_gazole_b10_price
> icon: 'mdi:gas-station'
> name: Auchan B10 (Prix)
> - entity: sensor.hacf_essence_bordeaux_auchan_sp98_title
> icon: 'mdi:gas-station-outline'
> name: Auchan SP98
> - entity: sensor.hacf_essence_bordeaux_auchan_sp98_price
> icon: 'mdi:gas-station-outline'
> name: Auchan SP98 (Prix)
> - entity: sensor.hacf_essence_bordeaux_inter_gazole_b7_title
> icon: 'mdi:gas-station'
> name: Intermaché B7
> - entity: sensor.hacf_essence_bordeaux_inter_gazole_b7_price
> icon: 'mdi:gas-station'
> name: Intermaché B7 (Prix)
> - entity: sensor.hacf_essence_bordeaux_sp95_e5_title
> icon: 'mdi:gas-station-outline'
> name: Intermaché SP95
> - entity: sensor.hacf_essence_bordeaux_sp95_e5_price
> icon: 'mdi:gas-station-outline'
> name: Intermaché SP95 (Prix)
> title: Carburant
> type: entities
> 
> ```

1. 
#### Mon utilisation

Personnellement, j'affiche le prix du carburant de la façon suivante :

 ![7](https://forum.hacf.fr/uploads/default/original/1X/f388ba3b0154560b2267fc210cccd623ea03a776.png)

La liste des stations est affichée par distance par rapport à mon domicile et mon travail et le prix le moins cher est coloré.

* * *

Merci d'avoir suivi ce tuto et je le répète, n'hésitez pas à me faire des remarques !

A plus tard sur le forum.

Edit: une [intégration de @max5962](https://forum.hacf.fr/t/recuperer-les-prix-de-carburants/644) permet également de récupérer les prix de carburants en France depuis l'open data du gouvernement.

---

_[View the full topic](https://forum.hacf.fr/t/comparer-les-prix-des-carburants-de-vos-stations-preferees/434)._
