ULC Lab · implementação reproduzível
Laboratório: Sensores Urbanos e Contexto em Tempo Real com FIWARE Orion Context Broker
Você vai implementar uma arquitetura FIWARE básica para cidades inteligentes, conectando sensores simulados a um Orion Context Broker e consultando dados de contexto via NGSI. O laboratório leva cerca de 2 horas.

- Duração estimada
- 120 min
- Passos
- 12
- Validações
- 4
- Versões da documentação consultada
- FIWARE Orion Context Broker 3.10.0 · Docker a versão estável atual · Python 3.8 ou superior · curl a versão estável atual
O objetivo é demonstrar, de ponta a ponta, como sensores urbanos (simulados) podem enviar dados para uma plataforma FIWARE, permitindo consultas e integração com soluções de cidades inteligentes. Você vai entender como o Orion Context Broker gerencia o contexto urbano em tempo real, usando padrões abertos e software livre.
Topologia
Três componentes principais: um simulador de sensores (rodando em Python), o Orion Context Broker (em um contêiner Docker) e um cliente de consulta (curl ou Postman). O sensor envia dados NGSI v2 para o Orion (exemplo: 192.168.56.101:1026). O cliente consulta o Orion para obter o contexto atualizado.
+-------------------+
| Sensor Simulado |
| (Python) |
+--------+----------+
|
| NGSI v2 (HTTP)
v
+--------+----------+
| Orion Context |
| Broker (FIWARE) |
+--------+----------+
|
| NGSI v2 (HTTP)
v
+--------+----------+
| Cliente de Consulta|
| (curl/Postman) |
+-------------------+Equipamentos e software
| Item | Requisito, licença ou versão |
|---|---|
| Máquina virtual ou física | 2 vCPU, 2 GB RAM, porta 1026 aberta, Ubuntu 20.04 ou superior |
| FIWARE Orion Context Broker | Affero GPL v3 · 3.10.0 |
| Docker | Apache 2.0 · a versão estável atual |
| Python | PSF License · 3.8 ou superior |
| curl | curl license · a versão estável atual |
Roteiro
- Preparar o ambiente
Atualize o sistema e instale Docker, Python e curl. Isso garante ambiente limpo e compatível.
sudo apt update && sudo apt install docker.io python3 python3-pip curl -yO que você deve ver: Docker, Python 3 e curl instalados sem erros.
- Iniciar o Orion Context Broker
O Orion Context Broker é o núcleo do FIWARE para gerenciar contexto. Use Docker para facilitar o deploy.
sudo docker run -d --name fiware-orion -p 1026:1026 fiware/orion:3.10.0 -dbhost mongoO que você deve ver: Contêiner do Orion rodando. Verifique com 'docker ps'.
- Subir o MongoDB (dependência do Orion)
O Orion precisa do MongoDB para armazenar dados de contexto.
sudo docker run -d --name mongo -p 27017:27017 mongo:4.4O que você deve ver: Contêiner do MongoDB rodando. Verifique com 'docker ps'.
- Verificar inicialização do Orion
Antes de enviar dados, confirme que o Orion está aceitando conexões.
curl http://localhost:1026/versionO que você deve ver: Retorno JSON com versão do Orion.
- Criar script Python para simular sensor urbano
Simule um sensor de temperatura enviando dados NGSI v2 para o Orion. Isso permite testar a ingestão de contexto.
cat > sensor_simulado.py <<EOF import requests, time url = 'http://localhost:1026/v2/entities' entity = { 'id': 'Sensor:001', 'type': 'TemperatureSensor', 'temperature': {'value': 27.5, 'type': 'Number'}, 'location': {'value': 'Rua Exemplo, 123', 'type': 'Text'} } headers = {'Content-Type': 'application/json'} while True: r = requests.post(url, json=entity, headers=headers) print(r.status_code, r.text) time.sleep(10) EOFO que você deve ver: Arquivo sensor_simulado.py criado.
- Instalar dependências Python
O script usa a biblioteca requests para HTTP.
pip3 install requestsO que você deve ver: Pacote requests instalado.
- Executar o simulador de sensor
Rode o script para começar a enviar dados ao Orion.
python3 sensor_simulado.pyO que você deve ver: Saída mostrando códigos 201 ou 422 (caso já exista a entidade).
- Consultar dados do sensor via NGSI
Use curl para buscar o contexto do sensor cadastrado.
curl -X GET 'http://localhost:1026/v2/entities/Sensor:001'O que você deve ver: JSON com os dados do sensor (id, type, temperature, location).
- Atualizar valor do sensor
Simule uma mudança de temperatura enviando PATCH via NGSI.
curl -X PATCH 'http://localhost:1026/v2/entities/Sensor:001/attrs' -H 'Content-Type: application/json' -d '{"temperature": {"value": 30.1, "type": "Number"}}'O que você deve ver: Resposta 204 No Content.
- Consultar valor atualizado
Confirme que o valor mudou no contexto.
curl -X GET 'http://localhost:1026/v2/entities/Sensor:001'O que você deve ver: Campo temperature com o novo valor (30.1).
- Simular múltiplos sensores (opcional)
Altere o script para criar múltiplas entidades. Isso mostra a escalabilidade do Orion.
# Edite sensor_simulado.py para IDs diferentes e rode múltiplas instâncias.O que você deve ver: Vários sensores cadastrados no Orion.
- Limpar ambiente
Encerre e remova os contêineres para liberar recursos.
sudo docker stop fiware-orion mongo && sudo docker rm fiware-orion mongoO que você deve ver: Contêineres removidos.
Como saber que funcionou
| Teste | Comando | Critério |
|---|---|---|
| Verificar se o Orion está rodando | curl http://localhost:1026/version | Retorno JSON com informações do Orion |
| Confirmar ingestão de dados do sensor | curl -X GET 'http://localhost:1026/v2/entities/Sensor:001' | JSON com os atributos enviados pelo sensor |
| Atualizar atributo e conferir atualização | curl -X PATCH ... && curl -X GET ... | Campo temperature atualizado no retorno |
| Verificar múltiplos sensores (opcional) | curl -X GET 'http://localhost:1026/v2/entities' | Lista de entidades com diferentes IDs |
Troubleshooting
| Sintoma | Causa provável | Correção |
|---|---|---|
| curl para Orion retorna Connection refused | Orion não está rodando ou porta errada | Verifique 'docker ps' e se a porta 1026 está aberta |
| Erro 422 ao criar entidade | Entidade já existe | Use PATCH para atualizar ou DELETE para remover antes |
| Script Python retorna erro de conexão | Orion não inicializou ou endereço errado | Aguarde Orion subir e use o endereço correto |
| curl retorna JSON vazio | Entidade não foi criada corretamente | Revise o script e repita o POST |
Segurança e hardening
- Nunca exponha o Orion Context Broker diretamente à internet sem autenticação
- Use redes privadas e firewalls para isolar portas 1026 e 27017
- Remova contêineres e dados sensíveis após o laboratório
- Consulte a documentação do FIWARE para práticas de hardening
Checklist final
- Publicado
- 09/09/2026
- Última revisão
- 09/09/2026
- Versão do conteúdo
- 1.0
- Referências
- 0 oficiais
- Revisão técnica
- redação e revisão por IA, URLs conferidas na publicação
- Status
- Atual
