Page 1 sur 1

declencher un script sur

Publié : 20 mai 2016, 08:47
par domoserena
bonjour,

J'ai connecté à domoticz un rflink. J'ai ensuite créé une dizaine de devices pour des sondes oregon et des telecommandes radio.
Je voudrais sur chaque evenement recu du rflink declencher un script. Je peux faire une scene par device declaree dans domoticz qui va declencher à chaque fois le meme script mais c'est franchement pas terrible comme approche.

est il possible de declencher un script sur l'arrivée d'un evenement sur le rflink (declencher sur un materiel et non pas une device de ce materiel en fait) et de declencher un script avec en parametre la chaine recue par le rflink ?

merci d'avance

Re: declencher un script sur

Publié : 20 mai 2016, 10:53
par rimram31
Bonjour,

Peux-tu nous dire plutôt ce que tu cherches a faire ? La finalité ? On pourra t'aider a le faire avec domoticz. Domoticz est là justement pour abstraire le matériel, que ce soit du 433, zwave ou autre ... un événement est un événement.

A un événement rflink correspond un événement device, les devices associés a ce matériel (scripts _device) pour lequel tu pourrais filtrer uniquement les devices qui t'intéressent. Si tu veux aller plus bas dans le matériel, attaque alors l'implémentation hardware (en C) du rflink mais tu fais alors du spécifique.

Re: declencher un script sur

Publié : 20 mai 2016, 12:02
par domoserena
J'ai actuellement un systeme domotique que j'ai developpe moi meme à partir d'arduinos et de raspberry.
Les arduinos font actuellement toutes les parties capteurs (teleinfo, decodage de telecommande et des sondes oregon, alarme, x10 par tw523, ds18b20, etc, etc ...).
Le programme principal est en python sur raspberry via un serveur tornado (websocket). L'interface est en php. L'arduino maitre est connecte au raspberry par usb.

Je voudrais migrer mon systeme sur domoticz mais petit à petit. Dans un premier temps domoticz fera l'interface utlisateur à la place de mon php et la partie capteurs cm15 / rflink. Le reste du programme restera mon programme python actuel avec quelques modifs pour mettre à jour des champs dans domoticz.

Je voudrais donc via domoticz capturer tout ce qui passe sur le cm15 (mochad) et sur le rflink et l'envoyer à mon programme python tornado (par http get, udp ou mqtt). Le programme fera le traitement et renverra les données vers domoticz.

Ensuite si tout ce passe bien, je passerais probablement tout sur domoticz.

Re: declencher un script sur

Publié : 20 mai 2016, 14:24
par rimram31
Ok ;) plus clair pour moi ...

Première idée, utiliser mqtt, tu devrais pouvoir alors te mettre "a l'ecoute" de l'activité de domoticz, pas un matériel particulier mais tout ce qui se passe sous dz. A vérifier, je n'ai pas joué avec, mais on peut aussi piloter dz par ce biais.

Autre idée, écrire un script device générique (lua), ce type de script est appelé chaque fois qu'un device a son etat qui change, et appeler alors ton programme python via http par ex. un peu sur le modèle de ça: viewtopic.php?f=17&t=1925 ou on renvoie tout "ce qui se passe" a un site tierce. Ca ne te permet pas de faire un script "par matériel" mais d'imaginer un seul script un peu générique pour traiter un ensemble d'interactions.

Pour l'autre sens => ton outil vers dz, dz a une api https://www.domoticz.com/wiki/Domoticz_API/JSON_URL's qui te permet a partir d'un programme tiers d'interagir avec dz.

Re: declencher un script sur

Publié : 20 mai 2016, 21:52
par papoo
dans un même script_device en lua il me semble que tu peux contrôler le changement de plusieurs devices

comme dans cet exemple (trouvé sur domoticz.com)

Code : Tout sélectionner

commandArray = {}
if devicechanged['Luci Cancellino'] == 'On'    then  cancellin = 50 else  cancellin = 0 end
if devicechanged['Facciata'] == 'On'           then  facciata = 21  else  facciata = 0 end
if devicechanged['Cupola Esterno'] == 'On'     then  dome = 8       else  dome = 0 end
if devicechanged['Corridoio'] == 'On'          then  hall = 10      else  hall = 0 end
if devicechanged['Cupola Xmas'] == 'On'        then  cupXmas = 500  else  cupXmas = 0 end
if devicechanged['Cancellino Xmas'] == 'On'    then  canXmas = 400  else  canXmas = 0 end
if devicechanged['Lampada Sala'] == 'On'       then  sala = 10      else  sala = 0 end
if devicechanged['Faro dietro'] == 'On'        then  farodie = 35   else  farodie = 0 end
if devicechanged['Faro davanti'] == 'On'       then  farodav = 40   else  farodav = 0 end
if devicechanged['Lanterna facciata'] == 'On'  then  lantfac = 16   else  lantfac = 0 end
if devicechanged['Lanterna nonna'] == 'On'     then  lantnon = 25   else  lantnon = 0 end
if devicechanged['Accento ingresso'] == 'On'   then  accing = 8     else  accing = 0 end
if devicechanged['Lampione'] == 'On'           then  lampion = 23   else  lampion = 0 end
if devicechanged['Presa Volante'] == 'On'      then  presvol = 300  else  presvol = 0 end
if devicechanged['Luce Garage'] == 'On'        then  lucgar = 4     else  lucgar = 0 end
return commandArray