首页 >>  正文

定时任务15分钟一次

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

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

饶霞泡1385如何让Linux定时任务crond以秒为单位执行 -
权阁静14732132158 ______ 1、先写调度脚本ct.sh,在调度脚本中执行实际需要执行的脚本#!/bin/bash step=2 #间隔的秒数,不能大于60 for (( i = 0; i $(php '/home/fdipzone/php/crontab/tolog.php') sleep $step done搜索 exit 02、创建crontab,调用ct.sh,每分钟执行一次,这样实际上就能达到每2秒钟执行一次的要求了

饶霞泡1385Spring+quartz 做定时任务时,每5分种执行一次,怎么写法 -
权阁静14732132158 ______ <!-- 每天的24小时,每隔5分钟,获取邮件存库一次 --> <bean id="GetEmailJob" class="com.suitong.mp.modules.monitor.action.GetEmailJob"></bean> <!-- 调用工作对象和工作方法 --> <bean id="GetEmailTask" class="org....

饶霞泡1385Java 定时任务 -
权阁静14732132158 ______ Calendar cal = Calendar.getInstance(); //每天定点执行 cal.set(Calendar.HOUR_OF_DAY,12); cal.set(Calendar.MINUTE,0); cal.set(Calendar.SECOND,0); Timer timer = new Timer(); timer.schedule(new TimerTask() { public void run() { //执行的内容 } },cal.getTime(), 24*60*60*1000); java定时器 每天12点 固定执行一个方法,,你可以借鉴一下

饶霞泡1385java中怎么实现定时功能 -
权阁静14732132158 ______ 我们可以使用Timer和TimerTask类在java中实现定时任务,详细说明如下:1、基础知识 java.util.Timer 一种线程设施,用于安排以后在后台线程中执行的任务.可安排任务执行一次,或者定期重复执行.此类是线程安全的:多个线程可以共享单...

饶霞泡1385linux 怎么开启一个定时任务 -
权阁静14732132158 ______ 在linux系统中我们可以修改定时执行的文件实现定时计划,具体步骤如下.1、查看定时执行的文件:命令:“crontab -l”,如同ll或者ls一样,显示定时任务列表信息,然后查看定时任务详细信息,定时任务脚本前面的 * * * * *和数字意思解释如...

饶霞泡1385linux 定时任务的方法有哪些 -
权阁静14732132158 ______ 如果我们需要定时执行一些周期性重复性的任务,我们就会用到定时执行任务功能来帮我们自动执行每天、每周等周期性重复性的任务而不需要人为干预即可实现. 我们通过crontab –e来创建自己的定时任务,下图中的5个*的含义是,第一个*...

饶霞泡1385Spring 的定时任务不执行了 -
权阁静14732132158 ______ 根据你描述的,没法帮你确定问题.不过你可以把定时器设置成没秒执行一次,注释掉原理的逻辑.只打印一句话.看看定时器是不是有问题.在确定其他的问题

饶霞泡1385深渊护送完后误毁任务道具,任务卡住了!!护送完成,将军杀死精英龙
权阁静14732132158 ______ 删掉任务回暴风城找伯瓦尔·弗塔根公爵重新接任务应当就行了.

饶霞泡1385linux定时任务的时间取的是哪个时间 -
权阁静14732132158 ______ 如果我们需要定时执行一些周期性重复性的任务,我们就会用到定时执行任务功能来帮我们自动执行每天、每周等周期性重复性的任务而不需要人为干预即可实现. 我们通过crontab –e来创建自己的定时任务,下图中的5个*的含义是,第一个*...

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