Page 1 sur 2

Script .lua Wanscam requêtes http pour la diriger

Publié : 13 janv. 2016, 22:51
par optik8
Bonsoir c'est encore moi et mes questions...

Sauf que ce coup ci pour ceux d'entre vous qui possèdent une caméra Wanscam HW0039 ou autre j'ai trouvé les commande HTTP pour la diriger et le snapshot...A moi de participer un peu tout de même ;)

Donc je suis en train d’essayer de créer un script.lua qui quand un capteur passe a 'on' tourne la cam a un point 1 défini a l'avance au moyen d'une adresse http et enregistrée dans la caméra.
Ensuite il faut que ça mette en route les LED de la cam
Que ça prenne un snapshot
Que ça l'enregistre quelque par je ne sais ou encore...et...ou ...que ça me l'envoie par mail (mais ça le setup de la cam le permet)
Et que la cam retourne a son point 2 lui aussi prévu a l'avance.

Donc j'ai commencé le script ou j'ai inclus toutes les commandes a ma disposition pour la cam.

Il me faut trouver comment marquer une pause pour permettre a la cam d'atteindre son premier point, d'allumer ses LED et de prendre une série de snapshot et apres de retourner se garer au point 2.

Ca fait encore beaucoup de choses mais quelques pistes me seraient utiles

Merci
commandArray = {}

if (devicechanged['fgms001_sensor']) == 'On' then
--si le capteur est sur "on" aller au point 1
commandArray[1]={['OpenURL']='http://192.168.1.13:99/decoder_control. ... d=7104608a'}
--Allumage des LED de la cam
commandArray[2]={['OpenURL']='http://192.168.1.13:99/decoder_control. ... d=7104608a'}
--La il faudrait une pose le temps que la cam soit positionnée comment faire ?
--ensuite commande de snapshot mais elle s'enregistre ou et comment ???
commandArray[3]={['OpenURL']='http://192.168.1.13:99/snapshot.cgi?use ... d=7104608a'}

end
return commandArray


--http://tutoriels.domotique-store.fr/con ... nscam.html

--snapshot : http://192.168.1.13:99/snapshot.cgi?use ... d=7104608a

--Monter :http://192.168.1.13:99/decoder_control. ... d=7104608a

--Stop montée: http://192.168.1.13:99/decoder_control. ... d=7104608a

--Descendre :http://192.168.1.13:99/decoder_control. ... d=7104608a

--Stop descente :http://192.168.1.13:99/decoder_control. ... d=7104608a

--Gauche :http://192.168.1.13:99/decoder_control. ... d=7104608a

--Stop gauche :http://192.168.1.13:99/decoder_control. ... d=7104608a

--Droite :http://192.168.1.13:99/decoder_control. ... d=7104608a

--Stop droite :http://192.168.1.13:99/decoder_control. ... d=7104608a
------------------------------------------------------------------------------------------------------
--1er centrage ouvert30 (mémoriser position 1)

--http://192.168.1.13:99/decoder_control. ... d=7104608a

--2eme centrage fermé 32(mémoriser position 2)

--http://192.168.1.13:99/decoder_control. ... d=7104608a

--Pour le motion : 33 (rappeller position 2)

--http://192.168.1.13:99/decoder_control. ... d=7104608a

--Pour le no motion :31 (rappeller position 1)

--http://192.168.1.13:99/decoder_control. ... d=7104608a

--Autres API

--/reboot.cgi[?user=&pwd=&next_url=]

--/decoder_control.cgi?command=&onestep=&sit=&user=&pwd=&next_url=

--Montée 0
--Stop montée 1
--Descente 2
--Stop descente 3
--Gauche 4
--Gauche stop 5
--Droite 6
--Droite stop 7
--centrer 25
--Balayage vertical 26
--Balayage vertical stop 27
--Balayage horizontal 28
--Balayage horizontal stop 29
--Mémoriser position 1 30
--Rappeler position 1 31
--Mémoriser position 2 32
--Rappeler position 2 33
--Mémoriser position 3 34
--Rappeler position 3 35

--Mémoriser position 16 60
--Rappeler position 16 61

--Haut gauche 90
--Haut droite 91
--Bas gauche 92
--Bas droite 93
--Allumer LED 94 = http://192.168.1.13:99/decoder_control. ... d=7104608a
--Eteindre LED 95 = http://192.168.1.13:99/decoder_control. ... d=7104608a
--Test rotations 255 = http://192.168.1.13:99/decoder_control. ... d=7104608a


Re: Script .lua Wanscam requêtes http pour la diriger

Publié : 13 janv. 2016, 22:59
par patrice
Bonsoir

Il faut que tu implemente une fonction d'attente http://lua-users.org/wiki/SleepFunction

Code : Tout sélectionner

local clock = os.clock
function sleep(n)  -- seconds
  local t0 = clock()
  while clock() - t0 <= n do end
end

Re: Script .lua Wanscam requêtes http pour la diriger

Publié : 13 janv. 2016, 23:19
par optik8
local clock = os.clock
function sleep(n) 10 seconds
local t0 = clock()
while clock() - t0 <= n do end
end

Si je pige bien on defini local clock = heure actuelle de l'os
on defini le sleep (n) en secondes
apres je pense comprendre mais dur a expliquer...

et ça je le met comme ça ? c'est le "end" qui me chiffonne il est tout seul sans son "if"...je l'enleve....
commandArray = {}

if (devicechanged['fgms001_sensor']) == 'On' then

