找回密码
 立即注册

微信扫码登录

搜索
查看: 94|回复: 5

[基础教程] 使用ntfy接收HA通知分享

[复制链接]

12

主题

301

回帖

3349

积分

论坛元老

积分
3349
金钱
3031
HASS币
20
发表于 5 小时前 | 显示全部楼层 |阅读模式
本帖最后由 hungheo 于 2025-12-8 16:05 编辑

由于homeassistant app是play store下载安装的,严重依赖GMS,外网的时候有时及时有时不及时。
网上找了一圈,试了下ntfy通知,感觉好用,外网推送延时很低,Android IOS web端都能使用,且Android app很省电,同时还可以接收ddns-go、nodered等等的通知,分享一下配置过程

安装环境:
HA:docker
ntfy:docker


ntfy官方文档:https://docs.ntfy.sh/

一、ntfy服务端配置
1.1、安装ntfy
新建文件夹,/自定义挂载目录/ntfy/etc,将sever.yml文件复制到新建的etc文件夹(这里下载server.yml:GitHub
docker run -it \
-p 3001:80 \
--restart=always \
-v /自定义挂载目录/ntfy/etc:/etc/ntfy \
-v /自定义挂载目录:/var/cache/ntfy \
-e TZ=Asia/Shanghai \
--name=ntfy binwiederhier/ntfy \
Serve
2、密码和auth参数
进入容器:
docker exec -it ntfy /bin/sh

创建密码hash值:
ntfy user hash
生成auth参数:
echo -n "Basic `echo -n '用户名:密码' | base64`" | base64 | tr -d '='
# 用户名、密码替换成自己的
1.3、server.yml配置
打开以下几条注释,并修改:
游客,如果您要查看本帖隐藏内容请回复

重启ntfy容器,搞定!


1.4、https配置(nginx)
替换下中文名称的端口、ip、域名等:
 server {
    listen 外网端口 ssl http2;
    listen [::]:外网端口 ssl http2;
    server_name 域名;

    ssl_certificate /etc/nginx/certs/域名.pem;
    ssl_certificate_key /etc/nginx/certs/域名.key;
    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m; 
    ssl_session_tickets off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;


    location / {
        proxy_pass http://内网ip地址:端口/;
        proxy_http_version 1.1;

        proxy_buffering off;
        proxy_request_buffering off;
        proxy_redirect off;

        proxy_set_header Host $http_host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_connect_timeout 3m;
        proxy_send_timeout 3m;
        proxy_read_timeout 3m;

        client_max_body_size 0; 
    }
}


2、HA配置
2.1、configuration.yaml添加:
rest_command:
  notify_ntfy: # 动作名称
    url: "http://192.168.0.1:3001?auth=生成的auth参数"  # ntfy服务端地址+映射端口  (内网通信尽量用内网IP地址,避免遗漏)
    method: "POST"
    headers:
      markdown: yes # 内容支持markdown 
      Tags: "{{ tags }}"  # 支持tags及emoji表情 
    payload: '{"topic": "{{ topic }}", "title":"{{ title }}", "message":"{{ message }}", "priority":{{ priority | default(3) }}}' # 内容模板
    content_type: "application/json" #内容为json格式
重载配置,搞定!

2.2、HA里使用
开发者模式-->动作-->rest_command.notify_ntfy:
action: rest_command.notify_ntfy
data: 
  topic: HA
  tags: tada
  title: 测试
  message: "这是测试,现在太阳的状态是:{{states('sun.sun')}}"
  priority: 3
这里的topic是订阅的主题,可以自定义,客户端接收时填写相同主题

Android APP需要打开自启动,任务中心锁定应用,电池管理设置成无限制!!

效果:
微信图片_20251208152653_52_200.jpg     微信图片_20251208152719_53_200.jpg   
微信图片_20251208151835_51_200.jpg

3、Node-Red使用:
拉一个http请求节点,如图设置地址、账号、密码:
屏幕截图 2025-12-08 160423.png












回复

使用道具 举报

12

主题

301

回帖

3349

积分

论坛元老

积分
3349
金钱
3031
HASS币
20
 楼主| 发表于 5 小时前 | 显示全部楼层
分享一下我的话费账单通知:
alias: 每日话费推送
description: 每天8点推送联通185、电信189的话费账单
triggers:
  - trigger: time
    at: "08:00:00"
    weekday:
      - sun
      - sat
      - fri
      - thu
      - wed
      - tue
      - mon
actions:
  - action: rest_command.notify_ntfy
    data:
      topic: phonebills
      tags: iphone
      title: 话费详情
      message: >-
        ###  电信189 \n 
        💲**话费**: 
        *本月消费{{states('sensor.telecom4390_currentmonthcost')}},余额{{states('sensor.telecom4390_balance')}}*\n
        ⚡**流量**:
        *剩余{{states('sensor.telecom4390_remaininggb')}}GB,已使用{{states('sensor.telecom4390_usedgb')}}GB*\n
        📞**分钟**:
        *剩余{{states('sensor.telecom4390_remainingminutes')}}分钟,已使用{{states('sensor.telecom4390_usedminutes')}}分钟*\n\n
        ###  联通185 \n 
        💲**话费**:
        *本月消费{{states('sensor.unicom_bills_usedbalance')}},余额{{states('sensor.unicom_bills_canusebalance')}}*\n
        ⚡**流量**:
        *剩余{{states('sensor.unicom_bills_canusegb')}}GB,已使用{{states('sensor.unicom_bills_usedgb')}}GB*\n
        📞**分钟**:
        *剩余{{states('sensor.unicom_bills_canusemin')}}分钟,已使用{{states('sensor.unicom_bills_usedmin')}}分钟*\n
      priority: 3
mode: single
效果:
屏幕截图 2025-12-08 155920.png
回复

使用道具 举报

15

主题

288

回帖

1594

积分

金牌会员

积分
1594
金钱
1281
HASS币
40
发表于 5 小时前 | 显示全部楼层
我用 企业微信的应用 接收通知,配置完就把企业微信卸载了,直接微信收通知
回复

使用道具 举报

40

主题

274

回帖

2427

积分

论坛UI达人

积分
2427
金钱
2108
HASS币
60
发表于 3 小时前 | 显示全部楼层
可以直接走webhook,有一些免费的公共webhook平台可以用,比如pushplus、WxPusher这种,直接推到微信公众号,都不需要额外app挂后台
回复

使用道具 举报

12

主题

301

回帖

3349

积分

论坛元老

积分
3349
金钱
3031
HASS币
20
 楼主| 发表于 3 小时前 | 显示全部楼层
gasment 发表于 2025-12-8 17:28
可以直接走webhook,有一些免费的公共webhook平台可以用,比如pushplus、WxPusher这种,直接推到微信公众号 ...

我用过server酱,各有所爱
回复

使用道具 举报

7

主题

115

回帖

1187

积分

金牌会员

积分
1187
金钱
1065
HASS币
0
QQ
发表于 3 小时前 | 显示全部楼层
企业微信机器人也好用
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )

GMT+8, 2025-12-8 21:19 , Processed in 0.124429 second(s), 9 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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