Clignoteur

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 <\>.
valdoison
Messages : 161
Inscription : 17 oct. 2014, 14:59

Clignoteur

Message par valdoison »

Bonjour,

Quelqu'un aurait il une idée de script LUA ( dans DOMOTICZ bien sur ) pour faire clignoter une lampe dans un réseau ZWAVE.

Bonne journée
Domoticz sur serveur UBUNTU 18.04 - Controleur Zwave+ - 7 detecteurs FGMS 001 - 1 télécommande NODON - 1 sirene SE812 - 3 modules AN157 - 1 detecteur ST814 - 1 vanne danfoss LC13 - 1 detecteur de fumée SF812
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

Re: Clignoteur

Message par patrice »

Bonsoir

Un script python comme celui ci fait le job, je ne suis pas assez calé en LUA pour faire facilement un truc qui fonctionne
Ce script nécessite la bibliothèque requests ; sudo pip install requests
Placer ces lignes dans un fichier
Adapter vos ip,ports,idx du périphérique a piloter
Régler le nb de clignotements désirés , le délai entre allumage/extinction
Un chmod 777 sur le fichier
On le lance par un ./mon_nom_de_fichier.py &

le & permet de rendre la main au shell puisque le script va boucler X fois

Ce script est suffisamment documenté pour qu'il soit lisible et compréhensible
#!/usr/bin/python

# il faut le module requests
# sudo pip install requests

import time
import requests


# le nombre de cligontements que l'on veut
max_iterations=5

# le temps entre un allumage et une extinction en secondes
dodo=1


# les parametres de Domoticz
domoticz_ip='192.168.1.81'
domoticz_port='8080'

# l'idx du peripherique a allumer/eteindre
periph_idx='112'

# 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'



# 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)

# la fontion qui est appelee max_iterations fois

for passage in range (0,max_iterations):
lumon()
lumoff()
J'espère que le coté LUA n'était pas indispensable , sinon ca peut servir de trame pour convertir vers LUA

Bonne soirée
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
sarakha63
Messages : 6
Inscription : 30 nov. 2014, 20:34

Re: Clignoteur

Message par sarakha63 »

ce genre de script il ne faut pas le faire en lua. Tout simplement car le moteur lua bloquera tous les autres scripts pendant toute la phase de clignotement.


C'est pour cela que ce genre de script (qui ont des délais,timers ou autres) effectivement comme tu l'as fais , il est recommandé de les faire en script autre que lua
valdoison
Messages : 161
Inscription : 17 oct. 2014, 14:59

Re: Clignoteur

Message par valdoison »

Bonjour,

J'ai bien compris le principe de ce script, néanmoins il se pose plusieurs questions dans l'intégration à Domoticz.
Dans un script LUA de type "script_device_xxxx.lua qui ne peut être lancé que si il est dans ~/domoticz/scripts/lua, un périphérique "test" passe de Off à On (par exemple).
Comment lancer le script "clignotement" pour ce périphérique après le changement de status?
Pendant l’exécution du script "clignotement", qui peut durer assez longtemps, si le script_device_xxxx.lua est relancé, que se passe t-il? Le périphérique "test" reçoit des commandes de 2 scripts différents. C'est d'autan plus vrai qu'à chaque changement de status On/Off ou Off/On de "test" pendant le clignotement, le script_device_xxxx.lua est lancé automatiquement par Domoticz. (pour ce problème, je pourrais interdire toute commande sur le périphérique "test" pendant le temps du clignotement... à voir)
Domoticz sur serveur UBUNTU 18.04 - Controleur Zwave+ - 7 detecteurs FGMS 001 - 1 télécommande NODON - 1 sirene SE812 - 3 modules AN157 - 1 detecteur ST814 - 1 vanne danfoss LC13 - 1 detecteur de fumée SF812
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

Re: Clignoteur

Message par patrice »

Bonjour
Pour lancer le script en fonction d'un autre interrupteur accroche le dans l'interface au "action on" de cet inter-> script:\\\home\pi\domoticz\scripts\lecriptpython.py
Le script python que j'ai donné ne fait que clignoter durant les x secondes en Y fois, le cahier des charges initial ne précisait pas de cas de sorties du script :P

Peut être dans ton cas il faut envisager un autre script qui, sur un "action off" de l'interface, arrete le clignotement

Je ne sais pas si ma réponse couvre bien ta demande, mais apèrs 3 ibuprofènes , c'est dur ...
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
valdoison
Messages : 161
Inscription : 17 oct. 2014, 14:59

Re: Clignoteur

Message par valdoison »

Bonsoir,

Voilà ce que je vais faire après tes conseils. Tout ceci pour faire une alarme anti intrusion.
Avec ma télécommande je fais passer à ON un device fantôme qui déclenche ton script dans 'action on' de ce périphérique. Ce script commence par une pause de 20s puis fais biper ma sirène 5 fois (1/2s ON - 1s OFF) et fais passer à ON un autre device qui lui active l'alarme.
Je ne connais pas PYTHON et je vais essayer une traduction en PHP car je dois ajouter quelques lignes à ton script:
Commencer par une pause de 20s
Après les bip m'assurer que la sirène est bien à OFF, sinon relancer la commande OFF ( par intermédiaire un for, 4 fois par exemple, si toujours ON envoyer un SMS et tout arrêter )
Ajouter le passage à ON du device qui active l'alarme.

Pendant ce temps il me faut inhiber l’exécution du script-device-alarme.lua car à chaque changement de status d'un périphérique il est lancé.

J’espère ne pas avoir aggravé ta santé.

Cordialement
Domoticz sur serveur UBUNTU 18.04 - Controleur Zwave+ - 7 detecteurs FGMS 001 - 1 télécommande NODON - 1 sirene SE812 - 3 modules AN157 - 1 detecteur ST814 - 1 vanne danfoss LC13 - 1 detecteur de fumée SF812
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

Re: Clignoteur

Message par patrice »

Bonsoir

Bon ! Enchanté qu'une solution se dégage

Pour les modifs dont tu parles
pour avoir une pause de 20 sec tu peux caler un dodo(20) avant for passage in range (0,max_iterations):
ensuite tu peux utiliser les

requete='http://'+domoticz_ip+':'+domoticz_port+json_url1+periph_idx+json_url2+On+json_url3
r=requests.get (requete)

que tu remets à ta sauve pour json_url1,2,3 suivant l'API
le r=requets... lance cl'url en question

Après Ibuprofène j'ai fini par whisky/glaçon et ca va mieux ,
j'aurais du faire ça avant ...
Bonne soirée
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
Répondre