Aller au contenu

Camera REOLINK sur HC3 (& HC2)


Manu31

Messages recommandés

Bonjour,

 

Voici un petit tuto (si ça peut vous aider) pour mettre des caméras de marque REOLINK (avec ou sans NVR) sur votre HC3.

 

Lien du constructeur : ici :12:

 

Dans votre HC3 :

--> Dispositif

     --> Ajout d'un dispositif

          --> Autre appareil 

               --> Caméra

                    --> Fabriquant = "Autre" & Modèle = "Autre"

 

Une fois ajouté, se rendre dans "avancé"

--> Protocole = HTTP

    --> Flux JPEG = 192.168.X.X/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=admin&password=password

 

Remarques :

- Il se peut que dans Network configuration il vous redemande l'adresse IP de votre NVR (sinon je ne pouvais pas valider ma config).

- Reolink ne supporte pas le flux MJPG

 

Explications :

--> En bleu = l'adresse IP de la caméra ou du NVR dans mon cas.

--> En violet = la chaine / le flux de la caméra (si vous avez plusieurs caméras sur votre NVR il suffit de renseigner le bon flux)

--> En orange = le login et le mot de passe pour se connecter à la caméra (ou du NVR).

 

Et vous verrez les caméras dans l'application sur l'ordinateur (web) et aussi sur le téléphone :60: .

 

En espérant avoir aidé certains d'entre vous.

 

Bonne soirée ;) 

 

 

 

 

 

 

  • Like 4
  • Thanks 1
Lien vers le commentaire
Partager sur d’autres sites

Nickel merci

 

J'avais bien trouvé la commande, mais je l'avais mise dans le champ mjpeg 

J'avais bien l'image mais jamais rafraichie !!

 

Merci à toi

Mes deux caméras fonctionnent très bien grâce à toi

 

 

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...

Salut,

 

Merci pour le tuto. Je voulais justement m'en acheter 2.

Par contre ca se passe comment avec la detection, l'alarme, les scènes, ... ?

C'est la HC3 qui surveille le signal video et qui detecte les mouvements ? Ou est-ce qu'il faut passer par une application"reolink" pour avoir les notifications ?

 

Ce qui me saoule avec toutes ces marques qui se lance dans de la pseudo domotique c'est qu'ils ont tous des applications pour gerer leurs matos et qu'en fin de compte je me demande si avoir investi dans une HC3 ca valait le coup...

Lien vers le commentaire
Partager sur d’autres sites

Bonjour @esolma.

 

Alors si tu veux j'ai toutes les docs constructeurs (au passage merci à eux pour leur support) pour faire du GET ou autre.
Si ca intéresse quelqu'un qu'il me le dise je lui enverrai.
Mais je ne me suis pas plongé dessus pour l'instant.

 

A titre perso j'utilise ma HC3 pour ma domotique et quelques remontées de caméra.
Mais j'utilise l'app reolink pour avoir les notifications push (car les notification push de la HC3 ne marchent pas en cas de question sur le push), la mise en route des alarmes etc.

 

Pour mon retour d'expérience, j'ai eu une dizaine de marques sur les caméras. Et honnetement Reolink est loin devant. Un support réactif, des demandes d'évolutions ou problème et l'équipe REOLINK te répond, font évoluer leur produit. Il ne nécessite pas d'abonnement et le protocole n'est pas propriétaire d'où l'intégration à la HC3 ;) 

 

PS: ils font souvent des promo sur leur site ou sur amazon :74:

Lien vers le commentaire
Partager sur d’autres sites

  • 3 mois après...

Bonjour,

 

Je vous remercie pour votre post cela ma été grandement utile.

En revanche, je possède une Reolink E1 Zoom qui est motorisé, d'après les paramètres de la HC3 il est possible de pouvoir commander une caméra.

Seriez-vous me dire comment configurer les commandes dans la HC3 ? d'après la configuration il faudrait un URL pour chaque mouvement (Droite, gauche, haut et bas)

 

Très bonne journée.

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...

Bonjour à @Toine74;

 

Désolé du retard pour ma réponse.

 

Je n'ai pas encore réussi à trouver ce que tu demandes.

Le support REOLINK m'a fournit une doc ou il faut par des commande faire du POST/GET sur du JSON.
Je peux t'envoyer les doc si ça t'intéresse de chercher ;)

 

Bonne soirée

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...
  • 2 semaines après...
  • 6 mois après...

Bonjour à tous,

 

