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

 找回密码
 立即注册
楼主: 1ychee

[技术探讨] 是否能够制作 Panasonic Smart China的HA插件,有偿提供500+200红包

[复制链接]

10

主题

1386

帖子

4423

积分

论坛元老

Rank: 8Rank: 8

积分
4423
金钱
3037
HASS币
0
发表于 2024-7-7 17:43:28 | 显示全部楼层

所以,楼主这要求加个0估计都够呛。
回复

使用道具 举报

8

主题

271

帖子

1832

积分

金牌会员

Rank: 6Rank: 6

积分
1832
金钱
1561
HASS币
10
发表于 2024-7-7 23:13:33 | 显示全部楼层
隔壁的王叔叔 发表于 2024-7-7 17:43
所以,楼主这要求加个0估计都够呛。

还是遥控接入比较方便
回复

使用道具 举报

0

主题

92

帖子

733

积分

论坛积极会员

积分
733
金钱
641
HASS币
0
发表于 2024-7-8 00:28:43 | 显示全部楼层
本帖最后由 wcm12345 于 2024-7-8 00:38 编辑

我也是松下浴霸,给楼主指一条简单点的路。 用 shell command 加抓包可以接入。 不过是单向的。


没注意看帖子, 看来楼主也是已经用同样的办法接入了。 见笑了。
回复

使用道具 举报

0

主题

11

帖子

274

积分

中级会员

Rank: 3Rank: 3

积分
274
金钱
263
HASS币
0
发表于 2024-8-10 21:17:01 | 显示全部楼层
因为松下app难用的空调定时配置,导致我周末不在家空调还开了两天。
今天下午花时间抓包研究了一下,也参考了@omegaojian前辈和台湾版本https://github.com/osk2/panasonic_smart_app的工程实现

如果想工程化这个项目,当前还有几个问题:

1. 密码的加密算法可能是app本地完成的,之后和服务端进行校验,推测每次生成的密文是一致的,但是如果搞不清楚加密算法(安卓app解包逆向可能能拿到),还是得依赖一次抓包,不够优雅。(台湾版本没有这个逻辑,直接传密码过去)
2. device的token推测也是本地生成的,和设备一一对应,不会变,如果不是服务端而是本地生成,同样依赖生成算法,问题和上面一致。(台湾版本也没有这个逻辑,token服务端返回,但是有个app_token没细看是干啥的)

综合以上两个卡点,当前最简单的办法还是手机app登陆后抓一次包,拿到usrId、deviceId、SSID(xtoken)、token这几个参数后,实现剩余步骤的工程化,可以做的功能全面美观一些;或者直接用Command line的switch实现。

如果能找到有松下设备,爱折腾,懂逆向,会开发这几个因素都具备的人,不太容易。

我目前用Command line的switch解决了我的需求,可以做更复杂的空调开关策略了

这是我的配置,适配我当前2024.7版本的语法,自己拿去替换几个关键参数然后放到configuration.yaml里就能用,我的设备是控制松下风管机


