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

标题: 【安卓tasker】全网话费查询,一招搞定! [打印本页]

作者: louis_lee    时间: 2022-12-25 13:41
标题: 【安卓tasker】全网话费查询,一招搞定!
本帖最后由 louis_lee 于 2022-12-25 18:32 编辑

最近看到有朋友在研究手机话费查询,考虑的方向主要是web、app端抓包等等。今天我们换个思路~

让我们回归到最原始的话费查询方法,发短信。移动、联通、电信等任何一家运营商的手机号,都可以通过发短信的方式查询本机(移动支持查询副卡情况,多台手机可以分别设置实现全家接入)话费余额、流量等信息。

从这个思路出发,实现也很简单,而且完全不用担心登录过期,维护成本低~省心!

  1. step1: 每天定时向10010/10086发送查询话费短信
  2. step2: 收到短信后自动转发到Home Assistant
  3. step3: 利用templating把话费信息从短信中摘出来做成sensor
复制代码

最开始我试了试IOS的shortcuts,结果问题卡在收到短信转发这步。苹果出于安全考虑,短信触发的自动化每次都需要手动确认,那只能先放一放,回来研究啦。

这时安卓开放性的优势得以体现,没那么多P事。使用安卓tasker可以完美实现上述思路。

安卓Tasker实现全网话费接入HA


Tasker安装


安卓手机打开浏览器从以下链接下载即可,按照app提示做好初步配置。


[hide=d60]https://taskerm.com/tasker-download

[/hide]


Tasker配置


任务配置


我们需要先配置两个任务(类似于home assistant的脚本script):发短信、短信转发到HA


首先打开tasker,选择“任务”选项卡,点击右下角加号-》创建,然后取个名字,比如“发送话费查询短信”等等并确认。再按右下角加号,点击“电话”=》“发送短信”

[attach]44370[/attach]


在这个界面中把发送短信的内容,收件人(数字)填写下。我是移动的,数字一栏填写“10086”,内容填写“查话费”(其他运营商的手机号,根据情况填写)。然后按两下左上角后退键回到tasker首页,并按右上角“√”确认。


[attach]44371[/attach]


接下来再配置转发到HA这个任务。对于10086/10010发来的短信,我们也不能全部转发,需要有话费余额的才转发,所以我们需要先配置个转发条件。


同样按照上边的方法创建任务,取名并点击“+”创建操作,筛选器选择“if”。在if操作中,条件左侧输入"%SMSRB"(短信内容),中间匹配方式选择“匹配正则式”,右侧填入"余额为.*元"(这是针对移动的,其他的请结合短信情况,自行修改)。点击返回并选择“if,end if”。


[attach]44372[/attach]


然后我们需要把短信转发到HA,这里直接考虑webhook。点击+号创建操作,选择“网络”-》“http request”。方法选择“Post”,url按照以下内容填写,主体填写"message=%SMSRB"。返回到上一个界面,把http request 拖到if里边。


http(s)://HA外网域名/api/webhook/webhook_id
## webhook_id改成一个复杂的字符串,我使用的UUID,随便百度个UUID在线生成,生成一个复制过来即可

[attach]44374[/attach]

[attach]44376[/attach]


这样就搞定了,别忘了返回tasker首页后,按“√”保存


配置tasker自动化


tasker自动化配置是在“配置文件”选项卡(很迷惑,但就是这个名称)。


先创建个定时发短信自动化,点击右下角加号选择时间。选一个你想开始的时间,比如说下午两点,那么时间就需要填下午2:00至2:01(1分钟时间间隔)。按返回键,并在弹出的菜单选择“发短信”那个任务。双击斜体的时间标题,可以配置自动化名称(可选项)。

[attach]44378[/attach]

再创建个转发到HA的自动化,点击+号,选择事件-》电话-》收到短信,类型选择短信,发件人选择10086(10010)。同样按返回键,在弹出的菜单选择“转发到HA”这个任务。

[attach]44379[/attach]

最后别忘了点击“√”保存(注意: 任何修改,包括调整定时时间都需要保存)至此,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('余额为(.*)元'))[zxsq-anti-bbcode-0]  }}" #如果你是其他的运营商,需要修改下正则表达式
        state_class: measurement
        unit_of_measurement: "RMB"

