Escrevendo Código de Borda
O código de borda é o componente do app que roda em dispositivos IoT. Ele se conecta ao broker WAMP local para publicar dados de sensores e receber comandos do dashboard.
O Ambiente de Borda
Cada dispositivo roda um agente IronFlock que fornece:
- WAMP broker — Bus de mensagens local para comunicação app-para-agente
- Armazenamento persistente — Diretório montado para dados locais (ex.: configurações de parâmetros)
- Runtime de container — Docker para executar seu código de borda
Sua código de borda se conecta ao broker WAMP local (normalmente em ws://localhost:8080 ou via socket Unix) usando qualquer biblioteca cliente WAMP.
Estrutura Básica
Python (exemplo com autobahn)
import asyncio
from autobahn.asyncio.wamp import ApplicationSession, ApplicationRunner
class EdgeAgent(ApplicationSession):
async def onJoin(self, details):
# Publicar dados de sensores
while True:
value = read_sensor()
self.publish("com.myapp.sensor.temperature", value)
await asyncio.sleep(5)
async def on_command(self, setpoint):
# Receber comandos do dashboard
apply_setting(setpoint)
if __name__ == "__main__":
runner = ApplicationRunner("ws://localhost:8080/ws", "realm1")
runner.run(EdgeAgent)Publicando Dados
Use os tópicos WAMP definidos no seu data backend para publicar dados de sensores:
# Dados de série temporal
self.publish("com.myapp.data.temperature", {
"value": 23.5,
"unit": "celsius"
})Inscrevendo-se em Comandos
Os dashboards enviam comandos via procedimentos WAMP:
# Registrar handler de comando
await self.register(self.set_target_temp, "com.myapp.control.set_temperature")
async def set_target_temp(self, target):
self.current_target = target
update_hardware(target)Arquivos de Parâmetros
O agente escreve parâmetros configurados por usuário em arquivos JSON que o código de borda lê na inicialização:
import json
with open("/app/params/config.json") as f:
params = json.load(f)
interval = params.get("sampling_interval", 5)Qualquer Linguagem, Qualquer Framework
Como o código de borda roda em containers Docker, você pode escrever em qualquer linguagem:
- Python, Node.js, Go, Rust, C++, Java
- Qualquer framework de protocolo industrial (OPC UA, Modbus, MQTT)
- Binários de sistema legados empacotados como containers
Last updated on