Voici où j'en suis (en ayant lu attentivement le wiki)
J'ai 3 devices, et je les adresse volontairement par leur n° afin de ne pas tout casser si je change leur nom
- le switch "capteur porte d'entrée" (*)
- le switch "alarme armée" (**)
- une ampoule Aqara CW/WW (blanc) dimmable commandée via Zigbee.
(*) j'ai un portier Mobotix T24 et une porte électrifiée, qui informe domoticz via http
(**) alarme homologuée et installée par une société spécialisée ; j'ai requis une carte I/O dès la commande il y a 10 ans ; les sorties sont pilotées par transistor à collecteur ouvert ; j'y ai connecté des relais 12V avec une diode anti-retour de protection ; le contact sec du relais rentre dans une entrée digitale de mon IPX800, qui transmet en http à domoticz. Un GPIO aurait aussi fait l'affaire.
Dans le code je ne suis pas arrivé à faire clignoter la lampe de manière fiable comme expliqué dans le wiki
https://www.domoticz.com/wiki/DzVents:_ ... _scripting
Code : Tout sélectionner
-- flash a light for 3 times
device.switchOn().forSec(2).repeatAfterSec(1, 3)
L'action ne fonctionne que si la lampe est éteinte, mais l'éteindre puis envoyer l'action ne fonctionne pas mieux.
Le script lance toutes les actions à la fois et non pas séquentiellement, d'où les multiples "afterSec".
En temps normal, la lampe est allumée progressivement au coucher du soleil et reste allumée jusqu'à minuit environ, puis elle passe en mode veilleuse 1%.
Le déclenchement du script veille à la remettre dans l'état où elle était.
Je ne suis pas arrivé à intervenir sur la couleur. "getColor" ramène un array JSON, mais comment le renvoyer sur l'ampoule après ?.
Code : Tout sélectionner
return {
on = { devices = { 123 }}, -- id du switch capteur porte d'entrée
execute = function(domoticz, switch)
local lampadaire = domoticz.devices(28) -- id lampe zigbee dimmable
local lampadaireStatus = domoticz.devices(28).state
local lampadaireColor = domoticz.devices(28).getColor()
local lampadaireDimmer = domoticz.devices(28).rawData[1]
domoticz.log(domoticz.devices(16).state)
domoticz.log(domoticz.devices(123).state)
-- device 16 : id du switch virtuel "alarme armée"
if (domoticz.devices(16).state == 'On' and domoticz.devices(123).state == 'Open') then
domoticz.log('Door opened and alarm is on')
domoticz.log(lampadaireStatus)
domoticz.log(lampadaireColor)
domoticz.log(lampadaireDimmer)
-- impossible de faire clignoter comme expliqué dans le wiki
lampadaire.dimTo(100)
lampadaire.dimTo(0).afterSec(1)
lampadaire.dimTo(100).afterSec(2)
lampadaire.dimTo(0).afterSec(3)
lampadaire.dimTo(100).afterSec(4)
lampadaire.dimTo(0).afterSec(5)
lampadaire.dimTo(100).afterSec(6)
lampadaire.dimTo(0).afterSec(7)
lampadaire.dimTo(100).afterSec(8)
-- restaurer à l'état entérieur après 22 secondes
lampadaire.dimTo(lampadaireDimmer).afterSec(30)
--
end
end
}