首页 >>  正文

定时任务30秒执行一次

来源:baiyundou.net   日期:2024-09-22

作者:GeekOn

导读:

智能音箱可以设定闹钟,但却不可以定时执行任务,今天就来搞定它。

续着上一篇IFTTT继续

不知道是不想做还是不肯做还是不愿做还是挤牙膏,总之目前的智能音箱都是只能设定闹钟,却不能够在设定的时间执行特定的操作任务。之前实现的时候有个方案,借助日历(比如Google日历),例如“hi,Google,设定18:00打开电视”,那么就会在Google日历的18:00设定一条日历,并在日历提醒时执行打开电视的任务。执行后发现因为Node-RED和Google日历执行时有延迟,总是不能够很准确的在设定的时间执行任务(多数会延迟3-10分钟),强迫症自然是不能忍。所以就执行第二套方案,在自己的服务器上面做计时器定时,写到头麻到不想写的时候,突然找到一个部件,可以协助实现,开心!
还是以Google home为例,可以实现语音设定“hi,Google,设定1730打开空调”,并且使用Notify通知设定结果,支持单个删除,全部删除,修改等功能。实现这个功能用到几个好东西,除Node-RED外,重磅推出IFTTTLine即时通讯。


IFTTT

IFTTT是一个第三方平台,可以很方便的联动很多网络服务,可以和Google Assistant进行互动,用来自定义语音指令,个性化定制Google home可以说是非常方便,神器!

LINE

LINE就是一个即时通讯软件,类似于wechat、whatsapp,只不过它可以直接接入IFTTT,用来接收推送通知方便快捷,且无推送信息条数限制,强烈建议安装使用。(wechat也可以,不过需要用企业微信,个人微信暂不支持。)

准备工作

1、Node-RED

需要添加一个组件,在Node-RED的菜单中选择设置安装,搜索corn-plus,并安装它。

2、IFTTT

首先要創建帳號,可以連結Google 或Facebook 帳號登入,也可以用Email 創一個新的。搜索webhook,并连接,有一串api key需要记录下来,并放入configuration.yaml。api key就是显示的一串网址https://maker.ifttt.com/use/后面的部分。

记得重启HA。
并连接你的Google Assistant账号,Line账号,具体在右上角点击头像,选择My services 。还有其他许多服务都可以接入,这里我们只先说这两个。
回到HA,在配置中添加IFTTT集成,跟着说明走就好了。

开始设定

老规矩先说逻辑
Google指令传入HANode-RED处理执行

Node-RED处理包括命令解析,时间设定,任务安排,以及修改、删除,检查当前设定等。1、先设定Google指令,通过IFTTT,上一篇已叙,不再赘述。
如果跟足上篇,正好就到了Google发送事件至HA的环节。

2、HA收到事件的处理。

HA本身可以接收webhook发来的事件,上一篇也同样有叙述,透过将有关信息发送到一串网络地址,该信息就会被HA所接收,并作为一个“事件”,从而可以用来触发一系列动作,并将其所携带的信息作为处理数据。

在Node-RED中使用events:all模块来监测事件情况,配置如下:

IFTTT发来的事件在HA中使用ifttt_webhook_received来定义。

插播Debug

插播一下Node-RED中debug的使用,通过debug可以及时了解收到的信息内容,json格式,以及产生错误的可能原因。

配置

通常我会选择完整咨讯。将他连接到你希望了解输出信息的接口上,就可以了,他的存在不会影响你的其他流程,只会多出一个分支来收集所有的输出信息,并显示在右侧边栏的debug栏。

图示1、2、3打开右侧边栏i是infomation窗口,中间的瓢虫就是debug,后面的是dashboard。

看到payload没,他就是对应msg.payload的,同理event_type对应的就是msg.event_type。而再下一级的用法是msg.payload.time,以此类推。

我本身使用了很多IFTTT的事件触发,所以先要用switch模块来分流。

分流之后的第一个输出口就是现在要用到的定时任务,

这是我们在IFTTT中设定的事件所携带的信息,第一个event对应了刚才的分流设定,entity_id对应Google中的文字部分,time对应数字部分,command是为了方便添加删除等功能的附加字段,state这里为on表示这是设定让设备打开的命令,同理在IFTTT中设定off的命令,并把对应的state改为off,就完成了添加turn off的定时功能。由于这个Noede-RED的流程可以说是相当复杂,所以大家需要的话关注评论留言吧。

有任何疑问或者交流讨论,欢迎随时留言评论

