Este projeto permite controlar um Slideshow (ou qualquer outro software) à distância, simulando movimentos de mouse e teclado através de um aplicativo Flutter conectado via WebSocket a um servidor NodeJS. O app Flutter utiliza os sensores de acelerômetro e giroscópio do dispositivo para detectar movimentos, proporcionando uma experiência fluida para navegar entre slides ou realizar ações remotamente.
- Controle remoto de apresentações de slides.
- Simulação de movimentos do mouse e ações do teclado.
- Conexão em tempo real entre o NodeJS e o aplicativo Flutter via WebSocket.
- Utilização dos sensores de acelerômetro e giroscópio para detectar movimentos.
- Ideal para quem precisa controlar apresentações enquanto está longe do dispositivo.
- Node.js (v14.x ou superior)
- WebSocket
- Bibliotecas para simulação de mouse e teclado
- Flutter SDK (v2.0 ou superior)
- Plugin
sensors_plus
para acesso aos sensores do dispositivo - WebSocket para comunicação com o servidor
git clone https://github.com/cl0v/tv-controller
cd tv-controller
Instale as dependências do NodeJS:
cd nodejs
npm install
node main.js
Certifique-se de que o Flutter está instalado e as dependências estão configuradas:
cd flutter
flutter pub get
Conecte um dispositivo ou use o emulador para rodar o app:
flutter run
O servidor NodeJS recebe comandos do aplicativo Flutter via WebSocket e simula as ações de mouse e teclado no sistema host. Dependendo dos dados enviados pelo acelerômetro e giroscópio, o servidor realiza as seguintes ações:
- Movimento do Mouse: Com base na inclinação e movimento do dispositivo.
- Avanço/Retrocesso de Slide: Utilizando gestos ou inclinações específicas do dispositivo para enviar comandos de teclado (ex.: teclas
seta para esquerda
eseta para direita
).
O aplicativo coleta os dados de movimento através dos sensores (acelerômetro/giroscópio) e envia esses dados para o servidor NodeJS via WebSocket. O servidor interpreta esses dados e os transforma em comandos de mouse/teclado.
- Incline o dispositivo para a esquerda para simular o pressionamento da seta para a esquerda.
- Incline o dispositivo para a direita para simular o pressionamento da seta para a direita.
- Movimentos suaves no eixo X ou Y do giroscópio podem ser usados para mover o cursor do mouse.
- NodeJS: Para gerenciar o servidor WebSocket e controlar as ações de mouse e teclado.
- WebSocket: Para comunicação em tempo real entre o servidor e o app Flutter.
- Flutter: Para capturar dados do acelerômetro e giroscópio e enviar ao servidor.
- sensors_plus: Plugin Flutter para acessar sensores como o acelerômetro e giroscópio.
- robotjs: Biblioteca NodeJS para simular ações de mouse e teclado.
- Faça um fork do projeto
- Crie uma branch para sua feature (
git checkout -b feature/nova-feature
) - Faça commit das suas mudanças (
git commit -m 'Adiciona nova feature'
) - Faça um push para a branch (
git push origin feature/nova-feature
) - Abra um Pull Request
Give a ⭐️ if this project helped you!
Este projeto está licenciado sob a Licença Apache 2.0.
Caso tenha dúvidas ou sugestões, sinta-se à vontade para abrir uma issue ou entrar em contato pelo LinkedIn.
- nodejs/: Contém o código do servidor NodeJS.
- flutter/: Contém o código do aplicativo Flutter.