当然,别忘了重启!好啦这就搞定了,下次触发自动化发短信后,这个sensor.cmcc_balance就会自动更新啦。效果图如下(调试过程中余额有变化)


[attach]44380[/attach]


后记:如果你不想看到发短信的提醒,可以根据不同的手机类型,选择直接隐藏10010/10086的短信提醒(反正大多数内容没啥用)。如果你想把流量、套餐类型等等内容,接入HA,也可以按照上述步骤,发送不同的短信内容再转发到HA。

















作者: bainiu    时间: 2022-12-25 14:25
给楼主一个赞,这种方式直接稳定。按楼主的这种查询方式,应该只能查询本机的话费吧。

一直在想如何查询全家人手机话费余额,家里老人手机总是忘记缴费导致停机。中国移动APP中可以在我的家庭中鉴权后可添加老人的手机号码,可以查询和缴费。试过在微信公众号中抓包,但是有时间限制,过期就查不到了,要有一个通用的API查询话费就好了。
作者: louis_lee    时间: 2022-12-25 14:32
本帖最后由 louis_lee 于 2022-12-25 14:44 编辑
bainiu 发表于 2022-12-25 14:25
给楼主一个赞,这种方式直接稳定。按楼主的这种查询方式,应该只能查询本机的话费吧。

一直在想如何查询全 ...

我觉得不大可能有通用的API,毕竟这涉及隐私问题。之前联通被人翻出一个不需要鉴权的API接口,结果几天后秒没。

使用这个方法,需要查询哪个手机的余额,只要在那个手机上配置一下tasker即可,5分钟的事,也不麻烦~
如果家里话费是使用主卡、副卡这种,应该可以支持一部手机查询多个的功能。

作者: iHass    时间: 2022-12-25 15:21
不错支持
作者: 囧    时间: 2022-12-25 17:18
这个思路非常不错,大赞!
作者: louis_lee    时间: 2022-12-25 17:20
囧 发表于 2022-12-25 17:18
这个思路非常不错,大赞!

感谢囧大
作者: jjcs    时间: 2022-12-25 17:59
高手是高手,不过这个软件是不是要在app后台运行
作者: xuyang    时间: 2022-12-25 18:04
只能用本机查询本机卡的话费,这个功能,没有什么用处。如果能用一个闲置手机查询全家人都话费余额,才有用!
作者: louis_lee    时间: 2022-12-25 18:15
本帖最后由 louis_lee 于 2022-12-25 18:34 编辑
xuyang 发表于 2022-12-25 18:04
只能用本机查询本机卡的话费,这个功能,没有什么用处。如果能用一个闲置手机查询全家人都话费余额,才有用 ...

你说的闲置手机查询,安卓的话用adb + appium或其他自动化测试框架应该可以实现。不过可能需要楼上说的,app里绑定成一个家庭。
另外如果一个家庭的话,办理多个副卡的,也可以查询副卡的余额,这种支持短信查询。或者每个手机都设置一遍
作者: louis_lee    时间: 2022-12-25 18:18
jjcs 发表于 2022-12-25 17:59
高手是高手,不过这个软件是不是要在app后台运行

是的,需要改一下电池方案,后台运行。
作者: jjcs    时间: 2022-12-25 20:12
配置外网域名,手机除非你在外面,手机在内网连接,没办法用外网域名访问
作者: louis_lee    时间: 2022-12-25 20:26
jjcs 发表于 2022-12-25 20:12
配置外网域名,手机除非你在外面,手机在内网连接,没办法用外网域名访问 ...

为啥啊?有什么障碍嘛
作者: jjcs    时间: 2022-12-25 21:21
louis_lee 发表于 2022-12-25 20:26
为啥啊?有什么障碍嘛

额你连接家里wifi,能用外网域名访问吗,除非你配置nat回流
作者: louis_lee    时间: 2022-12-25 21:53
本帖最后由 louis_lee 于 2022-12-25 22:00 编辑
jjcs 发表于 2022-12-25 21:21
额你连接家里wifi,能用外网域名访问吗,除非你配置nat回流

