Images (ou autres fichiers) dans les notifications

Hello,

J’ai testé sous la version ios en beta (avec le plugin en beta) et la version android en stable (avec le plugin en stable), jeedom v4.1.x dans les 2 cas mais ca ne changera rien.

Dans les 2 cas j’ai le problème suivant:
J’envoie donc des notifications depuis une commande « envoyer une capture » du #plugin-arlo et pas du #plugin-camera (que je n’utilise pas) mais elle fonctionne grosso-modo pareil: dans les 2 cas les plugins sauvent les captures dans un dossier local.

pour la forme, voici un exemple du log:

[2021-08-08 17:47:45][INFO] : Send notification with data {"type":"DISPLAY_NOTIF","payload":{"cmdId":"6004","title":"capture","message":"capture","answer":null,"timeout":null,"files":["\/var\/www\/html\/plugins\/arlo\/data\/snapshots\/55xxxxx548\/20xxxxxxxxxxx862.jpg"],"time":1628437665,"id":"defaultNotif","channel":"default","index":0}}
[2021-08-08 17:47:45][DEBUG] : Send output : 2021/08/08 17:47:45 {"multicast_id":903xxxxxxxxx3562,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"162xxxxxxx55"}]}

L’envoi de notification avec snapshot depuis arlo fonctionnent bien avec #plugin-mail ou avec #plugin-telegram par exemple mais avec #plugin-jeedomconnect l’image ne s’affiche pas et la raison est que jeedomConnect génère un lien http vers l’image alors que les autres inclus l’image (en tant que fichier) dans le message.

Hors dans le plugin arlo j’ai bloqué l’accès au images en direct car ce n’est protégé par aucune authentification; je suis d’ailleurs surpris que le plugin caméra ne bloque pas cela… cela veut dire que toutes vos captures et enregistrement de caméras sont accessibles par n’importe qui sur internet :frowning:

bref, quand l’app (jeedomconnect) veut afficher l’image, elle recoit un 403 du server web de jeedom évidement, je retrouve bien l’appel en statut 403 dans mes logs.
si je permet l’accès directe cela fonctionne, la capture s’affiche mais je suis pas vraiment chaud de permettre un accès libre aux captures :worried:

Est-ce qu’il serait envisageable d’adapter cela et d’inclure le fichier dans la notification?

L’alternative que je vois, peut-être plus simple, serait que le plug-in fasse proxy. Donc que l’app appelle une api du plug-in avec le path du fichier et celui-ci serait retourné en réponse, l’api serait protégée par la clé api du plug-in.
J’ai fait cela dans le plug-in arlo, je peux donner le code pour faire cela et il y aurait juste un changement d’URL à faire dans l’app.

Pour ios je sais pas dire

Mais pour android il me semble que @jared-94 passe par un service google, et qu il faut mieux eviter d envoyer de trop gros volume. D ou le fait que ca soit une url qui soit envoyée pour qu ensuite ce soit l appareil qui fasse le telechargement (et donc le « volume » passe en direct de l appareil au jeedom.

Ca ca peut par contre etre une bonne alternative par contre !

OK je te fais un pr avec cette solution côté plug-in ainsi t’as le code directement et tu peux voir ce que je propose mais bien sur le merge sera à faire seulement si validé et que l’app est modifiée.

En theorie en fonction de comment tu le fais, on devrait pouvoir merger sans attendre l appli. Les 2 solutions devraient pouvoir cohabiter !?

  • commande d envoie continue a envoyer l url ou trouver le fichier
  • une nouvelle ressource exposee sur l api qui prend en input l url, et qui retourne l img encodé en reponse

L appli a donc 2 facons d appeler :

  • en direct l url (-> fonctionnement actuel)
  • en passant par l api (-> fonction de demain)
    Donc en théorie pdt le laps de temps on casse rien !?

Oui tout à fait on casse rien.
C’est même préférable que le plug-in soit changé avant en fait, j’ai parlé trop vite.

Mais ça ne fonctionnera avec d’autres plug-in que lorsque l’app sera aussi modifiée.

Ça résoudrait le temps d’affichage des images et vidéos? Pour l’instant c’est ce qui m"empêche de basculer mes notif telegram vers JC. Telegram me montre l’image dans la notif directement et l’affichage image dans la notif est rapide ainsi que la vidéo. Beaucoup plus long dans JC pour l’instant

Non, puisque ca fait tjs 1 appel supplementaire

Les notifications passent par le service Fierbase Cloud Message de Google et chaque message ne peut excéder 4ko.

Du coup hors de question d’envoyer le fichier dans le message.
Une solution possible serait en effet de passer par l’api JC, comme le fait déjà les Snapshots du widget caméra.

Je pense que telegram compresse l’image du coup c’est plus rapide à charger

Possible pour la compression.
Dommage c’est le point qui fait que je garde telegram vs JC. J’ai quelque notif sur JC mais uniquement du texte et ça fonctionne bien maintenant

Je ne comprend pas le problème du délai je dois dire, les images s’affichent instantanément (si je débloque le 403 chez moi)
Évidemment comme l’app va les chercher sur ton jeedom au moment d’afficher la notif cela peut dépendre de la vitesse de la connexion du téléphone à ce moment et de la vitesse la connexion internet de jeedom :thinking:

Ca vient sûrement de la connexion de mon jeedom. On a pas la fibre et seulement 5mb/s en download et moins de 1 en up… la notif reste donc vide quelques secondes et les vidéos sont longue à arriver laou j’ai tout tout de suite sur telegram le temps d’ouvrir la notif la vidéo est lisible

Oui, comme je l’indiquais, pour telegram le fichier est joint au message dans la notification.

Voilà d’où ma question plus haut de savoir si ça améliorerait les choses mais le grand chef a dit non. Je vais suivre le sujet de loin en attendant d’avoir le comportement attendu

pour le moment tu ne l’auras pas …

à moins d’envoyer de vraiment très très petit photo …!

2 « J'aime »

Mais je me demande si le plugin caméra ne peut pas compresser l’image directement…

Non je ne pense pas, un jpg c’est déjà un format compressé, à un moment il n’y a pas de magie: l’image va prendre de la place.

1 « J'aime »

C’est une honte ! :grin: :joy:

A tester, dispo dans la 21.7 ! :wink:

1 « J'aime »

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