je suis un grand débutant.. mais je sais faire du copier coller de code existant... et me poser quelques questions quand cela ne marche pas :-)

bref au cas ou cela intéresserait quelqu'un voici le code d'un quick app générique que j'ai fait pour pour pouvoir activer la sirène des caméras Reolink qui le supporte (rcl811a par exemple). Quand je dis activer, cela signifie changer le paramètre qui déclenche en cas de mouvement détecté par la caméra une sirène émise par le hp de la caméra

Les apis de Reolink sont disponibles sur https://www.reddit.com/r/reolinkcam/comments/rd847e/reolink_camera_api_user_guide_dec10_2021/

 

Code à copier coller dans un quick app générique avec comme variable du qa: "login", "password", "IP_Reolink" 
 

La fonction principale du QA (setAudioAlarm) est appelé depuis un qa on/off que j'active ou désactive à son tour depuis un scénario. Ce scénario se déclenche lorsque je met l'alarme principale de ma maison en marche. Le scénario en question déclenche l'enregistrement dans BlueIris (NVR) et active le bon paramètre pour que la sirène des caméras se déclenche au besoin. Pour info l'alarme n'est pas wifi ou domotisée, il y a juste un contact sec que j'ai relié à un fibaro smart implant (enfin l'ancienne version de ce module). Le smart implant me permet de connaitre l'état de l alarme et déclencher mon scénario.

 

Je fais l'appel de la fonction principale dans le qa on/off via un fibaro.call (id de mon qa, "setAudioAlarm", ip_cam, toogle). (toogle: 0 ou 1 selon le paramètre que je souhaite)

 

A travers ce petit exercice j'ai découvert l'asyncronicité de http:request.... et le plaisir de devoir "nester" les appels à l'api (login, puis changement de paramètre, puis check du nouveau paramètre puis logout... tout ca en imbriqué...). C'est pas beau, je me demande comment faire plus joli. Surtout si j'avais du implémenter non pas une mais plusieurs des fonctions de l'api... bref... il faut que j'apprenne encore ou/et que je lise les autos de Lazer!

 

Ah et comme j'ai plusieurs caméras, je fais plusieurs appels figaro.call et bien sur je me suis rendu compte que sans mettre un timeout... les appels rentraient en conflit. donc j'ai utilisé settimeout avec des valeurs un peu "au hasard"... je trouve pas ca génial... si quelqu'un a une idée  comment faire mieux, je suis preneur.

les appels:

          function QuickApp:turnOn()

                  self:debug("binary switch turned on")
                  self:updateProperty("value"true)
    
                 fibaro.setTimeout(0function()
                        fibaro.call (727,"setAudioAlarm","192.168.1.46","1")
                 end)
  
                fibaro.setTimeout(8000function()
                      fibaro.call (727,"setAudioAlarm","192.168.1.48","1")
                end)
  
               fibaro.setTimeout(18000function()
                   fibaro.call (727,"setAudioAlarm","192.168.1.45","1")
              end)
end

 

Le code à copier coller dans un QA

 

----------------------------------------------------------------------------------------------------
-- connection à la caméra et recupération du token, si ok call ChangeSirenToggle
----------------------------------------------------------------------------------------------------
function QuickApp:setAudioAlarm(ip_cam,toogle)
        self.camera = ip_cam
        self.enable = toogle
        self.url="https://"..self.camera..":443/api.cgi?cmd=Login"
        self.debug ("url de login", self.url)
        self.http:request(self.url, 
        {
            options = {
                checkCertificate = false,
                method = 'POST',
                headers = {
                ["content-type"] =  "application/json",
                ["Accept"] = "application/json",
                           },
                data = json.encode({
                            {
                            ['cmd']="Login",
                            ['param']={
                             ['User']={             
                                ['userName']=self.login, 
                                ['password']=self.password
                            }}}
                        })
                        },
     
            success = function(response)
            print("status = ", response.status)
            if response.status == 200 then
                print(response.data)
                data = json.decode(response.data)
 
                self.token=data[1]["value"]["Token"]["name"-- token du login
                self:trace("Caméra() : Connecté")
                
                -- Appel pour changer le parametre de la siren  
               self:ChangeSirenToggle()
 
            end
        end,
        error = function(error)
            self:error("Probléme d'identification - Erreur - ", json.encode(error))
        end
        })
end



 
----------------------------------------------------------------------------------------------------
-- Change parametre sirene
----------------------------------------------------------------------------------------------------
function QuickApp:ChangeSirenToggle()
        self.url="https://"..self.camera..":443/api.cgi?cmd=SetAudioAlarmV20&token="..self.token
        self.http:request(self.url, {
        options = {
            checkCertificate = false,
            method = 'POST',
            headers = {
            ["content-type"] =  "application/json",
            ["Accept"] = "application/json",
            },
            data = json.encode({
                   {
                   ['cmd']="SetAudioAlarmV20",
                   ['param']= {
                      ['Audio']= {
                         ['enable']= self.enable,
                         ['schedule']= {
                              ['channel']= 0,
                                 ['table']= {
                                    ['MD']= "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
                                            }
                                        }
                                    }
                                }
 
                      }})
             },
           
           success = function(response)
              print("status = ", response.status)
              if response.status == 200 then
                print(response.data)
                data = json.decode(response.data)
                self:checkSiren() --- print la valeur de la sirene après update
              end
           end,
           
           error = function(error)
              self:updateView("message""Titre""Probléme d'identification "..json.encode(error))
              self:error("Problème pour la mise à jour du parametre Siren - Erreur - ", json.encode(error))
           end
        })
 
end



 
---------------------------
-- Check la valeur du parametre de la sirene
----------------------------
function QuickApp:checkSiren()
        self.url="https://"..self.camera..":443/api.cgi?cmd=GetAudioAlarmV20&token="..self.token
        print (self.url)
        self.http:request(self.url, {
        options = {
            checkCertificate = false,
            method = 'GET',
            headers = {
            ["content-type"] =  "application/json",
            ["Accept"] = "application/json",
            },
            data = json.encode({
                   {
                   ['cmd']="GetAudioAlarmV20",
                   ['param']= {
                      ['channel']= 0
                               }
                      }})
             },
           
           success = function(response)
              print("status = ", response.status)
              if response.status == 200 then
                print(response.data)
                data = json.decode(response.data)
                self.siren=data[1]["value"]["Audio"]["enable"]
                print ("la sirène de"..self.camera.." est sur", self.siren)
                self:logout(self.camera, self.token)
              end
           end,
           
           error = function(error)
              self:error("Problème pour la mise à jour du parametre Siren - Erreur - ", json.encode(error))
              --self:logout(self.camera, self.enable)
              self:logout()
           end
        })
end
 
--------


 
----------------------------------------------------------------------------------------------------
-- Logout
----------------------------------------------------------------------------------------------------
 
function QuickApp:logout()
         self.url="https://"..self.camera..":443/api.cgi?cmd=Logout&token="..self.token
 
        self.http:request(self.url, {
        options = {
            checkCertificate = false,
            method = 'POST',
            headers = {
            ["content-type"] =  "application/json",
            ["Accept"] = "application/json",
            },
            data = json.encode({
                   {
                   ['cmd']="Logout",
                   ['param']= {}
                      }})
             },
           
           success = function(response)
              print("status = ", response.status)
              if response.status == 200 then
                print(response.data)
                data = json.decode(response.data)
                print ("Logout de "..self.camera.." done")
              end
           end,
           
           error = function(error)
              self:error("Problème pour le logout - ", json.encode(error))
           end
        })

end
 
--------
-----------


 
------------------------------------------------------------------------------------------------------------------------
-- boucle principale
------------------------------------------------------------------------------------------------------------------------
function QuickApp:mainLoop()
       -- self:logout(self.camera, self.enable)
    --self:setAudioAlarm(self.camera, self.enable)
end
 
---------------------------------------------------------------------------------------------------------------------
--
---------------------------------------------------------------------------------------------------------------------
function QuickApp:onInit()
    --__TAG = "QA_Reolink" .. plugin.mainDeviceId
    
    self:trace("--------------------------------------------------")
    self:trace("-- Demarrage du QA Reolink")
    self:trace("--------------------------------------------------")
    
    --- login
    self.login = self:getVariable("login")
    --- password
    self.password = self:getVariable("password")
    --- IP URL
    self.camera = self:getVariable("IP_Reolink")
    self.http = net.HTTPClient({ timeout = 3000 })
    -- Toogle
    self.enable = 0

    self:mainLoop()
end
  • Like 2
Lien vers le commentaire
Partager sur d’autres sites

The problem you have running several 'setAudioAlarm' in parallel is that you store values in self. that is shared between all calls to 'setAudioAlarm'.

It could work better if you sent them as parameters to the call, so each call had it's own version of the parameters.

Running them with a random delay is like playing the lottery... where the prize is a buggy program.

 

You still have the problem with nesting calls in request callbacks.

Each event has it's own set of parameters in the .p key.

The advantage of sending user/pwd with each event is that cameras can have different credentials. If not we could have used self.use and self.pwd instead in 'setAudioAlarm'.

I also don't understand the enable/toggle logic.

I guess you want to alternate between turning on and turning off the camera?

To make it correct you should first read the enable state with a call and then set it to the opposite with another call. Otherwise you may get out of sync...

So, first call checkSiren, set the p.enable to the opposite and call changeSirenToggle

You could also have 2 buttons, turnOn and turnOff and send the enable state 1/0 with them (like I tried in turnOn, should enable be 1 or 0 ?)

Btw, I put the QuickApp:turnOn function in the same QA as the rest of the code (using local 'post' function). Maybe you wanted to do it from another QA?

 

I would have coded it this way, using the model of events. This way you avoid the nesting. It may be a bit advanced, but worth studying if you have trouble sleeping ;)

Disclaimer: I don't have access to a Reolink camera so I really don't know what I'm doing :)

local testing = true -- simulate api calls
local post

function  QuickApp:turnOn()
  self:debug( "binary switch turned on" )
  self:updateProperty( "value" ,  true )
  
  post({type='setAudioAlarm',p={camera="192.168.1.46", tool="1",user=self.user,pwd=self.pwd,enable=1}}) -- 'p' stands for 'parameters'
  post({type='setAudioAlarm',p={camera="192.168.1.48", tool="1",user=self.user,pwd=self.pwd,enable=1}}) -- should enable be 1 ?
  post({type='setAudioAlarm',p={camera="192.168.1.45", tool="1",user=self.user,pwd=self.pwd,enable=1}})
end

function  QuickApp:turnOff()
  self:debug( "binary switch turned off" )
  self:updateProperty( "value" ,  false )
  
  post({type='setAudioAlarm',p={camera="192.168.1.46", tool="1",user=self.user,pwd=self.pwd,enable=0}}) 
  post({type='setAudioAlarm',p={camera="192.168.1.48", tool="1",user=self.user,pwd=self.pwd,enable=0}}) 
  post({type='setAudioAlarm',p={camera="192.168.1.45", tool="1",user=self.user,pwd=self.pwd,enable=0}})
end

local debug = true
local EVENT={}
local function DEBUG(...) if debug then print(...) end end
function post(event)
  setTimeout(function() 
      assert(EVENT[tostring(event.type)],"Undefined event ",tostring(event.type))
      DEBUG("Event:",event.type)
      EVENT[event.type](event)
    end,0)
end
-------------------------------------------------- --------------------------------------------------
-- senCmd
-------------------------------------------------- --------------------------------------------------
local function sendCmd(event,method,cmd,data)
  local url = "https://"..event.p.camera..":443/api.cgi?cmd="..cmd
  self.http:request(url,{
      options = {
        checkCertificate=  false ,
        method=  method or "GET" ,
        headers = {
          [ "content-type" ] = "application/json" ,
          [ "Accept" ] = "application/json" ,
        },
        data = data and json.encode(data) or nil 
      },
      success = function(resp)
        if resp.status == 200 then
          DEBUG("success ",url,resp.data)
          post({type=event.type.."_success",p=event.p,url=url,data=json.decode(resp.data)})
        else
          post({type=event.type.."_error",p=event.p,url=url,error="status="..resp.status})
        end
      end,
      error = function(err)
        post({type=event.type.."_error",p=event.p,url=url,error=err})
      end
    }
  )
end

if testing then -- redefine sendCmd for test purpose when no access to Relink
  function sendCmd(event,method,path,data)
    local data = {}
    if path:match("Login") then
      data = {{value={Token={name="myToken"}}}}
    elseif path:match("GetAudioAlarmV20") then
      data = {{value={Audio={enable=0}}}}
    end
    DEBUG("success ","https://"..event.p.camera..":443/api.cgi?cmd="..path,json.encode(data))
    post({type=event.type.."_success",p=event.p,url=url,data=data})
  end
end
-------------------------------------------------- --------------------------------------------------
-- connection to the camera and recovery of the token, if ok call ChangeSirenToggle
-------------------------------------------------- --------------------------------------------------
function EVENT.setAudioAlarm(event)
  sendCmd(event,"POST","Login",
    {
      [ 'cmd' ]= "Login" ,
      [ 'param' ]={
        [ 'User' ]={             
          [ 'userName' ]=event.p.user, 
          [ 'password' ]=event.p.pwd
        }
      }
    }
  )
end

local function add(t,a) for k,v in pairs(a) do t[k]=v end return t end

function EVENT.setAudioAlarm_success(event)
  local token = event.data[ 1 ][ "value" ][ "Token" ][ "name" ]  -- login token
  DEBUG( "Camera(): Connected" )
  -- Call to change the siren parameter
  post({type='ChangeSirenToggle',p=add(event.p,{token=token})})
end
function EVENT.setAudioAlarm_error(event)
  quickApp:error( "Identification problem - Error - " , json.encode(event.error,event.url or ""))
end

-------------------------------------------------- --------------------------------------------------
-- Change siren parameter
-------------------------------------------------- --------------------------------------------------
function EVENT.ChangeSirenToggle(event)
  sendCmd(event,"POST","SetAudioAlarmV20&token="..event.p.token,
    {
      [ 'cmd' ]= "SetAudioAlarmV20" ,
      [ 'param' ]= {
        [ 'Audio' ]= {
          [ 'enable' ]= event.p.enable,
          [ 'schedule' ]= {
            [ 'channel' ]=  0 ,
            [ 'table' ]= {
              [ 'MD' ]= string.rep("1",168)
            }
          }
        }
      }
    }
  )
end
function EVENT.ChangeSirenToggle_success(event)
  post({type='checkSiren',p=event.p})  --- print siren value after update
end
function EVENT.ChangeSirenToggle_error(event)
  quickApp:updateView( "message" ,  "Title" ,  "Identification problem" ..json.encode(event.error))
  quickApp:error( "Problem updating Siren parameter - Error - " , json.encode(event.error))
end

---------------------------
-- Check the siren parameter value
----------------------------
function  EVENT.checkSiren(event)
  sendCmd(event,"GET","GetAudioAlarmV20&token=" ..event.p.token,
    {
      [ 'cmd' ]= "GetAudioAlarmV20" ,
      [ 'param' ]= {
        [ 'channel' ]=  0
      }
    }
  )
end
function  EVENT.checkSiren_success(event)
  local siren=event.data[ 1 ][ "value" ][ "Audio" ][ "enable" ]
  print(event.p.camera.. "'s siren is on" , siren)
  post({type='logout',p=event.p}) --(self.camera, self.token)
end
function  EVENT.checkSiren_error(event)
  quickApp:error( "Problem updating Siren parameter - Error - " , json.encode(event.error))
  --self:logout(self.camera, self.enable)
  post({type='logout',p=event.p})
end

-------------------------------------------------- --------------------------------------------------
-- Logout
-------------------------------------------------- --------------------------------------------------

function EVENT.logout(event)
  sendCmd(event,"POST","Logout&token=" ..event.p.token,
    {
      [ 'cmd' ]= "Logout" ,
      [ 'param' ]= {}
    }
  )
end
function EVENT.logout_success(event)
  print( "Logout from " ..event.p.camera.. " done" )
end
function EVENT.logout_error(event)
  quickApp:error( "Problem logging out - " , json.encode(event.error))
end

-------------------------------------------------- -------------------------------------------------- --------------------
-- main loop
-------------------------------------------------- -------------------------------------------------- --------------------
function  QuickApp:mainLoop()
  -- self:logout(self.camera, self.enable)
  --self:setAudioAlarm(self.camera, self.enable)
end

-------------------------------------------------- -------------------------------------------------- -----------------
--
-------------------------------------------------- -------------------------------------------------- -----------------
function  QuickApp:onInit()
  __TAG="QA_Reolink"..plugin.mainDeviceId

  self:trace( "------------------------------------------------------------ -----" )
  self:trace( "-- Starting Reolink QA" )
  self:trace( "------------------------------------------------------------ -----" )

  --- login
    self.user = self:getVariable( "login" )
  ---password
    self.pwd = self:getVariable( "password" )
  --- IP URL
--  self.camera = self:getVariable( "IP_Reolink" )
    self.http = net.HTTPClient({ timeout =  3000  })
  -- Toggle
--  self.enable =  0

--  self:mainLoop()
  if testing then setTimeout(function() self:turnOn() end,1) end -- Just testing to push button...
end

 

Modifié par jang
  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

Whouuu that's brillant. Many thanks for taking the time Jang. I'll definitely have a very close look at your proposal and keep you posted -I'm unfortunately (fortunately?) flying for 3 weeks of vacation starting in.... a couple of hours... so won't be looking at it before mi august but I'll revert!!! Many thanks again.

 

Merci beaucoup d'avoir pris le temps de regarder. Cela a l'air excellent. je vais définitivement regarder cela de près à mon retour.... car je pars en vacances dans les quelques heures qui viennent! Je répondrai après avoir essayé à mon retour... Mi aout sans doute.

 

Passez tous un bel été!

Lien vers le commentaire
Partager sur d’autres sites

  • 1 an après...

Bonsoir  @Manu31

Ta proposition datant, est elle encore d'actualité ?

J'ai essayé avec ma HC3 (dernier firmware)

Impossible d'afficher l'image de la TrackMixPoe

Le message suivant s'affiche : " Erreur de lecture de flux. Vérifiez la configuration et assurez vous que la caméra est connectée. "

Ou est le problème ?

(est ce un problème de compatibilité de flux entre la hc3 et le h265 de la trackmix ?)

Merci

Lien vers le commentaire
Partager sur d’autres sites

Il y a 4 heures, Manu31 a dit :

Petite question : as-tu un NVR ou non ?

 

Sans NVR je pense que la syntaxe doit changer légèrement.

Effectivement, je n'ai pas de NVR (j'utilise le client Reolink + Nas pour enregistrer + carte mémoire dans la TrackMix)

