Homex
Mix.install([
{:homex, path: __DIR__},
], config: [
homex: [
entities: [MySwitch, MyTemperature, MyHumidity, MyLight]
]
])
Homex
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
Logger.put_application_level(:emqtt, :info)
Logger.put_application_level(:homex, :info)
{:ok, pid} = Homex.start_link()