Sensor
A classe Sensor permite acessar e controlar sensores cadastrados no sistema. Você pode obter sensores por ID, verificar estados, e controlar seu ciclo de vida (iniciar, parar, pausar, retomar).
Métodos Estáticos
Sensor.get(id)
Obtém um sensor pelo seu ID.
| Parâmetro | Tipo | Descrição |
|---|---|---|
id | integer | O ID do sensor |
Retorno: Sensor|nil — O objeto sensor ou nil se não encontrado.
local tempSensor = Sensor.get(0)
if tempSensor then
Log.info("Sensor encontrado: " .. tempSensor:getName())
else
Log.error("Sensor não encontrado")
end
Sensor.count()
Retorna o número total de sensores cadastrados.
Retorno: integer — O número de sensores.
local total = Sensor.count()
Log.info(string.format("Total de sensores: %d", total))
Métodos de Instância
sensor:getName()
Obtém o nome do sensor.
Retorno: string — O nome do sensor.
local sensor = Sensor.get(0)
Log.info("Nome: " .. sensor:getName())
sensor:getId()
Obtém o ID do sensor.
Retorno: integer — O ID do sensor.
local sensor = Sensor.get(0)
Log.info(string.format("ID: %d", sensor:getId()))
sensor:isEnabled()
Verifica se o sensor está habilitado.
Retorno: boolean — true se habilitado.
local sensor = Sensor.get(0)
if sensor:isEnabled() then
Log.info("Sensor está habilitado")
end
sensor:toggleEnabled()
Alterna o estado de habilitação do sensor.
local sensor = Sensor.get(0)
sensor:toggleEnabled()
Log.info("Estado de habilitação alternado")
sensor:isRunning()
Verifica se o sensor está em execução.
Retorno: boolean — true se está executando.
local sensor = Sensor.get(0)
if sensor:isRunning() then
Log.info("Sensor está em execução")
end
sensor:isPaused()
Verifica se o sensor está pausado.
Retorno: boolean — true se está pausado.
local sensor = Sensor.get(0)
if sensor:isPaused() then
Log.info("Sensor está pausado")
end
sensor:start()
Inicia o sensor.
local sensor = Sensor.get(0)
sensor:start()
Log.success("Sensor iniciado")
sensor:stop()
Para o sensor.
local sensor = Sensor.get(0)
sensor:stop()
Log.info("Sensor parado")
sensor:pause()
Pausa o sensor temporariamente.
local sensor = Sensor.get(0)
sensor:pause()
Log.info("Sensor pausado")
sensor:resume()
Retoma um sensor pausado.
local sensor = Sensor.get(0)
sensor:resume()
Log.success("Sensor retomado")
sensor:resetTimer()
Reinicia o timer interno do sensor.
local sensor = Sensor.get(0)
sensor:resetTimer()
Log.info("Timer do sensor resetado")
sensor:measure()
Aciona uma nova medição do sensor. A medição é assíncrona; para obter o resultado, inscreva-se no evento EventBus apropriado ou use getLastScalarMeasurement(), getLastBytesMeasurement() ou getLastTextMeasurement().
local sensor = Sensor.get(0)
sensor:measure()
Log.info("Medição acionada")
sensor:getLastScalarMeasurement()
Obtém a última medição escalar do sensor.
Retorno: integer|nil — A última medição escalar ou nil se não houver medição.
local sensor = Sensor.get(0)
local value = sensor:getLastScalarMeasurement()
if value then
Log.info(string.format("Última medição: %d", value))
end
sensor:getLastBytesMeasurement()
Obtém a última medição em bytes do sensor.
Retorno: integer[]|nil — Array de bytes (1-indexed) ou nil se não houver medição.
local sensor = Sensor.get(0)
local bytes = sensor:getLastBytesMeasurement()
if bytes then
for i = 1, #bytes do
Log.info(string.format("Byte %d: 0x%02X", i, bytes[i]))
end
end
sensor:getLastTextMeasurement()
Obtém a última medição em texto do sensor.
Retorno: string|nil — A última medição em texto ou nil se não houver medição.
local sensor = Sensor.get(0)
local text = sensor:getLastTextMeasurement()
if text then
Log.info(string.format("Leitura: %s", text))
end
Exemplo Completo
-- Lista todos os sensores e seus estados
for i = 0, Sensor.count() - 1 do
local sensor = Sensor.get(i)
if sensor then
local status = "Parado"
if sensor:isRunning() then
status = sensor:isPaused() and "Pausado" or "Executando"
end
Log.info(string.format(
"Sensor %d: %s | Status: %s | Habilitado: %s",
sensor:getId(),
sensor:getName(),
status,
sensor:isEnabled() and "Sim" or "Não"
))
end
end
-- Controle de fluxo: pausa sensor quando dispositivo desliga
EventBus.subscribeState(0, function(event)
local flowSensor = Sensor.get(0)
if flowSensor then
if event.value == 1 then
flowSensor:resume()
flowSensor:resetTimer()
else
flowSensor:pause()
end
end
end)