Monitorer BorgBackup dans Home Assistant
Posté le 16. Novembre 2024 • 5 minutes • 861 mots • Autres langues: English
Il y a presque un an, j’ai eu un souci de surconsommation électrique chez moi et j’ai décidé, comme n’importe quel geek l’aurait fait, d’acheter une prise connectée pour trouver d’où cela provenait. De fil en aiguille, j’ai trouvé la source de mon problème (qui était mon frigo, mais tout le monde s’en fiche) et je me suis surtout mis à développer une interface web de monitoring pour cette prise… Et les deux autres achetées par la suite. Cela m’a permis de mettre les mains dans MQTT , Mosquitto , InfluxDB . C’était passionnant, mais j’ai finalement abandonné ce side-project. BorgWarehouse me prend déjà beaucoup de temps et j’ai fait le choix de m’y concentrer.
Du coup, je me suis tourné vers le logiciel libre Home Assistant et j’ai ressorti du placard ce bon vieux Raspberry Pi 3 Model B+ qui y dormait. Je ne connaissais absolument rien à la domotique mais mois après mois, j’y ai pris goût. La prise en main de Home Assistant n’est pas si simple, mais les possibilités offertes sont monstrueuses si on s’y intéresse un peu, l’éco-système est gigantesque et la communauté est immense. Autre avantage : vous contrôlez tout de chez vous, sur vos appareils et vous gardez vos données.
Une fois mes prises de courants, mes lampes et mes thermomètres connectés, j’ai commencé à créer mes premiers dashboard. Ce n’est que le début d’une grande aventure avec un premier dashboard très utile !
Revenons-en à nos moutons, le 01 septembre dernier , je sortais une importante release sur BorgWarehouse, la version 2.4.0 dont la principale feature était le contrôle par API REST. Vous pouvez désormais générer des tokens dans votre interface web vous permettant d’executer des actions diverses.
C’est quelques semaines après cette release que j’ai eu cette idée : Récupérer l’état de l’un de mes repository de sauvegarde BorgBackup pour l’afficher sur mon dashboard Home Assistant !
Créez votre token dans BorgWarehouse
Je ne vais pas réécrire la documentation, vous pouvez la consulter ici , si besoin.
Création du sensor
La première étape est de dialoguer avec BorgWarehouse via son API RESTful, pour cela, on va utiliser l’intégration suivante à Home Assistant : RESTful Sensor .
Notez bien que, vous n’avez pas d’action particulière à faire car c’est un sensor natif de Home Assistant. À partir du moment où vous ajoutez une configuration contenant un sensor avec platform: rest
, l’intégration apparaîtra dans votre liste.
Éditez le fichier /homeassistant/configuration.yaml
sur votre Home Assistant, à l’aide du File Editor
ou via votre terminal préféré. Et, adaptez la configuration que je vous fournis à vos besoins 👇
#### BORGWAREHOUSE INTEGRATION
sensor:
- platform: rest
name: BorgWarehouse - NAS
unique_id: 'borgwarehouse_nas'
resource: https://borgwarehouse.your.domain/api/repo/id/1 # Your URL
method: GET
headers:
Authorization: 'Bearer XXXX' # Your token
json_attributes:
- repo
value_template: "{{ value_json['repo']['status'] }}"
scan_interval: 600 # Refresh data time in second
- platform: template
sensors:
repo_name:
friendly_name: 'Repository name'
unique_id: 'borgwarehouse_nas_name'
icon_template: 'mdi:server'
value_template: "{{ state_attr('sensor.borgwarehouse_nas', 'repo')['alias'] }}"
repo_last_save:
friendly_name: 'Last save'
unique_id: 'borgwarehouse_nas_last_save'
icon_template: 'mdi:calendar-clock'
value_template: "{{ (state_attr('sensor.borgwarehouse_nas', 'repo')['lastSave'] | int | timestamp_custom('%Y-%m-%d %H:%M:%S')) }}"
repo_status:
friendly_name: 'Status'
unique_id: 'borgwarehouse_nas_status'
value_template: >
{% if state_attr('sensor.borgwarehouse_nas', 'repo')['status'] %}
OK
{% else %}
KO
{% endif %}
icon_template: >
{% if state_attr('sensor.borgwarehouse_nas', 'repo')['status'] %}
mdi:check-circle
{% else %}
mdi:close-circle
{% endif %}
repo_storage_percentage:
friendly_name: 'Storage Usage'
unique_id: 'borgwarehouse_nas_storage'
icon_template: 'mdi:cloud-percent-outline'
value_template: >
{% set storage_size_bytes = state_attr('sensor.borgwarehouse_nas', 'repo')['storageSize'] * 1024 * 1024 %}
{% set storage_used_bytes = state_attr('sensor.borgwarehouse_nas', 'repo')['storageUsed'] %}
{% if storage_size_bytes > 0 %}
{{ ((storage_used_bytes / storage_size_bytes) * 100) | round(2) }}
{% else %}
0
{% endif %}
unit_of_measurement: '%'
#### BORGWAREHOUSE INTEGRATION
C’est un exemple de configuration fonctionelle qui correspond à mon cas d’usage, adaptez-le à votre besoin, tout est possible.
Pour prendre en compte la modification, il faut utiliser le bouton “Restart Home Assistant”, il y a peut-être une meilleure solution pour prendre en compte la modification de la config, mais je n’ai pas trouvé.
Création de la carte sur le dashboard
Maintenant que le sensor est construit, il ne reste plus qu’à s’amuser. Rien de compliqué sur cette carte, hormis que je souhaitais modifier la couleur de l’icône de statut en fonction du statut du repository. Je n’ai pas pu faire cela nativement, ou alors je n’ai pas trouvé. J’ai utilisé le plugin card-mod 3 installé via le community store de HA : HACS .
title: BorgWarehouse
type: entities
entities:
- entity: sensor.repo_name
- entity: sensor.repo_last_save
- entity: sensor.repo_status
card_mod:
style: |
:host {
--paper-item-icon-color:
{% if state_attr('sensor.borgwarehouse_nas', 'repo')['status'] %}
green
{% else %}
red
{% endif %}
}
- entity: sensor.repo_storage_percentage
Je vous livre le fichier .yml
de la carte, mais vous pouvez utiliser l’interface graphique de HA pour la modifier. J’ai prédéfini sur le sensor du configuration.yml
les icônes et friendly_name des différentes entités mais il reste possible de surcharger toutes ces valeurs depuis la configuration de la carte.
Le rendu est top, et je pense intégrer un petit graph de l’évolution du stockage sous la card prochainement, ce serait très simple à faire. Les possibilités sont infinies !
Partagez-moi vos dashboard sur Mastodon , ce sera un plaisir d’admirer vos installations et d’y trouver de nouvelles idées 😊