Graphique binaire : ajout des présences?

Bonjour

la derniere version de Glasys integre la possibilité d’afficher des graphiques binaires, cela dit il n’est pas possible d’afficher une présence (donc a priori binaire) issue de lan manager.
Est il possible de faire en sorte que ces présences s’affichent ? j’imagine que cela est liée au fait que l’historique n’est pas géré pour les objets lan manager ?

Merci a vous :wink:

Z.

Salut @zedyxer,

J’ai essayé de mon côté, et j’arrive bien à ajouter la présence sur un graphique :

Tu es sûr que ça ne fonctionne pas chez toi ?

Bonjour Pierre-Gilles,

Merci déja pour ta réponse :slight_smile: , je me suis sans doutes mal exprimé. En fait il est possible d’associer uen présence lan manager a un graphique binaire, mais celui-ci ne s’affiche pas :
image
C’est pourquoi je pensais qu’il s’agit de données non historisées.

J’ai regardé le code et il est bien historisé :

Tu es sûr que tu as des valeurs sur la dernière heure ?

Ce service envoie une valeur « 1 » à chaque fois qu’un appareil est vu, si il n’est pas vu, il n’y a pas de « 0 » qui est envoyé

il s’agit d’un smartphone en wifi gerant ma présence, j’ai bien allumé puis coupé le wifi plusieurs fois dans la matinée mais rien ne change au niveau du graphique. Je n’ai pas compris ta derniere phase concernant le fait qu’il n’y ai pas de 0 envoyé, cela signifie qu’il me faut envoyer 0 par un autre moyen ?

Non rien à faire de spécial, c’est juste que je précise que l’intégration n’envoie qu’une valeur quand l’appareil est détecté, il n’y a pas actuellement de « retour à 0 » quand l’appareil n’est pas détecté.

Donc même si on arrive à faire fonctionner le graphique chez toi, tu ne verras qu’une seule bande de couleur, pas d’alternance entre présence/absence.

Tu es bien dans la dernière version de Gladys ? (4.47?)

je suis bien en 4.47, le fait que l’intégration n’envoi pas 0 si non detecté n’empeche pas d’afficher le graphique ? car du coup je n’ai que des 1 malgré la coupure manuelle du wifi sur le smartphone ?

Effectivement, j’arrive à reproduire.

@Terdious il y a un souci avec la requête SQL pour les appareils binaires, quand c’est un appareil de type « push » qui n’envoie que des 1, ça ne marche pas, ça ne renvoie rien

@Terdious le « change_marker » dans la query est toujours null vu que ça change pas:

Je pense que du coup la query ne renvoie rien à cause de ça

Je pense qu’il y a un bug avec la query actuelle même pour les appareils binaires, la première valeur n’est jamais renvoyée, car la query pense que l’état n’a pas changé.

Que penses-tu d’une query de ce style:

WITH value_changes AS (
    SELECT
        created_at,
        value,
        LAG(value) OVER (ORDER BY created_at) AS prev_value
    FROM
        t_device_feature_state
    WHERE
        device_feature_id = ?
        AND created_at > ?
),
state_transitions AS (
    SELECT
        created_at,
        value
    FROM
        value_changes
    WHERE
        prev_value IS NULL OR value != prev_value
)
SELECT
    value,
    created_at
FROM
    state_transitions
ORDER BY
    created_at ASC
LIMIT ?

Sur ce dataset:

je compte 21 valeurs distincts

La query actuelle me renvoie seulement 20 valeurs (tout, sauf la première)

La query que je propose renvoie bien 21 valeurs, en alternance :

1 « J'aime »

Hello,
Désolé je viens seulement de voir la conversation !!

En effet je suis d’accord (en meme temps comment pourrais-je en juger autrement :grinning:) que la 1ere valeur n’est pas prise en compte. Loose de ne pas avoir vu cela et surtout désolé.

En effet en ce qui concerne tout ce qui ne change jamais d’état à part envoyer des 1 … ca ne peut pas fonctionner.

Comme ça je ne vois pas trop comment resoudre ce point pour la présence (je n’ai jamais apprécié ce fonctionnement d’ailleurs… il devrait y avoir associé un timer pour retomber à 0) ou pour tout détecteur a envoi unique d’état.

Que fait-on du coup ? Tu as une idée en tete ?

Dis moi si tu veux que je m’occupe d’un PR.

Oui ! La requête que je propose plus haut :smile:
Elle corrige le fonctionnement pour les binaires et les push

Edit : ah je comprend ce que tu veux dire. Pour le retour à zéro, pas le choix c’est l’intégration LAN Manager qui doit être modifiée pour coder un retour à zéro quand l’appareil n’est plus vu

1 « J'aime »

La requête complète avec le end_time:

WITH value_changes AS (
    SELECT
        created_at,
        value,
        LAG(value) OVER (ORDER BY created_at) AS prev_value
    FROM
        t_device_feature_state
    WHERE
        device_feature_id = ?
        AND created_at > ?
),
state_transitions AS (
    SELECT
        created_at,
        value,
        LEAD(created_at) OVER (ORDER BY created_at) AS end_time
    FROM
        value_changes
    WHERE
        prev_value IS NULL OR value != prev_value
)
SELECT
    value,
    created_at,
    end_time
FROM
    state_transitions
ORDER BY
    created_at ASC
LIMIT ?

La PR :

2 « J'aime »

La PR est partie dans Gladys Assistant 4.48 :

Avec cette PR, @zedyxer tu devrais voir une barre continue, il y aura juste les fois où ton appareil est détecté, mais sans les fois où ton appareil n’est pas détecté (le fameux retour à zéro), donc pas très utile pour l’instant

Je vais essayer de regarder pour rajouter ça à l’intégration LAN Manager.

1 « J'aime »

merci pour cette release, effectivement le graphique s’affiche mais aucun 0 ne s’affiche, uniquement les 1, je reste connecté, merci pour le taf :wink:

1 « J'aime »

Je viens de proposer une PR pour ajouter le retour à zéro à l’intégration LAN Manager :slight_smile:

Preneur de retours !

La PR :

Image Docker:

gladysassistant/gladys:lan-manager-add-value-zero
2 « J'aime »

Trop bien ça, je pense que ça va simplifier la vie niveau présence !

Petit up, je suis preneur de retours sur cette image :slight_smile:

installé et en cours de test, un grand merci !! :wink:

1 « J'aime »