Naposledy aktivní 1 month ago

Revize 391811992671416b522a21146ba5186058f90a0d

lametric_homeassisatnt_doc.md Raw

Documentation d'Utilisation du Script pour LaMetric et Home Assistant

Introduction

Ce script Bash permet d'afficher des informations provenant de Home Assistant sur un appareil LaMetric. Il s'intègre avec l'API de Home Assistant pour récupérer les valeurs de différents capteurs et envoyer ces informations à LaMetric sous forme de notifications.

Prérequis

  • Etre dans le même réseau local
  • Une machine linux
  • Un appareil LaMetric.
  • Une instance de Home Assistant.
  • Script bash
  • Un fichier de configuration JSON pour définir les paramètres nécessaires, à créer !.
  • jq pour manipuler les données JSON, apt install jq.

Script bash

#!/bin/bash

# Emplacement du fichier de configuration
CONFIG_PATH="/home/www/html/lametric/script/config.json"

# Vérification si le fichier de configuration existe
if [ ! -f "$CONFIG_PATH" ]; then
  echo "Erreur : le fichier de configuration '$CONFIG_PATH' est introuvable."
  exit 1
fi

# Charger la configuration depuis le fichier JSON
HOME_ASSISTANT_URL=$(jq -r '.home_assistant_url' "$CONFIG_PATH")
HOME_ASSISTANT_TOKEN=$(jq -r '.home_assistant_token' "$CONFIG_PATH")
LAMETRIC_URL=$(jq -r '.lametric_url' "$CONFIG_PATH")
LAMETRIC_USER=$(jq -r '.lametric_user' "$CONFIG_PATH")
LAMETRIC_PASSWORD=$(jq -r '.lametric_password' "$CONFIG_PATH")
SENSOR_ENTITY_IDS=($(jq -r '.sensor_entity_ids[]' "$CONFIG_PATH"))

# Fonction pour récupérer les données de Home Assistant
get_home_assistant_data() {
  response=$(curl -s -H "Authorization: Bearer $HOME_ASSISTANT_TOKEN" -H "Content-Type: application/json" "$HOME_ASSISTANT_URL")
  echo "$response"
}

# Fonction pour envoyer une notification à LaMetric
send_notification_to_lametric() {
  local title="$1"
  local message="$2"
  local icon="$3"

  read -r -d '' data <<EOF
{
  "model": {
    "frames": [
      {"text": "$title", "icon": "$icon"},
      {"text": "$message", "icon": "$icon"}
    ],
    "sound": {
      "category": "notifications",
      "id": "notification"
    }
  }
}
EOF

  curl -s -u "$LAMETRIC_USER:$LAMETRIC_PASSWORD" -H "Content-Type: application/json" -d "$data" "$LAMETRIC_URL"
}

# Intégration pour afficher les sensors de Home Assistant sur LaMetric
update_lametric_with_sensor_data() {
  home_assistant_data=$(get_home_assistant_data)
  if [ -n "$home_assistant_data" ]; then
    for entity_id in "${SENSOR_ENTITY_IDS[@]}"; do
      sensor_data=$(echo "$home_assistant_data" | jq -c ".[] | select(.entity_id == \"$entity_id\")")
      if [ -n "$sensor_data" ]; then
        title=$(echo "$sensor_data" | jq -r ".attributes.friendly_name // \"$entity_id\"")
        state=$(echo "$sensor_data" | jq -r ".state")
        unit=$(echo "$sensor_data" | jq -r ".attributes.unit_of_measurement // \"\"")
        message="$state $unit"
        icon="3579" # Icône par défaut
        send_notification_to_lametric "$title" "$message" "$icon"
      fi
    done
  fi
}


# Exécution de la mise à jour des données
update_lametric_with_sensor_data