commandArray[1]={['OpenURL']='http://192.168.1.13:99/decoder_control. ... d=7104608a'}
commandArray[2]={['OpenURL']='http://192.168.1.13:99/decoder_control. ... d=7104608a'}
local clock = os.clock
function sleep(n) 10 seconds
local t0 = clock()
while clock() - t0 <= n do end

--ensuite commande de snapshot mais elle s'enregistre ou et comment ???
commandArray[3]={['OpenURL']='http://192.168.1.13:99/snapshot.cgi?use ... d=7104608a'}

end

return commandArray

Re: Script .lua Wanscam requêtes http pour la diriger

Publié : 14 janv. 2016, 10:32
par patrice
Comme cela plutôt
Tu defini d'abord la fonction sleep et ensuite quand tu en as besoin dans ton code tu l"appelle avec l bonne durée

Code : Tout sélectionner

local clock = os.clock
function sleep(n)  10 seconds     
  local t0 = clock()
  while clock() - t0 <= n do end

commandArray = {}

if (devicechanged['fgms001_sensor']) == 'On' then

commandArray[1]={['OpenURL']='http://192.168.1.13:99/decoder_control.cgi?command=33&onestep=500&user=root&pwd=7104608a'}
sleep(10)
commandArray[2]={['OpenURL']='http://192.168.1.13:99/decoder_control.cgi?command=94&onestep=500&user=root&pwd=7104608a'} 
sleep (10)
--ensuite commande de snapshot mais elle s'enregistre ou et comment ???
commandArray[3]={['OpenURL']='http://192.168.1.13:99/snapshot.cgi?user=root&pwd=7104608a'}

end

return commandArray

Pas testé

Re: Script .lua Wanscam requêtes http pour la diriger

Publié : 14 janv. 2016, 12:09
par optik8
Ah ok je vois le principe, j'éssaie ça des que possible et je te dis quoi.

Merci

Re: Script .lua Wanscam requêtes http pour la diriger

Publié : 14 janv. 2016, 12:39
par optik8
Error: EventSystem: /home/pi/domoticz/scripts/lua/script_device_action_cam.lua:3: unexpected symbol near '10'

Je dois avoir des problèmes de syntaxe... je vais regarder sur le lien que tu m'a filé
il y a ça: function sleep(n) -- seconds
et j'ai remplacé les -- par 10 ... il n'y a pas d'erreur d'espace ou autre...

local clock = os.clock
function sleep(n) 10 seconds
local t0 = clock()
while clock() - t0 <= n do end

commandArray = {}

if (devicechanged['fgms001_sensor']) == 'On' then

commandArray[1]={['OpenURL']='http://192.168.1.13:99/decoder_control. ... d=7104608a'}
sleep(10)
commandArray[2]={['OpenURL']='http://192.168.1.13:99/decoder_control. ... d=7104608a'}

end

return commandArray

Re: Script .lua Wanscam requêtes http pour la diriger

Publié : 14 janv. 2016, 14:55
par vil1driver
salut,

les -- indiquent du commentaire, ce n'est pas à remplacer par quoi que ce soit :D
et tu as oublié le end de fin... le code ça ne pardonne pas les erreurs de copier/coller....


utilises winscp et notepad++ et des copier/coller ça t'éviteras ce genre de problèmes...
et ça te mettra en couleur le code, comme ça tu verras que ce qui suit les -- est d'une autre couleur... pour bien distinguer que ce n'est pas du code ;)
ou si tu es aventurier, l'éditeur de script intégré à domoticz (beta)


sinon excusez moi :D

les pauses dans les scripts lua dans domoticz... sont à EVITER !!
surtout dans ce cas précis avec cette pause de 10 secondes,
ce qui est justement le délai max du script avant que domoticz ne le kill sans sommation !!!

si tu as des logs dans ce sens ne t'étonnes pas...

sinon pour faire une pause, il y a un chouilla plus simple, lancer directement la commande linux sleep ;)

Code : Tout sélectionner

os.execute("sleep 10")
en romançant ça donnerait

Code : Tout sélectionner

function sleep(n)
  os.execute("sleep " .. tonumber(n))
end

commandArray = {}

sleep(5) -- pause de 5 secondes

...

Re: Script .lua Wanscam requêtes http pour la diriger

Publié : 14 janv. 2016, 15:15
par optik8
Toujours sur le coup vil1driver :D

Effectivement les 10 sec on en a déjà parlé sur une de mes premières questions sur le forum...

Donc soit je fait une pause de moins de 10 sec soit j'utilise ta méthode.

Je fini mon topic sur la cam Axis et je vois ça.

Merci

Re: Script .lua Wanscam requêtes http pour la diriger

Publié : 14 janv. 2016, 15:19
par optik8
Donc en gros pour le script de Patrice j'ai juste a mettre 10 dans sleep(10)
local clock = os.clock
function sleep(n) -- seconds
local t0 = clock()
while clock() - t0 <= n do end

commandArray = {}

if (devicechanged['fgms001_sensor']) == 'On' then

commandArray[1]={['OpenURL']='http://192.168.1.13:99/decoder_control. ... d=7104608a'}
sleep(10)
commandArray[2]={['OpenURL']='http://192.168.1.13:99/decoder_control. ... d=7104608a'}

end

return commandArray

Re: Script .lua Wanscam requêtes http pour la diriger

Publié : 14 janv. 2016, 15:20
par vil1driver
ma méthode ??

si tu parles de la façon de faire la pause, ça ne changera rien au problème, il faut éviter, même si cela fait moins de 10s,
ça crée tout de même un instant ou aucun autre script n'est lancé..