定时任务15分钟一次
作者:GeekOn
导读:
智能音箱可以设定闹钟,但却不可以定时执行任务,今天就来搞定它。
续着上一篇IFTTT继续
不知道是不想做还是不肯做还是不愿做还是挤牙膏,总之目前的智能音箱都是只能设定闹钟,却不能够在设定的时间执行特定的操作任务。之前实现的时候有个方案,借助日历(比如Google日历),例如“hi,Google,设定18:00打开电视”,那么就会在Google日历的18:00设定一条日历,并在日历提醒时执行打开电视的任务。执行后发现因为Node-RED和Google日历执行时有延迟,总是不能够很准确的在设定的时间执行任务(多数会延迟3-10分钟),强迫症自然是不能忍。所以就执行第二套方案,在自己的服务器上面做计时器定时,写到头麻到不想写的时候,突然找到一个部件,可以协助实现,开心!
还是以Google home为例,可以实现语音设定“hi,Google,设定1730打开空调”,并且使用Notify通知设定结果,支持单个删除,全部删除,修改等功能。实现这个功能用到几个好东西,除Node-RED外,重磅推出IFTTT,Line即时通讯。
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的流程可以说是相当复杂,所以大家需要的话关注评论留言吧。
有任何疑问或者交流讨论,欢迎随时留言评论
饶霞泡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个*的含义是,第一个*...