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&param=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&param=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&param=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&param=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&param=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&param=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