我明白你啥意思了。我这边不会有这个问题,因为我是通过frp做的远程访问,DNS解析到云服务器。外网访问和内网访问没有任何区别。

你说的这个场景,就是DNS直接解析到家里的网关。这种情况我理解可以通过配置不同的DNS解析策略(外网解析至家庭公网IP、内网DNS服务器中hosts文件配置该域名解析到内网IP)或你说的NAT回流解决。

如果仅对于本贴,也可以配置两个自动化,一个是外网域名,一个是内网IP,这两个必然有且只有一个通。
作者: airwb    时间: 2022-12-26 09:23
学习了,感谢楼主教程
作者: paopaoqaini    时间: 2022-12-26 09:48
感谢分享 支持一下
作者: jjcs    时间: 2022-12-26 14:06
虚心请教一下,这是短信原话《【话费查询】话费查询尊敬的客户,您好!您2022年12月的话费总额为:23.50元。》  话说对正则不是很懂,ha实体多一个:23.50,冒号,应该怎么搞
作者: louis_lee    时间: 2022-12-26 18:13
本帖最后由 louis_lee 于 2022-12-26 18:37 编辑
jjcs 发表于 2022-12-26 14:06
虚心请教一下,这是短信原话《【话费查询】话费查询尊敬的客户,您好!您2022年12月的话费总额为:23.50元。 ...
  1. 总额为:(.*)元
复制代码


这样写哈,你写以在开发者工具-》模板中调试下看看。

需要注意的是,中文冒号是全角的,与英文冒号存在差别,这个根据短信实际情况。
作者: jjcs    时间: 2022-12-26 19:04
louis_lee 发表于 2022-12-26 18:13
这样写哈,你写以在开发者工具-》模板中调试下看看。

需要注意的是,中文冒号是全角的,与英文冒号存在 ...

可以了,感谢大佬
作者: 33201    时间: 2022-12-27 09:57
苹果的快捷指令太恶心了,限制太多,短信触发自动化必须手动确认这条就无解
作者: gjcwlyh    时间: 2022-12-31 13:42
是不是还要服务器啊
作者: bingood    时间: 2023-1-1 02:51
感谢分享
作者: comeon_000    时间: 2023-1-2 16:21
短信不要钱吗
作者: Courae_feng    时间: 2023-1-2 23:10
感谢大神
作者: shakaowen    时间: 2023-1-9 13:11
这个思路非常不错,大赞!

作者: shakaowen    时间: 2023-1-9 14:02
请问,tasker转发出现这个错误怎么解决。uuid换了好几个
14.00.48/E add wait type EasyAction1 time 2147483647
14.00.48/E add wait type EasyAction1 done
14.00.48/E add wait task
14.00.48/E 错误: 1
14.00.48/E <h1>Not Found</h1>The requested URL /api/webhook/2e660250-a8d1-37d2-e2ff-83682f96d884 was not found on this server.
作者: louis_lee    时间: 2023-1-9 14:20
shakaowen 发表于 2023-1-9 14:02
请问,tasker转发出现这个错误怎么解决。uuid换了好几个
14.00.48/E add wait type EasyAction1 time 21474 ...

你打开个浏览器,输入HA的域名看看能不能访问,再输入HA域名/api/webhook/....看看还404嘛
作者: shakaowen    时间: 2023-1-9 15:54
louis_lee 发表于 2023-1-9 14:20
你打开个浏览器,输入HA的域名看看能不能访问,再输入HA域名/api/webhook/....看看还404嘛 ...

是不是因为的的HA域名是   路由器绑定的域名:8123   这个原因导致失败呀
作者: Emin    时间: 2023-1-11 10:27
学习大佬骚操作
作者: devang    时间: 2023-1-15 18:03
这个不错
作者: liyuanhai    时间: 2023-2-3 09:35
安卓Tasker实现全网话费接入HA
Tasker安装
作者: yangds    时间: 2023-2-3 16:55
多谢大佬分享
作者: wjx    时间: 2023-2-3 21:28
学习学习
作者: ihuder1    时间: 2023-2-6 18:01
支持下,正缺少这个呢
作者: jjcs    时间: 2023-6-15 11:06
更新6.1存在这个问题请问如何解决更新 webhook 触发器:
此项在版本 2023.7.0 中无法工作。请在升级之前解决。
需要选择是否可以从 Internet 访问webhook 自动化触发器。 编辑自动化 " Trigger Update Coordinator ", ( ) 并单击 Webhook ID 旁边的齿轮图标以选择“仅可从本地网络访问”的值