Que faut il modifier ? :-)

Lien vers le commentaire
Partager sur d’autres sites

Il y a 8 heures, JLT a dit :

Effectivement, je n'ai pas de NVR (j'utilise le client Reolink + Nas pour enregistrer + carte mémoire dans la TrackMix)

Que faut il modifier ? :-)

Bonjour,

 

regarde les documents Words, ca devrait être dedans.

 

Pour moi c'est un truc du genre :

Ca doit être parmis ces cmd :

e.g. Previewing:
rtmp://IPC_IP/bcs/channel0_main.bcs?channel=0&stream=0&user=admin&password=xxxx
http://IPC_IP/flv?port=1935&app=bcs&stream=channel0_main.bcs&user=admin&password=xxxx

e.g. Snapping picture:
http://IPC_IP/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=Get&user=admin&password=xxxx

Ou encore:
http://IPC_IP/api.cgi?cmd=GetImage&token=TOKEN

A tester du coup ;)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

j'ai essayé dans tous les sens et ca ne fonctionne pas, ou alors y a un truc que je n'ai pas capté :mellow:

 

dans les doc Word, je vois qu'il est beaucoup question du H264.

il est juste question du h265 pour le RTSP (dispo que dans l'app mobile)

Une idée ? :-)

Lien vers le commentaire
Partager sur d’autres sites

  • 6 mois après...

