Vera : capturer une image depuis une caméra IP

Voici une petite fonction permettant, à partir d’une Vera Lite, de capturer une photo avec une caméra IP.

-- Capturer une image d'une caméra IP et la placer dans le fichier spécifié
-- requete : requête permettant la capture de l'image
-- cible   : le chemin de l'image (ex : "/root/img.jpg")
function josdCaptureImageCamera(camera, cible)
  local out=assert(io.open(cible, "wb"))
  local _,data=luup.inet.wget(requete)
  out:write(data)
  assert(out:close())
end

En complément, ce billet présente des requêtes permettant de capturer des images depuis des caméras IP D-Link. Ce billet propose une fonction permettant d’envoyer un courriel avec des images en pièce jointe.

Attention, ces captures peuvent consommer trop de ressources pour la Vera lite (cf. Vera Lite : Plantage sévère).

Sommaire Domotique sur ce blog

Cette entrée a été publiée dans Domotique, Tutoriels, Surveillance and taguée , , . Placez un signet sur le permalien.

5 Responses to Vera : capturer une image depuis une caméra IP

  1. Fred

    Bonjour,
    Un grand merci tout d’abord à la qualité de ce blog, mine d’informations, que j’ai mis dans mes favoris depuis pas mal de temps…
    Je vous avais déjà contacté concernant mon problème de code luup pour envoyer des images par mail.
    Je suis aujourd’hui (sans grandes compétences code) en train d’essayer de faire marcher votre script pour récupérer une image de ma caméra IP.
    Je parviens à « écrire » mon fichier image, mais il a une taille de zero Ko.
    Pourriez vous prendre une minute de votre précieux temps, et me donner une piste pour voir ce qu’il cloche?
    Un immense merci d’avance,
    Frederic.

    Code:
    J’ai mon port à la place de PORT, ainsi que user et pwd de complétés.

    local cible= »C:/Users/Public/test.jpg »
    local requete= »http://192.168.0.22:PORT/snapshot.cgi?user=xxx&pwd=xxx »
    local out=assert(io.open(cible, »wb »))
    local data=luup.inet.wget(requete)
    out:write(data)
    assert(out:close())

    Reply
    • Laurent Post author

      Bonjour,
      L’url dépend de votre caméra IP. Le problème vient peut-être de là ?
      Obtenez vous bien l’image en collant cette même url dans un navigateur ?

      Reply
  2. Fred

    Bonsoir,
    Je me permets de vous contacter, quasiment un an plus tard…
    J’ai laissé pendant un moment de côté l’enregistrement de mes caméras, et je ne faisais que les consulter à distance.
    Il y a quelques semaines j’ai décidé de remettre à plat tout mon système domotique, et de mettre les caméras à leur juste place, à savoir enregistrer des images en cas d’effraction.
    J’ai cherché en vain sur Internet, et je ne trouve pas le type de solution que vous proposez qui parait simplissime, mais j’ai toujours un problème de code.
    J’ai tenté plusieurs syntaxes, mais j’obtiens toujours le même résultat, un fichier enregistré qui fait zero Ko, et qui ne s’affiche donc pas.
    Ce que je ne comprends pas, c’est que j’obtiens bien une image en tapant ma requête Http, et si je clique dessus, clic droit, je peux « l’enregistrer sous », et elle fait 30Ko, 640×320.
    Mais le code me renvoie un fichier vide.
    Il faut absolument que je puisse valider cette étape afin d’avancer dans le reste de mon intégration (j’aimerai les envoyer sur un cloud). Petite précision, je n’arrive pas à intégrer les caméras dans ma Vera, ça a toujours buggé, et je préfère passer par du code luup qu’un module instable.
    Pourriez vous m’aider en mp?
    Un grand merci d’avance,
    Frederic.

    Reply
    • Laurent Post author

      Bonjour,
      J’ai entièrement déporté l’intelligence de ma domotique (http://gurau-audibert.hd.free.fr/josdblog/2014/10/quelle-architecture-pour-sa-domotique/) sur un Raspberry en utilisant du code Lua. Cela me permet d’interfacer plusieurs box et rend ma solution plus flexible et moins dépendante. Pour capturer des images, je fais des http.request() en Lua directement sur l’URL de l’image de la caméra.
      Cordialement, Laurent

      Reply
      • Fred

        Bonsoir,
        Merci pour votre réponse rapide. Vous avez franchi les étapes du raisonnement que je me faisais au fur et à mesure que je construisais mon système domotique…, et vous êtes passé à la pratique. J’ai également investi dans un Raspberry, et j’étudiais les options de paramétrage, domoticz ou non, etc. Mais en attendant « transférer » l’intelligence de la Vera sur le Rasp, je voulais continuer mon « apprentissage » et faire fonctionner ces maudites caméras.
        Je ne suis pas programmeur, un lointain langage Basic (Asmtrad CPC 6128, attention nostalgie, vintage, voire roots?!!), mais comme vous le dites je trouve le langage lua « élégant », et souhaite apprendre et continuer avec ce dernier.
        J’apprends par forum, blogs, tests, de manière autodidacte, donc à une vitesse très très lente…Quoiqu’il en soit, j’arrive à me débrouiller à faire ce que je veux, mais je bloque sur cette étape qui est essentielle: je n’arrive pas à enregistrer d’image, toujours un fichier à zero Ko… Seriez vous ok pour que je vous transfère l’adresse http de mes caméras avec un mdp provisoire pour que vous fassiez un test?
        Nous pourrions éventuellement continuer l’échange par MP.
        Un grand merci d’avance,
        Frédéric.

        Reply

Répondre à Fred Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *