J’ai configuré sur mon installation une caméra Foscam (plugin Camera) et aussi l’accès mobile via Jeedom Connect (appli Android).
Le paramétrage de ce dernier pour un widget caméra permet de faire pas mal de choses qui fonctionnent en local (notamment via l’utilisation d’une URL protcole RTSP pour le flux RTSP, ou une URL HTTP GET pour la récupération d’un snapshot).
Je voudrais maintenant pouvoir récupérer ces snapshots depuis l’extérieur (Internet), mais pas question d’exposer un par un les ports des caméras via des NAT sur la box.
J’ai donc installé le plugin script et mon objectif est de créer un script :
Qui récupère le snapshot de la caméra, via le réseau LAN
Qui renvoie les données de cette image pour utilisation par le widget caméra de Jeedom Connect
Cet article expose quelque chose de ce type, qui fonctionne (fonctionnait ?) bien par ailleurs (testé en PHP pur).
Mais dès que je l’invoque via l’API (en utilisant le lien « URL directe » fourni dans la configuration de la commande associée au script), j’ai une page blanche là où je devrais avoir l’image brute.
J’ai bien noté la restriction mise dans le .htaccess pour forcer uniquement les appels via l’adresse de boucle 127.0.0.1, et pour moi ce n’est pas un blocage car que ce soit via l’interface en mode test ou via l’API, c’est le système local qui invoque le script PHP.
Je précise par ailleurs que je n’ai aucun souci pour les retours textes, j’obtiens bien ce que je veux. Mais quand je veux forcer le MIME de retour en image/jpeg avec les données de l’image, rien.
Comment dois-je faire pour pouvoir réaliser ça via Jeedom?
Ton retour ainsi que quelques tests que j’ai fait entre temps m’amènent plusieurs questions en une. Je ferai des questions séparées pour la lisibilité et la recherche, mais je veux bien un retour sur le point suivant :
J’arrive à obtenir un snapshot en distant, alors que j’ai spécifié une URL GET locale pour obtenir le snapshot. Cela semble signifier donc que l’appli Jeedom Connect utilise bien la connexion WS pour piloter Jeedom (point d’entrée unique), qui lui invoque l’URL en local pour récupérer le snapshot.
C’est ça que tu veux dire en soulignant le fait qu’il n’est pas nécessaire d’exposer les ports directs des caméras à l’extérieur via le routeur de la box ?
Comme tu sembles bien connaître ce point j’ai 2 questions corollaires :
Pour faire passer le flux vidéo, y a-t-il à ta connaissance une autre solution qu’exposer le port adéquat caméra par caméra ?
Bien que je n’ai choisi de remplir que l’URL pour les snapshots et le flux (la partie commande est vide dans l’équipement créé dans le plugin Jeedom Connect), lorsque je l’importe côté app mobile, la partie commande est remplie pour les 2, par une commande « Flux vidéo » (que je n’ai pas créé de mémoire d’ailleurs). Comme dit la doc, il faut soit la commande soit l’URL et je suis obligé de la supprimer manuellement côté app mobile pour faire fonctionner la partie snapshot en distant. On dirait qu’à chaque récupération du widget, ça le refait. Ça t’évoque quelque chose?
Non pas à ce jour.
Ce n’est pas impossible mais voilà, ça n’a juste pas été fait (encore). Il y a quelques challenge techniques malgré tout.
Je n’ai rien compris
P-e mieux d’ouvrir un nouveau sujet avec le tag jc et exposer la question avec capture et toutes les infos. (Et avoir fait une petite recherche avant pour vérifier si vous ne trouvez pas la réponse dans un des posts existant)