Détection de mouvement ou sonore sur une caméra IP Foscam avec l'API - CGI

Vous avez des questions concernant les scripts dans Domoticz, posez vos questions ici, quelque soit le langage nous tenterons des réponses pertinentes ...
Répondre
cyberbob
Messages : 459
Enregistré le : 28 nov. 2016, 19:43
Localisation : Belgique

Détection de mouvement ou sonore sur une caméra IP Foscam avec l'API - CGI

Message par cyberbob » 10 mars 2019, 00:07

Bonjour,

Lorsque l'on envoie la commande suivante dans un navigateur vers sa caméra Foscam :

Code : Tout sélectionner

http://192.168.1.xx:xx/cgi-bin/CGIProxy.fcgi?cmd=getDevState&usr=xxxxx&pwd=xxxxx
On reçois la réponse suivante :

Code : Tout sélectionner

<CGI_Result>
    <result>0</result>
    <IOAlarm>0</IOAlarm>
    <motionDetectAlarm>1</motionDetectAlarm>
    <soundAlarm>1</soundAlarm>
    <record>0</record>
    <sdState>0</sdState>
    <sdFreeSpace>0k</sdFreeSpace>
    <sdTotalSpace>0k</sdTotalSpace>
    <ntpState>1</ntpState>
    <ddnsState>0</ddnsState>
    <url>http%3A%2F%2Flg3102.myfoscam.org%3A85</url>
    <upnpState>0</upnpState>
    <isWifiConnected>0</isWifiConnected>
    <wifiConnectedAP></wifiConnectedAP>
    <infraLedState>1</infraLedState>
    <humanDetectAlarmState>1</humanDetectAlarmState>
</CGI_Result>
Dans la réponse, les lignes "<motionDetectAlarm>1</motionDetectAlarm>" et "<soundAlarm>1</soundAlarm>" sont intéréssante car la variable passe de "1" à "2" en cas de détection de mouvement ou sonore.

Grace à la commande curl dans un script en LUA dans domoticz :

Code : Tout sélectionner

os.execute('curl "http://192.168.1.xx:xx/cgi-bin/CGIProxy.fcgi?cmd=getDevState&usr=xxxxx&pwd=xxxxx"')
On peut aussi envoyer la commande, Mais je ne trouve pas comment mettre les 2 lignes "<motionDetectAlarm>1</motionDetectAlarm>" et "<soundAlarm>1</soundAlarm>" dans une variable pour faire changer un inter virtuel dans domoticz ?

Se serais vraiment pratique pour faire quelques scénario en cas d'alarme.
Si vous avez des idées ...
Domoticz Stable V4.9700 sur Synology DSM 6.2 / 2 x RFlink V48.4 - 433.92MHz(Dio/Chacon) & 433.42MHz(RTS) / Script en LUA & Blocky

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


vil1driver
Messages : 5092
Enregistré le : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Détection de mouvement ou sonore sur une caméra IP Foscam avec l'API - CGI

Message par vil1driver » 10 mars 2019, 00:14

Salut,

C'est étrange et peu commode d'avoir à interroger la cam.
N'est elle pas capable de directement envoyer l'information ?

Sinon il faudrait voir avec une fonction nommée os.capture pour récupérer le retour.
Restera à le traiter.

cyberbob
Messages : 459
Enregistré le : 28 nov. 2016, 19:43
Localisation : Belgique

Re: Détection de mouvement ou sonore sur une caméra IP Foscam avec l'API - CGI

Message par cyberbob » 10 mars 2019, 00:24

Salut,

Alors, d'après mes recherche, les Foscam de maintenant ne peuvent plus envoyer une URL.
Il faut alors l'interroger et de voir le changement suivant sa réponse.
Pourrais-tu m'expliquer comment je pourrais faire avec une fonction os.capture pour récupérer les états de ces 2 lignes et les mettre dans une variable, pour ensuite pouvoir les traiter dans un script Lua ?

Merci.
Domoticz Stable V4.9700 sur Synology DSM 6.2 / 2 x RFlink V48.4 - 433.92MHz(Dio/Chacon) & 433.42MHz(RTS) / Script en LUA & Blocky

vil1driver
Messages : 5092
Enregistré le : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Détection de mouvement ou sonore sur une caméra IP Foscam avec l'API - CGI

Message par vil1driver » 10 mars 2019, 10:56

Probablement en s'inspirant de ce sujet

https://easydomoticz.com/forum/viewtopi ... =17&t=5492

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


cyberbob
Messages : 459
Enregistré le : 28 nov. 2016, 19:43
Localisation : Belgique

Re: Détection de mouvement ou sonore sur une caméra IP Foscam avec l'API - CGI

Message par cyberbob » 10 mars 2019, 11:10

Merci je vais y regarder,
Le script de papoo sur vigilance météofrance doit utiliser leur api.
Domoticz Stable V4.9700 sur Synology DSM 6.2 / 2 x RFlink V48.4 - 433.92MHz(Dio/Chacon) & 433.42MHz(RTS) / Script en LUA & Blocky

cyberbob
Messages : 459
Enregistré le : 28 nov. 2016, 19:43
Localisation : Belgique

Re: Détection de mouvement ou sonore sur une caméra IP Foscam avec l'API - CGI

