Cours:BashScript

De troyesGEII
Aller à : navigation, rechercher

Ressources



script pour homeAssistant avec broker mqtt

HA mqtt sensor

/usr/local/bin/createHaSensor
#!/bin/bash

echo "name : $1"
echo "device class : $2"
echo "unit : $3"

topic="homeassistant/sensor/$1/config"
payload="{\"name\": \"$1\", \
          \"unique_id\": \"$1\", \
          \"state_topic\": \"homeassistant/sensor/$1/state\", \
          \"device_class\":\"$2\", \
          \"unit_of_measurement\":\"$3\" \
         }"

mosquitto_pub -t "$topic" -m "$payload" -h 192.168.0.7
/usr/local/bin/deleteHaSensor :
#!/bin/bash

echo "name : $1"
echo "device class : $2"
echo "unit : $3"

topic="homeassistant/sensor/$1/config"

mosquitto_pub -t "$topic" -m "" -h 192.168.0.7
/usr/local/bin/publishHaSensor :
#!/bin/bash

echo "name : $1"
echo "valeur : $2"

topic="homeassistant/sensor/$1/state"
payload="{\"name\": \"$1\", \
          \"unique_id\": \"$1\", \
          \"state_topic\": \"homeassistant/sensor/$1/state\", \
          \"device_class\":\"$2\", \
          \"unit_of_measurement\":\"$4\" \
         }"


mosquitto_pub -t "$topic" -m "$2" -h 192.168.0.7

Exemples :

  • createHaSensor testCreate battery %

publier l'espace utilisé d'une partition

la commande suivante permet d'obtenir l'espace utilisé (en %) de la partition montée sur le dossier /home :

df /home |grep "dev" |tr -s ' ' |cut -d ' ' -f 5|sed 's/%//'

Il s'agit en fait de l'exécution successives (pipes) des commandes :

  • df : informations sur l'espace utilisé/libre des partitions
  • grep : conserver les lignes contenant un mot particulier ( ici dev )
  • tr : utilisée ici pour supprimer les espaces multiples
  • cut : permet de scinder une ligne en indiquant le délimiteur => ici on coupe au caractère espace et on conserve le 5ème champ
  • sed : supprimer/remplacer des caractères => supprimer le caractère %

https://www.ionos.fr/digitalguide/serveur/configuration/pipes-linux/


Question.jpg Créer un service qui publie l'espace disponible sur la partition racine (ou root : / )sur homeAssitant toutes les minutes