本帖最后由 louis_lee 于 2022-12-25 18:32 编辑
最近看到有朋友在研究手机话费查询,考虑的方向主要是web、app端抓包等等。今天我们换个思路~
让我们回归到最原始的话费查询方法,发短信。移动、联通、电信等任何一家运营商的手机号,都可以通过发短信的方式查询本机(移动支持查询副卡情况,多台手机可以分别设置实现全家接入)话费余额、流量等信息。
从这个思路出发,实现也很简单,而且完全不用担心登录过期,维护成本低~省心!
step1: 每天定时向10010/10086发送查询话费短信
step2: 收到短信后自动转发到Home Assistant
step3: 利用templating把话费信息从短信中摘出来做成sensor
最开始我试了试IOS的shortcuts,结果问题卡在收到短信转发这步。苹果出于安全考虑,短信触发的自动化每次都需要手动确认,那只能先放一放,回来研究啦。
这时安卓开放性的优势得以体现,没那么多P事。使用安卓tasker可以完美实现上述思路。
安卓Tasker实现全网话费接入HA
Tasker安装
安卓手机打开浏览器从以下链接下载即可,按照app提示做好初步配置。
https://taskerm.com/tasker-download
Tasker配置
任务配置
我们需要先配置两个任务(类似于home assistant的脚本script):发短信、短信转发到HA
首先打开tasker,选择“任务”选项卡,点击右下角加号-》创建,然后取个名字,比如“发送话费查询短信”等等并确认。再按右下角加号,点击“电话”=》“发送短信”
在这个界面中把发送短信的内容,收件人(数字)填写下。我是移动的,数字一栏填写“10086”,内容填写“查话费”(其他运营商的手机号,根据情况填写)。然后按两下左上角后退键回到tasker首页,并按右上角“√”确认。
接下来再配置转发到HA这个任务。对于10086/10010发来的短信,我们也不能全部转发,需要有话费余额的才转发,所以我们需要先配置个转发条件。
同样按照上边的方法创建任务,取名并点击“+”创建操作,筛选器选择“if”。在if操作中,条件左侧输入"%SMSRB"(短信内容),中间匹配方式选择“匹配正则式”,右侧填入"余额为.*元"(这是针对移动的,其他的请结合短信情况,自行修改)。点击返回并选择“if,end if”。
然后我们需要把短信转发到HA,这里直接考虑webhook。点击+号创建操作,选择“网络”-》“http request”。方法选择“Post”,url按照以下内容填写,主体填写"message=%SMSRB"。返回到上一个界面,把http request 拖到if里边。
http(s)://HA外网域名/api/webhook/webhook_id
## webhook_id改成一个复杂的字符串,我使用的UUID,随便百度个UUID在线生成,生成一个复制过来即可
这样就搞定了,别忘了返回tasker首页后,按“√”保存
配置tasker自动化
tasker自动化配置是在“配置文件”选项卡(很迷惑,但就是这个名称)。
先创建个定时发短信自动化,点击右下角加号选择时间。选一个你想开始的时间,比如说下午两点,那么时间就需要填下午2:00至2:01(1分钟时间间隔)。按返回键,并在弹出的菜单选择“发短信”那个任务。双击斜体的时间标题,可以配置自动化名称(可选项)。
再创建个转发到HA的自动化,点击+号,选择事件-》电话-》收到短信,类型选择短信,发件人选择10086(10010)。同样按返回键,在弹出的菜单选择“转发到HA”这个任务。
最后别忘了点击“√”保存(注意: 任何修改,包括调整定时时间都需要保存)至此,tasker算是配置完了。
Home Assistant配置
home assistant这里我们需要配置个sensor,如果你就是移动的话,直接将如下内容添加到configuration.yaml或其他配置文件即可。
template:
- trigger:
- platform: webhook
webhook_id: 就是上边写的那个webhook_id
sensor:
- name: cmcc_balance
unique_id: cmcc_balance
state: "{{ (trigger.data.message | regex_findall('余额为(.*)元'))[0] }}" #如果你是其他的运营商,需要修改下正则表达式
state_class: measurement
unit_of_measurement: "RMB"
当然,别忘了重启!好啦这就搞定了,下次触发自动化发短信后,这个sensor.cmcc_balance就会自动更新啦。效果图如下(调试过程中余额有变化)
后记:如果你不想看到发短信的提醒,可以根据不同的手机类型,选择直接隐藏10010/10086的短信提醒(反正大多数内容没啥用)。如果你想把流量、套餐类型等等内容,接入HA,也可以按照上述步骤,发送不同的短信内容再转发到HA。
|