Um mesmo espaço de voo.
Vários participantes.
Este servidor conecta sessões do Cockpit Drone para compartilhar posições e eventos de simulação. Participantes a até 2 km aparecem no mapa e na lista da câmera.
Esta é a página de orientação. O status da API verifica o serviço HTTP; não confirma que o WebSocket esteja em execução.
Baixe o Cockpit Drone e o Simulador
Para começar a simular e pilotar, acesse a pasta oficial de binários compilados ou baixe o instalador para Windows diretamente do GitHub.
📁 Pasta bin/ no GitHub
Contém os executáveis compilados do Cockpit Drone (drone.exe), do Simulador 3D (simulador.exe) e o instalador oficial:
- setup_cockpit_drone_0.41.exe: Instalador completo para Windows com simulador, cockpit e recursos.
- drone.exe: Interface do Cockpit com instrumentos de voo, HUD tático e GPS duplo.
- simulador.exe: Simulador de física e dinâmica de voo com suporte a rede local e mundo compartilhado.
🕹️ Experiência de Controle: Joystick vs Teclado
O simulador é melhor rodado em um joystick analógico (como controles USB de videogame ou manches de voo), pois proporciona controle contínuo e suave dos 4 eixos de voo (arfagem, rolagem, guinada e aceleração).
No entanto, o simulador e o cockpit também podem ser pilotados perfeitamente pelo teclado, contando com corte de emergência na barra de espaço e centralização automática.
Conecte sua sessão em quatro passos
- Use uma versão com a integração multiplayer. Abra o Cockpit Drone e prepare uma simulação de rota com coordenadas válidas.
- Peça o endereço ao administrador. Na janela principal, clique em Entrar multiplayer.
- Informe o endereço WebSocket. Em produção, normalmente será semelhante a
wss://seu-servidor.example/ws. - Ative a simulação e abra o mapa ou a câmera. Sessões próximas aparecerão automaticamente. Use Sair multiplayer para encerrar.
Na câmera, os participantes aparecem em uma lista de proximidade. Não há sobreposição em perspectiva sobre o vídeo.
Qual endereço devo usar?
O endereço depende da instalação. Os exemplos abaixo não apontam para um servidor público.
Servidor na mesma máquinaws://127.0.0.1:8081
Servidor publicado com HTTPSwss://seu-servidor.example/ws
Alternativa pela API HTTPhttps://seu-servidor.example/PHP
Use a URL base da API, sem /health nem /nearby. Em outra máquina, 127.0.0.1 aponta para ela própria: peça o endereço correto do servidor.
Estou usando o executável separado “simulador.exe”
A pasta simulador/ contém outro cliente, que ainda utiliza o protocolo servidor_mundo/public/api.php. Nesse programa, preencha o endereço desse servidor e um apelido no painel Mundo compartilhado, e clique em Entrar.
Esse campo ainda não aceita o WebSocket desta página. A integração WS descrita acima está no cockpit e usa a simulação de rota. A unificação dos dois protocolos está pendente.
Instale e mantenha o serviço disponível
Requisitos: PHP 8.1 ou superior, Composer e uma hospedagem que permita processo PHP persistente. Para MySQL, habilite PDO MySQL. Em produção, publique o WebSocket com TLS e certificado válido.
1. Prepare a configuração
Obtenha o código no GitHub: marcelomaurin/cockpit_drone.
git clone https://github.com/marcelomaurin/cockpit_drone.git
cd cockpit_drone/PHPPublique a pasta PHP/ do projeto. Somente na primeira instalação, copie config_sample.php para config.php e ajuste o ambiente.
- files: configure uma pasta gravável fora da área pública.
- mysql: configure banco, usuário e senha. O banco deve existir; tabelas ausentes são criadas automaticamente, incluindo
paramscomVERSAO = 0.01. - Use o mesmo armazenamento para REST e WebSocket. O serviço WS não utiliza APCu.
Mantenha o config.php da produção nas atualizações. Não o substitua pelo arquivo de exemplo.
2. Instale as dependências e inicie
No terminal, entre na pasta PHP e execute:
composer install --no-dev --prefer-dist
php ws-server.phpO terminal deverá mostrar Cockpit Drone WebSocket ready. A escuta padrão é 127.0.0.1:8081.
Esse comando funciona enquanto o processo estiver aberto. Não basta abrir ws-server.php no navegador.
3. Publicar com WSS e permitir acesso pelo site
Configure um proxy reverso HTTPS para encaminhar a rota /ws ao processo local. Exemplo para inserir em um servidor Nginx que já possua HTTPS configurado:
location /ws {
proxy_pass http://127.0.0.1:8081;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_read_timeout 75s;
}Para clientes no navegador, inclua a origem do site em ws_origins no config.php, por exemplo ['https://seu-site.example']. Sem essa configuração, conexões de navegador são recusadas.
O endereço público do exemplo será wss://seu-servidor.example/ws. A porta interna não precisa ser exposta à internet quando o proxy roda no mesmo servidor.
4. Manter o processo ativo como serviço no Linux
Exemplo de unidade /etc/systemd/system/cockpit-drone-ws.service. Ajuste o caminho de instalação e o usuário para seu servidor; esse usuário precisa acessar a configuração e o armazenamento.
[Unit]
Description=Cockpit Drone WebSocket
After=network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/var/www/cockpit_drone/PHP
ExecStart=/usr/bin/php /var/www/cockpit_drone/PHP/ws-server.php
Restart=on-failure
RestartSec=3
[Install]
WantedBy=multi-user.targetDepois de salvar a unidade:
sudo systemctl daemon-reload
sudo systemctl enable --now cockpit-drone-ws
sudo systemctl status cockpit-drone-ws
sudo journalctl -u cockpit-drone-ws -n 50No Windows, valide primeiro com php ws-server.php. Para operação permanente, configure um gerenciador de serviços para iniciar esse mesmo comando, usando o caminho do PHP e a pasta de trabalho da instalação.
O que conferir se não conectar
| Situação | Como resolver |
|---|---|
A API mostra status: ok | O serviço HTTP respondeu. Confirme também se ws-server.php está ativo e se o proxy encaminha conexões WebSocket. |
Armazenamento files | Os dados estão em arquivos. Para usar tabelas, configure storage como mysql e informe a conexão em config.php. |
| Nenhum participante aparece | Ative a simulação de rota nas duas sessões, use o mesmo servidor e confira se as posições estão a até 2 km. |
| Conexão recusada | Confira endereço, porta, processo PHP, proxy e regras de acesso da rede. No navegador, confira também ws_origins. |
| HTTP 503 / configuração ausente | Crie config.php a partir do modelo e configure o ambiente. A página de instruções pode abrir mesmo antes dessa etapa. |
| HTTP 500 | Consulte o log do PHP, procurando por Drone API:. Confira versão do PHP, driver do banco, credenciais e permissões. |
O projeto está em desenvolvimento. Compile o cockpit com suas dependências Lazarus/AI Drone; a ausência da unidade aidronemavlink impede a compilação completa. Baixe o instalador pronto e os executáveis na pasta bin/ do repositório GitHub.