Hello 

Je me suis lancé dans l'achat d'une camera reolink. 

Je rencontre comme vous au début je pense le problème avec la fibaro.

Pourriez vous m'aider je comprend pas? 

voici ma ligne de commande :

 

https://192.168.0.38/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=xxxx&password=xxxx

bien les x de user et password sont remplacés par les mêmes  codes que l'accès a l'application en direct de reolink

 

Par contre je n'ai pas compris où trouver le numéro de Channel et est-ce que c'est le nom que je donne a la camera?

 

image.png.f0a646b030661734bc4edb8f2c49a1d2.png 

merci de votre aide 

 

 

 

 

image.png

Modifié par hermanos
Lien vers le commentaire
Partager sur d’autres sites

Il y a 10 heures, hermanos a dit :

 @Manu31

peut tu m'en dire plus avec un nvr?

je me tâte à en prendre quel et ton retour sur la marque ?

 

Bonjour 

 

Je t'invite à venir sur le groupe fb de la marque "communauté de caméras reolink France". 

Je suis le "community manager France" de la marque.

 

 J'ai eu bcp de caméras de modèles différents et me suis fixé sur celle ci. Un nvr pour moi est un gros plus car gros disque dur etc. Après j'ai préféré acheter un nvr reolink que du shinobi ou autre car c'est mieux quand tu as la même marque de bout en bout. 

 

Pour résumé : en 4 ans ils ont fait énormément d'effort (j'ai passé quelques nuit avec eux à expliquer les bugs, les évolutions, tester des firmware etc). Aujourd'hui la marque est fiable font de bonnes caméras pour un prix très correct, bcp d'évolution enfin top.

Apres reste à bien choisir son modèle en fonction de son besoin. 

 

N'hésite pas à passer sur le groupe qui est bienveillant :

  • Thanks 1
Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...