fsk2684 发表于 2023-2-15 18:04:22

通过小爱同学实现安卓TV换台的功能!

本帖最后由 fsk2684 于 2023-2-17 14:47 编辑

前言:我家的电视不是小米的android电视,想通过小爱同学来控制电视观看想看的频道。论坛中也有类似的教程,但是他的需要维护IPTV列表,这个列表很容易失效,所以就想着使用现成的电视直播软件,我这里用的是酷看直播。

思路:
1.通过node-red-contrib-xiaodu-xiaoai获取小爱同学收到的语音指令的指令。
2.获取指令后筛选关键频道名称。如珠江台、浙江卫视等。
3.打开电视直播软件,获取频道号码。通过<input text 相应的频道号码> 命令转跳到相应的频道

先上流程图:



使用这个流程需要修改几个地方,主要需要修改实例ID和需要控制的设备,node不多,一个一个点开看看!

【2023/02/16】
应各位的要求,将代码改为附件方式。

同时在使用过程中我发现,如果我第一次对小爱同学喊“我要看珠江台",然后一直不使用小爱语音,当我第二次喊小爱喊”我要看珠江台“的时候,他就不会执行任何的动作。这个有待解决,各位也可以给个思路解决一下。


lzmlzm 发表于 2023-2-16 12:40:14

流怎么打不开呢

lzmlzm 发表于 2023-2-16 12:42:30

lzmlzm 发表于 2023-2-16 12:40
流怎么打不开呢

判断执行的节点是怎么写的呀,正在研究nr

lzmlzm 发表于 2023-2-16 12:45:34

拖到流程没有反应

隔壁的王叔叔 发表于 2023-2-16 13:21:06

感谢分享,不过最好是导出接送文件分享,流导入不成功。

fsk2684 发表于 2023-2-17 14:54:57

lzmlzm 发表于 2023-2-16 12:42
判断执行的节点是怎么写的呀,正在研究nr设置中
global.set("lasttext", "你好小爱");

函数中
var lasttext = global.get("lasttext") || false;
var newtext = msg.payload.state;
var newmsg={};
if (lasttext != newtext){
    newmsg = {payload:newtext}
    global.set("lasttext",newtext);
    return newmsg;
} else {
    return null;
}

隔壁的王叔叔 发表于 2023-2-17 15:48:02

感谢楼主分享

lzmlzm 发表于 2023-2-17 20:48:05

fsk2684 发表于 2023-2-17 14:54
设置中
global.set("lasttext", "你好小爱");



十分感谢楼主的分享,谢谢

lzmlzm 发表于 2023-2-17 22:33:20

想求助楼主一个问题,就是我的一个节点是采集开关状态on和off,然后输出驱动另一个节点,现在想怎样写脚本才能在开或关的状态变化时只通过一次,状态改变后再输出一次,其他时间状态更新也不会输出,现在是每5秒更新一次状态,输出就触发一次

fsk2684 发表于 2023-2-19 04:02:23

lzmlzm 发表于 2023-2-17 22:33
想求助楼主一个问题,就是我的一个节点是采集开关状态on和off,然后输出驱动另一个节点,现在想怎样写脚本 ...

设置中
global.set("lasttext", "你好小爱");


函数中
var lasttext = global.get("lasttext") || false;
var newtext = msg.payload.state;
var newmsg={};
if (lasttext != newtext){
    newmsg = {payload:newtext}
    global.set("lasttext",newtext);
    return newmsg;
} else {
    return null;
}

就是使用这个方法,这个方法是对比上一次小爱获取的信息和这次获取的信息,相同则不执行,同理也可应用到你这个场景。据说change节点也可以实现,我有空也研究一下,我也是在学的过程。
页: [1] 2
查看完整版本: 通过小爱同学实现安卓TV换台的功能!