『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 15198|回复: 20

[教程系列] 用Nodered转发Tasker的device_tracker

[复制链接]

9

主题

228

帖子

2050

积分

超级版主

Rank: 8Rank: 8

积分
2050
金钱
1797
HASS币
100

突出贡献

发表于 2018-6-13 14:32:44 | 显示全部楼层 |阅读模式
本帖最后由 flashsoft 于 2018-6-13 14:52 编辑

前面有看到大神写的利用Tasker模拟gpslogger 软件进行发送GPS信息给HA,其中因为GPS数据格式不一样的问题,所以需要改插件
原贴:https://bbs.hassbian.com/forum.p ... 07&highlight=tasker


其实利用最近论坛里火热的node-red,可以很容易的进行适配数据,然后进行转发


一图流


                               
登录/注册后可看大图


                               
登录/注册后可看大图

然后提供个node-red的配置,直接导入即可
[
   
[
    {
        "id": "108683a5.96fe7c",
        "type": "http in",
        "z": "90eed96b.104358",
        "name": "Tasker GPS",
        "url": "/tracker",
        "method": "get",
        "upload": false,
        "swaggerDoc": "",
        "x": 90,
        "y": 320,
        "wires": [
            [
                "4fcbbb18.41dda4",
                "263e4ef8.b90f12",
                "39d79a78.eecad6"
            ]
        ]
    },
    {
        "id": "236be463.cb01fc",
        "type": "http request",
        "z": "90eed96b.104358",
        "name": "",
        "method": "GET",
        "ret": "txt",
        "url": "",
        "tls": "",
        "x": 720,
        "y": 320,
        "wires": [
            [
                "cdbd5286.95134"
            ]
        ]
    },
    {
        "id": "cdbd5286.95134",
        "type": "debug",
        "z": "90eed96b.104358",
        "name": "GPS请求输出",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "true",
        "x": 900,
        "y": 320,
        "wires": []
    },
    {
        "id": "a13e87e7.dbcb68",
        "type": "function",
        "z": "90eed96b.104358",
        "name": "构造GPS请求",
        "func": "const device = 'mix2'\nconst lat = msg.lat\nconst lon = msg.lon\nreturn {\n url:`https://ha:8123/api/gpslogger?device=${device}&latitude=${lat}&longitude=${lon}&accuracy=0&battery=100`\n}",
        "outputs": 1,
        "noerr": 0,
        "x": 540,
        "y": 320,
        "wires": [
            [
                "236be463.cb01fc"
            ]
        ]
    },
    {
        "id": "263e4ef8.b90f12",
        "type": "debug",
        "z": "90eed96b.104358",
        "name": "GPS请求输入",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "true",
        "x": 340,
        "y": 240,
        "wires": []
    },
    {
        "id": "4fcbbb18.41dda4",
        "type": "function",
        "z": "90eed96b.104358",
        "name": "解析GPS数据",
        "func": "const gps = msg.payload.gps.split(',')\nconst lat = gps[0]\nconst lon = gps[1]\nreturn {lat,lon}",
        "outputs": 1,
        "noerr": 0,
        "x": 340,
        "y": 320,
        "wires": [
            [
                "a13e87e7.dbcb68"
            ]
        ]
    },
    {
        "id": "39d79a78.eecad6",
        "type": "http response",
        "z": "90eed96b.104358",
        "name": "响应请求",
        "statusCode": "",
        "headers": {},
        "x": 320,
        "y": 280,
        "wires": []
    }
]


]


简单解析思路:
1、用nodered先起个http请求监听,用来接收tasker发过来的请求
2、通过function组件,把tasker的gps信息拆分成lat和lon信息,然后通过request组件发出去



评分

参与人数 3金钱 +50 收起 理由
lidicn + 20 膜拜大神!
+ 20 nodered让大神们给带火了!
windgo + 10 膜拜大神!

查看全部评分

回复

使用道具 举报

12

主题

545

帖子

2037

积分

金牌会员

Rank: 6Rank: 6

积分
2037
金钱
1492
HASS币
0
发表于 2018-6-13 14:37:28 | 显示全部楼层
我表示不扶墙就服楼主!!! jones快来给楼主加分!!!
回复

使用道具 举报

26

主题

553

帖子

2728

积分

金牌会员

Rank: 6Rank: 6

积分
2728
金钱
2150
HASS币
100

教程狂人

发表于 2018-6-13 17:22:05 | 显示全部楼层
楼主,我有个疑问,为啥不让tasker直接发数据给HA呢?要经过其他软件和插件中转的意义在哪里?
回复

使用道具 举报

123

主题

4661

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16414
金钱
11668
HASS币
45
发表于 2018-6-13 18:38:31 | 显示全部楼层
潇洒哥er 发表于 2018-6-13 14:37
我表示不扶墙就服楼主!!! jones快来给楼主加分!!!

已加!你也可以加呀!
回复

使用道具 举报

9

主题

228

帖子

2050

积分

超级版主

Rank: 8Rank: 8

积分
2050
金钱
1797
HASS币
100

突出贡献

 楼主| 发表于 2018-6-13 18:44:04 | 显示全部楼层
Mirukuteii 发表于 2018-6-13 17:22
楼主,我有个疑问,为啥不让tasker直接发数据给HA呢?要经过其他软件和插件中转的意义在哪里? ...

因为tasker的gps数据格式跟ha要的数据格式不一致,所以才用nodered做下格式转换
回复

使用道具 举报

19

主题

341

帖子

1133

积分

金牌会员

Rank: 6Rank: 6

积分
1133
金钱
792
HASS币
0
发表于 2018-6-13 20:09:42 | 显示全部楼层
一手抚墙,一手服搂主
回复

使用道具 举报

8

主题

870

帖子

5218

积分

论坛元老

Rank: 8Rank: 8

积分
5218
金钱
4348
HASS币
0
发表于 2018-6-13 22:34:38 | 显示全部楼层
学无止境,谢谢分享
回复

使用道具 举报

26

主题

553

帖子

2728

积分

金牌会员

Rank: 6Rank: 6

积分
2728
金钱
2150
HASS币
100

教程狂人

发表于 2018-6-14 00:10:11 | 显示全部楼层
flashsoft 发表于 2018-6-13 18:44
因为tasker的gps数据格式跟ha要的数据格式不一致,所以才用nodered做下格式转换 ...

好吧,或许我觉得直接用template转换更方便
回复

使用道具 举报

12

主题

545

帖子

2037

积分

金牌会员

Rank: 6Rank: 6

积分
2037
金钱
1492
HASS币
0
发表于 2018-6-14 09:04:49 | 显示全部楼层
Mirukuteii 发表于 2018-6-14 00:10
好吧,或许我觉得直接用template转换更方便

m神来段 示例代码?
回复

使用道具 举报

25

主题

416

帖子

3027

积分

元老级技术达人

积分
3027
金钱
2601
HASS币
40
发表于 2018-6-14 10:52:44 | 显示全部楼层
学习了 厉害厉害
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-4 16:25 , Processed in 0.204516 second(s), 33 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表