iobroker/homeassistant/nodered的手机定位--安卓篇

前提

  • 安卓手机

  • 安装附件的mqtt和tasker的app

  • 把mqtt和tasker加入手机的白名单–每个品牌手机不一样设置,但是目的都是让这两个app可以常驻后台

  • 申请好移动的mqtt,或者自己搭建可以链接外网的mqtt。如果你用移动的mqtt,请注意,nodered客户端使用一个客户端id,一部手机使用一个一个客户端id,总之有几个客户端就要在移动onenet申请几个设备id。具体看论坛教程。中国移动onenet的mqtt服务器的教程**点击我**

  • 如果是第4点搭建的mqtt服务器,请获取一下几个数据:

  • 主机ip:183.230.40.39

  • 主机端口:6002

  • 产品id

  • master-apikey

  • 设备id

具体步骤
一、自行安装mqtt****二、打开装好的mqtt服务器,根据下面的指示添加对应数据

  • 点击+号添加新的服务器链接
  • 选择允许
  • 自定义命名
  • 全部关掉
  • 添加主机ip:183.230.40.39
  • 添加主机端口:6002
  • username添加onenet的“产品id”
  • password添加的是onenet的“master-apikey”
  • 自定义
  • 1client id添加的是onenet的“设备id”

上面10点处理好,保存设置。

三、再onenet上看对应的设备有没有链接成功,成功了如图:

四、在手机上的tasker设置
1.设置触发条件,也就手机在什么状态下被激发。

  • 时间激发,比如你可以设置x分钟,让手机上传一次信息。你要测试你的间隔时间,因为这个关系到你的电量消耗。

  • 步数激发,比如你手机跟着你走了x步,就让手机上传一次信息。你要测试你的间隔步数,因为这个关系到你的电量消耗。


2.设置上传的信息。主要是把手机的坐标信息上传。


[mw_shl_code=applescript,true]{“dev_id”:“note8”,“gps”:%LOC],“gps_accuracy”:%LOCACC,“battery”:%BATT}[/mw_shl_code]
这个代码就是获取手机的相关信息的,添加到上图所示位置。第五、通过nodered的mqtt-in节点获取手机传递过来的信息




taskerm.apk (5.14 MB)
mqtt.apk (4.76 MB)

1 个赞

学习了,正在研究怎么使用。

电信手机可以用吗?

安卓非华为这种杀后台的都可以的。

漏掉一个[

{“dev_id”:“note8”,“gps”:[%LOC],“gps_accuracy”:%LOCACC,“battery”:%BATT}

这里不是丢了一个错误,双引号是中文的,搞死我了
建议修改下正文。

鬼总,搞得爽么?

死去活来啊…………

哈哈哈,还好你是高手,还能发现错误:grin:

个人觉得如果有公网,更是可做内网穿透的兄弟,直接在nr做http监听,tasker可直接post位置至nr,

有空分享一下,这个之前在用。mqtt是为了没公网的

此图针对有公网NR,内网frp穿透同理

[{“id”:“fd3c6735.7bf488”,“type”:“http in”,“z”:“a8474abf.d074e8”,“name”:"",“url”:"/GPS",“method”:“post”,“upload”:false,“swaggerDoc”:"",“x”:1070,“y”:840,“wires”:[[“ebc2d464.0b9438”,“7f405d2f.8c39a4”]]},{“id”:“8288b234.3bcac”,“type”:“debug”,“z”:“a8474abf.d074e8”,“name”:"",“active”:true,“tosidebar”:true,“console”:false,“tostatus”:false,“complete”:“payload”,“targetType”:“msg”,“x”:1290,“y”:920,“wires”:[]},{“id”:“ebc2d464.0b9438”,“type”:“http response”,“z”:“a8474abf.d074e8”,“name”:"",“statusCode”:“200”,“headers”:{},“x”:1240,“y”:820,“wires”:[]},{“id”:“7f405d2f.8c39a4”,“type”:“function”,“z”:“a8474abf.d074e8”,“name”:"",“func”:“msg.payload=JSON.parse(msg.payload.data)\nreturn msg;”,“outputs”:1,“noerr”:0,“x”:1250,“y”:860,“wires”:[[“8288b234.3bcac”]]}]

有错误。无法导入

亲测,物联卡网络不行,联通不行,预计电信也不行,移动的可以!
其余网络可以定时发mqtt消息,可玩性挺好,谢谢大神分享!

萝卜,我为啥%LOC获取不到经纬度啊

所有跟位置定位相关的变量,都取不到,gps是允许的

tasker用的好几个问题:
1:华为荣耀10手机,把各种电池优化,不许自启动,后台保持等功能都弄了,可总是发不出去mqtt消息。不知道是mqtt client的问题还是tasker的问题。换了一个老安卓手机可以了。不知道有没有遇到类似问题有解决办法的。
2:tasker获得GPS坐标总是不成功,用的%LOC,把获得位置的时长增加到2分钟了还不行。万不得已用的%LOCN获取的网络坐标。是我的GPS定位有问题?
3:tasker获取网络坐标传给高德节点。返回的文字地址基本是对的。但是返回的地图上的红点位置相差太大了。把tasker的坐标在高德电脑网页上输入得到的地图跟企业微信得到的图片是一样的,都是和实际位置偏差很大。如果这个没错的话,那就说明tasker得到的坐标有问题。除了tasker,有没有其他方法抓位置坐标校验一下?

我在onenet的网络里怎么找不到设备ID呢?