You are currently viewing Utilisations des raccourcis Apple avec Jeedom (Iphone,Airtag, Apple Watch)

Utilisations des raccourcis Apple avec Jeedom (Iphone,Airtag, Apple Watch)

Tags : raccourcis Jeedom Iphone Airtag Apple Watch

0. Contexte

Passer d’Android à Apple peut être déroutant, surtout lorsqu’on utilise des outils de domotique comme Jeedom. Ayant l’habitude de Tasker sous Android, j’ai découvert l’environnement fermé d’Apple, ce qui m’a poussé à explorer les « Raccourcis ». Si, comme moi, vous avez eu du mal à vous y retrouver, ce tutoriel est là pour vous aider à gagner du temps.

Je vous invite à lire la partie 1 avec attention, car les principes seront les mêmes dans pas mal d’interactions.

1. Géolocalisation

Si vous utilisez Jeedom Connect ou Jeemate, il est possible de faire de la localisation facilement sur Apple. Les raccourcis d’Apple permettent également d’automatiser la géolocalisation je vias vour montrer comment le faire via homebridge (necessite un concentrateur) ou via une requette http

1.1 Le domicile

Créez un virtuel et n’oubliez pas de l’activer et de le rendre visible.

N’oubliez pas de préciser les génériques types via la roue crantée, par exemple « bouton » dans mon cas.

Ouvrez l’application « Raccourcis » sur votre iphone et appuyez sur le « + » pour créer une nouvelle automatisation.

Choisissez l’option « Arrivée à un lieu » ou « Départ d’un lieu » pour définir une action en fonction de votre géolocalisation.

Prenons l’exemple de l’arrivée au domicile :

Dans quand : Je peux choisir que mon arrivée déclenche une action via une plage horaire défini ou tout le temps.

Je vous conseille de sélectionner « Exécuter immédiatement » pour éviter de devoir valider l’action à chaque fois !

Pour le lieu, on peut entrer soit une adresse, soit celle de votre domicile.

lorsque vous avez défini votre adresse vous pouvez peut également définir le périmètre du domicile dans lequel on considère que nous somme à domicile

Une fois validé, on clique sur « Suivant » pour définir notre action et là, nous avons deux choix :

  • Soit on crée un raccourci que l’on viendra intégrer ici en précisant « Raccourci » dans « Nouvelle automatisation vide ».ce qui permet de l’utiliser sur plusieurs automatisation
  • Sinon on crée les actions directement dans l’automatisation, mais qui ne sra utilisable que dans celle ci

Si nous avons le plugin Homebridge du fantastique Nebz (et un concentrateur) suivre le 1.1.1 , on peut aussi passer par une requête HTTP avec 1.1.2

1.1.1 Par homebridge

Dans « Nouvelle automatisation », on va dans « Maison ».

Puis « Contrôler le domicile ».

Ce qui nous donne cela :

Choisir l’action que l’on souhaite réaliser.

Dans mon cas, allumer mon virtuel « présent maison », que j’ai préalablement envoyé dans le plugin Homebridge.

Puis dans « Raccourcis ».

N’oubliez pas de définir si vous voulez allumer ou éteindre le bouton.

Et voilà ! À chaque fois que je rentre à mon domicile, mon virtuel passe sur 1. Maintenant, il faudra refaire une deuxième automatisation, cette fois quand je sors de la zone, pour éteindre mon bouton.

1.1.2 Par requete Http

Ajouter une action « Obtenir le contenu d’une URL ».

Nous allons devoir entrer l’URL de votre commande Jeedom , nous allons commencer par le récupérer

On la retrouve dans le virtuel en question.

Puis, on repère l’ID de l’information que l’on veut mettre à jour, dans notre cas 51338.

On obtient donc :

https://ADRESSEEXTERNEJEEDOM/core/api/jeeApi.php?plugin=virtual&type=event&apikey=CLEFAPIDEVIRTUEL&id=51338&value=1 

