Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Linux中,我们如何从蓝牙信标(具体地说是estimote)获取RSSI值?

在Linux中,我们如何从蓝牙信标(具体地说是estimote)获取RSSI值?
EN

Stack Overflow用户
提问于 2017-04-09 17:54:37
回答 1查看 2.4K关注 0票数 1

我需要获得与多个蓝牙信标的距离以进行三角测量,以便我可以进行室内定位。我已经尝试给出尽可能多的相关细节。这个项目是针对RPi的,但我目前正在尝试首先通过我的笔记本电脑进行测试。我已经尝试了我在互联网上能找到的大多数关于这方面的东西:

我能找到的获得RSSI值的最好方法是hcitool rssi <address of beacon>

从这里开始Bluetooth LE Signal Strength Linux

为了测试这一点,我首先尝试在我的手机上获取它。它显示"Not Connected“。我想我需要先连接,所以我尝试了很多方法来连接我的手机:

a) hcittol cc <address of mobile>

b) gatttool -b <address of mobile> -t random --interactive

c) rfcomm connect 0 <address of mobile> 10

在每种情况下,当我在手机上点击配对时,连接都会终止。

然后,我从蓝牙菜单中以通常的方式对我的手机进行配对,然后尝试hcitool rssi <Address of mobile>,最后返回一个值-8

现在我把它放在我的手机上,我现在转到信标。

然后,我对我的信标进行了同样的尝试。这一次,我必须首先执行hcitool lescan以获取可用信标的地址,然后使用返回错误Could not create connection: Connection timed out的命令hcitool lecc <address of beacon>连接到其中一个信标,因此接下来,我再次尝试使用其他两种方法进行连接:

当我可以确定hci0已启动时,返回错误Can't connect RFCOMM socket: Host is downrfcomm connect 0 <address of beacon> 10

然后我尝试了sudo gatttool -b F1:15:A7:E3:17:63 --interactive,之后交互模式打开了,我给出了命令connect。这在Attempting to connect to <address of beacon>之后产生了不同的错误,主要是connect error : Connection timed outError: connect error: Connection refused (111)

然后我读到我需要使用来自Bluetooth LE on Raspbianhttps://ubuntuforums.org/showthread.php?t=2204808和另一个我现在找不到的资源的-t random

所以我输入了sudo gatttool -b F1:15:A7:E3:17:63 -t random --interactive,在这个命令中,当我给出connect命令时,我会得到错误Error: connect error: Device or resource busy (16),有时还会得到Error: connect error: Input/Output Error

然后我读到我可能需要通过hciconfig hci0 down重启我的hci0,然后hciconfig hci0 up完成了这项工作,信标现在连接上了。

但是,在说出``GLib WARNING **:Invalid file descriptor后,它很快就断开了连接。

“我在https://raspberrypi.stackexchange.com/questions/53982/how-to-fix-gatttools-glib-warning-invalid-file-descriptor上看到,这是因为关系不好。”我试着让信标离得更近,但也是一样。

因此,我尝试在它连接的短时间内至少获得一个RSSI值。但是,即使它是这样连接的,我还是hcitool rssi <address of beacon>了错误,错误是这样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hcitool rssi F1:15:A7:E3:17:63
Get connection info failed: No such file or directory

我还没有找到一个合适的解决方案。

我尝试了另一种读取RSSI值的方法,结果如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hcidump -R
HCI sniffer - Bluetooth packet analyzer ver 5.37
device: hci0 snap_len: 1500 filter: 0xffffffffffffffff
> 04 0E 04 01 0B 20 00 
> 04 0E 04 01 0C 20 00 
> 04 0E 04 01 0C 20 00 
> 04 0F 04 00 01 0D 20 
> 04 0F 04 00 01 16 20 
> 04 0F 04 00 01 13 20 

这是在它断线之前。我在这里读到了Obtain RSSI with hcidump,它说要读取第14个字节。由于所有这些似乎都是十六进制数字,这意味着每个数字都是1个字节。但是这样,我每行只有7个数字,我怎么能读到第14个字节呢?

与信标保持距离一直困扰着我,占用了我大量的时间。在这个问题上请帮帮我。如果你能帮我找到一个资源来帮助我做到这一点,我将非常感激。

EN

回答 1

Stack Overflow用户

发布于 2017-10-24 12:31:02

您不需要连接到设备来获取信号强度RSSI值,只需使用以下代码并通过管道将其连接到从您要获取的设备中提取值的脚本即可:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
btmon &
hcitool lescan --duplicates
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43310003

