diff --git a/apps/emqx_gateway/src/lwm2m/emqx_lwm2m_channel.erl b/apps/emqx_gateway/src/lwm2m/emqx_lwm2m_channel.erl index 1dbf27474..f78f9a908 100644 --- a/apps/emqx_gateway/src/lwm2m/emqx_lwm2m_channel.erl +++ b/apps/emqx_gateway/src/lwm2m/emqx_lwm2m_channel.erl @@ -57,7 +57,7 @@ %% TODO: -define(DEFAULT_OVERRIDE, #{ clientid => <<"">> %% Generate clientid by default - , username => <<"${Packet.querystring.epn}">> + , username => <<"${Packet.uri_query.ep}">> , password => <<"">> }). @@ -300,13 +300,14 @@ enrich_clientinfo(#coap_message{options = Options} = Msg, Channel = #channel{clientinfo = ClientInfo0}) -> Query = maps:get(uri_query, Options, #{}), case Query of - #{<<"ep">> := Epn} -> - %% TODO: put endpoint-name, lifetime into clientinfo ??? + #{<<"ep">> := Epn, <<"lt">> := Lifetime} -> Username = maps:get(<<"imei">>, Query, Epn), Password = maps:get(<<"password">>, Query, undefined), ClientId = maps:get(<<"device_id">>, Query, Epn), ClientInfo = - ClientInfo0#{username => Username, + ClientInfo0#{endpoint_name => Epn, + lifetime => binary_to_integer(Lifetime), + username => Username, password => Password, clientid => ClientId}, {ok, NClientInfo} = fix_mountpoint(Msg, ClientInfo), diff --git a/apps/emqx_gateway/src/lwm2m/emqx_lwm2m_session.erl b/apps/emqx_gateway/src/lwm2m/emqx_lwm2m_session.erl index 38f1b59e3..40dc34ba6 100644 --- a/apps/emqx_gateway/src/lwm2m/emqx_lwm2m_session.erl +++ b/apps/emqx_gateway/src/lwm2m/emqx_lwm2m_session.erl @@ -345,7 +345,7 @@ update(#coap_message{options = Opts, payload = Payload} = Msg, WithContext, CmdType, #session{reg_info = OldRegInfo} = Session) -> - Query = maps:get(uri_query, Opts), + Query = maps:get(uri_query, Opts, #{}), RegInfo = append_object_list(Query, Payload), UpdateRegInfo = maps:merge(OldRegInfo, RegInfo), LifeTime = get_lifetime(UpdateRegInfo, OldRegInfo),