Skip to main content

Introdução

O Hermes permite que você personalize comportamentos dos dispositivos e sensores usando scripts em Lua. Use esta linguagem para criar automações, reagir a eventos e comandar atuadores de forma simples e flexível.

Dica

Varios comportamentos comuns estao disponiveis apenas mudando as configuracoes através do Banshee Injector. Use scripts Lua para automacoes mais complexas ou personalizadas.

Estrutura Básica​

Os principais objetos globais disponíveis são:

  • Sensor — acesso e controle dos sensores cadastrados através do Banshee
  • Device — acesso e controle dos atuadores
  • EventBus — inscrição e reação a eventos
  • Log — registros de mensagens para o console (info, erro, aviso, sucesso)
  • Utils — funções utilitárias diversas

Exemplo Prático​

if false then
require("definitions")
end

-- Sincroniza bomba d’água (Device 0) e sensor de fluxo (Sensor 0)
EventBus.subscribeScalar(0, function(event)
local flowSensor = Sensor.get(0)

if flowSensor == nil then
Log.error(string.format("Erro: Sensor de fluxo com ID 0 não encontrado"))
return
end

-- Se o novo estado é 'ligado' (1), ativa e reseta o sensor
if event.value == 1 then
flowSensor:resume()
flowSensor:resetTimer()
Log.info(string.format("[%d ms] Bomba LIGADA (Device %d): Sensor de fluxo ativado", event.timestamp, event.sourceId))
else
flowSensor:pause()
Log.info(string.format("[%d ms] Bomba DESLIGADA (Device %d): Sensor de fluxo pausado", event.timestamp, event.sourceId))
end
end)

Log.success("Sincronização inicializada: Sensor 0 acompanha Device 0")

O que este script faz?​

  • Toda vez que o atuador “bomba d’água” (ID 0) muda de estado:
    • Se ligar, retoma e reinicia o timer do sensor de fluxo
    • Se desligar, pausa o sensor
  • Exibe logs informativos para acompanhamento
  • Se o sensor não for encontrado, registra um erro

Dicas​

  • Você pode acessar qualquer um dos dispositivos ou sensores definidos nas configurações alterando o ID em Device.get(ID) ou Sensor.get(ID)
  • Consulte os métodos disponíveis de cada classe nas próximas seções deste guia
Números de 64 bits

Para exibir números maiores que 32 bits (como Utils.getTimeSinceBoot()), use a sintaxe %d no string.format:

-- ✅ Correto - usa %d para inteiros
Log.info(string.format("Tempo: %d ms", Utils.getTimeSinceBoot()))