SatVUE Portal - LUA Fields

Lua/SatVUE Device Field Examples

Copy data from other SatVUE device

To copy a field from one SatVUE device to the current one, just return the lastest value from that device as the field's calculation Lua:

return getLatestValueFromDevice('AnotherSatVUE', 'Barometric')


Non-Vented Hydrostatic Water Level Sensor

In this example we calculate a device field value by subtracting the barometric pressure which provided as a previously calculated field and then calculate the water level from this pressure, from this pressure value. Pressures are in hPa, water level is in meters.

return (message_data['Hydrostatic'] - message_data['Barometric']) * 0.0101971621298

Or if the barometric pressure was provided by another SatVUE device.

local barometric = getLatestValueFromDevice('AnotherSatVUE', 'Barometric')
return (message_data['Hydrostatic'] - barometric) * 0.0101971621298


Set a Digital Output

Turn on a pump by setting a digital output (on port 2) on this device, if the water level is too high:

if message_data['WaterLevel'] > 10 then
    setDigitalOutput(2, true)
end


Set a Digital Output on Another SatVUE

Turn on a remote pump by setting a digital output (on port 2) on the Pump SatVUE device, if the water level is too high:

if message_data['WaterLevel'] > 10 then
    setDigitalOutputOnDevice('PumpSatVUE', 2, true)
end


Using Previous Samples

Some calculations need to a set of data points in order to perform the calculation. To acheive this calling the function getPreviousValues() will retreive this data.

-- get the last 5 values of the Water Level field
local values = getPreviousValues('Water Level', 5)

for i,record in ipairs(values) do
  local epochTimestamp = record.timestamp
  local waterLevel = record.value

  -- if the sample was less than an hour ago
  if ((getEpochUTC() - epochTimestamp) < 3600) then
    -- return this water level as the value for this field
    return waterLevel
  end
end

-- No recent data was found, so return nil to drop the value
return nil