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

 找回密码
 立即注册
查看: 8405|回复: 20

[修仙教程] 官方SMS notifications via GSM-modem组件的调试和配置踩坑记录

[复制链接]

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11445
金钱
8514
HASS币
460

教程狂人突出贡献

发表于 2021-5-22 10:44:40 | 显示全部楼层 |阅读模式
本帖最后由 XCray 于 2022-3-24 21:48 编辑

我使用HA的最看重的功能,就是可以在严重告警事件发生时可以通过电话卡发短信告警的能力,之前在官方集成这个功能之前,自己琢磨过好几种方案,也发帖子介绍过。

随着官方SMS notifications via GSM-modem组件的成熟,一直想找个机会把它用上但没有动手,只到最近发现在群晖上使用hassio方式越来越别扭,干脆再次把部署方案整体迁移回vmm的hassOS,顺便使用这个组件、简化掉单独的短信网关。

这儿把详细过程记录如下,供有同样需求的同学参考。

0. 利用快照功能,快速迁移到虚拟机的HassOS方式。主要是可以完美的恢复推送ID和绝大部分配置,个别配置项手工修改即可,这一步无需展开。

1. 利用UI首次添加该集成时需要下载安装依赖,然后必须重启OS才可生效,否则无法连接设备/串口(这一点官方文档应该补充说明);

2. notify服务仍需在configuration.yaml里配置,这一点官方文档说的也不够清晰;

3. 测试短信接收功能,一次性成功,但原有自动化的action部分需要修改,以匹配这个组件的短信接收事件的数据格式;
  - 收到短信后,该组件触发sms.incoming_sms事件,数据格式如下:
{
    "event_type": "sms.incoming_sms",
    "data": {
        "phone": "+86186xxxxxxx",
        "date": "2021-05-22 08:17:40",
        "text": "中文字幕在线播放"
    },
    "origin": "LOCAL",
    "time_fired": "2021-05-22T00:17:45.457912+00:00",
    "context": {
        "id": "62a6965cf21bf32bbc512a5b2801110f",
        "parent_id": null,
        "user_id": null
    }
}
对应的,自动化action修改如下(注意缩进,论坛代码嵌入功能一直不咋好用):
data_template:
  title: '收到短信 {{ now().strftime(''%Y-%m-%d %H:%M:%S'') }}'
  message: '{{ trigger.event.data.text }} 来自 {{trigger.event.data.phone }}'
service: persistent_notification.create
data_template:
  title: '收到短信 {{ now().strftime(''%Y-%m-%d %H:%M:%S'') }}'
  message: '{{ trigger.event.data.text }} 来自 {{ trigger.event.data.phone }}'
service: notify.notify
两个动作各有优点,我一直两个都用。

这儿当然还可以添加其他动作,比如把短信转发出来,或者根据接收到的短信具体内容执行其他动作(任何动作都可以,这样就可以实现利用短信控制家里的各种东西)。

4. 测试发送失败,可能原因:怀疑平台名称并不是sms。在UI删除掉该集成,改用configuration.yaml配置,重启,测试成功!这里还是要diss一下官方文档和组件代码,没必要非得实现UI配置,尤其是半拉子实现,还不如简简单单的配置文件呢!

虽然成功了,但仍有两个问题需要解决:

4.1 默认不支持中文,需要修改代码:
   ssh登录到hassOS,输入root,然后login;
   docker ps #找到HA core的容器ID
   docker exec -i -t 容器ID /bin/bash #进入容器
   转到路径/usr/src/homeassistant/homeassistant/components/sms
   vi notify.py第49行,"Unicode": False,修改为True
   保存退出,重启HA,测试成功

每次版本升级都需要手动修改,期待组件作者可以修改代码,实现自动判断所选择的编码方案。
//注:2022.3.7确认作者已经修改支持Unicode了

4.2 可选的消息标题无效,不用即可

5. 修改短信发送自动化的action,比如:
  - service: notify.sms_xxxx
    data:
      message: 大门被打开!
短信告警的好处和必要性这儿就不重复了,明白的自然明白。

~~~~~~~~~~~~~~~~~~~~~
顺便记录一点,相对于原来的vmm debian (SMS GW) + hassio的部署方案,这次重新部署的vmm hassOS方案的CPU占用率并没有明显变化,这一点也算是意外之喜吧(之前就是因为这个方案的CPU占用明显偏高才弃而不用的)。
~~~~~~~20210828补充~~~~~~~~
实际上在2021.6.6以及之前的版本,ha container安装方式(也就是在docker上跑ha core)这个组件也是可以正常工作的,只不过从2021.7.0开始,直到最新的2021.8.8,这个组件因依赖被破坏,无法正常工作,尤其是接收短信。