Message par cyberbob » 12 mars 2019, 00:12

Bon après multiple et diverse recherche, j'ai maintenant un truc fonctionnel dans un script LUA :
En suivant ce forum : http://foscam.us/forum/a-how-to-sound-d ... t8084.html, on peut actionner la détection sonore même si elle n'a pas été développée sur la page web de la caméra Foscam (apparemment fonctionne sur toute les Foscam en video H264) :

Code : Tout sélectionner

http://192.168.1.XX:XX/cgi-bin/CGIProxy.fcgi?cmd=setAudioAlarmConfig&isEnable=1&sensitivity=4&linkage=14&triggerInterval=10&schedule0=281474976710655&schedule1=281474976710655&schedule2=281474976710655&schedule3=281474976710655&schedule4=281474976710655&schedule5=281474976710655&schedule6=281474976710655&usr=XXXXX&pwd=XXXXX
XX et XXXXX a changer suivant ip et pass.
pour la sensibilité audio : sensitivity=0 à 4 (5 niveaux),
0 : sensibilité sonore la plus élevée, l'alarme se déclenche avec un faible niveau sonore détecté
4 : sensibilité sonore la moins élevée, l'alarme se déclenche avec un plus haut niveau sonore détecté

Dans son script LUA (fait sur un synology, chemin du dossier "/volume1/@..." a adapter suivant sa config :

Code : Tout sélectionner

os.execute('curl "http://192.168.1.XX:XX/cgi-bin/CGIProxy.fcgi?cmd=getDevState&usr=XXXXX&pwd=XXXXX" > /volume1/@appstore/domoticz/foscam.txt')
le getDevState va envoyer la réponse de la cam dans le fichier foscam.txt.

Code : Tout sélectionner

local rech=readall("/volume1/@appstore/domoticz/foscam.txt")
avec la fonction readall a ajouter en début de script :

Code : Tout sélectionner

-- Function Read an entire file.
function readall(filename)
  local fh = assert(io.open(filename, "r")) --"rb" pour binary
  local contents = assert(fh:read("*a")) -- "a" in Lua 5.3; "*a" in Lua 5.1 and 5.2 ("print(_VERSION)" pour afficher la version, domoticz v4.9700 à LUA 5.2)
  fh:close()
  return contents
end
lit le fichier foscam.txt

Code : Tout sélectionner

local rech_d,rech_f,rech_alarm=string.find(rech,"<soundAlarm>(.)") -- recherche le chiffre entre (.)
recherche la ligne "<soundAlarm>" et stocke le chiffre suivant dans la variable rech_alarm.
rech_alarm = 1 : pas d'alarme, = 2 : alarme sonore, = 0 : détection alarme sonore désactivée
On pourrais aussi utiliser <motionDetectAlarm> pour la détection de mouvement, ou <humanDetectAlarmState> pour detection de personne (a tester ?)

Il suffit de faire un :

Code : Tout sélectionner

if rech_alarm=='2'
    then
    ...
    ...
    end
Dans son script pour déclencher ce que l'on souhaite dans le if.

Il faut cependant que ce script s’exécute toutes les 5 secondes.
Pour cela j'utilise cette commande qui englobe tout le script :

Code : Tout sélectionner

if (devicechanged['foscam']=='Off') -- excécute le script toutes les 5 secondes suivant le réglage du délais d'extinction du switch virtuel
then
    commandArray['foscam']='On'
    ...
    ...
end
créer un switch virtuel 'foscam' et mettre son délais d'extinction à 5 secondes.
Et enregistrer le script en "device"

Tout fonctionne parfaitement, mais 2 choses m'embête et je ne vois pas comment faire autrement :
  1. le fichier "foscam.txt" va être enregistrer toutes les 5 secondes sur le disque (ou une carte mémoire SD), il ne fait que 1Ko, mais il aurait été préférable de le stocker directement dans une variable au lieux de ... > /volume1/@appstore/domoticz/foscam.txt') , mais si j’assaille une variable a la place ça ne fonctionne pas ... Même en testant plusieurs syntaxe différente.
  2. Le fait que le switch virtuel 'foscam' change d'état toute les 5 secondes va créer un log énorme, mais je n'ais pas trouver comment exécuter un script comme cela autrement ...
Si vous avez des idées sur ces 2 points, ce serais alors parfait :)
Domoticz Stable V4.9700 sur Synology DSM 6.2 / 2 x RFlink V48.4 - 433.92MHz(Dio/Chacon) & 433.42MHz(RTS) / Script en LUA & Blocky

e111111
Messages : 53
Enregistré le : 11 déc. 2018, 19:44

Re: Détection de mouvement ou sonore sur une caméra IP Foscam avec l'API - CGI

Message par e111111 » 19 juil. 2019, 20:20

Salut,

je suis en train de travailler sur le même sujet, et à la pêche aux infos je suis tombé sur ton post qui m' intéresse.

Pour les gros logs, j'avais trouvé une solution qui marche pas mal il y a quelques temps, voici la commande que j'utilise :

Code : Tout sélectionner

os.execute(curl ..'"'.. domoticzURL ..'/json.htm?type=command&param=clearlightlog&idx=IDX" ')
Il suffit de l’exécuter tous les X jours ...

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Répondre