Page 2 sur 2
Re: Plantage Sirene Aeotec Gen 5
Publié : 06 janv. 2019, 19:09
par plouf34
Bonsoir non l’autre.
Celui pour déclenchement de l’alarme et type de sonnerie suivant état de déclenchement. La totale quoi;-)
Merci d’avance.
Re: Plantage Sirene Aeotec Gen 5
Publié : 07 janv. 2019, 08:31
par lost
plouf34 a écrit : 06 janv. 2019, 19:09
Bonsoir non l’autre.
Celui pour déclenchement de l’alarme et type de sonnerie suivant état de déclenchement. La totale quoi;-)
Merci d’avance.
Hello,
Je ne change pas le type de sonnerie (ça touche aux paramètres, donc chiant). Juste la durée de déclenchement selon le "poids" cumulé des capteurs utilisés dans la fonction alarme qui on tilté sur une durée donnée.
Sur ce coup, rien de bien futé (pas chez moi, mais juste des histoire de "On FOR ...", voir même d'envoyer 2 commandes en 1 déclenchement de script "On", puis "Off AFTER ..." de mémoire car à l'époque ou ce fut écrit on ne pouvait mettre qu'un temps en minute après FOR, et en seconde après AFTER, ce qui a été changé depuis je crois en pouvant précisant l'unité).
Si tu veux un extrait de code, il faut préciser ce qui est réellement utile: C'est assez éclaté entre du Lua côté Domoticz, du shell ou Python (selon complexité, sachant que Python n'est pas mon fort, donc il manque pas mal de gestion d'exception ) pour ce qui est en dehors (et s'y interface au besoin via l'API HTTP/JSON, car écrit avant le système de plugin Python qui permettrait sans doute de faire plus propre/concis, sans besoin de Lua, désormais) chez moi et un peu écrit au fil de l'eau et des ajouts matériels/besoins (=> ça nécessiterait bonne une remise à plat pour être compréhensible/réutilisable au complet).
A+
Re: Plantage Sirene Aeotec Gen 5
Publié : 08 janv. 2019, 08:06
par plouf34
C’est le deuxième paragraphe qui m’intéresse. Je voulais le faire en blocky, mais on est toujours bloqué en blocky avec le on for en secondes. C’est pour cela que je souhaitais que tu partages ton script lua que j’aurai adapté à ma situation.
Re: Plantage Sirene Aeotec Gen 5
Publié : 08 janv. 2019, 14:07
par lost
plouf34 a écrit : 08 janv. 2019, 08:06
C’est le deuxième paragraphe qui m’intéresse. Je voulais le faire en blocky, mais on est toujours bloqué en blocky avec le on for en secondes. C’est pour cela que je souhaitais que tu partages ton script lua que j’aurai adapté à ma situation.
La partie en utile est ici, en Lua (devSiren est initialisé au nom du switch controlant l'aeotec ; alarmW reflète le poids cumulé associé aux capteurs ayant tilté sur une minute glissante, géré en dehors de cette partie de script), pour gérer un temps sirène "warning" court et "alarme" long, plus la fontion timeLastUpdate utilisée:
Code : Tout sélectionner
sirenOffAlarmSec = '60'
sirenOffWarningSec = '5'
lightOffSec = '120'
-- Will ensure at least silent time = siren on time (or 30s)...
alarmRateLimitSec = 30
-- Get current script exec time & compute last 'device' update time,
-- Useful for rate limiting...
function timeLastUpdate(device)
t1 = os.time()
sT0 = otherdevices_lastupdate[device]
-- Returns a date time like 2016-12-02 15:30:10
-- => Format as os.time & compute diff :
year = string.sub(sT0, 1, 4)
month = string.sub(sT0, 6, 7)
day = string.sub(sT0, 9, 10)
hour = string.sub(sT0, 12, 13)
minutes = string.sub(sT0, 15, 16)
seconds = string.sub(sT0, 18, 19)
t0 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
tDiff = os.difftime(t1, t0)
return(tDiff)
end
-- Plein d'autres trucs...
alarmW = uservariables['alarmWeight']
-- Plein d'autres trucs... Partie utile conditionnant le temps sirène:
-- If Siren is currently off, send on, rate limiting siren
-- use (if alarm, not for warn) both on time & alarm weighting mechanism...
if ((otherdevices[devSiren] == 'Off') and
(((timeLastUpdate(devSiren) > alarmRateLimitSec) and (alarmW >= alarmTrigWeight)) or
((alarmW >= warningTrigWeight) and (alarmW < alarmTrigWeight)))) then
if (uservariables['alarmWeight'] < alarmTrigWeight) then
-- Only perimeter sensors triggered, so use short off delay...
sirenOffSec = sirenOffWarningSec
else
-- Internal sensors triggered => long off delay
sirenOffSec = sirenOffAlarmSec
end
-- Send On (with limit) command:
--print('ALARM :'..devSiren..' Send On FOR '..sirenOffSec..'sec.')
commandArray[devSiren] = 'On FOR '..sirenOffSec..' SECONDS'
if (timeofday['Nighttime']) then
commandArray[devSwitchAlarmLight] = 'On FOR '..lightOffSec..' SECONDS'
end
end
Mais bon, pas certain que ce soit utile sauf pour l'exemple. Mon système est comme expliqué un peu complexe et adapté à mon usage. Ce qui est clair, c'est que mieux vaut en effet se mettre à Lua qui reste pas trop compliqué que faire en blockly, vriment limité.
Bon courage!
Re: Plantage Sirene Aeotec Gen 5
Publié : 08 janv. 2019, 20:43
par plouf34
Merci