Forcer la maj de la valeur d'une commande

Salut

J’ai ajouté une nouvelle commande un peu spéciale à mon plugin Eufy:
Il s’agit de l’URL vers le snapshot de la caméra que je génère dans un rép temporaire du plugin sur réception d’un event.

Ca fonctionne mais mon widget ne recharge pas l’image sur le dashboard ce qui est normal car la valeur de l’URL ne change jamais. Je voudrais donc forcer Jeedom à rafraichir cette valeur (et maj valueDate/collectDate).

Voila mon code actuel:

  public static function sendEvent($cmd, $value) {
    if (is_object($cmd))
        if (($cmd->getLogicalId() == 'picture') ||
            ($cmd->execCmd() != $cmd->formatValue($value))) {
                $cmd->event($value, null);
                return true;
        }
    return false;
  }

J’ai essayé $cmd->refresh() mais sans effet. Comment faire?
Merci!

Il faut faire varier l’URL en y mettant par exemple le timestamp de l’image pour que le navigateur charge l’image.
Je le fais dans le plugin meteofrance sur les cartes de vigilance:

plugins/meteofrance/data/VIGNETTE_NATIONAL_J_500X500.png?ts=1693058464

L’image reste VIGNETTE_NATIONAL_J_500X500.png.
?ts= est suivi de la date de modification du fichier.

$img = 'VIGNETTE_NATIONAL_J_500X500.png';
$vigJson['image'] = "$img?ts=".@filemtime(__DIR__ ."/../../data/$img");
1 « J'aime »

Merci beaucoup @jpty
Ca marche, problème résolu :smiley:

Le fonctionnement prévu dans Jeedom pour répéter une valeur identique se trouve dans la configuration de la commande info.

1 « J'aime »

Ça ne changera rien d’activer cela.
Cette commande info sera effectivement rafraîchie et ensuite ? Elle sera utilisée par exemple dans un élément IMG et le navigateur utilisera celle qu’il a en cache car l’URL est la même…

@mips tout a fait
La solution de @jpty fonctionne mais c’est un workaround
Il faudrait peut-être ajouter une primitive au core pour ces cas la…un nouveau type de données image?

workaround utilisé aussi par le #plugin-camera:

C’est le navigateur qui ne recharge pas une image qu’il a déjà →

  • Soit le nom de l’image change
  • Soit il faut tromper le navigateur en lui fournissant un nom avec un argument type ?ts=xxx
  • Soit il faut désactiver le cache du navigateur pour cette image.
1 « J'aime »

Si on pouvait stocker directement les images en binaire dans la commande au lieu de les écrire sur le disque ca éviterait d’avoir recours à ce hack…cf mon post plus haut

non, le problème du cache fait par les browsers reste le même

2 « J'aime »

Imagine la taille de la db !!!

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.