feat(vida): jeito de gente e console com o porquê de cada decisão
Console (console.py + tela Console no painel):
- cada parte registra o que fez e o motivo: modo vida (com necessidades
e humor), sentidos, celular (ordens e o que o rosto fez), IA local,
aprendizado e ideias do dia; últimas 400 linhas, ao vivo pelo SSE;
- tela com o "agora" (humor, necessidades, o que está fazendo, próxima
decisão, última decisão, jeito), filtros, detalhes, pausa e busca.
Jeito de gente:
- saudade: a festa cresce com o tempo fora (aceno, "Oi! Você voltou!",
"Senti sua falta!"); bom dia lembrando de ontem;
- pedidos com motivo ("Brinca comigo?", "Me faz um carinho?", mostrar a
figurinha nova), no máximo 1 a cada 20 min;
- larga atividade no meio quando fica chato; personalidade (curiosidade,
brincadeira, timidez) que pesa nos gestos e amadurece com o convívio;
- no rosto: acordar grogue, sonhar com algo do dia (balão no motor),
hesitar antes de gestos, errar na atividade e ficar sem graça, olhar
nos olhos e desviar, sorrir de volta (FaceLandmarker no rastreador do
painel) e reagir à luz (sensor de luz no app 0.10.0);
- ordem "dizer" com legenda e voz de robô.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -56,6 +56,7 @@ class Historico:
|
||||
ativo=False) # ativo = pino em nível alto agora (o HC-SR505 segura ~8 s e rearma)
|
||||
self.processo_pir = None
|
||||
self.subidas_pir = [] # disparos ainda não confirmados (horários)
|
||||
self.console = lambda origem, texto, motivo='', nivel='info', agora=None: None
|
||||
self.subiu_em = None # quando o pino subiu da última vez (ligado direto desde então)
|
||||
with self.db() as db:
|
||||
db.execute('CREATE TABLE IF NOT EXISTS eventos(id INTEGER PRIMARY KEY, horario REAL, tipo TEXT, evento TEXT, nivel REAL, foto TEXT)')
|
||||
@@ -163,6 +164,9 @@ class Historico:
|
||||
confirmou = len(self.subidas_pir) >= quantos
|
||||
if confirmou:
|
||||
self.confirmar_pir(agora)
|
||||
else:
|
||||
self.console('sentidos', 'Disparo solto do sensor de presença', 'sensibilidade %s: ainda não confirmou (%d de %d)' % (
|
||||
self.config['sensibilidade_pir'], len(self.subidas_pir), quantos), 'detalhe', agora)
|
||||
|
||||
def checar_pir(self, agora=None):
|
||||
"""Ligado direto por bastante tempo = alguém se mexendo na frente (o sensor foi redisparando)."""
|
||||
|
||||
Reference in New Issue
Block a user