复制
相关文章
Rails里应用Devise
Use Devise For Authentication Devise is great gem for authentication, check out here. Add Gem First thing you need to do is to add devise gem to you Gemfile. Just add gem 'devise', '~> 3.5' to your Gemfile and run bundle install and restart your server. Se
用户2183996
2018/06/28
3500
Rails MVC 和 CRUD(3)
要在 Rails 中显示“My first test” 的静态页面,需要新建一个控制器和视图
franket
2021/11/24
7150
Ruby on Rails 基础(3)
查看可用ruby版本 [root@h202 ruby]# rvm list known -bash: rvm: command not found [root@h202 ruby]# su - root [root@h202 ~]# cd ruby/ [root@h202 ruby]# rvm list known # MRI Rubies [ruby-]1.8.6[-p420] [ruby-]1.8.7[-head] # security released on head [ruby-]1.9.1[-p
franket
2021/11/25
1.2K0
Rails 3 Script/ 改版
相信如果之前用过 2.* rails 的人都知道. 我们习惯用 ./script/generate [xxxx] 或者 ./script/* [xxxx].
py3study
2020/01/10
7.1K0
rails3的render(:updat
rails2的时代,对于动态显示数据的查询使用ajax的方法,一般转向到.js文件。使用如下的代码:
py3study
2020/01/13
3620
Rails 容器与配置(3)
通过 docker inspect afdddae9b2bf 可以获得丰富的,容器镜像的细节
franket
2021/10/20
3370
Rails 构建评论功能(3)
评论在创表的过程中已经构建了与article 的关联,但是article并没与评论关联
franket
2021/10/20
8280
Rails MVC 和 CRUD(5)
创建了一个叫 ArticlesController 的类,继承自 ApplicationController
franket
2021/11/24
3390
Rails MVC 和 CRUD(7)
(这里的 /articles 明明对应两个方法,GET、POST ,有点不太明白,为什么这样指定就一定成了POST请求)
franket
2021/11/24
1960
Rails MVC 和 CRUD(9)
保存数据 修改 create 方法,对提交的数据进行保存 [root@h202 blog]# vim app/controllers/articles_controller.rb [root@h202 blog]# cat app/controllers/articles_controller.rb class ArticlesController < ApplicationController def new end def create # render plain: params
franket
2021/11/25
1900
Rails MVC 和 CRUD(15)
点击 【Destroy】 后会根据我们的定义弹出提示 连续删除几次后所剩无几 目前已经通过 Rails 实现了文章的 新建、显示、列出、更新、删除 操作 ---- 命令汇总 rails server -b 0.0.0.0 rails generate controller welcome index cat app/views/welcome/index.html.erb vim config/routes.rb grep -v " #" config/routes.rb | grep -v
franket
2021/11/25
3490
Rails MVC 和 CRUD(2)
MVC 分块设计有助于管理复杂的应用程序,因为可以在一段时间内只用关注一个方面;例如,可以在不依赖业务逻辑的情况下专注于视图设计;同时也让应用程序的测试更加容易;MVC 分层同时也简化了分组开发;不同的开发人员可同时开发视图、控制器逻辑和业务逻辑
franket
2021/11/24
3750
Rails MVC 和 CRUD(13)
定义 update 方法,并且添加 edit 链接和 show 链接 [root@h202 blog]# vim app/controllers/articles_controller.rb [root@h202 blog]# cat app/controllers/articles_controller.rb class ArticlesController < ApplicationController def new @article = Article.new end def
franket
2021/11/25
1620
Rails MVC 和 CRUD(12)
保存成功就直接显示,如果保存失败,就重绘 new 页面,new 页面中加入了对错误信息的显示
franket
2021/11/25
2550
Rails MVC 和 CRUD(8)
再次提交一回 ---- 创建模型 Rails 提供了一个生成器用来创建模型 [root@h202 blog]# bin/rails generate model Article title:string text:text Running via Spring preloader in process 13216 invoke active_record create db/migrate/20160422140912_create_articles.rb c
franket
2021/11/25
2570
Rails MVC 和 CRUD(1)
Rails 的相关基础,详细可以参考 官方文档 和 Ruby China 的 Rails 入门
franket
2021/11/24
3480
Rails MVC 和 CRUD(10)
再次加载 可以成功显示了 ---- 列出所有文章 [root@h202 blog]# vim app/controllers/articles_controller.rb [root@h202 blog]# cat app/controllers/articles_controller.rb class ArticlesController < ApplicationController def new end def create # render plain: params[:ar
franket
2021/11/25
1820
Rails MVC 和 CRUD(6)
不过,通过查看源码,我们可以看到 action 部分指向的是当前页面 action="/articles/new" , 而这个页面 (Restfull API) 应该是用来进行显示的,而不是进行处理的
franket
2021/11/24
2700
Rails MVC 和 CRUD(11)
列表页面多出来两个链接,点击 【New article】 成功跳转到了添加页面,随便输入点什么,提交 自动跳转到了显示页面,点击【Back】 跳转回了所有列表页面 Tip: 之所以每做一次修改都能直接生效,是因为在开发模式下(默认),每次请求 Rails 都会自动重新加载程序,因此修改之后无需重启服务器 ---- 数据验证 我们常常有对输入进行校验的需求,以避免接受到了无效或不合规范的数据 [root@h202 blog]# vim app/models/article.rb [root@h
franket
2021/11/25
2720
Rails MVC 和 CRUD(14)
删除文章 在 controllers 中定义 destory 方法 然后在 index 视图中加入 Destroy 链接 [root@h202 blog]# vim app/controllers/articles_controller.rb [root@h202 blog]# cat app/controllers/articles_controller.rb class ArticlesController < ApplicationController def new @article
franket
2021/11/25
2160

相似问题

mongomapper rails 3和devise

20

Rails3和论坛插件?

21

Devise with rails 3和remote => true

20

Rails 3 devise_for和STI

21

Rails 3和Devise的角色授权

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文