[DzVents] Connaitre l'état de la détection d'une Foscam

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
Datawolf
Messages : 273
Inscription : 03 avr. 2018, 13:51

[DzVents] Connaitre l'état de la détection d'une Foscam

Message par Datawolf »

Hello,

J'ai commis ce petit script pour vérifier que chacune de mes caméras Foscam était en phase avec la consigne de détection.

Code : Tout sélectionner

-- Lit l'état de la détection de chacune des caméras
return {
  on = {
    timer = { 'every 2 minutes', },
    devices = { 123, }, -- Etat détection caméras
    httpResponses = { 'http_trigger_cam1', 'http_trigger_cam2 }
  },

  execute = function(domoticz, triggeredItem, info)

  if triggeredItem.isTimer or triggeredItem.changed then
    --          Script déclenché toutes les 2mn ou par le changement de détection générale
    --          ==> on va exécuter les requêtes HTTP
    url_cam1 = "http://URL_CAM1/cgi-bin/CGIProxy.fcgi?cmd=getMotionDetectConfig&usr=USER&pwd=PASSWORD"
    domoticz.openURL({
      url = url_cam1,
      callback = 'http_trigger_cam1'
    })
    url_cam2 = "http://URL_CAM2/cgi-bin/CGIProxy.fcgi?cmd=getMotionDetectConfig&usr=USER&pwd=PASSWORD"
    domoticz.openURL({
      url = url_cam2,
      callback = 'http_trigger_cam2'
    })
  end -- isTimer

  if triggeredItem.isHTTPResponse then
    --          Script déclenché par le retour d'une requête HTTP
    --          ==> on va exploiter le résultat
    if triggeredItem.ok then
      local ed,ef,resultat=string.find(triggeredItem.data," <isEnable>(.)") -- recherche le chiffre entre (.)
      if     triggeredItem.trigger == 'http_trigger_cam1' then
        --                On va mettre à jour le device Cam1
        if resultat == '1' then
          domoticz.devices(881).switchOn().checkFirst()
        elseif resultat == '0' then
          domoticz.devices(881).switchOff().checkFirst()
        end -- resultat
      elseif triggeredItem.trigger == 'http_trigger_cam2' then
        --                On va mettre à jour le device Cam2
        if resultat == '1' then
          domoticz.devices(882).switchOn().checkFirst()
        elseif resultat == '0' then
          domoticz.devices(882).switchOff().checkFirst()
        end -- resultat
      end -- trigger
    else
      domoticz.log('getMotionDetectConfig failed',domoticz.LOG_ERROR)
    end -- is OK
  end -- isHTTP
end -- function
}

@+
Datawolf
Répondre