Aller au contenu principal
Cette page vous a-t-elle été utile ?

Automatisation de la maison connectée

Les automatisations PrimeCal peuvent aller au-delà du calendrier et jusque dans votre maison connectée, de deux façons : en appelant directement l'API REST d'un appareil, et en instanciant un modèle de routine à la demande depuis n'importe quel déclencheur. Les deux s'appuient sur les blocs d'automatisation existants — il n'y a pas de module « maison connectée » séparé à configurer.

Appeler l'API REST d'un appareil domotique​

L'action Appeler un webhook envoie une requête HTTP depuis les serveurs de PrimeCal. La cible doit être accessible depuis internet en HTTPS. Les systèmes qui n'écoutent que sur votre réseau domestique ne peuvent pas être appelés directement. Elle prend en charge une méthode HTTP configurable et une authentification de premier ordre, exactement ce qu'attendent la plupart des API REST domotiques (Home Assistant, Shelly, et similaires) une fois exposées de cette façon.

Configurer la requête​

Dans le générateur d'actions, l'action Appeler un webhook expose :

  • Méthode — GET, POST, PUT, PATCH ou DELETE (par défaut POST si non défini, pour la compatibilité avec les règles enregistrées avant l'existence de ce champ).
  • Type d'authentification — none, bearer, basic, ou header :
    • bearer envoie Authorization: Bearer <jeton>.
    • basic envoie Authorization: Basic <base64(utilisateur:mot_de_passe)> — fournissez le jeton déjà sous la forme utilisateur:mot_de_passe.
    • header envoie le jeton dans un en-tête personnalisé que vous spécifiez (utile pour les API attendant quelque chose comme X-API-Key).
  • Quelques préréglages courants (commande REST Home Assistant, bascule de relais Shelly, point de terminaison Bearer générique) pré-remplissent des valeurs par défaut sensées de méthode/authentification pour ne pas avoir à les mémoriser.

Pile du générateur d&#39;actions dans la fenêtre d&#39;automatisation PrimeCal

Exemple : allumer un lave-linge à son heure de démarrage planifiée​

Les Late ont une tâche « Démarrer la lessive » à l'intérieur d'un modèle de routine. Lorsque cette tâche atteint son heure de démarrage planifiée, ils veulent que PrimeCal appelle leur instance Home Assistant et allume la prise connectée du lave-linge.

Exemple d'actionConfig pour l'action webhook :

{
"url": "https://<your-instance>.ui.nabu.casa/api/webhook/<webhook-id>",
"method": "POST",
"authType": "bearer",
"authToken": "YOUR_HOME_ASSISTANT_LONG_LIVED_TOKEN",
"customPayload": { "entity_id": "switch.washing_machine" }
}

Le déclencheur de cette règle est task.scheduled_start — il se déclenche lorsqu'une tâche (ici, une tâche instanciée depuis un élément de routine) atteint son heure de démarrage planifiée. Ce déclencheur n'est pas encore dans le sélecteur de déclencheurs du générateur de règles, une règle de ce type est donc actuellement créée directement via l'API Automatisation (ou par un agent connecté en MCP) plutôt que depuis le menu de l'interface.

PrimeCal refuse les requêtes qu'il ne peut pas livrer en toute sécurité

Une requête Appeler un webhook est rejetée avant d'être envoyée lorsque :

  • l'URL n'est pas en HTTPS,
  • l'hôte est localhost, se termine par .local, ou se résout vers une adresse IP privée/interne,
  • l'URL contient un nom d'utilisateur ou un mot de passe, ou
  • le serveur répond par une redirection.

Une instance Home Assistant accessible uniquement en local (homeassistant.local, ou toute adresse que seul votre réseau domestique peut atteindre) échoue à chacune de ces conditions. Exposez-la d'abord — via Home Assistant Cloud (Nabu Casa) ou votre propre reverse proxy muni d'un certificat valide — puis appelez son chemin /api/webhook/<id> à la place.

Gardez les jetons hors des règles partagées

Les jetons d'authentification sont stockés dans la configuration de l'action. Traitez une règle d'automatisation clonée ou partagée comme vous traiteriez un identifiant partagé — faites tourner le jeton si la règle est un jour exportée ou copiée quelque part que vous ne contrôlez pas.

Un blueprint Home Assistant prêt à l'emploi pour l'autre sens

Dans l'exemple ci-dessus, c'est PrimeCal qui appelle Home Assistant. Pour le sens inverse — Home Assistant appelle PrimeCal, ou Home Assistant doit simplement réagir à ce que PrimeCal lui envoie — téléchargez le blueprint PrimeCal Webhook Action et importez-le dans Home Assistant (Settings → Automations & scenes → Blueprints → Import blueprint). Il crée un point de terminaison webhook côté Home Assistant et vous laisse choisir n'importe quelle action à exécuter quand PrimeCal l'appelle, avec les données envoyées par PrimeCal disponibles comme variable de modèle. Voir Recettes d'automatisation pour la actionConfig correspondante côté PrimeCal.

Démarrer une routine depuis n'importe quel déclencheur​

L'action instantiate_routine permet à n'importe quel déclencheur — un webhook, une heure planifiée, la création d'un événement, le changement de statut d'une tâche, ou une tâche atteignant son heure de démarrage planifiée — de lancer immédiatement un modèle de routine, exactement comme si vous aviez cliqué sur Démarrer maintenant. Voir Routines et modèles pour savoir ce qu'est un modèle de routine et les deux autres façons de le démarrer.

Exemple : un réveil connecté déclenche la Routine matinale​

Le réveil connecté des Late peut envoyer un webhook en POST lorsqu'il sonne. Plutôt que d'ouvrir manuellement PrimeCal et de cliquer sur Démarrer maintenant sur « Routine matinale » chaque matin, ils relient le réveil à une règle qui l'instancie automatiquement.

Exemple d'actionConfig pour l'action instantiate_routine :

{
"routineTemplateId": 42
}

Structure de la règle :

  1. Déclencheur : webhook.incoming — l'intégration du réveil connecté envoie un POST vers l'URL webhook de la règle lorsqu'il sonne. Voir Webhooks pour savoir comment trouver et envoyer vers cette URL.
  2. Action : instantiate_routine avec routineTemplateId défini sur le modèle cloné « Routine matinale » des Late.

L'action réutilise la même vérification de propriété que le bouton manuel Démarrer maintenant — une règle ne peut instancier qu'un modèle de routine que son propriétaire peut déjà voir (ses propres modèles, les modèles partagés via son groupe de personnes, ou les modèles système actifs), jamais un identifiant de modèle arbitraire appartenant à quelqu'un d'autre.

Comme task.scheduled_start, le type d'action instantiate_routine n'est pas encore dans le menu déroulant du sélecteur d'actions. Créez ou modifiez une règle via l'API Automatisation pour l'utiliser — par exemple avec PUT /api/automation/rules/:id et un tableau actions contenant { "actionType": "instantiate_routine", "actionConfig": { "routineTemplateId": 42 } }.

Voir aussi​