Script Python : comment coder le niveau de variation d'une lampe

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
chddgrimm
Messages : 18
Inscription : 13 janv. 2015, 21:51

Script Python : comment coder le niveau de variation d'une lampe

Message 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
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Script Python : comment coder le niveau de variation d'une lampe

Message par vil1driver »

salut,

dans le script que tu cites il est écrit, level 0, essai level 15 (100%)
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

Re: Script Python : comment coder le niveau de variation d'une lampe

Message 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
Raspberry pi 3, Dongle RfxCom et Zigate +, plugin de pipiche, Volets Roulants profalux, contrôle d'éclairage, détecteurs de présence, alarme incendie, pilotage livebox ...
Objectif : WAF > 1
jackslayter
Messages : 1040
Inscription : 30 sept. 2014, 14:40
Localisation : Isère (38)

Re: Script Python : comment coder le niveau de variation d'une lampe

Message 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
Raspberry Pi + RFLink + Domoticz Beta
Oregon - 3x Thgr122Nx / Chacon - micromodule 200w, télécommande 3b et 16b, 2x module 1000w, détecteur de fumée, contact de porte, 2x prise 3500w / OWL - CM180 / TRC02 v2 RGB 3M / Cheap - PIR, contact de porte
chddgrimm
Messages : 18
Inscription : 13 janv. 2015, 21:51

Re: Script Python : comment coder le niveau de variation d'une lampe

Message 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
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Script Python : comment coder le niveau de variation d'une lampe

Message 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'
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
chddgrimm
Messages : 18
Inscription : 13 janv. 2015, 21:51

Re: Script Python : comment coder le niveau de variation d'une lampe

Message 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
chddgrimm
Messages : 18
Inscription : 13 janv. 2015, 21:51

Re: Script Python : comment coder le niveau de variation d'une lampe

Message 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
chddgrimm
Messages : 18
Inscription : 13 janv. 2015, 21:51

Re: Script Python : comment coder le niveau de variation d'une lampe

Message 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
Répondre