Widget caméra et Wanscam(q3s)

Tags: #<Tag:0x00007fa7a9b89860>

Bonjour,

J’ai 2 problèmes avec cette caméra et le widget.

  1. Cette caméra n’accepte le login/mot de passe que dans l’entête http. Serait-il possible, comme dans le plugin camera, d’avoir la possibilité de saisir le login et le mot de passe et, si ils sont présents, de les mettre dans l’entête http
    image
if ($this->getConfiguration('username') != '') {
    $userpwd = $this->getConfiguration('username') . ':' . $this->getConfiguration('password');
    curl_setopt($ch, CURLOPT_USERPWD, $userpwd);
    $headers = array(
         'Content-Type:application/json',
         'Authorization: Basic ' . base64_encode($userpwd),
    );
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
}
  1. Sur cette caméra, les commandes de mouvement ne s’arrêtent que si on envoie une commande stop. Serait-il possible de pouvoir ajouter un nombre n de commande sur le widget. Ça permettrait d’ajouter la commande stop ainsi que les commandes diverses et variées existantes sur cette caméra (il y en a une vingtaine dans le plugin caméra)

Merci

Salut !

  1. est ce uniquement pour les snapshot ou aussi pour le flux vidéo qu’il faut les entêtes ?

  2. il y a désormais cette possibilité via l’ajout de widgets

Bonjour,
Pour le 1, c’est pour tout :wink:
Pour le 2, je teste ça dès que je passe sur la dernière version.

Merci

t’es sur de ton coup !?
passer le user/mdp encodé en base64 dans les headers, et juste une façon de ne pas afficher le user/mdp de facon visible dans l’url …

https://www.ispyconnect.com/camera/wansview
génère pour la q3 une url :

rtsp://admin:admin@192.168.1.20/live/ch0

du coup jsuis un peu septique sur ton affirmation :thinking:

C’est une q3s (je ne sais pas si il y a une différence avec la q3) et elle n’accepte que l’authentification digest (d’où l’option CURLAUTH_ANY dans le code du plugin caméra ( c’est moi qui ait fait l’intégration de cette caméra))

J’avoue que je n’ai jamais testé le flux rstp mais il n’y a jamais eu de plainte suite à mon patch :wink:

Q3 / q3s ca na pas l air d avoir d incidence sur le site que je te donne :slight_smile:

Je ne dis pas que c est une mauvaise option :slight_smile: je dis juste que ya surement moyen de la faire fonctionner comme toutes les autres ^^

Et du coup si tu testes l url générée (avec le bon port si tu l as custom et le bon channel) dans vlc par exemple ?

Bonjour,

Au temps pour moi, le flux rtsp se contente d’une authentification classique :

vlc rtsp://login:password@192.168.0.140/live/ch0

fonctionne

par contre pour le snapshot il faut bien une authentification digest :

  • authentification classique
curl -v http://login:password@192.168.0.140/mjpeg/snap.cgi
....
< HTTP/1.1 401 Unauthorized
< WWW-Authenticate: Digest realm="IPCamera Login", nonce="132cafaf0f68b05bff95a003e86a2043", qop="auth"
....
  • authentification digest
curl -v --digest -ulogin:password http://192.168.0.140/mjpeg/snap.cgi
...
< HTTP/1.1 200 OK
....

Ça m’arrange pour le rtsp :wink:
Du coup il suffit de modifier côté plugin car les snapshot passent par Jeedom !

Et

http://login:password@192.168.0.140/snap.jpg

?
(Https ? Port custom ?)

Pas de port custom et pas de https.

< HTTP/1.1 401 Unauthorized
< WWW-Authenticate: Digest realm="IPCamera Login", nonce="341b3d6d26579ab057f8c0aa823614eb", qop="auth"

Édit : c’est bien avec http://192.168.0.140/mjpeg/snap.cgi que je récupère les images dans le plugin caméra ou dans jeedomconnect (après avoir modifié snapshot.php)

Pour info la modif que j’ai faite (en attendant)
Sur la partie configuration j’ajoute le login:motdepasse avant l’url séparé par |
image

Et ensuite la méthode getdata de snapshot.php

function getData($url) {
        $ch = curl_init();
        $param=explode('|',$url);
        $userpwd=null;
        if(count($param)==2) {
                $userpwd=$param[0];
                $url=$param[1];
        }
        else {
                $url=$param[0];
        }
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
        if( ! is_null($userpwd)) {
                curl_setopt($ch, CURLOPT_USERPWD, $userpwd);
                $headers = array(
                'Content-Type:application/json',
                'Authorization: Basic ' . base64_encode($userpwd),
                );
                curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        }
        $data = curl_exec($ch);
        if (curl_error($ch)) {
                log::add('JeedomConnect','debug', 'Error taking snapshot');
        }
        curl_close($ch);
        return $data;
}

Merci @tomdom tu nous mâches le travail :wink: