『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 8132|回复: 9

[新奇玩法] 当snmp.switch遇上ROS路由的脚本控制,路由想怎么控就怎么控

[复制链接]

8

主题

209

帖子

2237

积分

论坛技术达人

积分
2237
金钱
2028
HASS币
0
发表于 2020-2-15 21:53:22 | 显示全部楼层 |阅读模式
本帖最后由 kenlau 于 2020-2-15 21:53 编辑

这段时间在家里呆着,好长时间没出去了,小孩每天都通过平板上网课,可是每次上完课都很主动的玩游戏了,过年前一直想着用什么办法把家里的ros路由器接入到HA,好让我随时随刻的控制小孩的游戏时间,一直没空去研究,这段时间闲得发慌,上官网扒了一下,发现了switch竟然支持snmp,官网相关地址https://www.home-assistant.io/integrations/snmp/#switch,而ROS不就是可以支持snmp,而且还支持snmp写入来控制脚本的吗?于是就立马去操作了。详细的ros功能可以参考官网的WIKIhttps://wiki.mikrotik.com/wiki/Manual:SNMP#Run_Script

首先打开ROS的snmp功能,记得把写入模式选上。

1.jpg

下一步就是把平板电脑的MAC地址加到capsman的黑名单那里了。(我家里的WIFI设备全部是ROS设备,用CAPSMAN做AC控制的)

2.jpg


这里注意一下,脚本是通过执行capsman的黑名单备注来操作的(比如我备注的ipad),所以一但备注修改了,脚本也一起要修改。

接着下一步是脚本编写了,这里脚本要注意一下,snmp是调用脚本的顺序的,从上往下,最上面的是1,以此类推。
我这个脚本是把IPAD的MAC地址在地址列表里面启用和禁用,启用了就断网不能连接WIFI了,禁用的话可以连接WIFI


3.jpg

接着就可以添加配置到配置文件了,由于ROS的snmp是通过控制脚本实现的,不带状态反馈,所以分了几个步骤来实现

第一步先添加一个snmp的switch,配置如下:

switch:
  - platform: snmp
    name: ipad-wifi-off
    host: 192.168.77.1
    community: public
    baseoid: 1.3.6.1.4.1.14988.1.1.8.1.1.3.2   
    payload_on: 0
    payload_off: 1
  - platform: snmp
    name: ipad-wifi-on
    host: 192.168.77.1
    community: public
    baseoid: 1.3.6.1.4.1.14988.1.1.8.1.1.3.1
    payload_on: 1
    payload_off: 0


注意上面baseoid最后的数字,那个是执行脚本的顺序,最后的数字1代表ROS脚本的第一条,最后的数字2代表ROS脚本的第二条。具体请看ROS的官网https://wiki.mikrotik.com/wiki/Manual:SNMP#Run_Script
这样snmp开关就配置完毕了,不过因为这个开关没反馈,所以会出现回弹的情况,不能反馈开关的状态,所以需要用到input_boolean。

4.jpg 5.jpg

第二步在configuration.yaml添加input_boolean

input_boolean: 
  ipadwifi:
    name: 禁止IPAD联网
    initial: off
    icon: mdi:brightness-auto   

第三步在automations.yaml添加如下

- alias: ipadwifi on
  initial_state: true
  trigger:
   - platform: state
     entity_id: input_boolean.ipadwifi
     from: 'off'
     to: 'on'
  action:
    service: switch.turn_on
    data:
      entity_id: switch.ipad_wifi_on
- alias: ipadwifi off
  initial_state: true
  trigger:
   - platform: state
     entity_id: input_boolean.ipadwifi
     from: 'on'
     to: 'off'
  action:
    service: switch.turn_off
    data:
      entity_id: switch.ipad_wifi_off

这样一个不会回弹的虚拟开关就做出来的,可是虚拟开关的开和关是没状态显示的,还需要做一个有状态显示的实体开关。

6.jpg

