首页 >>  正文

定时任务隔10分钟执行

来源: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都没做到的事

边澜聂4205通过BAT如何实现计划任务(每天指定时间段内重复运行 -
养妹崔18190247506 ______ 在BAT里做下时间判断,如果时间段是大于800点,小于2000点的时候就运行指定程序,否则重新判断时间.具体方法百度“bat时间判断”

边澜聂4205怎么用Java实现定时执行某程序 -
养妹崔18190247506 ______ java中设置定时任务用Timer类可以实现. 一、延时执行 首先,我们定义一个类,给它取个名字叫TimeTask,我们的定时任务,就在这个类的main函数里执行.代码如下: package test; import java.util.Timer; public class TimeTask { public...

边澜聂4205电脑自动关机时间设置 -
养妹崔18190247506 ______ 1、界面左下角搜索栏搜索“控制面板”,打开“控制面板” 2、然后点击控制面板里的“管理工具” 3、在管理工具里点击“计划任务程序” 4、先点击下任务计划程序库,然后在中间的空白位置点击右键,选择“创建基本任务”,也可以点...

边澜聂4205xp如何设定计划任务执行命令每隔几分钟执行一次 -
养妹崔18190247506 ______ 要解决你的这个问题不需要用到计划任务什么的来定期执行net session /delete /y,当然这也是解决你的问题的一种有效方法.你真正需要的是这个命令:net config server 在命令行输入这个命令执行后你会看到输出信息里有一个:空闲的会话时...

边澜聂4205如何在spring中配置定时任务 -
养妹崔18190247506 ______ spring的定时任务配置分为三个步骤: 1、定义任务 2、任务执行策略配置 3、启动任务 1、定义任务 <!--要定时执行的方法--> <bean id="testTaskJob" e5a48de588b6e799bee5baa631333337616566class="org.springframework....

边澜聂4205定时任务中的 Timer的schedule和scheduleAtFixedRate方法的区别? -
养妹崔18190247506 ______ schedule和scheduleAtFixedRate的区别在于:如果指定开始执行的时间在当前系统运行时间之前,scheduleAtFixedRate会把已经过去的时间也作为周期执行,而schedule不会把过去的时间算上. 示例如下: 1 2 3 4 5 6 7 8 9 ...

边澜聂4205怎么添加定时任务 -
养妹崔18190247506 ______ 选择“开始-》程序-》附件-》系统工具-》任务计划” 点击“添加任务计划”,开始计划任务向导,并点击“下一步” 选择“浏览”选择脚本文件或者某个exe程序 选择“每天”运行该脚本,按“下一步”;(根据实际需求设置) 此处设置定时脚本执行的时间为每天凌晨五点,按“下一步”; 设置系统管理员的用户名和密码,按“下一步” 点击“完成”结束定时任务的设置.

边澜聂4205java 怎么写定时任务 -
养妹崔18190247506 ______ 如果要执行一些简单的定时器任务,无须做复杂的控制,也无须保存状态,那么可以考虑使用JDK 入门级的定期器Timer来执行重复任务.一、原理 JDK中,定时器任务的执行需要两个基本的类:java.util.Timer; java.util.TimerTask; 要运行一个...

边澜聂4205定时执行某个任务 -
养妹崔18190247506 ______ 最常用的做法是使用unix的cron直接执行java程序. 并不需要在java做的那么复杂. windows服务器也有类似于cron的任务管理功能,同理 ---------------------------> tomcat不是用来管理定时任务的,如果没有http请求,servlet是不会被执行的. 建议lz把定期执行的处理做成一个独立的java程序,用cron执行. 如果不想写独立的java程序,也可以用cron定期向tomcat发送http请求,但是,这样做的话注意程序处理时间不能太长,因为http通信有timeout的制约.

边澜聂4205linux定时执行任务后怎么取消 -
养妹崔18190247506 ______ 使用crontab -e命令,打开任务程序文件,然后删除指定的任务即可.crontab命令说明如下:crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会...

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