Compare commits
4 Commits
aircon_mst
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 790a23c71d | |||
| 9fd9d2a89e | |||
| c405ba7d6d | |||
| 7cabbb8757 |
@ -104,6 +104,7 @@ handle_cast({send_command, Ref, ReceiverPid, DeviceId, Command}, State = #state{
|
||||
|
||||
NCommand = jiffy:encode(Command#{<<"sessionid">> => SessionId}, [force_utf8]),
|
||||
iot_mqtt_connection:publish_msg(ConnPid, Topic, NCommand, 2),
|
||||
lager:debug("[iot_mqtt_aircon_gateway] publish message, topic: ~p, message: ~ts", [Topic, NCommand]),
|
||||
|
||||
NInflight = maps:put({DeviceId, SessionId}, {Ref, ReceiverPid}, Inflight),
|
||||
{noreply, State#state{inflight = NInflight}}.
|
||||
@ -115,19 +116,22 @@ handle_cast({send_command, Ref, ReceiverPid, DeviceId, Command}, State = #state{
|
||||
{noreply, NewState :: #state{}, timeout() | hibernate} |
|
||||
{stop, Reason :: term(), NewState :: #state{}}).
|
||||
handle_info({mqtt_message, Topic, Payload, _Qos}, State = #state{inflight = Inflight}) ->
|
||||
case binary:split(Topic, <<"/">>) of
|
||||
lager:debug("[iot_mqtt_aircon_gateway] get reply of topic: ~p, payload: ~p", [Topic, Payload]),
|
||||
case binary:split(Topic, <<"/">>, [global]) of
|
||||
[<<>>, <<"aircon">>, DeviceId, <<"command_reply">>] ->
|
||||
Reply = catch jiffy:decode(Payload, [return_maps]),
|
||||
case Reply of
|
||||
#{<<"sessionid">> := SessionId} ->
|
||||
case maps:take({DeviceId, SessionId}, Inflight) of
|
||||
error ->
|
||||
lager:debug("[iot_mqtt_aircon_gateway] not find in inflight"),
|
||||
{noreply, State};
|
||||
{{Ref, ReceiverPid}, NInflight} ->
|
||||
case is_pid(ReceiverPid) andalso is_process_alive(ReceiverPid) of
|
||||
true ->
|
||||
ReceiverPid ! {send_command_reply, Ref, Reply};
|
||||
false ->
|
||||
lager:debug("[iot_mqtt_aircon_gateway] reveiver is dead"),
|
||||
ok
|
||||
end,
|
||||
{noreply, State#state{inflight = NInflight}}
|
||||
@ -136,7 +140,7 @@ handle_info({mqtt_message, Topic, Payload, _Qos}, State = #state{inflight = Infl
|
||||
{noreply, State}
|
||||
end;
|
||||
_ ->
|
||||
lager:notice("[~p] get a invalid topic: ~p, message: ~p", [?MODULE, Topic, Payload]),
|
||||
lager:notice("[iot_mqtt_aircon_gateway] get a invalid topic: ~p, message: ~p", [Topic, Payload]),
|
||||
{noreply, State}
|
||||
end;
|
||||
|
||||
|
||||
7
docs/data.md
Normal file
7
docs/data.md
Normal file
@ -0,0 +1,7 @@
|
||||
# 关于数据含义
|
||||
|
||||
## 概念说明
|
||||
遥测为AI;遥信为DI;事件为SOE。其中AI和DI我可以实现数据的展示,SOE只能报警显示无法实现画面的二次应用。对于智慧照明,开关灯定义为SOE,我后台这边只存在一条事件
|
||||
|
||||
## unit字段说明
|
||||

|
||||
BIN
docs/img.png
Normal file
BIN
docs/img.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 541 KiB |
Loading…
x
Reference in New Issue
Block a user