Page 1 sur 1

Question: comment feriez-vous pour scripter ceci ?

Publié : 11 déc. 2022, 14:19
par f-d-m
Bonjour,

Voici ma question:
- j'ai une ouïe assez déficiente dans les aigus et je n'entends quasiment pas le bip bip bip du système d'alarme lors du compte à rebours pendant lequel je dois introduire mon code d'accès
- je souhaiterais faire une indication lumineuse pour y pallier.

Je dispose de:
- Domoticz bien sûr
- un virtual switch qui sait si l'alarme est armée
- un virtual switch qui sait si la porte d'entrée est fermée ou ouverte
- une ampoule Aqara Zigbee toujours connectée, réglage de couleur blanc froid à blanc chaud et puissance de 0% à 100%.

Ce que je voudrais faire:
- sauvegarder l'état de la lampe pour la remettre dans le même état à la fin de l'alerte
- si l'alarme est armée, et que la porte passe de l'état "fermée" à "ouverte", faire clignoter la lampe en blanc froid pendant 5 secondes
- remettre la lampe dans l'état antérieur. (a priori il n'est pas connu car l'allumage progressif est calé sur le coucher/lever du soleil)

Ca vous inspire ?
Vous feriez cela en dzVents ?

Merci pour vos bonnes suggestions :)

Frédéric

Re: Question: comment feriez-vous pour scripter ceci ?

Publié : 11 déc. 2022, 14:28
par Keros
Je viens de déplacer ton sujet dans la section dédiée aux scripts.

Tu peux tout à fait faire ton besoin en DzVents. La fonction historique (persistant data) te permettra de sauvegarder l'état de la lampe.

Re: Question: comment feriez-vous pour scripter ceci ?

Publié : 11 déc. 2022, 21:52
par f-d-m
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
}

Re: Question: comment feriez-vous pour scripter ceci ?

Publié : 12 déc. 2022, 10:09
par Keros
Les fonctions pour les couleurs sont là: https://www.domoticz.com/wiki/DzVents:_ ... .2FApplamp

Tu as mis du débogage dans ton code, c'est très bien. Tu pourrais nous passer les logs d'exécution du script ?

Tes aftersec me semble la bonne façon de faire. Tu as essayé avec switchOn et switchOff à la place de dim ?

Re: Question: comment feriez-vous pour scripter ceci ?

Publié : 12 déc. 2022, 13:48
par f-d-m
Keros a écrit : 12 déc. 2022, 10:09 Tu as essayé avec switchOn et switchOff à la place de dim ?
Oui, et déçu. Selon l'état du dimmer elle clignote ou bien elle reste allumée.

Cette ampoule Aqara clignote en mode soft, les transitions se font progressivement. Je ne sais pas si toutes les ampoules Zigbee se comportent comme ça.

Voici le log:

Code : Tout sélectionner

2022-12-12 13:41:23.910 Status: dzVents: Info: Handling events for: "FrontDoor (mx)", value: "Open"
2022-12-12 13:41:23.911 Status: dzVents: Info: ------ Start internal script: dz Alerte Prealarme: Device: "FrontDoor (mx) (virtual)", Index: 123
2022-12-12 13:41:23.914 Status: dzVents: Info: On
2022-12-12 13:41:23.914 Status: dzVents: Info: Open
2022-12-12 13:41:23.914 Status: dzVents: Info: Door opened and alarm is on
2022-12-12 13:41:23.914 Status: dzVents: Info: Off
2022-12-12 13:41:23.915 Status: dzVents: Info: {["red"]=0, ["b"]=0, ["g"]=0, ["ww"]=190, ["m"]=2, ["blue"]=0, ["r"]=0, ["hue"]=300, ["t"]=190, ["saturation"]=0.0, ["brightness"]=0.0, ["mode"]=2, ["value"]=0.0, ["temperature"]=190, ["green"]=0, ["cw"]=65, ["cold white"]=65, ["warm white"]=190, ["isWhite"]=true}
2022-12-12 13:41:23.915 Status: dzVents: Info: Off
2022-12-12 13:41:23.916 Status: dzVents: Info: ------ Finished dz Alerte Prealarme 

Re: Question: comment feriez-vous pour scripter ceci ?

Publié : 12 déc. 2022, 20:33
par Keros
Je pense que c'est la commande .dimTo() qui ne doit pas être la bonne commande pour ton ampoule.

Tu as essayé les diverses fonctions DzVents : https://www.domoticz.com/wiki/DzVents:_ ... .2FApplamp ?

Re: Question: comment feriez-vous pour scripter ceci ?

Publié : 13 déc. 2022, 19:29
par f-d-m
ah mais avec dimTo ça fait ce que je veux ! c'est switchOn et switchOff qui n'ont pas fait ce que je voulais.

Pour le moment mon script fonctionne, je ne touche pas à la couleur. L'objectif de me lancer une alerte visuelle est atteint.

Je vais ouvrir un autre post à propos d'un autre script qui me trotte en tête.
https://easydomoticz.com/forum/viewtopi ... 10&t=12818