Jido.Sensor.Spec (Jido v2.0.0-rc.1)

View Source

The normalized representation of a sensor specification.

Contains all metadata needed to configure and run a sensor, including the module, name, description, configuration, and schema.

Fields

  • module - The sensor module (required)
  • name - Sensor name (required)
  • description - Optional sensor description
  • config - Configuration map for the sensor (default: %{})
  • schema - Optional Zoi schema for introspection

Examples

iex> Sensor.Spec.new!(%{module: MySensor, name: "my_sensor"})
%Sensor.Spec{module: MySensor, name: "my_sensor", ...}

iex> Sensor.Spec.new(%{module: MySensor, name: "my_sensor", config: %{interval: 1000}})
{:ok, %Sensor.Spec{...}}

Summary

Functions

Creates a new Sensor.Spec from a map of attributes.

Creates a new Sensor.Spec from a map, raising on error.

Returns the Zoi schema for Sensor.Spec.

Types

t()

@type t() :: %Jido.Sensor.Spec{
  config: map(),
  description: binary(),
  module: atom(),
  name: binary(),
  schema: any()
}

Functions

new(attrs)

@spec new(map()) :: {:ok, t()} | {:error, term()}

Creates a new Sensor.Spec from a map of attributes.

Returns {:ok, spec} or {:error, reason}.

Examples

iex> Sensor.Spec.new(%{module: MySensor, name: "my_sensor"})
{:ok, %Sensor.Spec{module: MySensor, name: "my_sensor", config: %{}, ...}}

iex> Sensor.Spec.new(%{name: "missing_module"})
{:error, ...}

new!(attrs)

@spec new!(map()) :: t()

Creates a new Sensor.Spec from a map, raising on error.

Examples

iex> Sensor.Spec.new!(%{module: MySensor, name: "my_sensor"})
%Sensor.Spec{module: MySensor, name: "my_sensor", config: %{}, ...}

schema()

@spec schema() :: Zoi.schema()

Returns the Zoi schema for Sensor.Spec.