已从https://github.com/TheThingsIndustries/lorawan-stack/issues/1971移出问题,来自@laurensslats
我喜欢 V2 控制台的这个功能,目前在 V3 中没有。
...
易于调试,因为它可以深入了解设备是否正常运行以及网络是否获取数据。
...
...
这样的事情呢? 也许用凯文的一些神奇的用户界面酱
...
铬合金
...
在控制台中添加一些字段
...
我需要来自@kschiffer 的纯智慧
...
我不确定这是否相同,但快速检查 NS 的session
是否存在、激活日期/时间和可能的帧计数器会非常有帮助。
@rvolosatovs我们是否在 NS 中保留“最后一次看到”的时间戳?
@rvolosatovs我们是否在 NS 中保留“最后一次看到”的时间戳?
不,但它可以从RecentUplinks
( RecentUplinks[len(RecentUplinks)-1].ReceivedAt
)
@rvolosatovs我们是否在 NS 中保留“最后一次看到”的时间戳?
不,但它可以从
RecentUplinks
(RecentUplinks[len(RecentUplinks)-1].ReceivedAt
)
这就是我所做的,但我认为对于完整的功能,我们需要挂钩到事件流以实时更新数字。
这就是我所做的,但我认为对于完整的功能,我们需要挂钩到事件流以实时更新数字。
在我继续以这种方式实施之前, @htdvisser你认为这种方法是否足够彻底? 上行链路下行链路事件不包含当前帧计数,因此我必须根据从终端设备内的会话道具获得的初始值来增加它们。
恐怕这不是要走的路。
我们不发送帧计数器吗? 那将是真正的问题。
@rvolosatovs我们是否在 NS 中保留“最后一次看到”的时间戳?
不,但它可以从
RecentUplinks
(RecentUplinks[len(RecentUplinks)-1].ReceivedAt
)这就是我所做的,但我认为对于完整的功能,我们需要挂钩到事件流以实时更新数字。
不幸的是,它并不像乍看起来那么简单。
ResetsFCnt==true
可以自行重置FCnt
FCnt
- FCnt
应根据在下一个接收到的数据上行链路中使用的会话密钥 ID 进行重置或增加FCnt
值不一定是实际设备FCnt
,因为上行链路中仅发送 16 LSB,而帧计数器可能为 32 位宽。所有这些都由 NS(和 2. 部分由 AS)处理,我当然不认为控制台应该这样做。
我认为前进的方向是为 (1.) - ns.device.reset
和 (2.) - ns.device.confirm_session
(或者可能是ns.device.rejoin
?)添加事件。
对于 (3.),我们需要想办法将完整的FCnt
值传递到控制台。 我们可能想要引入另一个事件,例如ns.up.data.match
或ns.up.data.handle
,这表明上行链路的成功处理并包括完整的FCnt
(可能更多)。 注意,这里ns.up.data.forward
是不相关的,只是表示上行发送到AS,目前在每个上行都错误发布,现在只有在实际转发到AS时才会发布(PR传入),也,AS 上行链路有效载荷不包含完整的FCnt
,而是在上行链路中发送的FCnt
(因此,16 LSB)
在我们对 NS 事件得出结论以驱动这个和那个在 NS 中实现之前被阻止。
好的,我知道目前这确实不可行。 那么last seen
的值呢? 从设备注册表中获取初始值,然后通过相关设备事件(如上行链路、确认下行链路等)保持更新是否保存?
好的,我知道目前这确实不可行。 那么
last seen
的值呢? 从设备注册表中获取初始值,然后通过相关设备事件(如上行链路、确认下行链路等)保持更新是否保存?
是的, ns.up.data.receive
, ns.up.join.receive
, ns.up.rejoin.receive
就是你要找的
NS 现在发布ns.up.data.process
事件,其中包含带有完整FCnt
作为有效负载的上行链路
请使用上行链路中的值作为设备的实际活跃DevAddr
和FCntUp
对于下行链路,我们目前没有类似的功能,但这也不是这个问题的重点,让我们从上行链路 FCnt 开始,然后在稍后阶段添加下行链路(注意,根据 LoRaWAN 版本,我们实际上可能有 2 个不同的下行链路帧计数器 - 一个用于 NS,一个用于 AS,因此上行帧计数器也不那么简单。)
当我们知道应用程序中的最后一个上行链路时,让我们在应用程序视图中将Linked
替换为Last seen
(类似于网关概览页面)。
当我们知道应用程序中的最后一个上行链路时,让我们在应用程序视图中将
Linked
替换为Last seen
(类似于网关概览页面)。
为应用程序全局显示该信息肯定会很好,但这样做意味着控制台需要一个接一个地探测与应用程序关联的所有终端设备,以便能够显示最初的最后一次看到状态。 当我们必须假设应用程序可能具有数百或数千个终端设备时,我认为这是不可行的。
我能想到的两件事:
@htdvisser @rvolosatovs我可能忽略了什么吗? 或者,您能想出任何方法来聚合这些数据并通过 API 端点提供这些数据吗?
ApplicationLinkStats
只有last_up_received_at
和last_downlink_forwarded_at
:
https://github.com/TheThingsNetwork/lorawan-stack/blob/develop/api/applicationserver.proto#L56 -L69
通过 #2585 关闭