On veut faire une commande donc on change dans les paramètres de notre lien type=event en type=cmd ce qui nous donne

https://ADRESSEEXTERNEJEEDOM/core/api/jeeApi.php?plugin=virtual&type=cmd&apikey=CLEFAPIVIRTUEL&id=51338&value=1 

Insérer donc ce nouveau lien dans l’action « Obtenir le contenu d’une URL ». En verifiant bien via la fleche bleuque la méthode d’envoie est un post ( cela nous permet de modifier une valeur, un get aurais par exemple simplement récupérer l’état de la valeur)

Vérifier avec le bouton « Play » pour voir si cela fonctionne.

Si tout fonctionne, il ne vous reste plus qu’à recommencer pour la sortie du domicile en changeant value=1 en value=0 dans votre URL :.

https://ADRESSEEXTERNEJEEDOM/core/api/jeeApi.php?plugin=virtual&type=cmd&apikey=CLEFAPIVIRTUEL&id=51338&value=0

1.2 Le travail

Stimuler votre ingéniosité, par exemple en créant une zone de travail (lycée, bureau, etc.) et pourquoi pas en accompagnant le changement de mode de concentration avec une notification vocale à la maison lié a une action sur valeur dans un virtuel ? ?

On construit comme cela on créé dans raccourci une action Quand j’arrive à en précisant une adresse et un rayon comme pour l’exemple du domicile

et dans faire je peux changer une valeur comme dans le 1.1.2 et donc indiquer que je suis au travail dans un virtuel en basculant une variable de 1 à 0 et donc déclencher une action via notre jeedom au changement d’état du virtuel

1.3 État de mobilité

Je souhaite, par exemple, savoir si je suis en voiture ou non et l’indiquer à mon Jeedom, ma voiture étant couplée à mon téléphone via CarPlay.

Si je suis connecté à CarPlay, cela signifie que je suis en voiture. Je peux alors activer un virtuel ou envoyer mes coordonnées GPS à mon Jeedom.

Je commence par créer un virtuel et je prends note de l’ID de chaque virtuel.

Définir les actions dans les raccourcis

On choisit par exemple lorsque je me connecte à carplay

1.3.1 Coordonnées Gps

Je souhaite que, lorsque je me connecte ou me déconnecte de CarPlay, ma position GPS soit envoyée à Jeedom.

Commencer par obtenir votre position, puis j’ajoute cette position à une variable que j’appelle GPS.

je définis l’URL,dans value je mets la variable GPS

et je l’envoie à jeedom en POST avec obtenir le contenu de l’url

et hop l’adresse apparait sur jeedom

1.3.2 Activation d’un virtuel Binaire

Nous reprenons ici un principe déjà évoqué en 1.1.1 et 1.1.2. Pour bien l’implémenter, je vous montre comment procéder via une requête HTTP.

On insère donc une action URL dans la valeur, on met « 1 » lorsque le déclencheur de l’automatisation est CarPlay qui se connecte et « 0 » lorsqu’il se déconnecte.

Dans « Obtenir le contenu de l’URL », la méthode est POST et voilà, cela fonctionne.

1.3.3 Date de la valeur

C’est bien beau de savoir quand je suis en voiture, mais autant savoir quand cela a été réinitialisé pour la dernière fois.

1.3.3.1 via Jeedom

Pour moi, c’est la méthode la plus simple.

J’ajoute une action qui va agir sur la date de valeur et met le texte suivant dans mon info :

