Je me vous expose ma problématique en version courte: Comment faire afficher dans l’application mobile une image en base64 ?
Pour plus de contexte j’utilise en complément de Jeedom l’excellent https://frigate.video/ qui communique par MQTT à Jeedom, je reçoit donc des images en base64 gràce à Jmqtt.
Je peut exploiter les images dans le dashboard jeedom grace à ce poste : [TUTO] Ring avec Ring-mqtt et jmqtt - #36 par Bad qui utilise pour sa un widget custom.
Bref je n’ai pas trouvé si c’est possible et/ou comment faire pour arriver à avoir l’image dans l’application mobile ou dans la configuration des notifications personnaliser.
Le widget desktop peut être simplement copié/collé dans le dossier mobile pour être utilisé sur tel.
J’ai ajouté style="width:calc(100%);" dans le widget pour que la taille s’ajuste automatiquement.
Néanmoins, je tiens à souligner qu’il faut vraiment éviter d’avoir des images de trop haute définition, car Jeedom n’est pas fait pour traiter de grosses longues chaines de caractère (payloads MQTT base64), que ce soit en widget desktop ou mobile, ET SURTOUT éviter de les historiser.
Ce n’est pas le widget lui-même qui a un impact, mais bien le fait de recevoir les images en base64.
Je suis exactement dans le même cas que toi,
De mon côté, ce que je fais :
→ Récupération de l’ID du dernier évenement
→ Passage par le plugin script, je récupère l’image directement via l’API frigate
→ Envoie de la notification via Jeemate avec l’URL de Jeedom. (https://%adresseexternejeedom%/plugins/script/data/Images/#[Reseau Local][Frigate_CCTV][events_ID]#.jpg
J’ai limité à 15 captures, à toi de modifier comme tu le souhaites.
<?php
// Variables
$path_jeedom = "/var/www/html/plugins/script/data/Images/";
// On compte le nombre de screen et on supprime si besoin
$fichiers = glob($path_jeedom.'*');
$compteur = count($fichiers);
if ($compteur > 15) { foreach($fichiers as $fichier)
{
if(is_file($fichier))
{
unlink($fichier);
}
};
};
// On récupère le snapshot lié à l'event suivant l'ID transmis par le scenario . ($argv[1])
$file_jeedom = $path_jeedom . $argv[1] . ".jpg";
$url_snapshot = "http://%ipdetonfrigate%:5000/api/events/".$argv[1]."/thumbnail.jpg";
file_put_contents($file_jeedom, file_get_contents($url_snapshot));
?>
Bonjour @Shaff0 ,
je déterre le sujet …
Ton script fonctionne nickel pour le rapatriement des snapshot de frigate.
J’ai un problème avec les notification Jeemate.
J’utilise la notification général avec comme titre cela:
title=Détéction de personne à la porte d'entrée;;customIcon=<i class="fas fa-user-secret"></i>;;iconColor=FF0000;;groupKey=Sécurité;;channelKey=jeemateDefault;;bigPicture=http://xxx.xxx.xxx.xxx/plugins/script/data/Images/1711278163.427018-yku7tk.jpg
J’ai bien la notification, mais pas l’image, j’ai vérifier avec mon navigateur si l’url fonctionne et j’ai bien l’image.
As tu une idée de mon erreur?
Merci d’avance.
PS: version Jeemate du 21-03-2024 stable & jeedom version 4.3.22
mais si tu n’es pas chez toi, cela ne fonctionnera pas si tu es en http par contre.
dans les derniers tests sur les notifs images cela fonctionnait.
Dans ta capture, dans le scenario, le https + l’ip locale, ça ne fonctionnera pas. il faut ton nom de domaine à la place. et si tu n’arrives pas ensuite à y accéder alors possible que ce soit une histoire de htaccess sur le dossier.
Ensuite, une fois que tu y accèdes en externe (https) et que cela ne fonctionne tjs pas, alors je serai interessé pour connaitre la résolution de ton jpg afin que je puisse tester, meme si étonnant, sait on jamais
je serai intéressé pour connaître la résolution de ton jpg
voilà,
info de jeedom editor.
Ensuite, une fois que tu y accèdes en externe (https)
Je suis en local uniquement, donc je ne vois pas ce que tu veux dire.
Pour résumer:
Quand je suis en http, j’arrive à avoir mon image via firefox avec le http que j’ai dans le scenario, par-contre pas d’image dans la notif Jeemate.
Quand je suis en https, je n’arrive pas à avoir mon image dans firefox et pas d’image dans la notif Jeemate. (ça, je trouve plutôt logique).
Tu me dit qu’il faut obligatoirement une adresse en https pour cela fonctionne (si j’ai bien compris).
Je vais creuser du cote du htaccess …
ce que je voulais dire, c’est que si ce scenario est fait pour envoyer une notif à ton mobile, et que tu n’es pas chez toi, alors si l’url est en http dans ton scenario, cela ne fonctionnera pas puisqu’en externe c’est https.
Donc si tu veux recevoir l’image peu importe si tu es en wifi local ou en externe, alors il te faut mettre https au lieu de http.
et normalement en https tu devrais avoir l’image dans ton browser, sinon ce n’est pas normal.
si ton browser ne peut afficher l’image, alors jeemate non plus
Du coups ce serait plus Jeedom qui est mal configuré!
A vrai dire en interne, j’ai toujours fait du http et pour l’extérieur le dns jeedom.
Donc je me suis jamais occupé de ça.
Je vais voir …
on a un template de scenario pour tester les notifs, dont image, qui est pratique pour vérifier. de mon coté cela fonctionne, mais je vais essayer de reproduire ton cas, peut etre le nom du fichier ou autre chose dans l’url qui coince. je te redis ça
Bon, j’ai activé le module ssl d’apache2
puis activé default-ssl.conf (rien touché dedans)
redémarré apache2
Jeedom est accessible en https maintenant.
Dans mon firefox j’accède à mon image en https.
Mais toujours même problème, notif sans image avec ça:
Je viens aussi de tester le template, et pas de souci pour l’importer, c’est d’ailleurs grace à lui en comparant que j’ai remarqué qu’il te manque le param layout