~~~~~~~20220324补充~~~~~~~~
好像自2021.9.x版本开始,这个功能又恢复正常了,并且最新的2022.3.7测试,已默认支持发送中文短信。

文档也有所改进,该说的基本都说清楚了。
回复

使用道具 举报

54

主题

891

帖子

3824

积分

论坛元老

Rank: 8Rank: 8

积分
3824
金钱
2933
HASS币
0
发表于 2021-5-22 10:53:05 | 显示全部楼层
学习一下
回复

使用道具 举报

32

主题

986

帖子

4233

积分

论坛元老

Rank: 8Rank: 8

积分
4233
金钱
3207
HASS币
110

教程狂人论坛风云人物

发表于 2021-5-22 14:45:23 | 显示全部楼层
短信告警要钱不?我现在用着微信推送提醒也不错
回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11445
金钱
8514
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2021-5-22 15:39:30 | 显示全部楼层
27hh 发表于 2021-5-22 14:45
短信告警要钱不?我现在用着微信推送提醒也不错

微信推送最大的问题是外网断了的时候推不了啊~~~

现在入户光纤在门外大多是裸露的,运营商的分光盒也大都不会上锁,但凡聪明一点的小偷估计都会想到开门前先断网断电吧?

我觉得短信告警的主要价值就是在这种极端情况下仍然可以实现及时告警的目的。

微信推送的另外一个问题就是提示不够强烈(现在消息太多,嘀一声往往不会引起足够注意),短信则可以针对特定号码设置单独的铃音。

另外,微信推送的可替代方案有好几个,也都大同小异。

短信确实要钱,不过现在的手机号卡和短信费用已经很低了,还有承诺在网一年每个月送500条短信之类的活动。
回复

使用道具 举报

32

主题

1993

帖子

5067

积分

论坛元老

Rank: 8Rank: 8

积分
5067
金钱
3074
HASS币
50
QQ
发表于 2021-5-22 15:43:50 | 显示全部楼层
膜拜大佬。
有没有VMM刷Hassos的教程哦;感觉N1下用hassio不怎么靠谱,容易死机。
我不生产技术,我只是技术的搬运工。
回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11445
金钱
8514
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2021-5-22 17:43:27 来自手机 | 显示全部楼层
zxyny1989 发表于 2021-5-22 15:43
膜拜大佬。
有没有VMM刷Hassos的教程哦;感觉N1下用hassio不怎么靠谱,容易死机。 ...

我说的vmm是群晖上的虚拟机,装hassos很简单,注意是装、算不上刷……下载ova、导入、选uefi即可。
N1没用过,如果你说的是N1直接刷hassos的话我还真没啥主意
回复

使用道具 举报

35

主题

978

帖子

4513

积分

论坛元老

Rank: 8Rank: 8

积分
4513
金钱
3535
HASS币
20
发表于 2021-5-22 17:47:21 来自手机 | 显示全部楼层
先学习一下备用
回复

使用道具 举报

32

主题

1993

帖子

5067

积分

论坛元老

Rank: 8Rank: 8

积分
5067
金钱
3074
HASS币
50
QQ
发表于 2021-5-22 20:06:01 | 显示全部楼层
本帖最后由 zxyny1989 于 2021-5-22 20:07 编辑
XCray 发表于 2021-5-22 17:43
我说的vmm是群晖上的虚拟机,装hassos很简单,注意是装、算不上刷……下载ova、导入、选uefi即可。
N1没 ...

我已经搞好 了。正在折腾。N1是用的hassio一键脚本。

对了,大佬,再请教个问题。我群晖设置了DDNS,用的花生壳的域名,可以外网访问。现在VMM下的hassOS怎么外网访问呢?
我不生产技术,我只是技术的搬运工。
回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11445
金钱
8514
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2021-5-22 20:13:33 | 显示全部楼层
zxyny1989 发表于 2021-5-22 20:06
我已经搞好 了。正在折腾。N1是用的hassio一键脚本。

对了,大佬,再请教个问题。我群晖设置了DDNS,用的 ...

用群晖自带的反向代理,别忘了防火墙给端口放行
回复

使用道具 举报

32

主题

1993

帖子

5067

积分

论坛元老

Rank: 8Rank: 8

积分
5067
金钱
3074
HASS币
50
QQ
发表于 2021-5-22 20:15:11 | 显示全部楼层
XCray 发表于 2021-5-22 20:13
用群晖自带的反向代理,别忘了防火墙给端口放行

好的,我研究一下。
谢谢大佬。
我不生产技术,我只是技术的搬运工。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-26 21:37 , Processed in 3.394948 second(s), 33 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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