Rendu mobile image base64

Bonjour à tous,

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.

Si quelqu’un a une idée ?
Merci d’avance

Hello,

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.
image

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.

Bad

Bonjour Enlil,

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));
   

?>
1 « J'aime »

Merci beaucoup pour vos réponse.

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

salut.
peut etre tester en https au lieu de http. si c’est ok je regarderai ce que je peux faire.

Merci de ta réponse.
Quand je met cette adresse dans mon navigateur, j’ai la connexion à échoué:

https://xxx.xxx.xxx.xxx/plugins/script/data/Images/1711278163.427018-yku7tk.jpg

Donc j’ai essayé quand même avec la notif de jeemate et https, pas d’image non plus.
avec ce scenario:

Si tu arrive à me débloquer cela , je pense essayer directement avec l’api de frigate sous cette forme:

http://xxx.xxx.xxx.xxx:5000/api/events/#[Sécuritée][Frigate Events][ID]#/snapshot.jpg

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

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.

Je suis chez moi, accès via le réseau interne.

Dans ta capture, dans le scenario, le https + l’ip locale, ça ne fonctionnera pas. il faut ton nom de domaine à la place.

Je regarde cela …


toujours pas, message sans image.

je serai intéressé pour connaître la résolution de ton jpg

voilà,
image

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 :slight_smile:

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 …

1 « J'aime »

J’ai fait un petit essai avec le dns jeedom.
Mon navigateur affiche bien la photo.
et pour Jeemate j’ai mis ça:

title=Test image;;bigPicture=https://xxxxxxx.eu.jeedom.link/plugins/script/data/Images/#[Sécuritée][Frigate Events][ID]#.jpg

Et bien, toujours pas d’image dans ma notif

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

Je l’ai vue dans la doc, mais impossible de le loader

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:

title=Test image;;bigPicture=https://jeedom-vm/plugins/script/data/Images/#[Sécuritée][Frigate Events][ID]#.jpg

Attention certificat auto-signé

J’ai essayé avec un nom de fichier simple: 1711283359.jpg
Même chose.

J’ai essayé avec un .htaccess, dans repertoire …/Images:

Order allow,deny
<Files ~ "\.(jpg|jpeg|png|gif|JPG|JPEG|PNG|GIF)$">
allow from all
</Files>
Deny from all

et un titre:

title=Test image;;bigPicture=https://jeedom-vm/plugins/script/data/Images/1711283359.jpg

Le fichier est bien présent dans le répertoire, accessible avec firefox.
Toujours pas d’image dans ma notif.

re

ça fonctionne de mon coté. il te manque un bout dans le scenario. Il faut que tu indiques quel type de layout (notificationLayout=bigPicture)


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

Pour être sûr, à tu testé avec une image basique trouvé sur le web ?

Par exemple dans la notification de test j’utilise ceci :

j’ai été plus rapide, pour une fois :stuck_out_tongue_winking_eye:

1 « J'aime »

Oui … :joy:
j’ai essaye avec cette photo:

title=Test image;;notificationLayout==bigPicture;;bigPicture=https://i0.wp.com/images.leblogduhacker.fr/2014/07/Tux-G2.jpg

ne fonctionne pas, tu peux essayer?