fix host
This commit is contained in:
parent
feebc50793
commit
d9b94af0de
@ -56,6 +56,8 @@ is_activated(Pid) when is_pid(Pid) ->
|
|||||||
gen_statem:call(Pid, is_activated).
|
gen_statem:call(Pid, is_activated).
|
||||||
|
|
||||||
-spec change_status(Pid :: pid(), NewStatus :: integer()) -> no_return().
|
-spec change_status(Pid :: pid(), NewStatus :: integer()) -> no_return().
|
||||||
|
change_status(undefined, _NewStatus) ->
|
||||||
|
ok;
|
||||||
change_status(Pid, NewStatus) when is_pid(Pid), is_integer(NewStatus) ->
|
change_status(Pid, NewStatus) when is_pid(Pid), is_integer(NewStatus) ->
|
||||||
gen_statem:cast(Pid, {change_status, NewStatus}).
|
gen_statem:cast(Pid, {change_status, NewStatus}).
|
||||||
|
|
||||||
@ -75,7 +77,9 @@ stop(Pid) when is_pid(Pid) ->
|
|||||||
%% initialize. To ensure a synchronized start-up procedure, this
|
%% initialize. To ensure a synchronized start-up procedure, this
|
||||||
%% function does not return until Module:init/1 has returned.
|
%% function does not return until Module:init/1 has returned.
|
||||||
start_link(Name, DeviceUUID) when is_atom(Name), is_binary(DeviceUUID) ->
|
start_link(Name, DeviceUUID) when is_atom(Name), is_binary(DeviceUUID) ->
|
||||||
gen_statem:start_link({local, Name}, ?MODULE, [DeviceUUID], []).
|
gen_statem:start_link({local, Name}, ?MODULE, [DeviceUUID], []);
|
||||||
|
start_link(Name, DeviceInfo) when is_atom(Name), is_map(DeviceInfo) ->
|
||||||
|
gen_statem:start_link({local, Name}, ?MODULE, [DeviceInfo], []).
|
||||||
|
|
||||||
%%%===================================================================
|
%%%===================================================================
|
||||||
%%% gen_statem callbacks
|
%%% gen_statem callbacks
|
||||||
|
|||||||
@ -133,8 +133,6 @@ start_link(Name, UUID) when is_atom(Name), is_binary(UUID) ->
|
|||||||
%% gen_statem:start_link/[3,4], this function is called by the new
|
%% gen_statem:start_link/[3,4], this function is called by the new
|
||||||
%% process to initialize.
|
%% process to initialize.
|
||||||
init([UUID]) ->
|
init([UUID]) ->
|
||||||
erlang:process_flag(trap_exit, true),
|
|
||||||
|
|
||||||
%% 重启时,认为主机是离线状态; 等待主机主动建立连接
|
%% 重启时,认为主机是离线状态; 等待主机主动建立连接
|
||||||
{ok, _} = host_bo:change_status(UUID, ?HOST_OFFLINE),
|
{ok, _} = host_bo:change_status(UUID, ?HOST_OFFLINE),
|
||||||
|
|
||||||
@ -373,16 +371,12 @@ handle_event(cast, {handle, {feedback_result, Info0}}, session, State = #state{a
|
|||||||
end,
|
end,
|
||||||
{keep_state, State};
|
{keep_state, State};
|
||||||
|
|
||||||
handle_event(cast, {handle, {event, Event0}}, session, State = #state{aes = AES, devices = Devices}) ->
|
handle_event(cast, {handle, {event, Event0}}, session, State = #state{aes = AES}) ->
|
||||||
EventText = iot_cipher_aes:decrypt(AES, Event0),
|
EventText = iot_cipher_aes:decrypt(AES, Event0),
|
||||||
case catch jiffy:decode(EventText, [return_maps]) of
|
case catch jiffy:decode(EventText, [return_maps]) of
|
||||||
#{<<"event_type">> := ?EVENT_DEVICE, <<"params">> := #{<<"device_uuid">> := DeviceUUID, <<"status">> := Status}} ->
|
#{<<"event_type">> := ?EVENT_DEVICE, <<"params">> := #{<<"device_uuid">> := DeviceUUID, <<"status">> := Status}} ->
|
||||||
case lists:member(DeviceUUID, Devices) of
|
DevicePid = iot_device:get_pid(DeviceUUID),
|
||||||
undefined ->
|
iot_device:change_status(DevicePid, Status);
|
||||||
ok;
|
|
||||||
Pid ->
|
|
||||||
iot_device:change_status(Pid, Status)
|
|
||||||
end;
|
|
||||||
Event when is_map(Event) ->
|
Event when is_map(Event) ->
|
||||||
lager:warning("[iot_host] event: ~p, not supported", [Event]);
|
lager:warning("[iot_host] event: ~p, not supported", [Event]);
|
||||||
Other ->
|
Other ->
|
||||||
@ -434,8 +428,8 @@ handle_data(#{<<"device_uuid">> := DeviceUUID, <<"service_name">> := ServiceName
|
|||||||
case iot_device:get_pid(DeviceUUID) of
|
case iot_device:get_pid(DeviceUUID) of
|
||||||
undefined ->
|
undefined ->
|
||||||
ok;
|
ok;
|
||||||
Pid ->
|
DevicePid when is_pid(DevicePid) ->
|
||||||
case iot_device:is_activated(Pid) of
|
case iot_device:is_activated(DevicePid) of
|
||||||
true ->
|
true ->
|
||||||
%% 查找终端设备对应的点位信息
|
%% 查找终端设备对应的点位信息
|
||||||
iot_router:route_uuid(DeviceUUID, FieldsList, Timestamp),
|
iot_router:route_uuid(DeviceUUID, FieldsList, Timestamp),
|
||||||
@ -444,7 +438,7 @@ handle_data(#{<<"device_uuid">> := DeviceUUID, <<"service_name">> := ServiceName
|
|||||||
NTags = Tags#{<<"uuid">> => UUID, <<"service_name">> => ServiceName, <<"device_uuid">> => DeviceUUID},
|
NTags = Tags#{<<"uuid">> => UUID, <<"service_name">> => ServiceName, <<"device_uuid">> => DeviceUUID},
|
||||||
influx_client:write_data(DeviceUUID, NTags, FieldsList, Timestamp),
|
influx_client:write_data(DeviceUUID, NTags, FieldsList, Timestamp),
|
||||||
|
|
||||||
iot_device:change_status(Pid, 1);
|
iot_device:change_status(DevicePid, 1);
|
||||||
false ->
|
false ->
|
||||||
lager:notice("[iot_host] uuid: ~p, device_uuid: ~p, device is not activated", [UUID, DeviceUUID])
|
lager:notice("[iot_host] uuid: ~p, device_uuid: ~p, device is not activated", [UUID, DeviceUUID])
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user