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

 找回密码
 立即注册
查看: 10628|回复: 12

[流程系列] 请教大佬们关于获取某线路上公交车位置推送到微信的问题

[复制链接]

42

主题

522

帖子

2945

积分

金牌会员

Rank: 6Rank: 6

积分
2945
金钱
2423
HASS币
10
发表于 2020-12-26 20:04:44 | 显示全部楼层 |阅读模式
本帖最后由 yinghu183 于 2020-12-26 20:06 编辑

找了个公交车的api,可以获取到某条公交线路上正在跑的每辆公交车的位置,就是下图中buses列表下的[0][1][2][3][4]。第一辆车的数据就是 [size=15.008px]msg.payload.returl_list.buses[0].dis_stat,第二辆就是 [size=15.008px]msg.payload.returl_list.buses[1].dis_stat,以此类推。
111111.png
然后呢,我只会编辑一定数量车辆的msg.payload数值,比如5辆,然后一起编辑好,推送到微信。可是现在问题是buses列表下的公交车数量是变化的,有时候这条线路上有5辆车在跑,有时候是4辆,有时候是3辆。我如果在推送内容中编辑好5辆,而在跑的又不到5辆,就会报错,因为 [size=15.008px]msg.payload.returl_list.buses[4].dis_stat数值不存在。
[size=15.008px]请教大佬,像这种情况,推送内容要怎么写,才能动态引用get节点中buses列表下的所有数值,非常感谢!
回复

使用道具 举报

14

主题

660

帖子

3959

积分

论坛元老

Rank: 8Rank: 8

积分
3959
金钱
3294
HASS币
10
发表于 2020-12-26 20:38:13 | 显示全部楼层
先取buser的数量再轮询
回复

使用道具 举报

42

主题

522

帖子

2945

积分

金牌会员

Rank: 6Rank: 6

积分
2945
金钱
2423
HASS币
10
 楼主| 发表于 2020-12-26 20:41:08 | 显示全部楼层
余歌唱晚 发表于 2020-12-26 20:38
先取buser的数量再轮询

土木狗完全不明白
回复

使用道具 举报

7

主题

56

帖子

296

积分

中级会员

Rank: 3Rank: 3

积分
296
金钱
240
HASS币
0
发表于 2020-12-26 22:46:29 | 显示全部楼层
返回的是json格式数据吧?先当前在线的公交车数量
count = msg.payload.result_list.buses.length
然后根据你的需求自己写了。

没必要查那么多吧,查3个的结果应该够你用了
回复

使用道具 举报

18

主题

352

帖子

2237

积分

金牌会员

North丶

Rank: 6Rank: 6

积分
2237
金钱
1880
HASS币
0

活跃会员卓越贡献

发表于 2020-12-27 02:03:52 | 显示全部楼层
本帖最后由 raspberry0316 于 2020-12-27 15:40 编辑

提前把消息整合 然后再作为整体让微信推送呗。就简单多了。之前想推送家里指定传感器状态信息的时候也是因为会获取到一大堆数据。所以大概写了 function提取数据,我觉得改一改你这个应该适用。
var i, output;
for (i = 0, output = ""; i < 3; i++) {      这里大概就是你需要的数量 比如xxxxx  用来整合成整体消息 给微信用
  output += cgq[msg.window[i].entity_id] +":  " + cgq[msg.window[i].state] + "\n"; 
}
msg.payload = output

return msg


回复

使用道具 举报

42

主题

522

帖子

2945

积分

金牌会员

Rank: 6Rank: 6

积分
2945
金钱
2423
HASS币
10
 楼主| 发表于 2020-12-27 09:55:23 | 显示全部楼层
discuz 发表于 2020-12-26 22:46
返回的是json格式数据吧?先当前在线的公交车数量
然后根据你的需求自己写了。

感谢大佬,你的这行代码对我帮助很大。
回复

使用道具 举报

42

主题

522

帖子

2945

积分

金牌会员

Rank: 6Rank: 6

积分
2945
金钱
2423
HASS币
10
 楼主| 发表于 2020-12-27 09:58:25 | 显示全部楼层
raspberry0316 发表于 2020-12-27 02:03
提前把消息整个 然后再作为整体让微信推送呗。整合部分可以利用key value的关系把有效值提取,空置或者无效 ...

感谢大佬,我参考了你和你楼上那位大佬的代码,实现了我需要的目的。
var count = msg.payload.returl_list.buses.length

var i, output;
for (i = 0, output = ""; i < count; i++) {     
  output += "距离" + [msg.payload.returl_list.buses[i].dis_stat] +"站"+"还有" + [msg.payload.returl_list.buses[i].distance]+"米" + "\n"; 
}
msg.payload = output

return msg


我完全小白一个,就上面实现我目的的几句话,我折腾了一个多小时。。。。。。
回复

使用道具 举报

18

主题

352

帖子

2237

积分

金牌会员

North丶

Rank: 6Rank: 6

积分
2237
金钱
1880
HASS币
0

活跃会员卓越贡献

发表于 2020-12-27 15:33:38 | 显示全部楼层
yinghu183 发表于 2020-12-27 09:58
感谢大佬,我参考了你和你楼上那位大佬的代码,实现了我需要的目的。

能用就行,想用function多一点就空闲时间看看网上的逻辑与语法,上手会快一些。
回复

使用道具 举报

42

主题

522

帖子

2945

积分

金牌会员

Rank: 6Rank: 6

积分
2945
金钱
2423
HASS币
10
 楼主| 发表于 2020-12-27 17:37:24 | 显示全部楼层
raspberry0316 发表于 2020-12-27 15:33
能用就行,想用function多一点就空闲时间看看网上的逻辑与语法,上手会快一些。 ...

再次感谢!
回复

使用道具 举报

25

主题

640

帖子

2913

积分

金牌会员

Rank: 6Rank: 6

积分
2913
金钱
2263
HASS币
40
发表于 2020-12-27 22:19:09 | 显示全部楼层
论坛里大佬就是多呀. 我曾经也找过natic大神帮忙搞json
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-25 03:37 , Processed in 0.168183 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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