Page 1 sur 1
Script Python : comment coder le niveau de variation d'une lampe
Publié : 25 févr. 2015, 08:45
par chddgrimm
Bonjour, je suis débutant en scripting et suis en train de réaliser un script que permet le clignotement des lumières externes lorsque l'alarme se déclenche. Je suis parti du script "clignoteur" de ce forum (
viewtopic.php?f=10&t=73), par contre je n'arrive pas à paramétrer le niveau du dimmer(FGD211) qui commande les lampes ! Du coup, si mon dimmer était à 10%, les lampes clignotent à 10%, alors que je souhaiterai qu'elles clignotent toujours à 100% en cas d'alarme.
Voilà, merci pour votre aide
Bonne journée à tous
Denis
Re: Script Python : comment coder le niveau de variation d'une lampe
Publié : 25 févr. 2015, 09:30
par vil1driver
salut,
dans le script que tu cites il est écrit, level 0, essai level 15 (100%)
Re: Script Python : comment coder le niveau de variation d'une lampe
Publié : 25 févr. 2015, 09:32
par patrice
Bonjour
Eh bien lorsque une alarme est detectée il faut tout d'abord que tu passe à 100 % toutes tes lampes
l'api JSON permet cela
/json.htm?type=command¶m=switchlight&idx=&switchcmd=Set%20Level&level=6
Level should be a value between 1 (0%) and 16 (100%)
When the light is off, it will be turned on
level va donc de 0 pour 0% à 16 pour 100%
et j'ai l'impression qu'il y a une espace entre Set et Level (le %20) Set%20Level&level=6
http://www.domoticz.com/forum/viewtopic ... api#p29842
Re: Script Python : comment coder le niveau de variation d'une lampe
Publié : 25 févr. 2015, 12:03
par jackslayter
j'ai ca en lua
Code : Tout sélectionner
--script_device_lampe.lua
commandArray = {}
MaxDimLevel = 16
step = 100.0 / MaxDimLevel
increment = 2
button = 'controle inten salon'
light = 'lampe salon'
if (devicechanged[button]=='On') then
if ('Off' ~= string.len(otherdevices_svalues[light])) then
local currentlevel = tonumber(otherdevices_svalues[light])
if (currentlevel < MaxDimLevel) then
currentlevel = step * currentlevel
newlevel = math.ceil(currentlevel + (increment * step))
--print('Increase ' .. light .. ' from ' .. math.ceil(currentlevel) .. '% to ' .. newlevel .. '%')
commandArray[light]='Set Level ' .. newlevel
end
end
elseif (devicechanged[button]=='Off') then
if ('Off' ~= string.len(otherdevices_svalues[light])) then
local currentlevel = tonumber(otherdevices_svalues[light])
if (currentlevel < MaxDimLevel) then
currentlevel = step * currentlevel
newlevel = math.ceil(currentlevel - (increment * step))
--print('Increase ' .. light .. ' from ' .. math.ceil(currentlevel) .. '% to ' .. newlevel .. '%')
commandArray[light]='Set Level ' .. newlevel
end
end
end
return commandArray
Re: Script Python : comment coder le niveau de variation d'une lampe
Publié : 25 févr. 2015, 13:10
par chddgrimm
Bonjour et merci pour vos réponses...
@vil1driver : merci pour ta proposition je viens d'essayer avec la valeur 15 à la place de O dans level, rien ne change. Idem avec d'autres valeurs.
Pour les autres propositions, je teste ce soir
Encore merci à tous.
Bonne journée
Denis
Re: Script Python : comment coder le niveau de variation d'une lampe
Publié : 25 févr. 2015, 14:07
par vil1driver
après lecture de la réponse de Patrice,
je me rends compte que json fonctionne un poil différemment que lua,
du coups je complète ma réponse,
dans le script remplaces
Code : Tout sélectionner
On='On'
Off='Off'
json_url1='/json.htm?type=command¶m=switchlight&idx='
json_url2='&switchcmd='
json_url3='&level=0'
par
Code : Tout sélectionner
On='Set%20Level'
Off='Off'
json_url1='/json.htm?type=command¶m=switchlight&idx='
json_url2='&switchcmd='
json_url3='&level=16'
Re: Script Python : comment coder le niveau de variation d'une lampe
Publié : 25 févr. 2015, 22:13
par chddgrimm
Bonsoir, je viens de faire les essais par rapport à la proposition de Patrice, je suis arrivé à faire fonctionner le script comme je le souhaite en apportant les quelques modifs ci-dessous :
Code : Tout sélectionner
# l URL Domoticz est construite dans lumon pour allumer et lumoff pour eteindre
# avec les bouts ci dessous
On='On'
Off='Off'
json_url1='/json.htm?type=command¶m=switchlight&idx='
json_url2='&switchcmd='
json_url3='&level=0'
[b][color=#FF0000]json_url4='Set%20Level&level=100'
# reglage du peripherique a 100 pour 100[/color][/b]
[color=#FF0000][b]def lum100():
requete='http://'+domoticz_ip+':'+domoticz_port+json_url1+periph_idx+json_url2+json_url4
r=requests.get (requete)[/b][/color]
#la seule difference entre les 2 est le On/Off entre json_url2 et json_url3
# pour basculer l'etat a On/Off
def lumon():
requete='http://'+domoticz_ip+':'+domoticz_port+json_url1+periph_idx+json_url2+On+json_url3
r=requests.get (requete)
time.sleep (dodo)
def lumoff():
requete='http://'+domoticz_ip+':'+domoticz_port+json_url1+periph_idx+json_url2+Off+json_url3
r=requests.get (requete)
time.sleep (dodo)
[color=#FF0000][b]lum100()[/b][/color]
# la fonction qui est appelee max_iterations fois
for passage in range (0,2):
lumon()
lumoff()
Voilà, en tout cas, merci à tous les contributeurs pour vos réponses qui m'ont permis d'aboutir à la solution.
Bonne soirée
Denis
Re: Script Python : comment coder le niveau de variation d'une lampe
Publié : 25 févr. 2015, 22:18
par chddgrimm
Désolé, je viens de me rendre compte que les modifs de code (création et lancement de lum100) ) ne sont pas lisibles (j'avais mis en gras et en rouge) mais cela n'a pas fonctionné, du coup je recolle le script en entier...
Code : Tout sélectionner
#!/usr/bin/python
# il faut le module requests
# sudo pip install requests
import time
import requests
# le nombre de clignotements que l'on veut
max_iterations=4
# le temps entre un allumage et une extinction en secondes
dodo=2
# les parametres de Domoticz
domoticz_ip='192.168.0.7'
domoticz_port='8080'
# l'idx du peripherique a allumer/eteindre
periph_idx='92'
# fin du parametrage #
# l URL Domoticz est construite dans lumon pour allumer et lumoff pour eteindre
# avec les bouts ci dessous
On='On'
Off='Off'
json_url1='/json.htm?type=command¶m=switchlight&idx='
json_url2='&switchcmd='
json_url3='&level=0'
json_url4='Set%20Level&level=100'
# reglage du peripherique a 100 pour 100
def lum100():
requete='http://'+domoticz_ip+':'+domoticz_port+json_url1+periph_idx+json_url2+json_url4
r=requests.get (requete)
#http://192.168.0.7:8080/json.htm?type=command¶m=switchlight&idx=92&switchcmd=Set%20Level&level=100
# la seule difference entre les 2 est le On/Off entre json_url2 et json_url3
# pour basculer l'etat a On/Off
def lumon():
requete='http://'+domoticz_ip+':'+domoticz_port+json_url1+periph_idx+json_url2+On+json_url3
r=requests.get (requete)
time.sleep (dodo)
def lumoff():
requete='http://'+domoticz_ip+':'+domoticz_port+json_url1+periph_idx+json_url2+Off+json_url3
r=requests.get (requete)
time.sleep (dodo)
lum100()
# la fonction qui est appelee max_iterations fois
for passage in range (0,2):
lumon()
lumoff()
Bonne soirée
Denis
Re: Script Python : comment coder le niveau de variation d'une lampe
Publié : 25 févr. 2015, 22:23
par chddgrimm
Dernière précision, comme vous pouvez le voir dans le script ci-dessus, pour avoir le dimmer à 100%, il faut paramètrer le level à 100.
Bye
Denis