HomeyScript : example-flowcard-run.js

Voici une analyse détaillée de ce script HomeyScript qui démontre comment exécuter des cartes de type « Et » (Flow Card Condition) et « Alors » (Flow Card Action).


But du Script

  • Vérifier si le jour actuel est un week-end en exécutant une carte « Et ».
  • Exécuter une action spécifique en fonction du résultat (allumer une animation de couleur verte si c’est un week-end, rouge sinon).

Structure et Fonctionnement

1. Exécution de la Carte « Et » (Condition)

const { result: isWeekend } = await Homey.flow.runFlowCardCondition({
  id: 'homey:manager:cron:day_equals',
  args: {
    day: 'weekend',
  },
});

log('Is Weekend:', isWeekend);
  • Homey.flow.runFlowCardCondition() :
  • Exécute une carte de condition (type « Et »).
  • Paramètres :
    • id : L’identifiant unique de la carte, ici homey:manager:cron:day_equals, qui vérifie si le jour actuel correspond à un certain critère.
    • args : Les arguments nécessaires pour la carte. Ici, l’argument est { day: 'weekend' }, indiquant que nous voulons vérifier si c’est un week-end.
  • Résultat :
  • La fonction renvoie un objet contenant le champ result, qui est assigné à la variable isWeekend.
  • Cette variable sera true si c’est un week-end, sinon false.
  • log() : Affiche dans la console le résultat (par exemple : Is Weekend: true).

2. Exécution de la Carte « Alors » (Action)

await Homey.flow.runFlowCardAction({
  id: 'homey:manager:ledring:animate_pulse',
  args: {
    animation: 'pulse',
    color: isWeekend
      ? '#00FF00'
      : '#FF0000',
  },
});
  • Homey.flow.runFlowCardAction() :
  • Exécute une carte d’action (type « Alors »).
  • Paramètres :
    • id : L’identifiant unique de la carte, ici homey:manager:ledring:animate_pulse, qui déclenche une animation LED sur Homey.
    • args : Les arguments nécessaires pour la carte :
    • animation: 'pulse' : Déclenche une animation de type pulsation.
    • color : Définit la couleur de l’animation :
      • #00FF00 (vert) si c’est un week-end (isWeekend === true).
      • #FF0000 (rouge) sinon.

Logique Globale

  1. Vérifie si le jour actuel est un week-end avec une carte « Et ».
  2. Exécute une animation de pulsation LED en fonction du résultat :
  • Vert pour un week-end.
  • Rouge pour un jour de semaine.

Exemple de Fonctionnement

Situation 1 : Jour de semaine (par ex. mercredi)

  1. Condition vérifiée :
  • isWeekend = false.
  1. Action exécutée :
  • Animation LED rouge (pulsation).

Situation 2 : Week-end (par ex. samedi)

  1. Condition vérifiée :
  • isWeekend = true.
  1. Action exécutée :
  • Animation LED verte (pulsation).

Utilisation et Application

  1. Automatisation Dynamique :
  • Peut être utilisé pour des scénarios où l’action dépend du jour actuel, par exemple, des routines spécifiques pour les week-ends.
  1. Personnalisation des Actions :
  • Les couleurs et animations peuvent être modifiées pour répondre à d’autres conditions ou préférences.

Avantages et Limites

Avantages :

  • Montre comment intégrer des cartes « Et » et « Alors » dans HomeyScript.
  • Fournit une logique conditionnelle simple mais efficace.
  • Facile à adapter pour d’autres scénarios (par exemple, vérifier des heures, des états de périphériques, etc.).

Limites :

  • Dépend de cartes spécifiques disponibles dans l’environnement Homey (par exemple, homey:manager:cron:day_equals et homey:manager:ledring:animate_pulse).
  • Ne fonctionne que si les arguments requis par les cartes sont corrects.

Extensions possibles

  1. Ajouter d’autres conditions :
  • Par exemple, vérifier si une lumière est allumée avant de lancer l’animation.
  1. Changer le type d’animation :
  • Adapter pour des animations différentes selon le contexte.
  1. Utilisation multi-cartes :
  • Enchaîner plusieurs cartes pour des scénarios plus complexes.