AlarmeZap: Alarme sonoro contínuo disparado via WhatsApp (Node.js + Android Kotlin)
| android | ||
| dist | ||
| server | ||
| .gitignore | ||
| README.md | ||
AlarmeZap 🚨
Solução completa de alarme sonoro contínuo ("pesado") disparado via WhatsApp.
📁 Estrutura do Projeto
server/: Servidor Node.js com@whiskeysockets/baileyse WebSocket (ws).android/: Aplicativo Android nativo em Kotlin + Jetpack Compose.dist/alarmezap.apk: APK compilado e pronto para instalação.
1. 🖥️ Servidor (Linux / Node.js)
Pré-requisitos
- Node.js >= 20
- npm
Como rodar:
cd server
npm install
npm start
- Na primeira execução, um QR Code será exibido diretamente no terminal.
- Abra o WhatsApp no celular -> Aparelhos conectados -> Conectar aparelho e escaneie o código.
- As credenciais da sessão são salvas na pasta
auth_info/para reconexão automática contínua. - O servidor WebSocket ficará ouvindo na porta
8080(configurável via.env).
2. 📱 Aplicativo Android
APK Pronto para Instalação:
O binário compilado encontra-se em:
dist/alarmezap.apk
Para instalar diretamente via USB com ADB:
adb install -r dist/alarmezap.apk
Como Recompilar pelo Terminal:
cd android
export JAVA_HOME=/usr/lib/jvm/java-21-openjdk # ou o JDK instalado
./gradlew assembleDebug
O APK gerado ficará em android/app/build/outputs/apk/debug/app-debug.apk.
Abrindo no Android Studio:
Basta abrir a pasta android/ no Android Studio.
3. ⚙️ Como Utilizar o Sistema
- Abra o AlarmeZap no celular.
- Conceda as permissões essenciais exibidas no topo da tela:
- Ignorar Otimização de Bateria (necessário para o Android não suspender o WebSocket em segundo plano).
- Sobrepor outros apps / Usar tela cheia (para o alarme acender a tela mesmo bloqueada).
- Acesso a Não Perturbe (para forçar o áudio no volume máximo mesmo se o aparelho estiver mudo).
- Configure o Servidor: Insira o IP da sua máquina Linux na rede local (ex:
192.168.1.100) e porta8080. Toque em Salvar Servidor. - Cadastre os Números: Digite os números autorizados com DDI e DDD (ex:
5511999999999) e clique em Adicionar. A lista é automaticamente sincronizada com o servidor Linux. - Arme o Sistema: Ative o Switch principal SISTEMA ARMADO.
- Uma notificação fixa de primeiro plano (Foreground Service) manterá a conexão ativa 24/7.
- Quando qualquer um dos contatos cadastrados enviar qualquer mensagem no WhatsApp:
- O servidor Linux identifica o remetente.
- Envia o evento
trigger_alarmpara o celular. - O celular aguarda o delay exato de 1 segundo.
- O alarme sobe no volume máximo contínuo (
STREAM_ALARM), acende a tela de bloqueio e exibe o botão gigante DESLIGAR ALARME.