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:
+16
-4
@@ -69,12 +69,24 @@ class VidaTest(unittest.TestCase):
|
||||
self.v.necessidades['energia'] = 100
|
||||
self.assertEqual(self.v.agir(DIA + 120), 'acordar')
|
||||
|
||||
def test_noite_dorme_sem_ninguem(self):
|
||||
def test_madrugada_dorme_mesmo_com_gente_se_mexendo(self):
|
||||
noite = time.mktime((2026, 10, 6, 23, 30, 0, 0, 0, -1))
|
||||
self.v.alguem_perto = lambda: True # deitado na cama, o PIR vê
|
||||
self.assertEqual(self.v.agir(noite), 'dormir')
|
||||
self.v.dormindo_proprio = False
|
||||
self.v.alguem_perto = lambda: True
|
||||
self.assertNotEqual(self.v.agir(noite), 'dormir')
|
||||
self.v.necessidades['energia'] = 100
|
||||
self.assertIsNone(self.v.agir(noite + 60)) # descansado, mas é madrugada: não acorda
|
||||
self.v.estimulo('carinho', noite + 120) # carinho acorda e segura acordado um tempo
|
||||
self.assertFalse(self.v.dormindo())
|
||||
self.assertNotEqual(self.v.agir(noite + 180), 'dormir')
|
||||
self.assertEqual(self.v.agir(noite + 180 + 11 * 60), 'dormir')
|
||||
|
||||
def test_horario_da_madrugada(self):
|
||||
from controle_pc import madrugada
|
||||
h = lambda hora: time.mktime((2026, 10, 6, hora, 10, 0, 0, 0, -1))
|
||||
cfg = dict(noiteSilenciosa=True, noiteInicio=23, noiteFim=7)
|
||||
self.assertEqual([madrugada(cfg, h(x)) for x in (22, 23, 3, 6, 7, 12)], [False, True, True, True, False, False])
|
||||
self.assertTrue(madrugada(dict(cfg, noiteInicio=1, noiteFim=5), h(2)))
|
||||
self.assertFalse(madrugada(dict(cfg, noiteSilenciosa=False), h(3)))
|
||||
|
||||
def test_humor_e_gestos_de_carente_com_gente_perto(self):
|
||||
self.v.necessidades.update(energia=80, social=10)
|
||||
|
||||
Reference in New Issue
Block a user