你好
我正在为现有的Linux物联网集线器应用程序添加对DA14585(库存多传感器固件版本)的支持。我一直在阅读文档“DA14585物联网多传感器开发工具包软件参考应用”,但仍然有一些问题。亚博国际官网平台网址简而言之,我尝试使用linux的“bluetoothctl”应用程序让温度通知工作,但没有运气。在论坛的研究中,尽管看起来可能有一些linux bluez软件的bug(或者至少过去可能有过)。另外,我可能只是向传感器发送了错误的命令(完全有可能)。无论如何,就像它目前的情况一样,无论我做什么,我似乎都不会从我启用它们的任何特征(包括“wrbl_dws_control_reply_char”,我只能读取)得到通知。无论如何,下面是我的问题
1) 为了只启用温度通知,我从医生那里猜到,并且做了一些研究,我会-
A) 启用“wrbl\u dws\u control\u reply\u char”的通知
写一个配置字符串到"wrbl_dws_control_char"来启用温度传感器
(我发送了“0x0A 0x08 0x03 0x06 0x03 0x06 0x00 0x02 0x0A 0x00 0x01 0x00 0x00 0x00 0x05”)
C)启用“wrbl_dws_temp_char”的通知
D) 可能会向“wrbl\u dws\u control\u char”发送“start”命令(0x01)?
-我试过很多这样的组合,但运气不好
2) 在第39页的“DWSv2特性”表中,“wrbl_dws_temp_char”的描述字段显示“温度报告。传统dws兼容性,未使用”。这是否意味着不应使用此特性?我们是否只使用“wrbl_dws_multi_sens_char”来代替?
3) Start命令(0x01到“wrbl\u dws\u control\u char”)具体做什么?第71页的内容是“在下一次启动命令后,将应用修改后的设置”。这是否意味着在每次写入“wrbl_dws_control_char”之后,您都需要使用start命令?这似乎不太可能,但我找不到其他描述。
无论如何,很抱歉问了这么长的问题,希望这能让我继续下去,我会知道这是不是我做错了什么,或者bluez是否还有问题。
Thx,塔尔
嗨omniot,
谢谢你的帖子。让我检查一下你的问题,我会尽快给你回复。
谢谢,PM_Dialog
太好了,谢谢。如果您需要任何其他信息来澄清我的问题,请让我知道。。。
嗨omniot,
您能告诉我温度通知仅在您使用linux bluez软件时才启用吗?你用另一个应用程序试过了吗?您是否尝试过物联网多传感器移动应用程序?也许,这可能是bluez方面的问题,但让我进一步检查一下。
谢谢,PM_Dialog
对不起,我想我不清楚。。。我不是想说传感器有什么问题,我很确定它是好的。我想最主要的问题是,从开发人员的角度来看,需要向哪些特征发送哪些命令序列才能让传感器开始发送温度通知?基本上,假设一个刚打开并连接的库存传感器/固件,我接下来需要做什么?从我最初的帖子中,我尝试的是-
1) 启用“wrbl\u dws\u control\u reply\u char”的通知
2) 将配置字符串写入“wrbl\U dws\U control\U char”以启用温度传感器
(我发送了“0x0A 0x08 0x03 0x06 0x03 0x06 0x00 0x02 0x0A 0x00 0x01 0x00 0x00 0x00 0x05”)
3) 启用“wrbl\u dws\u temp\u char”的通知
4) 可能会向“wrbl\u dws\u control\u char”发送“start”命令(0x01)?
而且它没有工作(没有收到任何通知或回复)。这是否有效,或者我是否遗漏了一些步骤?如果我知道它应该是可行的,那么我就必须假设它是一个布鲁斯问题,否则希望你能给我一个可行的序列。
再次感谢!
我想我应该回过头来,回答可能出现的其他人的一些问题。首先,无论什么原因,bluez似乎有一个问题与传感器谈判更大的mtu的比旧的ble max。我不确定这是bluez bug还是传感器做错了什么,但我有两个来自不同制造商的新传感器,显示了相同的行为。无论如何,由于新的bluez“AcquireNotify”dbus接口返回mtu,我只是随机尝试了一下(与普通的StartNotify接口相反),并开始获得通知。这就是我没有得到数据的部分原因。此外,根据我的第二个问题,您只能通过“wrbl_dws_multi_sens_char”特征(或者至少这只对我有效)获取数据。因此,不应该使用标有“遗留DWS兼容性,未使用”的条目。它们可能也不应该被记录(或者至少更好地解释)。至于正确的顺序,我仍然不确定,但从试验和错误来看,您似乎首先启用了wrbl_dws_control_reply_char和wrbl_dws_multi_sens_char特征的通知。然后向wrbl_dws_control_char写入命令类型“0x0A”,以配置您想要启用/接收的任何传感器,然后写入“0x01”START命令(也写入wrbl_dws_control_char)。
同样,我不确定这是否正确,但它似乎正在工作,所以它是其他任何使用bluez/d-BusAPI/库的人的起点。如果有任何人可以添加、更正或澄清的内容,那就太好了。到目前为止,所有这些都只是尝试和错误(实际上有很多错误)。。。
嗨omniot,
感谢您的反馈和指示。
谢谢,PM_Dialog
好吧,再说一次,对任何遇到这个的人来说。在使用DA14585的bluez bluetoothctl交互行命令中有一些奇怪的行为,但令人高兴的是,您毕竟不必使用AcquireNotify接口。当您使用line命令时,如果您使用“notify on”启用通知,然后执行写入操作以开始获取通知,则除非。。。在最后一个write命令之后,使用“select characteristic”(选择特征)命令,并选择想要通知的特征。然后他们神奇地开始了。因此,可能是行命令中存在错误,或者是一些他们不希望/不支持的传感器行为。不管怎样,好消息是,一旦我制定出需要发送的命令,在我基于bluez的应用程序中,一切都按预期进行。我的应用程序使用与bluetoothctl相同的d-bus调用,因此不确定它为什么工作,但它确实如此。。。再次强调,只是对将来有类似问题的其他人进行跟踪。