# Détails supplémentaires
#
# Configuration des notifications sur LaMetric :
# - LaMetric permet d'afficher des informations via des "notifications" qui sont envoyées à l'appareil.
# - Les notifications sont envoyées en utilisant une requête POST à l'URL de l'appareil LaMetric (LAMETRIC_URL).
# - L'application peut être personnalisée avec différents "frames", chaque frame contenant du texte et une icône.
#
# Pour obtenir les tokens :
# - Home Assistant : Crée un token depuis ton profil utilisateur dans Home Assistant https://homeassistant/profile/security.
# - LaMetric : Récupérez la clef API sur https://developer.lametric.com/user/devices.
#
# Pour l'icône des notifications :
# - Les icônes peuvent être sélectionnées parmi une liste prédéfinie par LaMetric, identifiées par un ID d'icône (par exemple, "a4157" ou "a11100").
# - https://developer.lametric.com/icons
#
#
# Mise à jour des données toutes les 15 minutes via crontab
#   Configuration du cron pour exécuter le script toutes les 15 minutes
#   (crontab -e
#   */15 * * * * /chemin/vers/ce/script.sh"

 

Crontab

A rajouter pour l'execution toutes les 15 minutes.

*/15 * * * * /chemin/vers/ce/script.sh"

Configuration

Création du Fichier de Configuration

Avant d'exécuter le script, créez un fichier config.json à l'endroit approprié avec le contenu suivant :

Pour créer le fichier de configuration config.json changez les url / token ET /chemin/vers/ce/config.json, utilisez la commande suivante :

echo '{
  "home_assistant_url": "http://192.168.x.x:8123/api/states",
  "home_assistant_token": "...",
  "lametric_url": "http://192.168.x.x:8080/api/v2/device/notifications",
  "lametric_user": "dev",
  "lametric_password": "...",
  "sensor_entity_ids": [
    "sensor.station_temperature",
    "sensor.station_humidity",
    "sensor.system_monitor_load_1m",
    "sensor.smappee_1006002667_local_total_consumption_active_power",
    "sensor.system_monitor_disk_use"
  ],
  "sensor_custom_icons": {
    "sensor.station_temperature": "8044",
    "sensor.station_humidity": "2423"
  }
}' > /chemin/vers/ce/config.json

Fichier de Configuration : config.json

Le script utilise un fichier config.json pour récupérer les différents paramètres requis, tels que les URL des services et les informations d'authentification. Chaque paramètre joue un rôle essentiel :

  • home_assistant_url : L'URL de l'API Home Assistant, utilisée pour récupérer l'état des capteurs. Cette URL doit être accessible depuis le réseau où est exécuté le script.
  • home_assistant_token : Jeton d'authentification nécessaire pour accéder aux données de Home Assistant. Ce token garantit une connexion sécurisée.
  • lametric_url : L'URL de l'appareil LaMetric, utilisée pour envoyer des notifications. Cette URL est spécifique à votre appareil LaMetric.
  • lametric_user et lametric_password : Identifiants nécessaires pour se connecter à l'appareil LaMetric et envoyer des notifications. Assurez-vous que ces informations sont correctes pour garantir la communication avec LaMetric.
  • sensor_entity_ids : Liste des identifiants de capteurs Home Assistant dont les données doivent être affichées. Ces identifiants doivent correspondre à ceux configurés dans Home Assistant.
  • sensor_custom_icons : (Facultatif) Permet de définir des icônes personnalisées pour certains capteurs spécifiques. Cela rend les notifications plus informatives et esthétiques sur l'appareil LaMetric. Voici un exemple de ce fichier :
{
  "home_assistant_url": "http://192.168.x.x:8123/api/states",
  "home_assistant_token": "...",
  "lametric_url": "http://192.168.x.x:8080/api/v2/device/notifications",
  "lametric_user": "dev",
  "lametric_password": "...",
  "sensor_entity_ids": [
    "sensor.station_temperature",
    "sensor.station_humidity",
    "sensor.system_monitor_load_1m",
    "sensor.smappee_1006002667_local_total_consumption_active_power",
    "sensor.system_monitor_disk_use"
  ],
  "sensor_custom_icons": {
    "sensor.station_temperature": "8044",
    "sensor.station_humidity": "2423"
  }
}

