Partage
  • Partager sur Facebook
  • Partager sur Twitter

control d'une camera PTZ

client http C++

Sujet résolu
    11 juin 2010 à 10:58:03

    Bonjour,
    Pour mon stage je doit réaliser un programme de suivit d'un object grace a une caméra Ip axis. Je cherche, via mon client http codé en C++ a controler le mouvement de cette camera grace à une requete de ce genre :

    http://10.x.xx.xx/axis-cgi/com/ptz.cgi?center=200,200
    


    Cette requete fonctionne très bien lorsque je la lance depuis la barre d'adresse de mon navigateur web, la camera se centre bien sur le point (200,200). Mais lorsque je lance cette requete depuis mon client http avec la commande suivante :

    ./bin/httpget http://10.x.xx.xx/axis-cgi/com/ptz.cgi?center=200,200
    


    Rien ne se passe. Je recoit seulement la reponse

    302 found
    


    de la part du serveur de la camera. J'ai lu sur un blog (http://pierrepouzol.wordpress.com/page/2/) que le parametre "camera=1" devait etre rajouter en cas de requete depuis un programme autre que le navigateur web, mais cela ne fonctionne toujours pas. La reponse dans ce cas la est :

    (...)/httpget2$ ./bin/httpget http://10.x.xx.xx/axis-cgi/com/ptz.cgi?camera=1&center=200,200
    [1] 2324
    (...)/httpget2$ 302 Found
    


    Quelqu'un a t il deja reussit a controler une camera axis avec ce genre de requete ?

    Merci de votre aide !

    P.S : le passage important du blog cité plus haut :

    Citation

    J’ai donc aujourd’hui cherché à incorporer de nouvelles fonctions, à savoir les continuousmove, et les preset position.

    Pour se faire, je savais que les commandes devaient être de la forme suivante;

    http://cam01/axis-cgi/com/ptz.cgi?gotoserverpresetno=1 et

    http://cam01/axis-cgi/com/ptz.cgi?continuouspantiltmove=1,-1.

    Le problème que j’ai rencontré aujourd’hui, c’est qu’un fois codé et incorporé dans l’applet, rien ne se passait. En effet, les commandes étaient bien formée comme ci-dessus, visiblement l’envoie de requête se faisait correctement, bref tout allait bien, mais rien ne changeait à l’écran.

    J’ai donc cherché à comprendre pourquoi. La première étape fut de vérifier que la commande(copier coller depuis la sortie d’éclipse) fonctionnait dans un web browser. En effet, la commande s’effectuait sans problème. J’ai donc continué à coder tout en réfléchissant à ce problème. Pendant ce temps j’ai donc inclus les nouvelles fonctionnalités de continuousmove(qui rencontrait le même problème), géré un problème de perte de focus entraînant une perte de contrôle possible au clavier, gérer les évènements de prise/perte de focus sur les textezone (lors de la prise de focus, on sélectionne tout le contenu, à la perte on update les observer), commenter les grandes parties de mon code etc…sans trouver la raison qui faisait que cela ne marchait pas.

    En réalité, ce qui m’a trompé a été le test sur le navigateur. En effet, si cette fonctionnalité marche via navigateur, la commande n’est pas la même lorsqu’on la lance depuis une applet java. En effet il faut, comme pour les autres fonctionnalités, inclure le morceau de code camera=1 devant les arguments.

    Les commandes devenaient alors:

    http://cam01/axis-cgi/com/ptz.cgi?came [...] verpresetno=1 et

    http://cam01/axis-cgi/com/ptz.cgi?camera=1&continuouspantiltmove=1,-1

    Une fois ceci fait, les commandes passent par l’applet. On peut donc maintenant contrôler directement des mouvements continues et pré-enregistré.


    • Partager sur Facebook
    • Partager sur Twitter
      11 juin 2010 à 12:30:21

      Une erreur HTTP 302 signifie que le document à changé d'emplacement, as tu essayé de suivre l'adresse donnée par l'erreur 302 ?
      • Partager sur Facebook
      • Partager sur Twitter
        14 juin 2010 à 10:07:24

        Le probleme c'est que la page me renvoie seulement un "302 found". Et l'objet Httpresponse est vide. Aucune trace de champ "location=..."... Ce que j'ai bien du mal a comprendre !
        • Partager sur Facebook
        • Partager sur Twitter
          14 juin 2010 à 10:15:12

          Essaie de faire la requête avec l'User Agent de ton navigateur ;)
          • Partager sur Facebook
          • Partager sur Twitter
            14 juin 2010 à 10:20:35

            Citation : cochet.stephanie

            Le probleme c'est que la page me renvoie seulement un "302 found". Et l'objet Httpresponse est vide. Aucune trace de champ "location=..."... Ce que j'ai bien du mal a comprendre !



            A priori dans le champ location se trouve la nouvelle adresse où est située la page.
            • Partager sur Facebook
            • Partager sur Twitter
              14 juin 2010 à 14:59:55

              @GrecKo : il n'y a PAS de champ "location=<redirection>" ! C'est bien mon probleme... :lol:

              @Nicolas : merci de l'astuce :) , j'ai beaucoup espéré mais... Ca ne marche pas, dommage ! J'ai tenté avec plusieur user agent différents, mais le serveur reste toujours muet et la camera ne bouge pas. Lorsque je lance la requete http depuis mon navigateur, le serveur me renvoi egalement un "302 found" sans "location" donc je pense que cette reponse est normale. Par contre la camera ne bouge pas avec on programme alors qu'avec le navigateur si. Peut etre que le serveur refuse d'executer ma requette ? Est elle bien formée ou bien les parametres de la query doivent etre placés différement ?

              Voila la requete envoyée :
              GET /axis-cgi/com/ptz.cgi?camera=1&center=10,10 HTTP/1.1
              Host: 10.xx.xx.xx
              User-Agent: Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9b5) Gecko/2008041514 Firefox/3.0b5
              


              voila la reponse :
              302 Found
              No message received
              

              • Partager sur Facebook
              • Partager sur Twitter
                14 juin 2010 à 15:15:56

                Essaye peut-etre de faire la requete avec libcurl.
                Désolé pour mes conseils prolifiques mais c'est tout ce que je vois pour l'instant :)
                • Partager sur Facebook
                • Partager sur Twitter
                  14 juin 2010 à 15:53:31

                  Je viens de tenter avec curl :

                  (...)$ curl http://10.xx.xx.xx/axis-cgi/com/ptz.cgi?camera=1&center=10,10
                  [1] 6109
                  


                  Rien a faire, la caméra reste désespérement immobile. Je suppose que c'est le probleme de faire son stage dans un labo de recherche... Personne ne peut vraiment vous aider... snif ! :(
                  Ce qui est déprimant cest que je suis sure que c'est un truc du genre "rajouter camera=1" dans la requete... Mais le support d'aide en ligne axis refuse de me repondre...
                  • Partager sur Facebook
                  • Partager sur Twitter
                    14 juin 2010 à 16:59:57

                    Y'a peut être un truc de coincé dans les engrenages du moteur de le caméra :)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      15 juin 2010 à 22:03:24

                      Prend Firefox et utilise Live Headers pour voir ce que le navigateur envoie à la cam
                      • Partager sur Facebook
                      • Partager sur Twitter
                        16 juin 2010 à 10:40:24

                        Merci !
                        J'ai installé l'add-on et verifié la requete de firefox. La voici :

                        GET /axis-cgi/com/ptz.cgi?camera=1&center=10,10 HTTP/1.1
                        Host: 10.xx.xx.xx
                        User-Agent: Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3
                        Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
                        Accept-Language: fr,en-us;q=0.7,en;q=0.3
                        Accept-Encoding: gzip,deflate
                        Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
                        Keep-Alive: 115
                        Connection: keep-alive
                        Cookie: ptz_ctl_id=41755
                        


                        Je me suis empressée de la copier et de l'envoyer avec mon programme et ça fonctionne à merveille. Il semble que ce soit le cookie qui soit obligatoire. S'il n'est pas présent la requete n'est pas executée et le serveur renvoi "302 found" alors que lorsqu'il est présent, on recoit "204 no content" et la camera bouge correctement ! Je vais donc m'ateler a reccupérer ce fameux cookie comme il se doit...

                        Merci beaucoup ;)
                        • Partager sur Facebook
                        • Partager sur Twitter

                        control d'une camera PTZ

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown