Integracao IoT Segway
O Levy Fleets fornece integracao nativa com dispositivos IoT Segway usando o Protocolo de Telemetria TCP Segway. Este guia cobre a integracao completa incluindo comandos suportados, processamento de telemetria, tratamento de erros e solucao de problemas.
Versao do Protocolo
O Levy Fleets implementa o Protocolo TCP Segway v1.4.4, suportando mais de 38 comandos em todas as categorias operacionais.
Visao Geral
Dispositivos IoT Segway se comunicam com o Levy Fleets atraves de um protocolo baseado em TCP que fornece:
- Rastreamento GPS em tempo real com dados de localizacao em formato NMEA
- Monitoramento de bateria incluindo suporte a dupla bateria
- Controle de bloqueio/desbloqueio com reconhecimento
- Monitoramento de heartbeat para status de conectividade
- Status abrangente do veiculo incluindo velocidade, hodometro e temperatura
- Tratamento de erros e alarmes com classificacao de gravidade
- Atualizacoes de firmware OTA via HTTP ou FTP
- Suporte a bloqueio mecanico para travas de cabo/roda
Configuracao do Dispositivo
Configuracoes do Servidor
Configure seu dispositivo Segway para se comunicar com o Levy Fleets:
| Configuracao | Valor |
|---|---|
| IP/Dominio do Servidor | Seu endpoint IoT Levy Fleets |
| Porta | Conforme fornecido durante a configuracao |
| Protocolo | TCP |
Autenticacao
Dispositivos Segway autenticam via chave de API. Certifique-se de que sua implantacao inclua a chave de API correta no cabecalho x-api-key para todas as comunicacoes.
Identificacao do Dispositivo
Os dispositivos sao identificados por IMEI. O formato da mensagem inclui o IMEI do dispositivo no cabecalho:
*HBCR,NB,{IMEI},{COMANDO},...#
Comandos Suportados
Operacoes Principais
| Comando | Descricao | Direcao |
|---|---|---|
| R0 | Troca de chave de operacao | Dispositivo → Servidor |
| L0 | Reconhecimento de desbloqueio | Dispositivo → Servidor |
| L1 | Reconhecimento de bloqueio | Dispositivo → Servidor |
| H0 | Heartbeat com status | Dispositivo → Servidor |
| Q0 | Check-in do dispositivo | Dispositivo → Servidor |
| Q1 | Consulta de chave de bloqueio | Dispositivo → Servidor |
Protocolo de Bloqueio/Desbloqueio
O processo de bloqueio/desbloqueio do Segway envolve uma troca de chaves:
Solicitar Chave (R0)
Servidor solicita uma chave de operacao do dispositivo. Dispositivo responde com codigo de operacao, chave, ID do usuario e numero de sequencia.
Enviar Comando
Servidor envia comando de bloqueio (L1) ou desbloqueio (L0) com a chave
Receber Reconhecimento
Dispositivo executa o comando e envia reconhecimento com codigo de status
Codigos de Status de Reconhecimento
| Codigo | Status | Descricao |
|---|---|---|
| 0 | Sucesso | Comando executado com sucesso |
| 1 | Falha | Falha geral |
| 2 | Chave Invalida | Chave de autenticacao rejeitada |
| 3 | Viagem em Andamento | Nao pode bloquear durante viagem ativa |
| 4 | ECU Falhou | Erro no controlador do veiculo |
| 5 | Estrategia Recusou | Logica de negocios impediu a operacao |
Status do Veiculo (Serie S)
| Comando | Descricao |
|---|---|
| S1 | Configuracoes de limite de velocidade |
| S2 | Resposta de controle de energia |
| S4 | Bloco de configuracoes do patinete 2 (cruise, botoes, limites de velocidade) |
| S5 | Configuracoes do dispositivo (intervalos, acelerometro) |
| S6 | Status em tempo real (bateria, velocidade, quilometragem, bloqueio) |
| S7 | Bloco de configuracoes do patinete 1 (luzes, modo de velocidade) |
| S8 | Status estendido (temperaturas, dupla bateria, codigos de erro) |
| S9 | Configuracoes adicionais (bloqueio automatico, alerta de ociosidade) |
| S20 | Configuracoes de luz ambiente |
Localizacao e Rastreamento (Serie D)
| Comando | Descricao |
|---|---|
| D0 | Relatorio de localizacao GPS (formato NMEA) |
| D1 | Configuracao de rastreamento |
| D2 | Configuracoes de cooldown de rastreamento |
Formato GPS D0
O comando D0 usa formato semelhante ao NMEA:
*HBCR,NB,{IMEI},D0,,{HORA},A,{LAT},{DIR_LAT},{LON},{DIR_LON},{VELOCIDADE},{RUMO},{DATA},{ALT},...#
- HORA: HHMMSS.sss
- A/V: Fixacao Valida/Invalida
- LAT: DDMM.MMMM (graus e minutos decimais)
- DIR_LAT: N/S
- LON: DDDMM.MMMM
- DIR_LON: E/O
- VELOCIDADE: Nos (convertido para km/h)
- DATA: DDMMAA
Configuracao de Rede (Serie N)
| Comando | Descricao |
|---|---|
| N2 | Configuracao MAC/IMEI |
| N3 | Parametros de rede |
| N7 | Configuracoes APN |
| N8 | Configuracao de dominio/IP do servidor |
Recursos do Dispositivo (Diversos)
| Comando | Descricao |
|---|---|
| V0 | Reconhecimento de prompt de voz |
| V1 | Configuracao de voz |
| G0 | Informacoes de versao de firmware |
| E0 | Codigos de erro/alarmes |
| K0 | Gerenciamento de chave BLE |
| P2 | Status completo do dispositivo (mais de 30 campos) |
Bloqueio Mecanico (Serie C)
| Comando | Descricao |
|---|---|
| C0 | Status da bateria da trava de cabo |
| C1 | Status de carregamento sem fio |
| C2 | Status do bloqueio mecanico |
| C3 | Resposta de controle do bloqueio mecanico |
| C4 | Parametros do bloqueio mecanico |
Tipos de bloqueio suportados:
- Tipo 1: Trava de cabo
- Tipo 6: Trava de roda
- Tipo 8: Trava combo capacete/cabo
Atualizacoes OTA (Serie U)
| Comando | Descricao |
|---|---|
| U5 | Status de atualizacao OTA HTTP |
| U6 | Status de atualizacao OTA FTP |
Codigos de status de atualizacao:
- 0: Iniciado
- 1: Baixando/Conectando
- 2: Download completo
- 3: Instalando
- 4: Sucesso
- 5: Falhou
- 6: Cancelado
Relatorios Estendidos
| Comando | Descricao |
|---|---|
| JR5 | Relatorio de dados de carregamento (voltagem, corrente) |
Processamento de Telemetria
Heartbeat (H0)
O heartbeat H0 e o sinal principal de keep-alive e inclui:
- Status de Bloqueio: 0 (desbloqueado) ou 1 (bloqueado)
- Voltagem IoT: Voltagem bruta em unidades de centivolt
- Forca do Sinal: Nivel de sinal celular
- Porcentagem de Bateria: Bateria do veiculo (0-100%)
- Estado de Carregamento: 0 (nao carregando) ou 1 (carregando)
O sistema calcula a porcentagem de bateria IoT a partir da voltagem:
Bateria IoT % = ((voltagem_mv - 3200) / (4200 - 3200)) * 100
Relatorio de Status (S6)
Fornece status abrangente em tempo real:
| Campo | Descricao |
|---|---|
| Porcentagem de Bateria | Nivel da bateria principal |
| Modo de Velocidade | Configuracao atual do modo de velocidade |
| Velocidade (km/h) | Velocidade atual do veiculo |
| Quilometragem Total | Hodometro vitalicio em metros |
| Autonomia Restante | Autonomia estimada em unidades de 10 metros |
| Duracao da Viagem | Tempo da viagem atual em segundos |
| Flag de Bloqueio | Estado de bloqueio |
| Estado de Carregamento | Indicador de carregamento |
| Bateria Conectada | Indicador de bateria conectada |
Status Estendido (S8)
Diagnosticos detalhados do veiculo:
| Campo | Descricao |
|---|---|
| Flag de Carregamento | Atualmente carregando (0/1) |
| Voltagem do Controlador | Voltagem da ECU |
| Ciclos Bateria 1 | Ciclos de carga da bateria primaria |
| SOC Bateria 1 | Estado de carga da bateria primaria |
| SOC Bateria 2 | Bateria secundaria (se dupla bateria) |
| Temp Interna Bateria 1/2 | Temperaturas do pack de bateria |
| Temp Externa Bateria 1/2 | Temperaturas ambiente da bateria |
| Codigo de Erro | Codigo de erro atual da ECU |
| Porcentagem do Acelerador | Posicao do acelerador |
| Status do Freio | Indicador de freio acionado |
Status Completo (P2)
O comando P2 retorna mais de 30 campos para diagnostico completo do veiculo:
- Modelo do dispositivo, firmware, versoes de hardware
- Bateria: porcentagem, voltagem, corrente, temperatura
- Temperaturas do motor e controlador
- Velocidade: atual, media, maxima
- Quilometragem: total e da viagem
- GPS: coordenadas, velocidade, sinal
- Forca do sinal GSM
- Dados do acelerometro (X, Y, Z)
Tratamento de Codigos de Erro
Traducao de Codigos de Erro
Codigos de erro Segway E0 sao automaticamente traduzidos para mensagens legiveis. O sistema:
- Analisa os codigos de erro da mensagem E0
- Traduz cada codigo usando o mapeamento de codigos de erro Segway
- Determina o nivel de gravidade (aviso, erro, critico)
- Formata uma mensagem amigavel ao usuario
- Atualiza o registro do veiculo com status de erro
Niveis de Gravidade
| Nivel | Descricao | Impacto |
|---|---|---|
| Aviso | Problema menor, veiculo operacional | Registrado para revisao |
| Erro | Problema significativo, pode afetar operacao | Alerta gerado |
| Critico | Falha grave, veiculo nao deve ser usado | Viagem bloqueada, alerta imediato |
Referencia Completa de Codigos de Alarme
O Levy Fleets traduz codigos de alarme Segway em alertas acionaveis. Abaixo esta a referencia completa:
Alarmes de Seguranca
| Codigo | Alarme | Gravidade | Mensagem ao Usuario |
|---|---|---|---|
| 1 | Alarme de movimento ilegal | Aviso | Movimento nao autorizado detectado |
| 3 | Alarme de desmontagem ilegal | Critico | Adulteracao detectada |
| 22 | Veiculo parado enquanto desbloqueado | Aviso | Veiculo parado enquanto desbloqueado |
Alarmes de Seguranca
| Codigo | Alarme | Gravidade | Mensagem ao Usuario |
|---|---|---|---|
| 2 | Alarme de queda | Erro | Veiculo caiu |
| 4 | Alarme de queda (confirmado) | Erro | Queda do veiculo confirmada |
| 13 | Falha na linha de freio | Critico | Falha na linha de freio - nao pilote |
| 14 | Pilotagem em dupla | Aviso | Multiplos pilotos detectados |
| 21 | Evento de pneu queimado | Critico | Pneu superaquecendo - pare imediatamente |
Alarmes de Bateria
| Codigo | Alarme | Gravidade | Mensagem ao Usuario |
|---|---|---|---|
| 7 | Funcao de bateria anormal | Erro | Funcao da bateria anormal |
| 12 | Bateria baixa | Aviso | Bateria baixa - por favor carregue |
| 30 | Formato de senha BMS invalido | Erro | Erro de formato de senha da bateria |
| 31 | Senha BMS verificada errada | Erro | Senha da bateria incorreta |
| 41 | Diferenca de voltagem de celula (alta/alta) | Erro | Desequilibrio de celula da bateria |
| 42 | Diferenca de voltagem de celula (baixa/pequena) | Erro | Desequilibrio de celula da bateria |
| 43 | Diferenca de voltagem de celula (alta/alta corrente) | Erro | Desequilibrio de celula da bateria |
| 44 | Diferenca de voltagem de celula (baixa/alta corrente) | Erro | Desequilibrio de celula da bateria |
| 45 | Voltagem de celula muito alta | Erro | Voltagem de celula da bateria alta |
| 46 | Diferenca de temp de celula anormal | Aviso | Desequilibrio de temperatura da bateria |
| 47 | Temp MOS muito alta | Critico | Eletronicos da bateria superaquecendo |
| 48 | Temp de celula alta quando bloqueado | Aviso | Temperatura da bateria alta enquanto estacionado |
| 49 | Temp de celula alta quando desbloqueado | Critico | Bateria superaquecendo - pare de pilotar |
Alarmes de Comunicacao
| Codigo | Alarme | Gravidade | Mensagem ao Usuario |
|---|---|---|---|
| 8 | Mau funcionamento de comunicacao da trava de capacete | Aviso | Erro de comunicacao da trava de capacete |
| 9 | Mau funcionamento de comunicacao da trava de cabo | Aviso | Erro de comunicacao da trava de cabo |
| 15 | Falha de comunicacao AI | Aviso | Erro de comunicacao da caixa AI |
Alarmes de Hardware
| Codigo | Alarme | Gravidade | Mensagem ao Usuario |
|---|---|---|---|
| 16 | Sensor hall do acelerador anormal | Critico | Falha no sensor do acelerador - nao pilote |
| 17 | Eixo de momento anormal | Erro | Sensor de torque anormal |
| 18 | ECU alta temperatura | Critico | Controlador superaquecendo - pare de pilotar |
| 99 | Alarme de ECU detectado | Erro | Alarme do controlador - verifique o veiculo |
Categorias de Alarme
O sistema categoriza alarmes nos seguintes grupos:
| Categoria | Descricao | Resposta Tipica |
|---|---|---|
| Seguranca | Deteccao de roubo/adulteracao | Alertar e rastrear |
| Seguranca | Preocupacoes de seguranca do piloto | Pode bloquear viagem |
| Bateria | Problemas de saude da bateria | Agendar manutencao |
| Comunicacao | Conectividade de trava/acessorio | Tentar novamente/investigar |
| Hardware | Falhas de componentes | Servico necessario |
| AI | Comunicacao da caixa AI | Verificar conectividade |
Alarmes Auto-Descartaveis
Alguns alarmes (como deteccao de queda) sao automaticamente descartados quando a condicao e resolvida. Alarmes nao auto-descartaveis (como problemas de bateria) requerem reconhecimento manual ou inspecao fisica.
Notificacoes por Email
Para codigos de erro com gravidade "erro" ou "critico":
- Sistema gera uma notificacao por email
- Email e enviado para gerentes de frota configurados
- Inclui: ID do veiculo, IMEI, codigo de erro, descricao, gravidade
- Enviado assincronamente para nao bloquear processamento de telemetria
Erros Criticos
Veiculos com erros criticos tem ride_precluded_by_error definido como true, impedindo que novas viagens iniciem ate que o problema seja resolvido.
Processamento de Localizacao
Conversao de Dados GPS
Mensagens D0 contem coordenadas em formato NMEA que sao convertidas para graus decimais:
// Converter DDMM.MMMM para graus decimais
graus = floor(coordenada / 100)
minutos = coordenada - (graus * 100)
decimal = graus + (minutos / 60)
// Aplicar direcao (negativo para S/O)
Historico de Localizacao da Viagem
Durante viagens ativas, mensagens D0:
- Extraem coordenadas GPS e velocidade
- Inserem na tabela
ride_locations - Incluem altitude e status de movimento
- Acionam verificacao de aplicacao de zonas
- Atualizam estatisticas da viagem
Aplicacao de Zonas
Apos processar localizacao D0 durante uma viagem ativa:
- Verificar se coordenadas caem dentro de quaisquer zonas definidas
- Aplicar limites de velocidade para zonas lentas
- Desabilitar acelerador para zonas proibidas
- Atualizar RPC de estatisticas da viagem
Atualizacoes de Veiculos
Campos Atualizados por Telemetria
| Origem | Campos Atualizados |
|---|---|
| H0 | battery_level, lock_status, charging, iot_battery_pct, iot_last_update |
| S6 | battery_level, speed, odometer_m, lock_status, ignition_status |
| S8 | battery_level, is_charging, last_error_code, has_error |
| D0 | latitude, longitude, last_location_update, speed |
| G0 | firmware_version, controller_version |
| E0 | has_error, last_error_codes, error_message, ride_precluded_by_error |
| P2 | Atualizacao abrangente (mais de 20 campos) |
Carimbos de Data/Hora
Cada atualizacao de telemetria define:
updated_at- Carimbo de data/hora de atualizacao geraliot_last_update- Ultima comunicacao IoTlast_signal_at- Ultimo sinal recebido
Atualizacoes de localizacao tambem definem:
last_location_update- Ultima fixacao GPS
Enviando Comandos
Senha IoT
Configure a senha Segway em Configuracoes:
Configuracoes > Veiculos > Senhas IoT > Segway
Senha padrao: 0000
Comandos Disponiveis no Painel
| Comando | Acao |
|---|---|
| Bloquear | Enviar comando de bloqueio L1 |
| Desbloquear | Enviar comando de desbloqueio L0 |
| Som | Reproduzir som de alerta |
| Localizar | Piscar luzes |
Sequencia de Comandos
Para bloqueio/desbloqueio:
- Painel envia R0 (solicitar chave)
- Dispositivo responde com chave de operacao
- Painel envia L0/L1 com chave
- Dispositivo executa e envia reconhecimento
- Painel atualiza status do veiculo
Referencia de Configuracao
Configuracoes do Dispositivo (S5)
| Parametro | Descricao |
|---|---|
| Sensibilidade do Acelerometro | Limiar de deteccao de movimento |
| Chave de Upload | Habilitar/desabilitar upload de dados |
| Intervalo de Heartbeat | Segundos entre mensagens H0 |
| Intervalo de Upload em Viagem | Intervalo GPS quando desbloqueado/em viagem |
| Intervalo de Upload Desbloqueado | Intervalo GPS quando desbloqueado/ocioso |
| Intervalo de Upload ao Ligar | Intervalo GPS ao ligar |
Configuracoes de Rastreamento (D1/D2)
| Parametro | Descricao |
|---|---|
| Intervalo Desbloqueado | Relatorio GPS quando desbloqueado |
| Intervalo Bloqueado Parado | GPS quando bloqueado, sem movimento |
| Intervalo Bloqueado Movendo | GPS quando bloqueado mas movendo |
| Intervalo Bateria Baixa Parado | GPS quando bateria baixa, parado |
| Intervalo Bateria Baixa Movendo | GPS quando bateria baixa, movendo |
| Cooldown de Movimento | Segundos antes de movimento detectado |
| Limiar de Bateria Baixa | % de bateria para modo de bateria baixa |
Configuracoes de Velocidade (S1/S4)
| Parametro | Descricao |
|---|---|
| Limite de Velocidade Baixa | Velocidade maxima modo 1 (km/h) |
| Limite de Velocidade Media | Velocidade maxima modo 2 (km/h) |
| Limite de Velocidade Alta | Velocidade maxima modo 3 (km/h) |
| Unidade de Velocidade | km/h ou mph |
| Controle de Cruzeiro | Habilitar/desabilitar |
| Assistencia de Empurrar | Habilitar/desabilitar |
Solucao de Problemas
Dispositivo Nao Conectando
Sintomas: Nenhum heartbeat recebido, dispositivo offline
Solucoes:
- Verificar configuracao de IP e porta do servidor
- Verificar conectividade celular e ativacao do SIM
- Confirmar que configuracoes APN correspondem aos requisitos da operadora
- Reiniciar o veiculo
- Verificar se firewall esta bloqueando conexoes TCP
Comandos de Bloqueio Falhando
Sintomas: Bloqueio/desbloqueio retorna status de erro
Verificar codigo de status:
- Codigo 2 (Chave Invalida): Senha nao corresponde - verificar senha IoT em Configuracoes
- Codigo 3 (Viagem em Andamento): Encerrar a viagem atual primeiro
- Codigo 4 (ECU Falhou): Problema no controlador do veiculo - verificar erros E0
- Codigo 5 (Estrategia Recusou): Bloqueio de logica de negocios - verificar status do veiculo
GPS Nao Atualizando
Sintomas: Localizacao permanece no mesmo ponto ou mostra (0,0)
Solucoes:
- Verificar indicador de fixacao "V" (invalido) em mensagens D0
- Garantir que veiculo tem visao clara do ceu
- Aguardar GPS adquirir satelites (ate 5 min cold start)
- Verificar se intervalos de rastreamento D1 nao estao muito longos
- Verificar se dispositivo esta em modo de baixa energia
Leitura de Bateria Incorreta
Sintomas: Bateria mostra 0%, valor errado, ou nao muda
Solucoes:
- Para veiculos com dupla bateria, verificar ambos valores SOC em S8
- Verificar comunicacao BMS (verificar contagens de ciclo de bateria)
- Algumas leituras requerem veiculo ligado (nao apenas IoT)
- Verificar se a bateria esta devidamente conectada
Codigos de Erro Aparecendo
Sintomas: Mensagens E0 mostrando codigos de erro
Acoes:
- Anotar o numero do codigo de erro
- Verificar notificacoes por email para traducao
- Revisar registro do veiculo para campo
error_message - Erros criticos requerem inspecao fisica
- Limpar erros reiniciando se apropriado
Armazenamento de Dados
Registros de Telemetria
Todas as mensagens Segway sao armazenadas com:
vehicle_uuid- Veiculo associadovehicle_number- ID legivel por humanosimei- Identificador do dispositivoraw_payload- Mensagem completa como JSONmessage_type- Tipo de comando (ex.: "H0_HEARTBEAT")timestamp- Carimbo de data/hora da mensagemidempotency_key- Chave de deduplicacao
Idempotencia
Cada registro de telemetria inclui uma chave de idempotencia gerada:
{vehicleId}-{imei}-{timestamp}-{messageType}
Isso previne entradas duplicadas de mensagens reenviadas.
Referencia da API
Endpoint
POST /api/iot/segway
Cabecalhos
x-api-key: sua-chave-api-iot
Content-Type: application/json
Corpo da Requisicao
{
"imei": "867648045123456",
"cmd": "H0",
"raw": "*HBCR,NB,867648045123456,H0,1,420,25,85,0#",
"timestamp": "2025-12-25T12:00:00Z",
"parsed": {}
}
Resposta
{
"success": true,
"vehicle_number": "LV-001",
"ride_number": null,
"command": "H0",
"cmd": "H0"
}
Verificacao de Saude
GET /api/iot/segway
Retorna:
{
"service": "Segway TCP Telemetry Ingestion",
"status": "healthy",
"timestamp": "2025-12-25T12:00:00Z",
"supported_commands": ["R0", "L0", "L1", "H0", ...]
}
Suporte Tecnico
Para problemas de integracao Segway, entre em contato com support@levyelectric.com com:
- IMEI do dispositivo
- Dados brutos da mensagem (se disponivel)
- Carimbo de data/hora do problema
- Comportamento esperado vs. real