Description des Champs

  • home_assistant_url : URL de l'API Home Assistant pour récupérer l'état des capteurs.
  • home_assistant_token : Jeton d'authentification pour accéder à Home Assistant.
  • lametric_url : URL de l'appareil LaMetric pour envoyer des notifications.
  • lametric_user et lametric_password : Identifiants pour se connecter à l'appareil LaMetric.
  • sensor_entity_ids : Liste des capteurs de Home Assistant dont les données doivent être affichées.
  • sensor_custom_icons : (Facultatif) Définir des icônes personnalisées pour certains capteurs.

Utilisation

Lancement du Script

Pour exécuter le script, assurez-vous qu'il est exécutable :

chmod +x /chemin/vers/ce/script.sh

Puis lancez le script avec la commande suivante :

./script.sh

Configuration des Notifications sur LaMetric

  • Les notifications LaMetric sont envoyées via une requête POST.
  • Chaque notification contient des "frames", chaque frame peut être personnalisée avec du texte et une icône.

Planification via Crontab

Pour planifier la mise à jour automatique des données toutes les 15 minutes, ajoutez une tâche cron :

crontab -e

Ajoutez la ligne suivante :

*/15 * * * * /chemin/vers/ce/script.sh

Cela exécutera le script toutes les 15 minutes.

Points Importants

  • Authentification Home Assistant : Utilisez un token que vous pouvez générer depuis votre profil utilisateur dans Home Assistant, sous l'onglet "Sécurité".
  • Icônes pour LaMetric : Les icônes peuvent être trouvées sur LaMetric Icon Gallery.

Exemples de Fonctionnalités

Récupérer les Données de Home Assistant

Le script récupère les données des capteurs en effectuant une requête HTTP :

response=$(curl -s -H "Authorization: Bearer $HOME_ASSISTANT_TOKEN" -H "Content-Type: application/json" "$HOME_ASSISTANT_URL")

Envoyer une Notification à LaMetric

Une notification peut être envoyée en utilisant la fonction send_notification_to_lametric :

send_notification_to_lametric "Température" "25°C" "8044"

Cela enverra une notification avec un titre, un message et une icône.

Conclusion

Ce script permet de facilement intégrer des capteurs de Home Assistant avec un appareil LaMetric, afin de fournir des informations pertinentes de manière visible et conviviale.

Erreurs Communes et Comment les Résoudre

  • Erreur de Connexion à Home Assistant : Assurez-vous que l'URL et le token de Home Assistant sont corrects. Vérifiez aussi que votre serveur Home Assistant est accessible depuis le réseau.
  • Problèmes d'Authentification LaMetric : Si les notifications ne sont pas envoyées, vérifiez les identifiants (utilisateur et mot de passe) pour l'accès à l'appareil LaMetric.
  • Données de Capteurs Manquantes : Vérifiez que les identifiants des capteurs dans config.json sont valides et que ces capteurs sont disponibles dans Home Assistant.
  • Erreurs de Requête JSON : Assurez-vous que le fichier config.json est bien formé. Utilisez jq pour vérifier la validité du fichier JSON. Assurez-vous de bien configurer le fichier config.json pour que les URL, les tokens et les identifiants correspondent à votre environnement.

Pour toute question ou problème, consultez les documentations officielles de Home Assistant et de LaMetric, et vérifiez que vos informations d'authentification et de configuration sont correctement paramétrées.

Pour obtenir les tokens :

- Home Assistant : Crée un token depuis ton profil utilisateur dans Home Assistant

  lien de votre Home Assistant:  https://homeassistant/profile/security

- LaMetric : Récupérez la clef API sur https://developer.lametric.com/user/devices.

Pour les icônes des notifications :

- Les icônes peuvent être sélectionnées parmi une liste prédéfinie par LaMetric, identifiées par un ID d'icône (par exemple, "a4157" ou "11100").

 - Toutes les icons :  https://developer.lametric.com/icons