# Homex ```elixir Mix.install([ {:homex, path: __DIR__}, ], config: [ homex: [ entities: [MySwitch, MyTemperature, MyHumidity, MyLight] ] ]) ``` ## Homex ```elixir defmodule MySwitch do use Homex.Entity.Switch, name: "my-switch" def handle_on(entity) do IO.puts("Switch turned on") entity end def handle_off(entity) do IO.puts("Switch turned off") entity end end defmodule MyTemperature do use Homex.Entity.Sensor, name: "my-temperature", unit_of_measurement: "°C", device_class: "temperature" def handle_timer(entity) do entity |> set_value(Enum.random(-40..40//1)) end end defmodule MyHumidity do use Homex.Entity.Sensor, name: "my-humidiy", unit_of_measurement: "%", device_class: "humidity" def handle_timer(entity) do entity |> set_value(Enum.random(20..90//1)) end end defmodule MyLight do use Homex.Entity.Light, name: "my-light", modes: [:brightness] def handle_init(entity) do entity |> set_on() |> set_brightness(50) end def handle_brightness(entity, brightness) do IO.puts("Light set to #{brightness}%") entity end end ``` ```elixir Logger.put_application_level(:emqtt, :info) Logger.put_application_level(:homex, :info) ``` ```elixir {:ok, pid} = Homex.start_link() ```