IOS平台一大好处是通知推送,HomeAssistant中已经很完善了,简单地配置之后就可以用。

添加组件

配置文件里添加ios:重启加载IOS组件,在App中设置-通知设置-更新推送设置,可以看到IOS组件和通知平台都打勾了。

在开发者工具-服务里面也会有相应项,就可以使用了。

简单通知

通知一般在自动化里面调用通知服务,比如一个最简单的HomeAssistant启动通知。

可以添加标题副标题,这里的unicode字串是显示的表情。

- alias: hass_start_notify
  trigger:
  - event: start
    platform: homeassistant
  condition: []
  action:
  - service: notify.ios_taosky8p
    data:
      message: "{{ '/uD83D/uDE09' }}Home Assistant刚刚启动了。"

效果如下:

带操作按钮的通知

3D Touch通知之后会有选项的那种,比如收到树莓派温度过高的通知可以直接关闭它。

这个其实是两个自动化完成的,一个是通知的自动化,一个是收到通知按钮之后作出反应的自动化。

首先需要在ios.push里面添加一个按钮模板,也就是通知上的按钮的样子。具体参数的含义见官方文档,这个对大小写很敏感,如出错可能是大小写问题。

其次是正常的一个自动化,相比较上面的简单通知,里面多了个data指定按钮的模板。

最后是触发按钮的自动化,用到ios.notification_action_fired这个事件,然后在action里面真正完成我们的关机的操作。

shell_command:
  shutdown_pi: sudo shutdown -h now

script:
  shutdown_pi:
    alias: 关闭树莓派
    sequence:
      - service: shell_command.shutdown_pi

ios:
  push:
    categories:
      - name: Piwarning
        identifier: 'piwarning'
        actions:
          - identifier: 'SHUTDOWN_PI'
            title: '立即关闭PI?'
            activationMode: 'background'
            authenticationRequired: yes
            destructive: yes
            behavior: 'default'
           
automation:
  - alias: pi_temp_warning
    trigger:
      platform: numeric_state
      entity_id: sensor.pi_temp
      above: 50
    condition: []
    action:
    - service: notify.ios_taosky8p
      data:
        message: "{{ '/uD83D/uDE31' }} 树莓派温度过高(超过50度)!"
        data:
          push:
            category: "piwarning"
          
  - alias: ios_action_shutdown_pi
    trigger:
      platform: event
      event_type: ios.notification_action_fired
      event_data:
        actionName: SHUTDOWN_PI
    action:
      - service: script.turn_on
        entity_id: script.shutdown_pi
      

参考

https://www.home-assistant.io/docs/ecosystem/ios/notifications/basic/
https://www.home-assistant.io/docs/ecosystem/ios/notifications/actions/
https://bbs.hassbian.com/thread-1430-1-1.html
https://bbs.hassbian.com/thread-3366-1-1.html