Domotique

Monitoring et ping de services web sur Home Assistant

Publié le 21 mars 2021 Temps de lecture : 4 min.

On se retrouve pour un nouveau tutoriel très simple sur Home Assistant. L’objectif est de pouvoir réaliser un monitoring simple d’un service web comme Sonarr, Radarr ou encore un simple site web. Nous allons créer pour cela un sensor avec une petite requête et voir pour l’utiliser ensuite dans une automation.

Il y a quelques mois, j’ai créé un serveur multimédia à la maison avec toutes les applications qui vont bien : Sonarr, Radarr, Jackett, FlareSolver et compagnie. Problème, il arrive de temps en temps qu’une application cesse de fonctionner et, bien sûr, je ne m’en rends pas compte. Grâce à la commande suivante, on pourrait récupérer l’état si le service est « en ligne » ou « hors-ligne ».

Ajouter d’un sensor pour le ping

Il vous suffit d’ajouter les lignes suivantes dans votre fichier configuration.yaml. Vous aurez juste à changer l’adresse IP ainsi que le port utilisé dans la commande curl. Toutes les 1min30, le statut sera actualisé et nous renverra l’info dans le sensor.

command_line:
  - binary_sensor:
      name: 'Sonarr'
      command: 'response=$(curl -LIk -m 3 http://192.168.1.155:8989 -o /dev/null -w "%{http_code}\n" -s); test "$response" -ge 200 && echo "En ligne" || echo "Hors ligne"'
      scan_interval: 90
      value_template: '{{ value }}' 

Si vous souhaitez comme moi le personnaliser avec l’icône qui va bien, vous devrez ajouter des informations dans le fichier customize.yaml et ajouter le logo.

sensor.sonarr:
  entity_picture: /local/sonarr.png

Le dossier « local » correspond au dossier « www » dans votre installation. C’est un dossier qui est présent dans le dossier racine config.

Vérifiez la configuration de votre installation puis redémarrez Home Assistant. Vous devez maintenant voir le nouveau capteur disponible. Attendez quelques secondes, il devrait ensuite se mettre à jour.

Utilisation du sensor dans une automation

Maintenant que l’on a l’info si notre service fonctionne ou pas, nous allons pouvoir l’utiliser dans une automation. Plusieurs choix s’offrent à vous, quelques exemples :

  • Envoyer une notification sur Telegram, Slack ou Pushbullet que le service est tombé
  • Exécuter un script afin de le relancer
  • Redémarrer une machine virtuelle via ESXI
- id: sonarr_down
  alias: Sonarr - Hors ligne
  trigger:
  - platform: state
    entity_id: sensor.sonarr
    from: En ligne
    to: Hors ligne
  action:
  - service: notify.telegram
    data:
      message: Sonarr est hors ligne

J’ai mis pour ma part une simple alerte Telegram. Je vais continuer sur ma lancée afin de relancer automatiquement le service sans intervention de ma part.

J’espère que cet article vous sera utile. Si vous avez des idées ou suggestions, n’hésitez pas à me laisser un petit commentaire !

avatar-ag

Article rédigé par Antoine Guilbert

Blogueur passionné par les nouvelles technologies et la domotique.
J'adore tester des produits, voyager à travers le monde et faire des photos.

En savoir plus