Current section
Files
Jump to
Current section
Files
src/glome.erl
-module(glome).
-compile(no_auto_import).
-export([main/0]).
-spec main() -> {ok, nil} | {error, glome@core@error:glome_error()}.
main() ->
{some, Token@1} = case glome@homeassistant@environment:get_access_token() of
{some, Token} -> {some, Token};
_try ->
erlang:error(#{gleam_error => assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => _try,
module => <<"glome"/utf8>>,
function => <<"main"/utf8>>,
line => 21})
end,
{ok, _@2} = case glome@homeassistant:connect(
{configuration,
<<"192.168.178.62"/utf8>>,
8123,
{access_token, Token@1}},
fun(Home_assistant) ->
_pipe = Home_assistant,
glome@homeassistant:add_constrained_handler(
_pipe,
{entity_id, binary_sensor, <<"*"/utf8>>},
fun motion_sensor_handler/2,
fun motion_detected/2
)
end
) of
{ok, _@1} -> {ok, _@1};
_try@1 ->
erlang:error(#{gleam_error => assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => _try@1,
module => <<"glome"/utf8>>,
function => <<"main"/utf8>>,
line => 22})
end.
-spec motion_sensor_handler(
glome@homeassistant@state_change_event:state_change_event(),
glome@homeassistant:home_assistant()
) -> {ok, nil} | {error, glome@core@error:glome_error()}.
motion_sensor_handler(Data, Home_assistant) ->
case begin
_pipe = Home_assistant,
glome@homeassistant:get_state(
_pipe,
{entity_id, light, <<"main_downstairs"/utf8>>}
)
end of
{error, _try} -> {error, _try};
{ok, Light_state} ->
{ok, nil}
end.
-spec motion_detected(
glome@homeassistant@state_change_event:state_change_event(),
glome@homeassistant:home_assistant()
) -> boolean().
motion_detected(Data, Home_assistant) ->
(erlang:element(2, erlang:element(3, Data)) =:= normal) andalso (erlang:element(
2,
erlang:element(4, Data)
) =:= motion_detected).