Plugin Reolink (en beta)

ok.

J’ai une autre info a te donner. j’ai testé ton plugin avec mes cameras « AI » et de temps en temps, après que la commande de login soit passé correctement, tous les commandes exécutées retournent un payload crypté. Je l’avais déjà constaté avec des scripts perso.

voici le log de ma camera ayant eu ce problème :
[2022-01-25 03:54:41][DEBUG] : URL de requête => ://192.168.1.23:443/cgi-bin/api.cgi?cmd=Login&token=
[2022-01-25 03:54:41][ERROR] : HTTP code 0 NOK Protocol "" not supported or disabled in libcurl
[2022-01-25 03:54:41][ERROR] : Erreur lecture réponse
[2022-01-25 03:54:41][ERROR] : Echec > Login impossible
[2022-01-25 03:54:41][ERROR] : Connection à la caméra NOK
[2022-01-25 03:54:46][DEBUG] : Vérification à 1643079286 du TOKEN :  Valable jusqu'a : -15
[2022-01-25 03:54:46][DEBUG] : Aucun API Token > récupération nécéssaire
[2022-01-25 03:54:46][DEBUG] : Camera login...
[2022-01-25 03:54:46][DEBUG] : =========================================================
[2022-01-25 03:54:46][DEBUG] : URL de requête => http://192.168.1.23:80/cgi-bin/api.cgi?cmd=Login&token=
[2022-01-25 03:54:46][DEBUG] : HTTP code 200 OK
[2022-01-25 03:54:46][DEBUG] : Payload => [{"cmd":"Login","action":0,"param":{"User":{"userName":"admin","password":"******"}}}]
[2022-01-25 03:54:46][DEBUG] : Réponse caméra >> [{"cmd":"Login","code":0,"value":{"Token":{"leaseTime":3600,"name":"b7975277449a735"}}}]
[2022-01-25 03:54:46][DEBUG] : TOKEN récupéré, enregistrement OK
[2022-01-25 03:54:46][INFO] : Connection à la caméra réussie
[2022-01-25 03:54:48][DEBUG] : Obtention des informations de la caméra
[2022-01-25 03:54:48][DEBUG] : Vérification à 1643079288 du TOKEN : b7975277449a735 Valable jusqu'a : 1643082871
[2022-01-25 03:54:48][DEBUG] : API Token OK
[2022-01-25 03:54:48][DEBUG] : =========================================================
[2022-01-25 03:54:48][DEBUG] : URL de requête => http://192.168.1.23:80/cgi-bin/api.cgi?cmd=GetDevInfo&token=b7975277449a735
[2022-01-25 03:54:48][DEBUG] : HTTP code 200 OK
[2022-01-25 03:54:48][DEBUG] : Payload => [{"cmd":"GetDevInfo","action":0,"param":[]}]
[2022-01-25 03:54:48][DEBUG] : Réponse caméra >> vwMTSfsO+RSlwTmIS/px91Hv8g8tZ/7YshlV+o+o4OsO+3DojD2qJwVF3b9ZeriUWk7Vz6goG0HmHb472T+ukLqMFUuCe5pQfRTQSHRm5hjfsBuMMmRmHh1gMGIxzVhysprL+N+BMcn9+tnHd9UFxbJllOG8oNIVKQYfXq1+SigNlbt9pPib9dPJupxXECa82HF5Pw9piI4=
[2022-01-25 03:54:48][ERROR] : Erreur lecture réponse
[2022-01-25 03:55:18][DEBUG] : Vérification à 1643079318 du TOKEN : b7975277449a735 Valable jusqu'a : 1643082871
[2022-01-25 03:55:18][DEBUG] : API Token OK
[2022-01-25 03:55:18][INFO] : Connection à la caméra réussie
[2022-01-25 03:55:24][DEBUG] : Obtention des informations de la caméra
[2022-01-25 03:55:24][DEBUG] : Vérification à 1643079324 du TOKEN : b7975277449a735 Valable jusqu'a : 1643082871
[2022-01-25 03:55:24][DEBUG] : API Token OK

NB : j’ai relancé la connexion ce matin et cette fois-ci les payloads apparaissent en clair.

Ah… Effectivement
Et y a t-il de la doc quelque part concernant ce cryptage ?

malheureusement non.
Dans les nouveaux firmware, quand tu accède à l’interface web des cameras, les payloads sont cryptés à l’envoi et en retour.