```
command_line:
  - switch:
      name: LivingRoom-AirConditioner
      scan_interval: 30
      command_on: >
        SSID="Axxxxxxxxxxxxxxxxx3"; usrId="5xxxxx0"; deviceId="4xxxxxxxxxF_0xxx_xxxx"; token="0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx7";curl 'https://app.psmartcloud.com/App/ACDevSetStatusInfoAW'   -H  'Accept: application/json, text/javascript, */*; q=0.01'   -H  'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8'   -H  'Connection: keep-alive'   -H  'Content-Type: application/json'   -H  'DNT: 1'   -H  'Origin: https://app.psmartcloud.com'   -H  'Sec-Fetch-Dest: empty'   -H  'Sec-Fetch-Mode: cors'   -H  'Sec-Fetch-Site: same-origin'   -H  'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1'   -H  'X-Requested-With: XMLHttpRequest'   -H  "xtoken: SSID=$SSID"   --data-raw "{\"id\":211,\"usrId\":\"$usrId\",\"deviceId\":\"$deviceId\",\"token\":\"$token\",\"params\":{\"runMode\":3,\"forceRunning\":0,\"runStatus\":1,\"remoteForbidMode\":0,\"remoteMode\":0,\"setTemperature\":52,\"setHumidity\":0,\"windSet\":10,\"exchangeWindSet\":0,\"portraitWindSet\":15,\"orientationWindSet\":13,\"nanoeG\":0,\"nanoe\":0,\"ecoMode\":0,\"muteMode\":0,\"filterReset\":0,\"powerful\":0,\"powerfulMode\":0,\"thermoMode\":0,\"buzzer\":1,\"autoRunMode\":0,\"unusualPresent\":0,\"runForbidden\":0,\"inhaleTemperature\":0,\"outsideTemperature\":0,\"insideHumidity\":0,\"alarmCode\":\"0200\",\"nanoeModule\":0,\"TDWindModule\":0}}"   --insecure
      command_off: >
        SSID="Axxxxxxxxxxxxxxxxx3"; usrId="5xxxxx0"; deviceId="4xxxxxxxxxF_0xxx_xxxx"; token="0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx7";curl 'https://app.psmartcloud.com/App/ACDevSetStatusInfoAW'  -H 'Accept: application/json, text/javascript, */*; q=0.01'  -H 'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8'  -H 'Connection: keep-alive'  -H 'Content-Type: application/json'  -H 'DNT: 1'  -H 'Origin: https://app.psmartcloud.com'  -H 'Sec-Fetch-Dest: empty'  -H 'Sec-Fetch-Mode: cors'  -H 'Sec-Fetch-Site: same-origin'  -H 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1'  -H 'X-Requested-With: XMLHttpRequest'  -H "xtoken: SSID=$SSID"  --data-raw "{\"id\":19,\"usrId\":\"$usrId\",\"deviceId\":\"$deviceId\",\"token\":\"$token\",\"params\":{\"runMode\":3,\"forceRunning\":0,\"runStatus\":0,\"remoteForbidMode\":0,\"remoteMode\":0,\"setTemperature\":52,\"setHumidity\":0,\"windSet\":10,\"exchangeWindSet\":0,\"portraitWindSet\":15,\"orientationWindSet\":13,\"nanoeG\":0,\"nanoe\":0,\"ecoMode\":0,\"muteMode\":0,\"filterReset\":0,\"powerful\":0,\"powerfulMode\":0,\"thermoMode\":0,\"buzzer\":1,\"autoRunMode\":0,\"unusualPresent\":0,\"runForbidden\":0,\"inhaleTemperature\":0,\"outsideTemperature\":0,\"insideHumidity\":0,\"alarmCode\":\"0200\",\"nanoeModule\":0,\"TDWindModule\":0}}"  --insecure
      command_state: >
        SSID="Axxxxxxxxxxxxxxxxx3"; usrId="5xxxxx0"; deviceId="4xxxxxxxxxF_0xxx_xxxx"; token="0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx7";curl 'https://app.psmartcloud.com/App/ACDevGetStatusInfoAW'   -H 'Accept: application/json, text/javascript, */*; q=0.01'   -H 'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8'   -H 'Connection: keep-alive'   -H 'Content-Type: application/json'    -H 'DNT: 1'   -H 'Origin: https://app.psmartcloud.com'    -H 'Sec-Fetch-Dest: empty'   -H 'Sec-Fetch-Mode: cors'   -H 'Sec-Fetch-Site: same-origin'   -H 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1'   -H 'X-Requested-With: XMLHttpRequest'   -H "xtoken: SSID=$SSID"   --data-raw "{\"id\":217,\"usrId\":\"$usrId\",\"deviceId\":\"$deviceId\",\"token\":\"$token\"}"   --insecure
      value_template: >
        {{value_json['results']['runStatus'] == 1 }}
      icon: >
        {% if value_json['results']['runStatus'] == 1 %} mdi:air-conditioner
        {% else %} mdi:fan-off
        {% endif %}
```

多台设备的话复制一下`- switch`和之后的部分,在改一下名字和变量就好
  - switch:
      name: BedRoom-AirConditioner
回复

使用道具 举报

7

主题

166

帖子

1302

积分

论坛技术达人

积分
1302
金钱
1131
HASS币
60
发表于 2024-9-19 14:59:55 | 显示全部楼层
我在2年前找了大佬要了登录PJ算法,也通过NR实现登录这一部分的功能,但是后面不了了之今天(2024/09/19)测试了以下,这个算法还是没有变,可以正常获取数据。看看是否有帮助。
(NR需要安装crypto-wz这个库)

flows.json

25.64 KB, 下载次数: 9

回复

使用道具 举报

3

主题

35

帖子

343

积分

中级会员

Rank: 3Rank: 3

积分
343
金钱
308
HASS币
0
发表于 2024-9-19 15:56:49 | 显示全部楼层
直接更换掉控制面板就行呀,就和大哥说的用esp32来控制gpio通断 不就是按钮通断了
回复

使用道具 举报

0

主题

9

帖子

88

积分

注册会员

Rank: 2

积分
88
金钱
79
HASS币
0
发表于 2024-9-26 01:28:07 | 显示全部楼层
射频学习器 可以控制吗?
回复

使用道具 举报

6

主题

97

帖子

861

积分

高级会员

Rank: 4

积分
861
金钱
764
HASS币
0
发表于 2024-12-3 16:49:54 | 显示全部楼层
我是松下洗衣机,也想接入进来
回复

使用道具 举报

3

主题

65

帖子

468

积分

中级会员

Rank: 3Rank: 3

积分
468
金钱
403
HASS币
0
发表于 2024-12-3 19:38:39 来自手机 | 显示全部楼层
我以前买过ldm,好像是楼主家的
回复

使用道具 举报

72

主题

552

帖子

2404

积分

金牌会员

Rank: 6Rank: 6

积分
2404
金钱
1847
HASS币
0
发表于 4 天前 | 显示全部楼层
抓包后,用nodered 实现了,但是抓包比较困难
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-27 09:07 , Processed in 0.055496 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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