找回密碼
 立即註冊
惟家LINE群QRCODE
    查看: 3|回覆: 0

    通知系統設計:讓重要的訊息不被淹沒

    [複製鏈接]

    !lvup!   100%

    363

    主題

    27

    回帖

    2200萬

    積分

    管理員

    積分
    22005764
    發表於 3 天前 | 顯示全部樓層 |閱讀模式
    裝到一定程度之後,通知會變成噪音。

    這篇講怎麼設計一個「你會真的看」的通知系統。



    先分級

    不是所有訊息都一樣重要。
    1. 緊急   ← 水管漏水、瓦斯外洩、火警
    2.         必須立刻知道,半夜也要叫醒你
    3.         手機警報音 + 全屋燈亮 + 音響廣播
    4. 重要   ← 門沒關、洗衣機洗好、有人按門鈴
    5.         應該盡快知道,但不用半夜吵
    6.         手機推播 + 音效
    7. 一般   ← 電池快沒電、韌體有更新
    8.         有空再看就好
    9.         手機推播(靜音)或只記在儀表板
    10. 資訊   ← 每日摘要、用電報表
    11.         主動去看
    12.         只放在儀表板或每天固定一則
    複製代碼

    大部分人的問題是「全部都用同一種方式通知」 ——
    結果重要的被淹沒在一堆瑣事裡。

    實作:一個統一的通知腳本
    1. script:
    2.   通知:
    3.     mode: parallel
    4.     max: 20
    5.     fields:
    6.       等級:
    7.         selector:
    8.           select:
    9.             options: [緊急, 重要, 一般, 資訊]
    10.         default: 一般
    11.       標題:
    12.         selector:
    13.           text:
    14.       訊息:
    15.         selector:
    16.           text:
    17.     sequence:
    18.       - choose:
    19.           # ---------- 緊急 ----------
    20.           - conditions:
    21.               - condition: template
    22.                 value_template: "{{ 等級 == '緊急' }}"
    23.             sequence:
    24.               - action: notify.mobile_app_phone
    25.                 data:
    26.                   title: "🚨 {{ 標題 }}"
    27.                   message: "{{ 訊息 }}"
    28.                   data:
    29.                     push:
    30.                       sound:
    31.                         name: default
    32.                         critical: 1
    33.                         volume: 1.0
    34.                     ttl: 0
    35.                     priority: high
    36.               - action: light.turn_on
    37.                 target:
    38.                   entity_id: all
    39.                 data:
    40.                   brightness_pct: 100
    41.                   color_name: red
    42.               - action: tts.speak
    43.                 target:
    44.                   entity_id: tts.piper
    45.                 data:
    46.                   media_player_entity_id: media_player.客廳音響
    47.                   message: "{{ 訊息 }}"
    48.           # ---------- 重要 ----------
    49.           - conditions:
    50.               - condition: template
    51.                 value_template: "{{ 等級 == '重要' }}"
    52.             sequence:
    53.               - action: notify.mobile_app_phone
    54.                 data:
    55.                   title: "{{ 標題 }}"
    56.                   message: "{{ 訊息 }}"
    57.                   data:
    58.                     ttl: 0
    59.                     priority: high
    60.           # ---------- 一般 ----------
    61.           - conditions:
    62.               - condition: template
    63.                 value_template: "{{ 等級 == '一般' }}"
    64.             sequence:
    65.               - action: notify.mobile_app_phone
    66.                 data:
    67.                   title: "{{ 標題 }}"
    68.                   message: "{{ 訊息 }}"
    69.                   data:
    70.                     channel: 一般
    71.                     importance: low
    72.         # ---------- 資訊 ----------
    73.         default:
    74.           - action: persistent_notification.create
    75.             data:
    76.               title: "{{ 標題 }}"
    77.               message: "{{ 訊息 }}"
    複製代碼

    之後所有自動化都呼叫它
    1.       - action: script.通知
    2.         data:
    3.           等級: 緊急
    4.           標題: 廚房漏水
    5.           訊息: 水浸感測器觸發,快去看
    複製代碼

    好處


    • 要改通知方式只改一個地方
    • 所有通知的格式一致
    • 很容易加新的通道(Telegram、LINE、email)




    Android 的通知進階功能

    HA 的手機 App 支援很多 Android 原生功能。

    通知通道(channel)
    1.                   data:
    2.                     channel: 安全警報
    複製代碼


    • 第一次發送時會在系統裡建立一個通道
    • 使用者可以在 Android 設定裡分別調整每個通道的音量、震動、勿擾例外
    • 這是最正確的分級做法


    持續性通知(滑不掉)
    1.                   data:
    2.                     persistent: true
    3.                     sticky: true
    4.                     tag: 瓦斯警報
    複製代碼

    用在「非處理不可」的事情上。

    用 tag 取代 / 清除舊通知
    1.                   data:
    2.                     tag: 門狀態
    複製代碼


    • 相同 tag 的新通知會取代舊的
    • 不會累積一堆


    清除
    1.       - action: notify.mobile_app_phone
    2.         data:
    3.           message: clear_notification
    4.           data:
    5.             tag: 門狀態
    複製代碼

    可操作的通知(在通知上直接按按鈕)
    1.       - action: notify.mobile_app_phone
    2.         data:
    3.           title: 有人按門鈴
    4.           message: 要開門嗎?
    5.           data:
    6.             actions:
    7.               - action: 開門
    8.                 title: 開門
    9.               - action: 忽略
    10.                 title: 忽略
    複製代碼

    然後接收按了哪一個
    1. automation:
    2.   - alias: 處理門鈴回應
    3.     triggers:
    4.       - trigger: event
    5.         event_type: mobile_app_notification_action
    6.         event_data:
    7.           action: 開門
    8.     actions:
    9.       - action: lock.unlock
    10.         target:
    11.           entity_id: lock.大門
    複製代碼

    這個功能很強,可以做出「不用打開 App 就能處理」的流程。

    發送圖片
    1.           data:
    2.             image: /api/camera_proxy/camera.門口
    複製代碼

    門鈴通知附上門口的照片 —— 這是最實用的一個。



    時段控制

    半夜不要吵是基本禮貌。
    1. script:
    2.   通知:
    3.     sequence:
    4.       - variables:
    5.           是深夜: >
    6.             {{ now().hour >= 23 or now().hour < 7 }}
    7.       - choose:
    8.           # 深夜而且不是緊急 → 只記錄,不吵
    9.           - conditions:
    10.               - condition: template
    11.                 value_template: "{{ 是深夜 and 等級 != '緊急' }}"
    12.             sequence:
    13.               - action: persistent_notification.create
    14.                 data:
    15.                   title: "{{ 標題 }}"
    16.                   message: "{{ 訊息 }}(深夜暫存)"
    17.           # 其他照原本的邏輯
    18.         default:
    19.           - ...
    複製代碼

    或者用 input_boolean 做「勿擾模式」
    在儀表板上一鍵開關。

    其他通道

    Telegram(免費、好用、支援圖片和按鈕)
    1. telegram_bot:
    2.   - platform: polling
    3.     api_key: !secret telegram_key
    4.     allowed_chat_ids:
    5.       - !secret telegram_chat_id
    6. notify:
    7.   - platform: telegram
    8.     name: telegram
    9.     chat_id: !secret telegram_chat_id
    複製代碼

    優點


    • 不用裝 HA App
    • 可以發給群組(全家都看得到)
    • 支援雙向互動


    電視上的通知
    1.       - action: notify.電視
    2.         data:
    3.           message: 洗衣機洗好了
    複製代碼

    很多電視支援(Android TV、部分 LG / Samsung)。

    語音廣播
    1.       - action: tts.speak
    2.         target:
    3.           entity_id: tts.piper
    4.         data:
    5.           media_player_entity_id: media_player.客廳音響
    6.           message: 門沒關
    複製代碼

    注意會蓋掉正在播放的音樂
    有些音箱播完不會自動恢復。

    一個設計良好的通知系統長什麼樣


    • 分級明確,每一級有不同的打擾程度
    • 同一類通知用 tag 取代而不是累積
    • 深夜自動降級
    • 緊急的可以突破勿擾
    • 重要的附上可操作的按鈕
    • 資訊類的只放儀表板,不推播
    • 所有通知走同一個腳本


    檢驗標準

    你看到通知的時候,會不會不看內容就滑掉?

    會的話,代表通知太多了 —— 砍掉一半。

    ---

    下一篇:儀表板設計 ——
    怎麼做一個家人真的會用的介面。
    您需要登入後纔可以回帖 登入 | 立即註冊

    本版積分規則

    Archiver|手機版|惟家的智能論壇

    GMT+8, 2026-9-24 13:15 , Processed in 0.087762 second(s), 24 queries .

    快速回覆 返回頂部 返回列表