feat(sono): madrugada silenciosa e N sons para acordar
Antes um único som acima do limiar, um quadro de movimento ou um pulso do PIR acordavam o rosto; deitado na cama, ele acordava toda hora. - Som: precisa de `somAcordar` barulhos (padrão 3) em 1 minuto; o mesmo barulho comprido conta uma vez. - Madrugada silenciosa (padrão 23h às 7h, configurável): movimento, rastreamento, PIR e modo presença não acordam; só barulho ALTO repetido, toque ou conversa. - Vida: de madrugada não acorda sozinho e volta a dormir mesmo com gente se mexendo, a não ser que alguém tenha interagido nos últimos 10 min. - Painel: grupo "Sono e madrugada" nos Ajustes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+14
-1
@@ -22,6 +22,7 @@ PADRAO = dict(preview=False, auto=True, audio=True, volume=0.35,
|
||||
economia=True, brilho=0.7, brilhoRepouso=0.08, repousoTela=30,
|
||||
boca=True, sobrancelhas=False, iris=False, subirBoca=0, distSobrancelha=16, videoRTC=True,
|
||||
apagarTela=True, apagarTelaMin=5,
|
||||
somAcordar=3, noiteSilenciosa=True, noiteInicio=23, noiteFim=7,
|
||||
sensorMic=True, sensorCamera=True, micSono=True, cameraSono=False,
|
||||
cameraLado='user', videoResolucao='auto', videoFPS=0,
|
||||
rastrearRosto=True, rastrearMaos=True, seguirRastreamento=True, mostrarRastreamento=True)
|
||||
@@ -32,7 +33,8 @@ LIMITES = dict(volume=(0, 1), somlim=(0, 1), somganho=(0, 1),
|
||||
somaltolim=(0, 1), sompausa=(1, 3600), somcooldown=(0, 120),
|
||||
movlim=(0, 1), movforte=(0, 1), movcooldown=(0, 120), movolhar=(0, 100),
|
||||
brilho=(0.01, 1), brilhoRepouso=(0.01, 1), repousoTela=(5, 3600),
|
||||
subirBoca=(-20, 60), distSobrancelha=(0, 60), apagarTelaMin=(1, 120))
|
||||
subirBoca=(-20, 60), distSobrancelha=(0, 60), apagarTelaMin=(1, 120),
|
||||
somAcordar=(1, 20), noiteInicio=(0, 23), noiteFim=(0, 23))
|
||||
|
||||
|
||||
def validar(dados):
|
||||
@@ -54,6 +56,17 @@ def validar(dados):
|
||||
return dados
|
||||
|
||||
|
||||
def madrugada(config, agora=None):
|
||||
"""Dentro do horário da madrugada silenciosa (ex.: 23h às 7h, atravessando a meia-noite)?"""
|
||||
if not config.get('noiteSilenciosa', True):
|
||||
return False
|
||||
ini, fim = int(config.get('noiteInicio', 23)), int(config.get('noiteFim', 7))
|
||||
hora = time.localtime(agora if agora is not None else time.time()).tm_hour
|
||||
if ini == fim:
|
||||
return False
|
||||
return ini <= hora < fim if ini < fim else (hora >= ini or hora < fim)
|
||||
|
||||
|
||||
def ip_informado(dados):
|
||||
"""IP que o próprio app informa (aparelho.ip); o endereço da conexão pode ser de um proxy."""
|
||||
aparelho = dados.get('aparelho')
|
||||
|
||||
Reference in New Issue
Block a user