","force_purephv":"0","gnid":"9876229e552d0c0a7","img_data":[{"flag":2,"img":[{"desc":"","height":"299","title":"","url":"https://p0.ssl.img.360kuai.com/t013698290b3b257311.jpg","width":"600"},{"desc":"","height":"192","title":"","url":"https://p0.ssl.img.360kuai.com/t014208c828a1dc109c.jpg","width":"600"},{"desc":"","height":"202","title":"","url":"https://p0.ssl.img.360kuai.com/t01499d2aef51abfbcb.jpg","width":"546"},{"desc":"","height":"134","title":"","url":"https://p0.ssl.img.360kuai.com/t018becdec14a622d1c.jpg","width":"521"},{"desc":"","height":"241","title":"","url":"https://p0.ssl.img.360kuai.com/t01f7e57aad11fa0ed8.jpg","width":"545"},{"desc":"","height":"570","title":"","url":"https://p0.ssl.img.360kuai.com/t015ef07da2a4ba9a2d.jpg","width":"344"},{"desc":"","height":"305","title":"","url":"https://p0.ssl.img.360kuai.com/t015bff5c646ada8407.jpg","width":"556"},{"desc":"","height":"349","title":"","url":"https://p0.ssl.img.360kuai.com/t013a58c2274e26488f.jpg","width":"600"}]}],"original":0,"pat":"art_src_1,fts0,sts0","powerby":"hbase","pub_time":1671849480000,"pure":"","rawurl":"http://zm.news.so.com/b5e20280e2e8e8c46d83718ade14f971","redirect":0,"rptid":"385b57e4619f98e0","s":"t","src":"什么值得买","tag":[{"clk":"kdigital_1:智能家居","k":"智能家居","u":""}],"title":"智能家居 篇十二:第十章 自建HomeAssistant定时任务——Google都没做到的事

却索肯1598关于C#写的windows服务程序的定时器问题 -
隗庆霍18727122998 ______ 是第一种. NET中有3个Timer System.Windows.Forms.Timer Syst...

却索肯1598mysql定时任务是如何实现的
隗庆霍18727122998 ______ 将该语句写到脚本中,然后通过linux中的crontab 来定时执行该脚本.

却索肯1598在Web系统中,怎么实现一个定时任务 -
隗庆霍18727122998 ______ 1.我们在Win7系统中点击开始按钮,依次选择打开“所有程序—附件—系统工具”,找到“任务计划程序”即可打开Win7系统的任务计划设置面板. 2.在Win7系统的“任务计划程序”设置面板中,我们点击菜单“操作—创建基本任务”.3. 输...

却索肯1598windows 定时任务怎么做 -
隗庆霍18727122998 ______ 方法/步骤 1 选择“开始-》程序-》附件-》系统工具-》任务计划” 2 点击“添加任务计划”,开始计划任务向导,并点击“下一步” 3 选择“浏览”选择脚本文件或者某个exe程序 4 选择“每天”运行该脚本,按“下一步”;(根据实际需求设置) 5 此处设置定时脚本执行的时间为每天凌晨五点,按“下一步”; 6 设置系统管理员的用户名和密码,按“下一步” 7 点击“完成”结束定时任务的设置.

却索肯1598linux中,使用哪个命令去定时处理任务 -
隗庆霍18727122998 ______ 如果必须使用命令的话,一般会可at命令. 定时任务,指定一个时间执行一个任务,只能执行一次. 语法:# at [参数] [时间] 输入要执行的任务命令后按Ctrl+d退出即可. 常见参数: -m :当指定的任务被完成之后,将给用户发送邮件,即使没有...

却索肯1598Node.js node - schedule定时任务隔多少分钟执行一次的方法 -
隗庆霍18727122998 ______ var schedule = require('node-schedule'); var rule = new schedule.RecurrenceRule(); //每隔 30 分钟执行 rule.minute = [0, 30]; //每隔 15 分钟执行: rule.minute = [0, 15,

却索肯1598在jsp中如何让一段程序定时的执行 -
隗庆霍18727122998 ______ setInterval() :按照指定的周期(以毫秒计)来调用函数或计算表达式.方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭.setTimeout() :在指定的毫秒数后调用函数或计算表达式.例如setInterval(function(){ console.log('123')},3000) 3秒执行一次打印123

却索肯1598Java 如何实现这样的定时任务 -
隗庆霍18727122998 ______ JDK中,定时器任务的执行需要两个基本的类: java.util.Timer; java.util.TimerTask; 要运行一个定时任务,最基本的步骤如下: 1、建立一个要执行的任务TimerTask. 2、创建一个Timer实例,通过Timer提供的schedule()方法,将 TimerTask...

却索肯1598用java写一个服务程序定时执行任务,该怎么设计 -
隗庆霍18727122998 ______ java定时任务Timer 关于定时任务,似乎跟时间操作的联系并不是很大,但是前面既然提到了定时任务,索性在这里一起解决了.设置定时任务很简单,用Timer类就搞定了.一、延时执行首先,我们定义一个类,给它取个名字叫TimeTask,我...

(编辑:自媒体)
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图 @ 白云都 2024