formatTime(#time#) le #sjour# #jour# #smois# #annee#

ce qui donne donc par exemple : 7h27" le "Mardi" 18 "Mars" 2025

On la met à jour via la roue crantée de mon info « date de la valeur » comme suit :

Si l’utilisation devait être de comparer le temps écoulé, on peut donc se tourner vers un #timestamp# t si tu veux avoir l’info en format lisible tu peux aussi transformer ce timestamp comme cela date("d/m/Y H:i:s", #[Virtuel][Nom][Timestamp stocké]#)

1.3.3.2 Via raccourci

Créer une action de date, puis définir la variable, choisir le nom de la variable et indiquer quelle valeur elle doit prendre (dans notre cas, la date). Renseigner l’URL de votre Jeedom en précisant bien l’ID de votre virtuel, et dans la valeur, on sélectionne la variable.

Enfin, obtenir le contenu de l’URL en spécifiant bien que c’est une méthode POST, et voilà, la date apparaît sous ce format : « 18 mars 2025 à 07:58 ».

au final mon automatisation ressemble à cela :

et sur mon virtuel

2. Sport

Si vous souhaitez faire remonter des informations de sport, c’est aussi possible via l’application Santé et les raccourcis.

Je veux, par exemple, savoir une fois par jour combien de pas j’ai faits.

2.1 Nombre de pas

Dans Jeedom, je crée un raccourci pour le nombre de pas, qui me donne le nombre de pas de la veille.

Dans Jeedom, je crée un raccourci pour le nombre de pas, qui me donne le nombre de pas de la veille.

Je vais dans l’application raccourcis, crée une automatisation déclenchée tous les jours à une heure donnée (par exemple, X heure).

Puis, dans « Faire », je crée un raccourci avec les actions suivantes :

  • Rechercher des échantillons de santé
  • Type : Pas
  • Date de début : Dernier 1 jour pour avoir toutes les informations, groupées par jour
  • Définir la variable, la nommer et la lier aux échantillons de santé.

L’URL précise l’adresse externe de Jeedom, la clé API et l’ID du virtuel. Dans « value », on insère la variable créée précédemment.

Enfin, on envoie l’information à Jeedom via « Obtenir le contenu de l’URL », en choisissant la méthode POST.

J’obtiens donc un résultat en pas, et pour l’avoir en kilomètres, j’applique la formule suivante dans une info de mon virtuel Jeedom :
Distance (en km) = (Nombre de pas × 0,75) / 1000, sachant qu’un pas mesure en moyenne 0,75 m..

On peut aussi choisir, dans le raccourci, « Distance marche et course » au lieu de « Nombre de pas », ce qui donne directement le nombre de kilomètres parcourus.

2.2 Vélo

2.2.1 Début exercice

Lorsque je commence ma session de VTT, j’envoie un message avec mes coordonnées GPS via Jeedom à ma femme.

Je sélectionne donc le type d’exercice « vélo » dans l’exercice Apple Watch et choisis « Début ».

Pour faire : rien de très complexe, je reprends la logique du 1.3.1

je choisis d’envoyer aussi un message SMS a celle-ci qui lui dit, je commence à faire du vélo à X lieu et elle recoit donc le message suivant

2.2.2 Fin d’exercice

Je veux qu’à chaque fois que je termine une cession de VTT, j’ai le nombre de kilomètres qui remonte dans jeedom

Lorsque je termine mon exercice, je choisis cette fois « Fin », puis dans « Faire », je reprends la logique de 2.1.

Je vais donc :

  • Rechercher des échantillons de santé
  • Type : Distance à vélo
  • Date de début : Dernier 1 jour
  • Unité : km
  • Grouper par jour
  • Définir la variable, la nommer puis la lier aux échantillons de santé.

L’URL précise l’adresse externe de Jeedom, la clé API, et l’ID de la commande info du virtuel. Puis, je choisis « Obtenir le contenu de l’URL » en méthode POST.

3. infos diverses de l’appareil

On reprend toujours la même logique, on récupère une des informations de l’appareil et on la stocke dans une variable. On peut ainsi facilement obtenir :

  • Détails de l’appareil (Nom, Luminosité, état verrouillage, etc.)
  • État de la batterie
  • Orientation de l’écran
  • Mode de concentration actuel
  • Activité physique
  • Adresse IP
  • Détails du réseau
  • Détails du lieu
  • La position du véhicule stationné

4. Activer un réveil

Ayant des horaires qui changent régulièrement, j’entre mes horaires dans mon agenda Google et je viens vérifier l’horaire du lendemain pour définir un virtuel binaire en fonction de mon emploi du temps.

Par exemple, pour l’horaire B.

Ce qui me donne donc dans le virtuel les informations suivantes :

Je veux donc que si je suis en B le réveil sonne à 5h10, si je suis en G à 8h20 et en nuit à 17h30

prenons l’exemple de l’horaire B dans raccourci

je ne réexplique plus comment on fait pour récupérer le lien de votre virtuel, il suffit de lire le début du tuto n’est-ce pas XIA NICO !

Donc, je crée un raccourci et je mets l’action URL

https://ADRESSEEXTERNEDEVOTREJEEDOM/core/api/jeeApi.php?plugin=virtual&type=cmd&apikey=CLEFAPI&id=IDDEVOTREINFO

DANS NOTRE CAS ID DU VIRTUEL =59527 PAS DE VALUE CAR C'EST CE QUE NOUS VOULONS RECUPERER

Nous voulons obtenir une info de jeedom sur cette URL donc nous utilisons la méthode GET dans Obtenir le contenu de l’URL.

SI la value récupérée est 1 alors, j’active mon réveil de 5h30, SINON je le désactive (il faut déjà avoir ce réveil de créer pour pouvoir l’activer ou le désactiver).

J’exécute mon automatisation à 9h10 (mon scénario mettant à jour mon virtuel à 9h).

Exemple si je travaille en B

Mon réveil s’active automatiquement :

5. ITAG Localisez-moi

Malheureusement, il n’est pas possible de récupérer directement les informations des iTags dans les raccourcis. La seule solution que j’ai trouvée consiste à faire une capture d’écran. Ce n’est pas optimal, mais cela peut dépanner pour les utilisateurs avertis.

  • Renseigner le site interne localiser moi
  • Ouvrir celui ci
  • Attendre 4 seconde
  • Prendre une capture d’écran
  • Extraire le texte de la capture d’écran
  • Scinder le texte de l’image selon nouvelles lignes
  • Enregistrer le texte dans une variable dans notre cas texte_brut qui vient du texte de l’image
  • Definir l’url de notre virtuel avec en value la variable fraichement créer
  • Envoyer le contenu sur Jeedom en methode POST

et voila le scéario a adapter celon votre besoin

/**
 * Script Jeedom - Extraction AirTags (Présence Binaire + Distance + Expiration)
 */

$CONFIG = [
    'AIRTAGS' => [
        'Clef Ines' => ['presence' => 59427, 'date' => 59522, 'distance' => 59425],
        'Leia' => ['presence' => 59430, 'date' => 59523, 'distance' => 59428],
        'Camping car' => ['presence' => 59436, 'date' => 59525, 'distance' => 59434],
        'Clef camping car' => ['presence' => 59439, 'date' => 59526, 'distance' => 59437],
        'Clef elodie' => ['presence' => 59442, 'date' => 59521, 'distance' => 59440],
        'Clef Loïc' => ['presence' => 59445, 'date' => 59520, 'distance' => 59443],
        'Voiture Loic' => ['presence' => 59448, 'date' => 59524, 'distance' => 59446]
    ],
    'SOURCE_CMD' => 59423
];

try {
    // 📜 Récupération des données
    $texte = cmd::byId($CONFIG['SOURCE_CMD'])->execCmd();

    if (empty($texte)) {
        throw new Exception("Aucune donnée reçue depuis la commande " . $CONFIG['SOURCE_CMD']);
    }

    $scenario->setLog("📜 Données brutes reçues :");
    $scenario->setLog($texte);

    // 🧹 Nettoyage des données
    $texte = preg_replace('/[^\p{L}\p{N}\s\-\.,\'°_:éèêëàâäôöûüçîïÉÈÊËÀÂÄÔÖÛÜÇÎÏkm]/u', '', $texte);
    $lignes = array_values(array_filter(explode("\n", trim($texte)), 'trim'));

    // 🔍 Détection des informations des AirTags
    $airtags_data = [];
    $airtag_actuel = null;
    $date_actuelle = time();

    foreach ($lignes as $ligne) {
        $ligne = trim($ligne);

        // 📌 Détection des AirTags
        foreach ($CONFIG['AIRTAGS'] as $nom => $ids) {
            if (strpos($ligne, $nom) !== false) {
                $airtag_actuel = $nom;
                $airtags_data[$nom] = [
                    'presence' => 0,  // Par défaut, on considère qu'il n'est pas au domicile
                    'distance' => 'Non disponible',
                    'date' => null
                ];
                $scenario->setLog("🟢 AirTag détecté : $nom");
                break;
            }
        }

        // 📍 Vérification de la présence (si "Domicile" apparaît après un AirTag)
        if ($airtag_actuel !== null) {
            if (strpos($ligne, "Domicile") !== false) {
                $airtags_data[$airtag_actuel]['presence'] = 1;
                $airtags_data[$airtag_actuel]['date'] = date('Y-m-d H:i:s', $date_actuelle);
                $scenario->setLog("🏠 $airtag_actuel est au domicile !");
                $airtag_actuel = null;
                continue;
            }

            // 📏 Vérification de la distance (ex : "10 km", "Avec vous")
            if (preg_match('/^(\d+)\s?km$|^Avec vous$/', $ligne, $matches)) {
                $distance = ($ligne === "Avec vous") ? "0 km" : $ligne;
                $airtags_data[$airtag_actuel]['distance'] = $distance;
                $scenario->setLog("📏 Distance détectée pour $airtag_actuel : $distance");
            }
        }
    }

    // 🏆 Vérification des valeurs obsolètes et mise à jour Jeedom
    foreach ($CONFIG['AIRTAGS'] as $nom => $ids) {
        $id_presence = $ids['presence'];
        $id_date = $ids['date'];
        $id_distance = $ids['distance'];

        $presence = $airtags_data[$nom]['presence'] ?? 0;
        $distance = $airtags_data[$nom]['distance'] ?? 'Non disponible';
        $date_detecte = $airtags_data[$nom]['date'] ?? cmd::byId($id_date)->execCmd();

        // Vérifier si la date est valide
        $date_timestamp = strtotime($date_detecte);
        if ($date_timestamp === false) {
            $date_detecte = "Value too old";  // Valeur non exploitable
        } else {
            // Vérifier si la date est supérieure à 3 jours
            $diff_jours = ($date_actuelle - $date_timestamp) / (60 * 60 * 24);
            if ($diff_jours > 3) {
                $presence = 0;  // Force la présence à 0
                $date_detecte = "Value too old";
                $scenario->setLog("⚠️ $nom : Données trop anciennes (>3 jours), présence remise à 0 !");
            }
        }

        // Mise à jour des valeurs Jeedom
        cmd::byId($id_presence)->event($presence);
        $scenario->setLog("✅ Présence mise à jour pour $nom : $presence");

        // Mise à jour de la distance si disponible
        if ($distance !== 'Non disponible') {
            cmd::byId($id_distance)->event($distance);
            $scenario->setLog("📏 Distance mise à jour pour $nom : $distance");
        }

        // Mise à jour de la date
        cmd::byId($id_date)->event($date_detecte);
        $scenario->setLog("📅 Date mise à jour pour $nom : $date_detecte");
    }

} catch (Exception $e) {
    $scenario->setLog("❌ Erreur : " . $e->getMessage());
}

Conclusion

Voila j’espère que cet article vous aura plu j’ai essayé de faire le maximum le tour de ce qui était possible

N’oubliez pas que la vie est fete

Loïc

Loïc phoenix castillo

Passionné par informatique dès mon plus jeune âge, j'ai arrêté à mes 21 ans pour me consacrer à mes études d'infirmier et faire la fête. Maintenant père de famille, je me réinvestis dans la domotique ! Bref le kif ! Rédacteur en chef de Youdom