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

 找回密码
 立即注册
查看: 8569|回复: 7

[流程系列] NODE-RED中如何计算时间差

[复制链接]

15

主题

438

帖子

4348

积分

论坛元老

Rank: 8Rank: 8

积分
4348
金钱
3910
HASS币
0
发表于 2020-3-13 15:20:18 | 显示全部楼层 |阅读模式
比如扫地机器人离家开始清扫,每天只需要他触发一次,NODE RED中不知道如何实现
回复

使用道具 举报

2

主题

194

帖子

2876

积分

金牌会员

Rank: 6Rank: 6

积分
2876
金钱
2682
HASS币
0
发表于 2020-3-13 21:07:17 | 显示全部楼层
直接拖个时间节点,要不就追踪设备不在家就触发
回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
发表于 2020-3-14 08:48:53 | 显示全部楼层
flows.zip (734 Bytes, 下载次数: 39)
1.jpg
不需要计算时间差,设置一个状态全局变量,每天0点重置为 false

然后离家触发了,就先检查这个状态是 真 还是 假,如果是假就触发扫地机器人,并把状态变量改成 true

Nero
回复

使用道具 举报

15

主题

438

帖子

4348

积分

论坛元老

Rank: 8Rank: 8

积分
4348
金钱
3910
HASS币
0
 楼主| 发表于 2020-3-16 14:26:54 | 显示全部楼层
本帖最后由 miniknife 于 2020-3-16 14:47 编辑
neroxps 发表于 2020-3-14 08:48
不需要计算时间差,设置一个状态全局变量,每天0点重置为 false

然后离家触发了,就先检查这个状态是 真 ...

感谢,这个方法看起来可以,另外再请教一下,如果需要满足当天清扫时间大于30分钟该怎么处理,是否还是需要用 clean_stop 比较时间
回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
发表于 2020-3-16 15:07:35 | 显示全部楼层
本帖最后由 neroxps 于 2020-3-16 15:16 编辑
miniknife 发表于 2020-3-16 14:26
感谢,这个方法看起来可以,另外再请教一下,如果需要满足当天清扫时间大于30分钟该怎么处理,是否还是需 ...

什么意思,意思是就是如果第一次离家后,清扫时间小于30分钟的话,那么下次离家重新自动清扫?
1.jpg

当第一次离家的触发后,开始延迟30分钟,如果三十分钟内有人回家,触发停止扫地流程,然后重置延迟,如果三十分钟后才回家,那么回家会检测到今天已经扫完地了不需要再扫地了。

flows.zip (1001 Bytes, 下载次数: 34)
Nero
回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
发表于 2020-3-16 15:32:09 | 显示全部楼层
miniknife 发表于 2020-3-16 14:26
感谢,这个方法看起来可以,另外再请教一下,如果需要满足当天清扫时间大于30分钟该怎么处理,是否还是需 ...

如果硬是要计算时间差,那么需要用 function 来写 JavaScript 代码实现比较简单。原理就是每次触发的时候保存时间到全局对象 flow.time 里面,然后第二次触发就先对比 flow.time 和现在的时间差是否大于你设置的时间范围。https://discourse.nodered.org/t/ ... ime-difference/7857

这里有一个 demo 你可以看看。
Nero
回复

使用道具 举报

15

主题

438

帖子

4348

积分

论坛元老

Rank: 8Rank: 8

积分
4348
金钱
3910
HASS币
0
 楼主| 发表于 2020-3-16 16:52:32 | 显示全部楼层
neroxps 发表于 2020-3-16 15:07
什么意思,意思是就是如果第一次离家后,清扫时间小于30分钟的话,那么下次离家重新自动清扫?

感谢提供思路
回复

使用道具 举报

15

主题

636

帖子

2201

积分

金牌会员

Rank: 6Rank: 6

积分
2201
金钱
1565
HASS币
0
发表于 2022-2-21 15:14:13 | 显示全部楼层
本帖最后由 telanx 于 2022-2-21 18:51 编辑

刚好我也有类似的需求....我的云鲸是通过旧安卓手机+tasker+mqtt client,配合HA+nodered伪接入的,ha里设置一个辅助元素 input_boolean作为机器人的switch,我觉得可能比较完善的判断流程是:
  1. 每日零点恢复“扫/拖地任务已完成”为false。
  2. group.person为not_home的时候 --> “扫/拖地任务已完成”为false --> call service:启动扫/拖地机器人(此时input_boolean=on,代表机器人在工作中).
  3. 安卓机监控app通知,当通知“拖地任务已完成”, mqtt发布topic至node-red,然后change“扫/拖地任务已完成”为true。(如果中途中断,比如人回来了,召回基站了,就不会有这个通知,自然依然为false,当下次group.person为not_home时,再次启动扫/拖地机器人),同时call service 机器人为off(表明不在工作)
  4. 任何人回家 --> 如果input_boolean为on, --> call service,召回机器人到基站,并call service设置input_boolean为off。

回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-22 01:57 , Processed in 0.054850 second(s), 33 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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