Cela passe par une clé AES pour crypter/décrypter les payloads.

Cette clé AES est générée dès l’authentification. La méthode de génération de la clé est contenue dans le fichier js « ControllerLogin.js » -https://.../js/ControllerLogin.js-, en voici un extrait du code :

    ControllerLogin.login = function() {
        if($('#login_text_username').val() == ''){
            bc_alert('Invalid username.', 'error');
            return;
        }
        ControllerLogin.waiter.show();
        CGI.sendCommand('Login', {
            Version: 1
        },
        function(data) {
            var Realm = data.Realm;
            var Qop = data.Qop;
            var Nonce = data.Nonce;
            var Nc = data.Nc;
            var Method = data.Method;
            var Uri = data.Uri;
            var UserName = $('#login_text_username').val();
            var Password = $('#login_text_password').val();
            var Cnonce = '';
            var len = 48;
            const seed = '0123456789abcdef';
            while ( len -- > 0 ) {
                Cnonce += seed[Math.floor(Math.random() * seed.length)];
            }
            var hash1 = cryptoUtils.MD5(UserName + ':' + Realm + ':' + Password);
            var hash2 = cryptoUtils.MD5(Method + ':' + Uri);
            var Response = cryptoUtils.MD5(hash1 + ':' + Nonce + ':' + Nc + ':' + Cnonce + ':' + Qop + ':' + hash2);
            cryptoUtils.setAesKey(cryptoUtils.MD5(Nonce + '-' + Password + '-' + Cnonce).substr(0, 16).toUpperCase());
            CGI.sendCommand('Login', {
                Version: 1,
                Digest: {
                    UserName: UserName,
                    Realm: Realm,
                    Method: Method,
                    Uri: Uri,
                    Nonce: Nonce,
                    Nc: Nc,
                    Cnonce: Cnonce,
                    Qop: Qop,
                    Response: Response
                }
            },

Quand tu envoies un payload via une commande, voici ce qu’il fait (cf fichier remoteConfig.*****.js):
NB : la variable t est le payload envoyé

key: 'send',
          value: function (e, t, n) {
            var i = this;
            return this.location = CGI.getLocation(),
            w['a'].hasAesKey() && (t = w['a'].encrypt(t)),
            new Promise((function (a, r) {
              S.a.ajax({
                url: e,
                type: 'POST',
                contentType: 'application/json',
                timeout: n || i.timeout,
                data: t,
                success: function (e) {
                  a(e)
                },

Ca va poser problème ça :roll_eyes:

cela peut arriver
tu n’as pas le pb lors de l’envoi des payloads à la caméra. C’est plus côté réponse (payload en retour -cas des commandes Getxxx) où on a pas de fichier json « clair ».
Par expérience, mais sans infos Reolink, je me suis apercu de ce « dysfonctionnement » sur mes scripts quand le token était expiré et que je devait le regenere.J’étais obligé de « flusher » les infos du token existant et initié une nouvelle connexion.

Mais du coup, quand tu initie une nouvelle connexion tu as un retour en clair ou c’est systématiquement que la caméra crypte ses réponses ?

de ce que j’ai vu, c’est que la communication se fait de nouveau en clair

je ne l’ai pas fait sur mes scripts mais il y a un truc possible, si le payload de retour n’est pas « de type json » dès la premiere commande effectuée après le login → je réinitie une nouvelle connexion et donc le token. A tester

Mais après si le navigateur arrive à interpréter les réponses cryptés, il doit y avoir une solution pour l’intégrer dans le plugin.

je ne suis pas penché sur cela. La seule méthode que j’ai trouvé est celle que je t’ai indiqué

Merci, je confirme elle se connecte bien maintenant. J’ai parfois cependant un message qui me dit qu’il faut d’abord se connecter. On dirais qu’il se déco par moment…

Autrement les PTZ, il y a qu’une seule camera qui les à récupérés. Les 2 autres c’est vide.

Voilà le log après un refresh j’ai fait un click sur le bouton récup PTZ et on vois bien à la fin du log qu’il a lancé la commande puis plus rien… :

[2022-01-25 10:33:53][DEBUG] : Action demandé : refresh
[2022-01-25 10:33:53][DEBUG] : Vérification à 1643103233 du TOKEN : 9b9f6f0ac2dcef5 Valable jusqu'a : 1643106132
[2022-01-25 10:33:53][DEBUG] : API Token OK
[2022-01-25 10:33:53][DEBUG] : =========================================================
[2022-01-25 10:33:53][DEBUG] : URL de requête => http://192.168.11.91:1080/cgi-bin/api.cgi?cmd=GetPush&token=9b9f6f0ac2dcef5
[2022-01-25 10:33:53][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:53][DEBUG] : Payload => [{"cmd":"GetRec","action":0,"param":{"channel":0}}]
[2022-01-25 10:33:53][DEBUG] : Réponse caméra >> [{"cmd":"GetRec","code":0,"value":{"Rec":{"channel":0,"overwrite":0,"postRec":"15Seconds","preRec":0,"schedule":{"enable":0,"table":"111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"}}}}]
[2022-01-25 10:33:53][DEBUG] : =========================================================
[2022-01-25 10:33:53][DEBUG] : URL de requête => http://192.168.11.91:1080/cgi-bin/api.cgi?cmd=GetAudioAlarm&token=9b9f6f0ac2dcef5
[2022-01-25 10:33:53][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:53][DEBUG] : Payload => [{"cmd":"GetEmail","action":0,"param":[]}]
[2022-01-25 10:33:53][DEBUG] : Réponse caméra >> [{"cmd":"GetEmail","code":0,"value":{"Email":{"addr1":"","addr2":"","addr3":"","attachmentType":1,"interval":"5Minutes","nickName":"","password":"","schedule":{"enable":0,"table":"111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"},"smtpPort":465,"smtpServer":"smtp.gmail.com","ssl":1,"supportTextType":1,"supportVideo":1,"textType":1,"userName":""}}}]
[2022-01-25 10:33:53][DEBUG] : =========================================================
[2022-01-25 10:33:53][DEBUG] : URL de requête => http://192.168.11.91:1080/cgi-bin/api.cgi?cmd=GetEnc&token=9b9f6f0ac2dcef5
[2022-01-25 10:33:53][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:53][DEBUG] : Payload => [{"cmd":"GetEnc","action":0,"param":{"channel":0}}]
[2022-01-25 10:33:53][DEBUG] : Réponse caméra >> [{"cmd":"GetEnc","code":0,"value":{"Enc":{"audio":1,"channel":0,"mainStream":{"bitRate":4096,"frameRate":20,"height":1920,"profile":"High","resolution":54,"size":"2560*1920","width":2560},"subStream":{"bitRate":384,"frameRate":7,"height":480,"profile":"High","resolution":28,"size":"640*480","width":640}}}}]
[2022-01-25 10:33:53][DEBUG] : =========================================================
[2022-01-25 10:33:53][DEBUG] : URL de requête => http://192.168.11.91:1080/cgi-bin/api.cgi?cmd=GetRec&token=9b9f6f0ac2dcef5
[2022-01-25 10:33:53][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:53][DEBUG] : Payload => [{"cmd":"GetIrLights","action":0,"param":[]}]
[2022-01-25 10:33:53][DEBUG] : Réponse caméra >> [{"cmd":"GetIrLights","code":0,"initial":{"IrLights":{"state":"Auto"}},"range":{"IrLights":{"state":["Auto","Off"]}},"value":{"IrLights":{"state":"Auto"}}}]
[2022-01-25 10:33:53][DEBUG] : =========================================================
[2022-01-25 10:33:53][DEBUG] : URL de requête => http://192.168.11.91:1080/cgi-bin/api.cgi?cmd=GetPowerLed&token=9b9f6f0ac2dcef5
[2022-01-25 10:33:53][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:53][DEBUG] : Payload => [{"cmd":"GetPush","action":0,"param":[]}]
[2022-01-25 10:33:53][DEBUG] : Réponse caméra >> [{"cmd":"GetPush","code":0,"value":{"Push":{"schedule":{"enable":1,"table":"111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"}}}}]
[2022-01-25 10:33:53][DEBUG] : =========================================================
[2022-01-25 10:33:53][DEBUG] : URL de requête => http://192.168.11.91:1080/cgi-bin/api.cgi?cmd=GetFtp&token=9b9f6f0ac2dcef5
[2022-01-25 10:33:53][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:53][DEBUG] : Payload => [{"cmd":"GetAudioAlarm","action":0,"param":[]}]
[2022-01-25 10:33:53][DEBUG] : Réponse caméra >> [{"cmd":"GetAudioAlarm","code":0,"value":{"Audio":{"schedule":{"enable":0,"table":"111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"}}}}]
[2022-01-25 10:33:53][DEBUG] : =========================================================
[2022-01-25 10:33:53][DEBUG] : URL de requête => http://192.168.11.91:1080/cgi-bin/api.cgi?cmd=GetIrLights&token=9b9f6f0ac2dcef5
[2022-01-25 10:33:53][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:53][DEBUG] : Payload => [{"cmd":"GetEnc","action":0,"param":{"channel":0}}]
[2022-01-25 10:33:53][DEBUG] : Réponse caméra >> [{"cmd":"GetEnc","code":0,"value":{"Enc":{"audio":1,"channel":0,"mainStream":{"bitRate":4096,"frameRate":20,"height":1920,"profile":"High","resolution":54,"size":"2560*1920","width":2560},"subStream":{"bitRate":384,"frameRate":7,"height":480,"profile":"High","resolution":28,"size":"640*480","width":640}}}}]
[2022-01-25 10:33:53][DEBUG] : =========================================================
[2022-01-25 10:33:53][DEBUG] : URL de requête => http://192.168.11.91:1080/cgi-bin/api.cgi?cmd=GetRec&token=9b9f6f0ac2dcef5
[2022-01-25 10:33:53][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:53][DEBUG] : Payload => [{"cmd":"GetRec","action":0,"param":{"channel":0}}]
[2022-01-25 10:33:53][DEBUG] : Réponse caméra >> [{"cmd":"GetRec","code":0,"value":{"Rec":{"channel":0,"overwrite":0,"postRec":"15Seconds","preRec":0,"schedule":{"enable":0,"table":"111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"}}}}]
[2022-01-25 10:33:53][DEBUG] : =========================================================
[2022-01-25 10:33:53][DEBUG] : URL de requête => http://192.168.11.91:1080/cgi-bin/api.cgi?cmd=GetAudioAlarm&token=9b9f6f0ac2dcef5
[2022-01-25 10:33:53][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:53][DEBUG] : Payload => [{"cmd":"GetPowerLed","action":0,"param":[]}]
[2022-01-25 10:33:53][DEBUG] : Réponse caméra >> [{"cmd":"GetPowerLed","code":0,"range":{"PowerLed":{"state":["On","Off"]}},"value":{"PowerLed":{"channel":0,"state":"On"}}}]
[2022-01-25 10:33:53][DEBUG] : =========================================================
[2022-01-25 10:33:53][DEBUG] : URL de requête => http://192.168.11.91:1080/cgi-bin/api.cgi?cmd=GetAutoFocus&token=9b9f6f0ac2dcef5
[2022-01-25 10:33:53][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:53][DEBUG] : Payload => [{"cmd":"GetFtp","action":0,"param":[]}]
[2022-01-25 10:33:53][DEBUG] : Réponse caméra >> [{"cmd":"GetFtp","code":0,"value":{"Ftp":{"anonymous":0,"interval":30,"maxSize":100,"mode":0,"password":"","port":21,"remoteDir":"","schedule":{"enable":0,"table":"111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"},"server":"","streamType":0,"userName":""}}}]
[2022-01-25 10:33:53][DEBUG] : =========================================================
[2022-01-25 10:33:53][DEBUG] : URL de requête => http://192.168.11.91:1080/cgi-bin/api.cgi?cmd=GetEmail&token=9b9f6f0ac2dcef5
[2022-01-25 10:33:53][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:53][DEBUG] : Payload => [{"cmd":"GetIrLights","action":0,"param":[]}]
[2022-01-25 10:33:53][DEBUG] : Réponse caméra >> [{"cmd":"GetIrLights","code":0,"initial":{"IrLights":{"state":"Auto"}},"range":{"IrLights":{"state":["Auto","Off"]}},"value":{"IrLights":{"state":"Auto"}}}]
[2022-01-25 10:33:53][DEBUG] : =========================================================
[2022-01-25 10:33:53][DEBUG] : URL de requête => http://192.168.11.91:1080/cgi-bin/api.cgi?cmd=GetPowerLed&token=9b9f6f0ac2dcef5
[2022-01-25 10:33:53][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:53][DEBUG] : Payload => [{"cmd":"GetRec","action":0,"param":{"channel":0}}]
[2022-01-25 10:33:53][DEBUG] : Réponse caméra >> [{"cmd":"GetRec","code":0,"value":{"Rec":{"channel":0,"overwrite":0,"postRec":"15Seconds","preRec":0,"schedule":{"enable":0,"table":"111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"}}}}]
[2022-01-25 10:33:53][DEBUG] : =========================================================
[2022-01-25 10:33:53][DEBUG] : URL de requête => http://192.168.11.91:1080/cgi-bin/api.cgi?cmd=GetAudioAlarm&token=9b9f6f0ac2dcef5
[2022-01-25 10:33:53][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:53][DEBUG] : Payload => [{"cmd":"GetAutoFocus","action":0,"param":{"channel":0}}]
[2022-01-25 10:33:53][DEBUG] : Réponse caméra >> [{"cmd":"GetAutoFocus","code":0,"value":{"AutoFocus":{"disable":1}}}]
[2022-01-25 10:33:53][DEBUG] : =========================================================
[2022-01-25 10:33:53][DEBUG] : URL de requête => http://192.168.11.91:1080/cgi-bin/api.cgi?cmd=GetAutoMaint&token=9b9f6f0ac2dcef5
[2022-01-25 10:33:53][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:53][DEBUG] : Payload => [{"cmd":"GetAudioAlarm","action":0,"param":[]}]
[2022-01-25 10:33:53][DEBUG] : Réponse caméra >> [{"cmd":"GetAudioAlarm","code":0,"value":{"Audio":{"schedule":{"enable":0,"table":"111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"}}}}]
[2022-01-25 10:33:53][DEBUG] : =========================================================
[2022-01-25 10:33:53][DEBUG] : URL de requête => http://192.168.11.91:1080/cgi-bin/api.cgi?cmd=GetIrLights&token=9b9f6f0ac2dcef5
[2022-01-25 10:33:53][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:53][DEBUG] : Payload => [{"cmd":"GetEmail","action":0,"param":[]}]
[2022-01-25 10:33:53][DEBUG] : Réponse caméra >> [{"cmd":"GetEmail","code":0,"value":{"Email":{"addr1":"","addr2":"","addr3":"","attachmentType":1,"interval":"5Minutes","nickName":"","password":"","schedule":{"enable":0,"table":"111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"},"smtpPort":465,"smtpServer":"smtp.gmail.com","ssl":1,"supportTextType":1,"supportVideo":1,"textType":1,"userName":""}}}]
[2022-01-25 10:33:53][DEBUG] : =========================================================
[2022-01-25 10:33:53][DEBUG] : URL de requête => http://192.168.11.91:1080/cgi-bin/api.cgi?cmd=GetEnc&token=9b9f6f0ac2dcef5
[2022-01-25 10:33:53][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:53][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:53][DEBUG] : Payload => [{"cmd":"GetPowerLed","action":0,"param":[]}]
[2022-01-25 10:33:53][DEBUG] : Payload => [{"cmd":"GetAudioAlarm","action":0,"param":[]}]
[2022-01-25 10:33:53][DEBUG] : Réponse caméra >> [{"cmd":"GetPowerLed","code":0,"range":{"PowerLed":{"state":["On","Off"]}},"value":{"PowerLed":{"channel":0,"state":"On"}}}]
[2022-01-25 10:33:53][DEBUG] : Réponse caméra >> [{"cmd":"GetAudioAlarm","code":0,"value":{"Audio":{"schedule":{"enable":0,"table":"111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"}}}}]
[2022-01-25 10:33:53][DEBUG] : =========================================================
[2022-01-25 10:33:53][DEBUG] : =========================================================
[2022-01-25 10:33:53][DEBUG] : URL de requête => http://192.168.11.91:1080/cgi-bin/api.cgi?cmd=GetAutoFocus&token=9b9f6f0ac2dcef5
[2022-01-25 10:33:53][DEBUG] : URL de requête => http://192.168.11.91:1080/cgi-bin/api.cgi?cmd=GetIrLights&token=9b9f6f0ac2dcef5
[2022-01-25 10:33:53][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:53][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:53][DEBUG] : Payload => [{"cmd":"GetIrLights","action":0,"param":[]}]
[2022-01-25 10:33:53][DEBUG] : Payload => [{"cmd":"GetAutoMaint","action":0,"param":{"channel":0}}]
[2022-01-25 10:33:53][DEBUG] : Réponse caméra >> [{"cmd":"GetIrLights","code":0,"initial":{"IrLights":{"state":"Auto"}},"range":{"IrLights":{"state":["Auto","Off"]}},"value":{"IrLights":{"state":"Auto"}}}]
[2022-01-25 10:33:53][DEBUG] : Réponse caméra >> [{"cmd":"GetAutoMaint","code":0,"value":{"AutoMaint":{"enable":0,"hour":2,"min":0,"sec":0,"weekDay":"Sunday"}}}]
[2022-01-25 10:33:53][DEBUG] : =========================================================
[2022-01-25 10:33:53][DEBUG] : URL de requête => http://192.168.11.91:1080/cgi-bin/api.cgi?cmd=GetPowerLed&token=9b9f6f0ac2dcef5
[2022-01-25 10:33:53][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:53][DEBUG] : Payload => [{"cmd":"GetEnc","action":0,"param":{"channel":0}}]
[2022-01-25 10:33:53][DEBUG] : Réponse caméra >> [{"cmd":"GetEnc","code":0,"value":{"Enc":{"audio":1,"channel":0,"mainStream":{"bitRate":4096,"frameRate":20,"height":1920,"profile":"High","resolution":54,"size":"2560*1920","width":2560},"subStream":{"bitRate":384,"frameRate":7,"height":480,"profile":"High","resolution":28,"size":"640*480","width":640}}}}]
[2022-01-25 10:33:53][DEBUG] : =========================================================
[2022-01-25 10:33:53][DEBUG] : URL de requête => http://192.168.11.91:1080/cgi-bin/api.cgi?cmd=GetRec&token=9b9f6f0ac2dcef5
[2022-01-25 10:33:53][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:53][DEBUG] : Payload => [{"cmd":"GetAutoFocus","action":0,"param":{"channel":0}}]
[2022-01-25 10:33:53][DEBUG] : Réponse caméra >> [{"cmd":"GetAutoFocus","code":0,"value":{"AutoFocus":{"disable":1}}}]
[2022-01-25 10:33:53][DEBUG] : =========================================================
[2022-01-25 10:33:53][DEBUG] : URL de requête => http://192.168.11.91:1080/cgi-bin/api.cgi?cmd=GetAutoMaint&token=9b9f6f0ac2dcef5
[2022-01-25 10:33:53][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:53][DEBUG] : Payload => [{"cmd":"GetIrLights","action":0,"param":[]}]
[2022-01-25 10:33:53][DEBUG] : Réponse caméra >> [{"cmd":"GetIrLights","code":0,"initial":{"IrLights":{"state":"Auto"}},"range":{"IrLights":{"state":["Auto","Off"]}},"value":{"IrLights":{"state":"Auto"}}}]
[2022-01-25 10:33:53][DEBUG] : =========================================================
[2022-01-25 10:33:53][DEBUG] : URL de requête => http://192.168.11.91:1080/cgi-bin/api.cgi?cmd=GetPowerLed&token=9b9f6f0ac2dcef5
[2022-01-25 10:33:53][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:53][DEBUG] : Payload => [{"cmd":"GetPowerLed","action":0,"param":[]}]
[2022-01-25 10:33:53][DEBUG] : Réponse caméra >> [{"cmd":"GetPowerLed","code":0,"range":{"PowerLed":{"state":["On","Off"]}},"value":{"PowerLed":{"channel":0,"state":"On"}}}]
[2022-01-25 10:33:53][DEBUG] : =========================================================
[2022-01-25 10:33:53][DEBUG] : URL de requête => http://192.168.11.91:1080/cgi-bin/api.cgi?cmd=GetAutoFocus&token=9b9f6f0ac2dcef5
[2022-01-25 10:33:53][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:53][DEBUG] : Payload => [{"cmd":"GetRec","action":0,"param":{"channel":0}}]
[2022-01-25 10:33:53][DEBUG] : Réponse caméra >> [{"cmd":"GetRec","code":0,"value":{"Rec":{"channel":0,"overwrite":0,"postRec":"15Seconds","preRec":0,"schedule":{"enable":0,"table":"111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"}}}}]
[2022-01-25 10:33:53][DEBUG] : =========================================================
[2022-01-25 10:33:53][DEBUG] : URL de requête => http://192.168.11.91:1080/cgi-bin/api.cgi?cmd=GetAudioAlarm&token=9b9f6f0ac2dcef5
[2022-01-25 10:33:53][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:53][DEBUG] : Payload => [{"cmd":"GetAutoMaint","action":0,"param":{"channel":0}}]
[2022-01-25 10:33:53][DEBUG] : Réponse caméra >> [{"cmd":"GetAutoMaint","code":0,"value":{"AutoMaint":{"enable":0,"hour":2,"min":0,"sec":0,"weekDay":"Sunday"}}}]
[2022-01-25 10:33:53][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:53][DEBUG] : Payload => [{"cmd":"GetPowerLed","action":0,"param":[]}]
[2022-01-25 10:33:53][DEBUG] : Réponse caméra >> [{"cmd":"GetPowerLed","code":0,"range":{"PowerLed":{"state":["On","Off"]}},"value":{"PowerLed":{"channel":0,"state":"On"}}}]
[2022-01-25 10:33:53][DEBUG] : =========================================================
[2022-01-25 10:33:53][DEBUG] : URL de requête => http://192.168.11.91:1080/cgi-bin/api.cgi?cmd=GetAutoFocus&token=9b9f6f0ac2dcef5
[2022-01-25 10:33:54][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:54][DEBUG] : Payload => [{"cmd":"GetAutoFocus","action":0,"param":{"channel":0}}]
[2022-01-25 10:33:54][DEBUG] : Réponse caméra >> [{"cmd":"GetAutoFocus","code":0,"value":{"AutoFocus":{"disable":1}}}]
[2022-01-25 10:33:54][DEBUG] : =========================================================
[2022-01-25 10:33:54][DEBUG] : URL de requête => http://192.168.11.91:1080/cgi-bin/api.cgi?cmd=GetAutoMaint&token=9b9f6f0ac2dcef5
[2022-01-25 10:33:54][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:54][DEBUG] : Payload => [{"cmd":"GetAudioAlarm","action":0,"param":[]}]
[2022-01-25 10:33:54][DEBUG] : Réponse caméra >> [{"cmd":"GetAudioAlarm","code":0,"value":{"Audio":{"schedule":{"enable":0,"table":"111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"}}}}]
[2022-01-25 10:33:54][DEBUG] : =========================================================
[2022-01-25 10:33:54][DEBUG] : URL de requête => http://192.168.11.91:1080/cgi-bin/api.cgi?cmd=GetIrLights&token=9b9f6f0ac2dcef5
[2022-01-25 10:33:54][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:54][DEBUG] : Payload => [{"cmd":"GetAutoFocus","action":0,"param":{"channel":0}}]
[2022-01-25 10:33:54][DEBUG] : Réponse caméra >> [{"cmd":"GetAutoFocus","code":0,"value":{"AutoFocus":{"disable":1}}}]
[2022-01-25 10:33:54][DEBUG] : =========================================================
[2022-01-25 10:33:54][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:54][DEBUG] : URL de requête => http://192.168.11.91:1080/cgi-bin/api.cgi?cmd=GetAutoMaint&token=9b9f6f0ac2dcef5
[2022-01-25 10:33:54][DEBUG] : Payload => [{"cmd":"GetAutoMaint","action":0,"param":{"channel":0}}]
[2022-01-25 10:33:54][DEBUG] : Réponse caméra >> [{"cmd":"GetAutoMaint","code":0,"value":{"AutoMaint":{"enable":0,"hour":2,"min":0,"sec":0,"weekDay":"Sunday"}}}]
[2022-01-25 10:33:54][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:54][DEBUG] : Payload => [{"cmd":"GetIrLights","action":0,"param":[]}]
[2022-01-25 10:33:54][DEBUG] : Réponse caméra >> [{"cmd":"GetIrLights","code":0,"initial":{"IrLights":{"state":"Auto"}},"range":{"IrLights":{"state":["Auto","Off"]}},"value":{"IrLights":{"state":"Auto"}}}]
[2022-01-25 10:33:54][DEBUG] : =========================================================
[2022-01-25 10:33:54][DEBUG] : URL de requête => http://192.168.11.91:1080/cgi-bin/api.cgi?cmd=GetPowerLed&token=9b9f6f0ac2dcef5
[2022-01-25 10:33:54][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:54][DEBUG] : Payload => [{"cmd":"GetAutoMaint","action":0,"param":{"channel":0}}]
[2022-01-25 10:33:54][DEBUG] : Réponse caméra >> [{"cmd":"GetAutoMaint","code":0,"value":{"AutoMaint":{"enable":0,"hour":2,"min":0,"sec":0,"weekDay":"Sunday"}}}]
[2022-01-25 10:33:54][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:54][DEBUG] : Payload => [{"cmd":"GetPowerLed","action":0,"param":[]}]
[2022-01-25 10:33:54][DEBUG] : Réponse caméra >> [{"cmd":"GetPowerLed","code":0,"range":{"PowerLed":{"state":["On","Off"]}},"value":{"PowerLed":{"channel":0,"state":"On"}}}]
[2022-01-25 10:33:54][DEBUG] : =========================================================
[2022-01-25 10:33:54][DEBUG] : URL de requête => http://192.168.11.91:1080/cgi-bin/api.cgi?cmd=GetAutoFocus&token=9b9f6f0ac2dcef5
[2022-01-25 10:33:54][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:54][DEBUG] : Payload => [{"cmd":"GetAutoFocus","action":0,"param":{"channel":0}}]
[2022-01-25 10:33:54][DEBUG] : Réponse caméra >> [{"cmd":"GetAutoFocus","code":0,"value":{"AutoFocus":{"disable":1}}}]
[2022-01-25 10:33:54][DEBUG] : =========================================================
[2022-01-25 10:33:54][DEBUG] : URL de requête => http://192.168.11.91:1080/cgi-bin/api.cgi?cmd=GetAutoMaint&token=9b9f6f0ac2dcef5
[2022-01-25 10:33:54][DEBUG] : HTTP code 200 OK
[2022-01-25 10:33:54][DEBUG] : Payload => [{"cmd":"GetAutoMaint","action":0,"param":{"channel":0}}]
[2022-01-25 10:33:54][DEBUG] : Réponse caméra >> [{"cmd":"GetAutoMaint","code":0,"value":{"AutoMaint":{"enable":0,"hour":2,"min":0,"sec":0,"weekDay":"Sunday"}}}]
[2022-01-25 10:33:58][DEBUG] : Action demandé : GetPtzPreset

Autre chose, sur ma cam ou j’ai récupéré les PTZ, j’en ai deux P0 et P1. Que je sélectionne un ou l’autre rien ne se passe sur la caméra, elle ne bouge pas.

J’ai parfois cependant un message qui me dit qu’il faut d’abord se connecter. On dirais qu’il se déco par moment…

Le jeton est valable 1h donc toutes les heures il est nécessaires de le renouveler.

Autre chose, sur ma cam ou j’ai récupéré les PTZ, j’en ai deux P0 et P1. Que je sélectionne un ou l’autre rien ne se passe sur la caméra, elle ne bouge pas.

Quand tu utilise ces PTZ depuis le bouton « Utiliser un preset PTZ » sur jeedom ?
Tu as le log de ce qu’envoi le plugin quand tu utilise la fonction ?

La dernière màj corrige le souci de PTZ, maintenant quand je le sélectionne, il est bien envoyé à la caméra qui tourne jusqu’au point mémorisé.

Par contre, toujours impossible de récupérer les PTZ sur 2 de mes caméras.

J’ai pas compris tu peux détailler plus ?
Tu dit que le souci est corrigé que le plugin envoi bien le preset PTZ, mais après tu me dis qu’il est impossible de le récupérer ? :roll_eyes:

Oui, j’ai une de mes 3 cameras qui a bien récupéré les PTZ et par conséquent, j’ai pu tester sur celle là que les commandes dans le menu déroulant PTZ fonctionne bien et lance la commande sur la caméra.

Les deux autre, impossible de récuperer les PTZ, rien ne s’affiche dans le menu déroulant qui reste désespérément vide.

J’ai contacté les grand oracles du dev @Mips :wink: et j’ai obtenu la solution à mon problème
Check la dernière update sur le market elle résout le problème :wink:

1 « J'aime »

non je ne pense pas . je ne peux y acceder que via l’application reolink

Citation Le plugin fonctionne avec les caméras reolink qui ont l’API
Y a t-il une interface web sur ce modèle ?

Les caméras de la gamme argus ne sont pas supportés malheureusement…