文章目录[隐藏]
我们小区使用的是绿城提供的驿站服务,虽然有一个公众号可以推送和查询快递信息,但没有菜鸟驿站那么方便特别是亲情号码这块,我家所有人买东西都只留同一个人的号码,这样取件时不会落下每个人的快递,但每天去拿快递不是同一个人,所以才有把快递信息放到Home Assistant中的想法,通过上墙的ha面板也能在出门倒垃圾时,看看是否顺便去驿站一趟,如果你也跟我一样,那准备一部安卓手机来完成后面操作。
提取数据:
目前绿城驿站的快递信息对个人只能在公众号的网页里查询所以要得到快递信息首先要了解打开网页时客户端与服务器的通信内容,然后再用其他工具模拟发送获取我们想要的数据。
首先需要使用安卓手机,打开usb调试,连接pc(中途如果手机有弹出调试的话点击确认),在微信中打开网址http://debugxweb.qq.com/?inspector=true弹出“执行成功”即可关闭,再从公众号中打开“快递查询”页面 放着不要关闭,pc上使用Edge打开edge://inspect/#devices或用chrome打开chrome://inspect/#devices(本文使用Edge),等待出现“绿城驿站”后点击下面的“inspect”
等待出现“绿城驿站”后点击下面的“inspect”
弹出一个新的调试页面窗口如下:
Edge调试界面
在此窗口上切换为“网络”选项卡(找不到的话点后面+号),点击左上角刷新网页,我们就能看到在客户端和服务器的通信过程,从“packs”(有两个packs只有一个是我们要的)项的响应中能发现最终我们需要的数据在这里
最终需要的数据
虽然在这里提取请求头“Authorization”的值(Bearer xxxx)去“post”到url“https://ly-fc.lcshyz.com/api/wx-public/packs”就能得到数据,但经过测试2天后这组JWT数据也就是“Authorization”里的内容就会过期(解析JWT数据能看到里面有时间戳),所以我们要往上再寻找登陆的步骤
客户提交的JWT数据
但仅仅刷新网页无法重新登陆得到数据,这里要先从“应用程序”选项卡清除会话存储的内容,
清除已保存的值
再返回”网络“选项卡后,左上角重新刷新网页,就能在“login?openid=XXXX”项目里(有2个都看下)找到客户端登录服务器返回JWT数据的过程
登录时服务器返回的JWT
模拟登录过程我们需要以下这几项数据:请求url,post内容(在负载选项卡里内容为”openid=xxx“)和请求协议头里的”X-Appkey“、”X-Datadigest“
记下这3个数据
下面就是如何模拟请求获得数据接入HA了,这里用了2种方式,第一种是使用Node-RED,在很多HA文章里都有使用Node-RED教程所以不过多介绍了(其实是我不会),默认大家已经会使用此软件,没接触过和不想使用Node-RED的同学可以跳到第二种网页卡片的方法
方式一:Node-RED
最终流程
这里先聊聊Nodered,这是我画的一个非常简单的流程图,说实话第一次使用这类软件还是挺懵逼的,如果不是需要模拟HTTP请求和HA对接 第一个想到它,或者我先想到后面的网页卡片,我压根就不会装这玩意,日常的控制在HA和米家里就足够了(满足需求就行别过多折腾)。Node-RED我觉得会用的同学给了思路就根本不用我说,没用过的我非常不推荐使用,毕竟是低代码平台所以在里面使用必然会涉及一些js代码,虽然在Ai时代会不会写不太重要但还是要能看的懂大概,比如我就是使用了某国产大模型来帮助生成和修改函数,和如何使用Nodered。
在HA集成的辅助元素里添加3个元素,分别为按钮、数值、文本类型,作为Nodered调用的实体,按钮调用Node-RED的流进行手动刷新,数值接收Node-RED返回的快递数量,文本接收具体的快递信息
辅助元素
我后面附上这个流程的json文件可以直接导入,修改下图图上标注的数字1内的2个节点“openid””X-Appkey“和”X-Datadigest“改为之前保存的,数字2里的对应HA实体(需要先把HA接入Node-RED),然后右上角部署
部署后能在调试窗口看到2个返回的数据里“code“值为1就可以了
如图2个code值为1
打开HA的辅助元素应该就能看到变化,再按想要的方式编辑UI界面添加实体卡片,比如我先添加了单独一个子界面,来放置一个按钮卡片(调用快递刷新按钮)和Markdown卡片(显示具体快递信息)
子页面
这里的Markdown里的内容绿色部分要改为自己添加的快递信息实体
用markdown卡片显示文本实体,注意修改实体名称
然后再自己的HA主界面添加一个磁贴卡片用于显示快递数量,更改点击动作进入刚才添加的子界面
用网格卡片包裹看起来更整齐
也可以直接把Markdown放在主界面,HA的好处就是可以随意搭配
方式二:网页卡片
网页卡片效果
网页卡片是最简单的,可以在主界面显示快递信息,就是不能和HA互动,比如来快递推送到手机等等,仅仅是一个嵌入到HA的网页,
还是由Ai写的html代码(很厉害,第一遍生成时就完全满足要求且无BUG),期间按我要求又修改了几遍,后面也会附上我生成的html文件,修改一下变量就可以直接使用。
应该所有大模型都可以
用文本打开html文件后修改”定义变量“下,改为之前获得的3个变量,按自己HA界面主题来修改下背景和文本颜色,还有数据刷新时间(毫秒数,默认5分钟)保存好。
需要修改参数
按照HA的安装方式不同,把文件放在HA的配置文件”configuration.yaml“(使用HA的应该都认识这个文件)同级目录的”www“文件夹(没有就新建一个)里面,这里我用的WinSCP连接后进入对应的容器映射目录(这里只是演示,你的目录不一定一样,要按照你HA的安装方式变动),如果是群晖等各种带界面的NAS用户应该在自带的文件管理器里就可以操作。
最后是在HA的UI界面里添加网页卡片标题留空,把URL改为你上传的html文件名,如”/local/kuaidi.html”,修改长宽比也可以更好的贴合你的主题。如果是新建“www“文件夹的可能需要重启一遍HA
配置好的网页卡片也可以点击“快递信息”那几个字来实现刷新,或者以设定好的自动刷新变量时间来自动刷新,有多个快递的时候也会依照取件码进行排序。
最后:
至此2种HA接入绿城驿站的方式就介绍完了,但如果你是一个和我一样刚入门的新手,肯定也会遇到各种问题和我没讲明白的操作,所以我尝试用Ai来补充回答,创建了一个针对Home Assistant和Nodered使用的的AI助手,把本篇所有内容也一同喂给它,希望能帮你解答遇到的各种问题
比如:
因为资源关系有时候Ai会偷懒,你可以向他提要求,或者写代码时只生成了一部分就结束的话可以发送”继续“两字让它接着写
文中涉及文件链接: https://pan.baidu.com/s/14FV9X-hMjTNChaVeYqeGVw?pwd=wqpe 提取码: wqpe
AI链接:
https://chatglm.cn/agentShare?id=66137de023ef22f2e62d9eae&is_share=1&share_from=pc