警告 - 2023/6/15
作者: louis_lee    时间: 2023-6-16 14:40
jjcs 发表于 2023-6-15 11:06
更新6.1存在这个问题请问如何解决更新 webhook 触发器:
此项在版本 2023.7.0 中无法工作。请在升级之前解 ...

看来HA升级后,要适配的太多了。
作者: hassfan    时间: 2023-6-16 15:16
学习学习
作者: jjcs    时间: 2023-6-16 15:40
louis_lee 发表于 2023-6-16 14:40
看来HA升级后,要适配的太多了。

我感觉还是用ha的api来,api的变化好像不多
作者: jjcs    时间: 2023-6-16 16:46
本帖最后由 jjcs 于 2023-6-16 16:49 编辑
louis_lee 发表于 2023-6-16 14:40
看来HA升级后,要适配的太多了。

[attach]48792[/attach][attach]48793[/attach]
用haapi,post请求传话费应该更好,ha更新,api基本上不会变什么,yaml也不需要配置啥,现在请求测试没问题,问题是请求包含请求的值,在tasker里面如何实现,我现在单独请求加上请求头,访问接口没问题。请求加上请求主体{"state": "259", "attributes": {"unit_of_measurement": "元"}}就不行了,主要还是对tasker不熟

作者: louis_lee    时间: 2023-6-16 16:55
jjcs 发表于 2023-6-16 16:46
用haapi,post请求传话费应该更好,ha更新,api基本上不会变什么,yaml也不需要配置啥,现在请求测试没问 ...

本质都是调用hass API,区别是hass webhook不需要鉴权而已,官方也提供了适配方法。
我只是感慨下,升级需谨慎
作者: kaka0992    时间: 2023-8-26 19:34
不错不错,用来做交警提醒
作者: tamen    时间: 2023-8-27 22:04
哈哈哈哈哈厉害
作者: kaka0992    时间: 2023-8-28 19:25
刚开始这两个地方还是绿色的,不知道怎么回事就变红,没法用了,这是咋回事[attach]51019[/attach]


作者: Hqliang95    时间: 2024-2-27 20:37
感谢大佬分享
作者: yikliu    时间: 2024-3-5 10:43
不知道为啥按照这个方法,但是ha上没办法显示。。。。这个方法不行了吗
作者: liwenyu    时间: 2024-3-19 03:07
2024-03-18 19:06:26.787 ERROR (SyncWorker_0) [homeassistant.util.yaml.loader] while scanning for the next token
found character '\t' that cannot start any token
in "/config/configuration.yaml", line 66, column 2
2024-03-18 19:06:26.789 ERROR (MainThread) [homeassistant.bootstrap] Failed to parse configuration.yaml: while scanning for the next token
found character '\t' that cannot start any token
in "/config/configuration.yaml", line 66, column 2. Activating safe mode




这是怎么回事呢

作者: lfyes    时间: 2024-4-6 12:25
kaka0992 发表于 2023-8-28 19:25
刚开始这两个地方还是绿色的,不知道怎么回事就变红,没法用了,这是咋回事

...

后来解决了没?
作者: fay000fay    时间: 2024-8-1 09:20
以前的安卓不清楚,至少现在的安卓,你设为自动发短信后,会弹出发送确认按钮,你不手动确认,它会倒计时10秒后自动取消该操作。所以无法实现自动后台发短信。这个方法就没意义了。
作者: fay000fay    时间: 2024-8-1 09:23
33201 发表于 2022-12-27 09:57
苹果的快捷指令太恶心了,限制太多,短信触发自动化必须手动确认这条就无解 ...

现在iOS已经支持了。反而安卓现在通过tasker自动发短信,会要求手动确认,否则会取消操作。无解。pixel原生android不清楚是否可以。




欢迎光临 『瀚思彼岸』» 智能家居技术论坛 (https://bbs.hassbian.com/) Powered by Discuz! X3.5