# Scènes: Chercher dans les scènes via API

**URL:** <https://community.gladysassistant.com/t/scenes-chercher-dans-les-scenes-via-api/9346>\
**Category:** Configuration\
**Created:** [Novembre 11, 2024, 10:11 UTC](https://community.gladysassistant.com/t/scenes-chercher-dans-les-scenes-via-api/9346 "2024-11-11T10:11:06Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Novembre 11, 2024, 10:11 UTC](https://community.gladysassistant.com/t/scenes-chercher-dans-les-scenes-via-api/9346/1 "2024-11-11T10:11:06Z")

</div>

[31/01/2025] Ce post a été sorti d’une discussion d’une demande de fonctionnalité

> [@Filtrer les scènes qui utilisent un élément précis (appareil MQTT, appareil Zigbee,...)](https://community.gladysassistant.com/t/filtrer-les-scenes-qui-utilisent-un-element-precis-appareil-mqtt-appareil-zigbee/9180/4):
>
> (Je n’avais pas pensé à l’API, j’irai chercher aussi, par curiosité…)

Le plus simple de nos jours pour ce genre de tâches, c’est d’écrire un petit script avec ChatGPT, même si ça te fait du code crado on s’en fout pour ce genre de tâches one-shot 😃

L’API est simple:

> **[HTTP API | Gladys Assistant](https://gladysassistant.com/fr/docs/api/rest-api/)**
>
> Gladys Assistant est un serveur qui expose une API HTTP REST.

Ce qui t’intéresse:

 ![Screenshot 2024-11-11 at 11.09.24](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/c/6/c60161a35b82658ab5cb557c8e53f22e2ba98da9.png)

Exemple d’une scène (j’ai pris un exemple chez moi 😛 )

```auto
{
    "id": "e352584c-1aaf-4cc7-a9a2-5caa6293419c",
    "name": "Allumage automatique toilettes journée",
    "description": "Allumage via capteur entre 8h et 20h",
    "icon": "loader",
    "active": true,
    "selector": "allumage-automatique-toilettes",
    "actions": [
        [
            {
                "type": "condition.check-time",
                "after": "08:00",
                "before": "20:00"
            }
        ],
        [
            {
                "type": "device.set-value",
                "device_feature": "zigbee2mqtt-ampoule-toilettes-light-brightness-brightness",
                "value": "215"
            }
        ],
        []
    ],
    "triggers": [
        {
            "type": "device.new-state",
            "device_feature": "zigbee2mqtt-capteur-mouvement-toilettes-motion-sensor-binary-occupancy",
            "value": 1,
            "operator": "=",
            "threshold_only": true
        }
    ],
    "last_executed": null,
    "created_at": "2024-03-30T07:36:29.090Z",
    "updated_at": "2024-07-05T07:08:47.591Z",
    "tags": [
        {
            "name": "Toilettes"
        }
    ]
}

```

Je suis certain que si tu copie colle ce message dans ChatGPT, tu as un script fonctionnel 😂

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Novembre 11, 2024, 10:16 UTC](https://community.gladysassistant.com/t/scenes-chercher-dans-les-scenes-via-api/9346/2 "2024-11-11T10:16:47Z")

</div>

Exemple:

 ![Screenshot 2024-11-11 at 11.15.25](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/d/f/dfedb0df0e74f88581a8b70fe864e2190bf340e4.jpeg)

La réponse de ChatGPT (j’ai relu rapidement, il manque juste l’authentification mais sinon c’est bon):

Voici un script en Node.js qui utilise axios pour interagir avec l’API, récupère la liste des scènes, et cherche celles qui utilisent une device\_feature spécifique, en l’occurrence «&nbsp;capteur\_humidite&nbsp;». Si cette device\_feature est trouvée dans les actions ou les déclencheurs de la scène, le script affiche le selector de cette scène dans les logs.

Pour exécuter ce script, assurez-vous d’avoir axios installé en exécutant npm install axios.

Voici le code :

```javascript
const axios = require('axios');

// URL de base de l'API
const API_BASE_URL = 'http://votre-api.com/api/v1/scene';

// Fonction pour récupérer toutes les scènes
async function fetchScenes() {
    try {
        const response = await axios.get(`${API_BASE_URL}`);
        return response.data;
    } catch (error) {
        console.error('Erreur lors de la récupération des scènes:', error);
        return [];
    }
}

// Fonction pour récupérer une scène complète par son sélecteur
async function fetchSceneBySelector(selector) {
    try {
        const response = await axios.get(`${API_BASE_URL}/${selector}`);
        return response.data;
    } catch (error) {
        console.error(`Erreur lors de la récupération de la scène ${selector}:`, error);
        return null;
    }
}

// Fonction principale pour trouver les scènes qui utilisent "capteur_humidite"
async function findScenesWithHumiditySensor() {
    const scenes = await fetchScenes();

    for (const scene of scenes) {
        const sceneData = await fetchSceneBySelector(scene.selector);

        if (sceneData) {
            const hasHumiditySensor = sceneData.actions.some(actionGroup =>
                actionGroup.some(action => action.device_feature === 'capteur_humidite')
            ) || sceneData.triggers.some(trigger =>
                trigger.device_feature === 'capteur_humidite'
            );

            if (hasHumiditySensor) {
                console.log(`Scène avec "capteur_humidite" trouvée: ${scene.selector}`);
            }
        }
    }
}

// Exécution du script
findScenesWithHumiditySensor();

```

**Instructions pour lancer le script :**

Assurez-vous d’avoir Node.js et axios installés dans votre projet. Si nécessaire, installez axios avec :

```auto
npm install axios

```

Remplacez ‹&nbsp;[http://votre-api.com/api/v1/scene](http://votre-api.com/api/v1/scene)&nbsp;› par l’URL de votre API.

Exécutez le script en lançant la commande suivante dans le terminal :

```auto
node votre-script.js

```

Le script va afficher le selector de chaque scène qui contient un device\_feature avec la valeur «&nbsp;capteur\_humidite&nbsp;».
