在Linux上获取通知的问题

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.wsdof.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
8个职位/ 0个新职位
最后发表
omniot
离线
最后看到:1年8个月前
加入:2018-11-08 00:21
在Linux上获取通知的问题

你好,

我正在为现有的Linux物联网集线器应用程序添加对DA14585(库存多传感器固件版本)的支持。我一直在阅读文档“DA14585物联网多传感器开发工具包软件参考应用”,但仍然有一些问题。雷竞技安卓下载简而言之,我尝试使用linux的“bluetoothctl”应用程序让温度通知工作,但没有运气。在论坛的研究中,尽管看起来可能有一些linux bluez软件的bug(或者至少过去可能有过)。另外,我可能只是向传感器发送了错误的命令(完全有可能)。无论如何,就像它目前的情况一样,无论我做什么,我似乎都不会从我启用它们的任何特征(包括“wrbl_dws_control_reply_char”,我只能读取)得到通知。无论如何,下面是我的问题

1)仅仅启用温度通知,我从医生和做一些研究猜测,我将-

启用“wrbl_dws_control_reply_char”的通知
写一个配置字符串到"wrbl_dws_control_char"来启用温度传感器
(我发送“0x0A 0x08 0x03 0x06 0x03 0x06 0x06 0x00 0x02 0x0A 0x00 0x01 0x00 0x00 0x00 0x05”)
C)启用“wrbl_dws_temp_char”的通知
D)可能发送一个“start”命令(0x01)到“wrbl_dws_control_char”?

-我尝试过很多组合,但都没有成功

2)在第39页的“DWSv2特征”表中,“wrbl_dws_temp_char”的描述字段读作“温度报告”。遗留DWS兼容性,没有使用。”这是否意味着这个特性不应该被使用?我们是否只使用“wrbl_dws_multi_sens_char”来代替?

启动命令(0x01到“wrbl_dws_control_char”)具体做什么?在第71页,它读到“修改后的设置将应用于下一个START命令之后”。这是否意味着在每个人写完“wrbl_dws_control_char”之后,您需要使用一个start命令?这似乎不太可能,但我找不到其他描述。

不管怎样,很抱歉问了这么长时间的问题,希望这能让我继续下去,不管怎样,我都知道我做错了什么,或者bluez是否还有问题。

谢谢,塔尔

设备:
PM_Dialog
离线
最后看到:17小时40分钟前
工作人员
加入:2018-02-08 11:03
嗨omniot,

嗨omniot,

谢谢你的帖子。让我查一下您的问题,然后尽快给您答复。

谢谢,PM_Dialog

omniot
离线
最后看到:1年8个月前
加入:2018-11-08 00:21
太好了,谢谢你。如果你

太好了,谢谢你。如果你需要任何额外的信息来澄清我的问题,请告诉我……

PM_Dialog
离线
最后看到:17小时40分钟前
工作人员
加入:2018-02-08 11:03
嗨omniot,

嗨omniot,

请告诉我,只有在使用linux bluez软件的时候才会启用温度通知。你试过其他应用程序吗?你试过物联网多传感器移动应用程序吗?也许,这可能是布鲁斯的问题,但让我进一步检查。

谢谢,PM_Dialog

omniot
离线
最后看到:1年8个月前
加入:2018-11-08 00:21
对不起,我想我没说清楚

对不起,我想我没说清楚……我并不是说传感器有什么问题,我很确定它很好。从开发人员的角度来看,最主要的问题是,需要向哪些特征发送什么样的命令序列,才能让传感器开始发送温度通知?只是非常基本的,假设股票传感器/固件已经被打开和连接,我需要做什么下一步?从我最初的帖子中,我尝试的是-

启用“wrbl_dws_control_reply_char”的通知
2)写一个配置字符串到"wrbl_dws_control_char",以启用温度传感器
(我发送“0x0A 0x08 0x03 0x06 0x03 0x06 0x06 0x00 0x02 0x0A 0x00 0x01 0x00 0x00 0x00 0x05”)
启用“wrbl_dws_temp_char”的通知
4)可能发送一个“开始”命令(0x01)到“wrbl_dws_control_char”?

而且它没有工作(没有收到任何通知或回复)。这是否有效,或者我是否遗漏了一些步骤?如果我知道它应该是可行的,那么我就必须假设它是一个布鲁斯问题,否则希望你能给我一个可行的序列。

再次感谢!

omniot
离线
最后看到:1年8个月前
加入:2018-11-08 00:21
我想我应该回来

我想我应该回过头来,回答可能出现的其他人的一些问题。首先,无论什么原因,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-bus api/库。如果有人能补充、更正或澄清什么,那就太好了。到目前为止,所有这些都只是通过反复试验(实际上是很多错误)……

PM_Dialog
离线
最后看到:17小时40分钟前
工作人员
加入:2018-02-08 11:03
嗨omniot,

嗨omniot,

谢谢你的反馈和指示。

谢谢,PM_Dialog

omniot
离线
最后看到:1年8个月前
加入:2018-11-08 00:21
好吧,再一次,任何人都可以

好吧,再一次,对于其他遇到这个的人。在使用DA14585的bluez bluetoothctl交互式行命令中有一些奇怪的行为,但令人高兴的是,您毕竟不必使用AcquireNotify接口。当你使用line命令时,如果你使用"notify on"来启用通知,然后做写来开始得到通知,你不会得到任何东西,除非…在最后一个写命令之后使用“选择特征”命令,并选择需要通知的特征。然后奇迹般地开始了。因此,一个错误可能是在行命令或一些他们不期望/支持的传感器行为。无论如何,好消息是,一旦我计算出我需要发送的命令,在基于bluez的应用程序中,一切都按照预期工作。我的应用程序使用所有相同的d-bus调用,bluetoothctl不确定为什么它工作,但它确实这样做了…再次强调,我只是想问问以后还有谁会有类似的问题。