最后一步就是做一个template的开关,配置如下:   
  - platform: template
    switches:
      ipadwifi:
        value_template: "{{ is_state('input_boolean.ipadwifi', 'off') }}"
        turn_on:
          service: input_boolean.turn_off
          entity_id: input_boolean.ipadwifi    
        turn_off:
          service: input_boolean.turn_on
          entity_id: input_boolean.ipadwifi
        icon_template: "{% if not is_state('input_boolean.ipadwifi', 'off') %}mdi:wifi-off{% else %}mdi:wifi{% endif %}"

完成后效果如下:

7.jpg
再配合大神做的[新奇玩法] 易用版-延迟倒计时的通用定时器卡片这个,非常好用。

8.jpg

虽然开关是有反馈状态,不过状态是虚拟的,每次重启都会恢复,所以我把开关状态做成是开,反正IPAD不是经常禁网,只不过在小孩不自觉的时候才禁,所以这个开的状态就算是重启了也是不禁网的状态,下面的视频大家看下使用效果。






回复

使用道具 举报

9

主题

527

帖子

2352

积分

金牌会员

Rank: 6Rank: 6

积分
2352
金钱
1825
HASS币
0
发表于 2020-2-15 22:16:38 | 显示全部楼层
医生: 再抢救一下吧
孩子:拔管。。。
回复

使用道具 举报

6

主题

352

帖子

1333

积分

金牌会员

Rank: 6Rank: 6

积分
1333
金钱
981
HASS币
0
发表于 2020-2-15 23:14:27 | 显示全部楼层
谢谢分享,向大神学习
回复

使用道具 举报

73

主题

1165

帖子

6679

积分

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
5509
HASS币
30
发表于 2020-2-16 04:31:32 | 显示全部楼层
本帖最后由 xuyang 于 2020-2-16 07:26 编辑

我家中也是用的ros的capsman,其实控制ros不必那么麻烦,有现成的组件。在hacs中安装Mikrotik Router,就可以执行ros中的脚本了。另外在nodered中也有组件【node-red-contrib-mikrotik3】也可以控制ros
回复

使用道具 举报

73

主题

1165

帖子

6679

积分

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
5509
HASS币
30
发表于 2020-2-16 04:40:24 | 显示全部楼层
xuyang 发表于 2020-2-16 04:31
我家中也是用的ros的capsman,其实控制ros不必那么麻烦,有现成的组件。在hacs中安装Mikrotik Router,就可 ...

正好也请教一下,在ha中也有ros专门组件,https://www.home-assistant.io/integrations/mikrotik/,但是我用了,却无法实时更新数据。
回复

使用道具 举报

0

主题

90

帖子

761

积分

高级会员

Rank: 4

积分
761
金钱
671
HASS币
0
发表于 2020-2-16 10:54:22 | 显示全部楼层
向大神学习 感谢分享
回复

使用道具 举报

8

主题

209

帖子

2237

积分

论坛技术达人

积分
2237
金钱
2028
HASS币
0
 楼主| 发表于 2020-2-16 12:04:29 | 显示全部楼层
xuyang 发表于 2020-2-16 04:40
正好也请教一下,在ha中也有ros专门组件,https://www.home-assistant.io/integrations/mikrotik/,但是 ...

官方原生的更新好慢,我以前用官方的修改过一个,不过现在用不了,也 用不上,所以没去弄了
回复

使用道具 举报

73

主题

1165

帖子

6679

积分

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
5509
HASS币
30
发表于 2020-2-16 12:18:51 | 显示全部楼层
kenlau 发表于 2020-2-16 12:04
官方原生的更新好慢,我以前用官方的修改过一个,不过现在用不了,也 用不上,所以没去弄了 ...

官方原生的最近才修改过,就是更新慢。hacs中插件和nodered中的ros脚本插件都是可以用的。
回复

使用道具 举报

0

主题

7

帖子

31

积分

新手上路

Rank: 1

积分
31
金钱
24
HASS币
0
发表于 2020-2-20 20:03:17 | 显示全部楼层
居然HA支持ROS,,用了这么久ROS竟然没有发现,看来得再好好研究了。。
回复

使用道具 举报

1

主题

12

帖子

62

积分

注册会员

Rank: 2

积分
62
金钱
50
HASS币
0
发表于 2024-12-20 01:18:31 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-28 01:43 , Processed in 1.230772 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表