找回密码
 立即注册
楼主: yxy2888

[硬件DIY] 万家乐热水器接入求助

[复制链接]

1

主题

7

回帖

71

积分

注册会员

积分
71
金钱
63
HASS币
0
发表于 2025-2-19 17:04:47 | 显示全部楼层
本帖最后由 hayonghu 于 2025-2-19 17:07 编辑
AMEN12138 发表于 2025-2-16 01:37
我也经过抓包测试,发现无法进行控制,我打算放弃抓包这个路 准备拆解热水器进行改装,自己买esp8266米家 ...

既然都拆解热水器了,为何不整个换支持米家的热水器?在最小改动的情况下,模拟手机点击APP是最佳选择。咸鱼一台"直供电手机"38块钱有剩。
回复

使用道具 举报

1

主题

7

回帖

71

积分

注册会员

积分
71
金钱
63
HASS币
0
发表于 2025-2-19 17:11:40 | 显示全部楼层
本帖最后由 hayonghu 于 2025-5-1 01:24 编辑
AMEN12138 发表于 2025-2-11 18:54
1.点灯app无法在米家注册成为卡片实体
2.无法成为卡片实体 就有无法接入HA。
3.只有将小爱接入HA,但这样 ...

谢谢你提供的建议。我已经做出来了,纯单片机实现万家乐热水器协议。不拆热水器、不贴任何东西、非模拟点击APP。带米家实体卡片+支持HA+不需要手机+米家Mesh控制+不需要物联网平台。

微信图片_20250501011641.jpg 微信图片_20250501011637.jpg 微信图片_20250501012355.jpg
回复

使用道具 举报

0

主题

6

回帖

86

积分

注册会员

积分
86
金钱
80
HASS币
0
发表于 2025-3-30 14:14:37 | 显示全部楼层
ByGPT 发表于 2024-2-4 00:38
要用Wireshark抓,它的控制协议是自有的,但是底层是TCP协议,你那个只能抓http协议的,如果想自己抓的话 ...

感谢dalao,参考大佬的流程抓出来的包放在nodered里面可以开启零冷水了。但是我现在想接通米家碰到了问题。 微信图片_20250330141158.png

看上面的图,构造消息的那个节点是我按照抓包的顺序放的消息体。 现在碰到的问题是点击时间戳手动运行这个流程,零冷水可以正确开启,但是通过捕捉米家中枢网关的虚拟事件之后执行同样的构造消息和发送设备却无响应了。    我截图的两个debug打印消息序列分别是手动注入和捕捉虚拟事件执行的,可以看出来打印的消息也是一样的。    实在是令人费解。。
回复

使用道具 举报

0

主题

6

回帖

86

积分

注册会员

积分
86
金钱
80
HASS币
0
发表于 2025-3-30 21:41:59 | 显示全部楼层
rockxsj 发表于 2025-3-30 14:14
感谢dalao,参考大佬的流程抓出来的包放在nodered里面可以开启零冷水了。但是我现在想接通米家碰到了问题 ...

多试了几次之后发现都无法稳定控制,有时候能成功,大部分时候无法成功
回复

使用道具 举报

0

主题

6

回帖

86

积分

注册会员

积分
86
金钱
80
HASS币
0
发表于 2025-3-31 09:43:50 | 显示全部楼层
rockxsj 发表于 2025-3-30 21:41
多试了几次之后发现都无法稳定控制,有时候能成功,大部分时候无法成功 ...

应该是因为多条tcp消息到达热水器的顺序无法保证导致的。  现在换成用function节点手动发送每一条消息,确保前面的消息发送成功再发送后面的消息就可以稳定控制了。  注意要先在nodered的settings.js里面配置全局导出net库,否则没法在function节点引入net。

const net = global.get('net');

async function sendTcpMessages(messages) {
    const client = new net.Socket();
    
    try {
        node.status({ fill: "yellow", shape: "ring", text: "正在连接…" });
        // 连接到服务器
        await new Promise((resolve, reject) => {
            client.connect(7681, '192.168.31.59', () => resolve());
            client.on('error', reject);
            node.status({ fill: "red", shape: "dot", text: "连接失败" });
        });

        // 按顺序发送消息
        for (const message of messages) {
            await new Promise((resolve, reject) => {
                client.write(Buffer.from(message, "hex"), (err) => {
                    if (err) reject(err);
                    else resolve();
                });
            });
            node.log(`Sent: ${message}`);
            // console.log(`Sent: ${message}`);
        }
        node.status({ fill: "green", shape: "dot", text: "发送完成" });

    } catch (error) {
        node.error('Error:', error);
        node.status({ fill: "red", shape: "dot", text: "发送出现错误" });
        // console.error('Error:', error);
    } finally {
        client.end();
    }
}

// 使用示例
const messages = [
  "aabb08028c00106f54faf4c95c8e6572c9eba9bee63e5d9e99",
  "aabb11006700408882f42408bd03b25cedcad29f5ecf00f28393903783fba9826067ca6a6337fd441a30f7c4864bf6b5f1a85f688c35c05a783f3951d934d2269e5e46c8042f75",
  "aabb1100310050e7dd5f1b35d9f21d5afa1dbf8e64fcb91491878ef4bf076ba332c24f7ba677daf97903e1bcbedfe477aaab8267cb3d49bc2f17d3628dd49cd127349a657d2dcd486f5e329475db8f95298534fa0b0cc9",
  "aabb11006e0050d3a985bb41087e7e0ec3a2d43533037f9b83432fcb329251a0fb9fbd2d77b910016cf0abd946643dde06f91cb1878922b4dab6d07542979681c8609a8bc3152ebf02b0c9c710422fefe97681c94f8f30",
  "aabb11009a0050f06078aaf3d779dbe62ecb0a83c8987ee3453534e6ba8b6900c86c902900ea8c387147e3b0bacd4ef72716a5a27ecf9af77b5655bd6c9fb7504de2e97ec232d56ce0f02a5bec384e2d0b02b1101abf8f",
  "aabb1100d900504e027faf1525b7ac53ac07f40b05c8dd3af33a5a00dd1eabb05b1d84d6750f2aee02b37127ae9df87a048df425ebeba647d9076fd10dac916c264bdb41be0cecc8cdfafe874665cbffcab8d699b34541aabb1100a20050512385d3dd30f022adb6b709baec18a2cd4fb5d9c3e17d5a6b2a4b23f13c9e5a792e25d782bad1008d39f72e79778fd4aa69ee3aae75f4b81955c6ab694d2669e09ad3c780745ed0aab35cbdb012f2c0"
];
sendTcpMessages(messages);
回复

使用道具 举报

1

主题

7

回帖

71

积分

注册会员

积分
71
金钱
63
HASS币
0
发表于 3 小时前 | 显示全部楼层
rockxsj 发表于 2025-3-31 09:43
应该是因为多条tcp消息到达热水器的顺序无法保证导致的。  现在换成用function节点手动发送每一条消息, ...

你这个明显就没解开万家乐的协议,我已经发在小红书上了,解开了万家乐所有协议,能自主学习。 微信图片_20250501011637.jpg
回复

使用道具 举报

1

主题

7

回帖

71

积分

注册会员

积分
71
金钱
63
HASS币
0
发表于 3 小时前 | 显示全部楼层
AMEN12138 发表于 2025-2-16 01:37
我也经过抓包测试,发现无法进行控制,我打算放弃抓包这个路 准备拆解热水器进行改装,自己买esp8266米家 ...

我已经解开了万家乐APP所有协议了,全网独家,【不拆机、不贴任何东西、非模拟点击APP】,纯单片机协议交互,做出来成品了。

微信图片_20250501011600.jpg
微信图片_20250501011634.jpg
微信图片_20250501011641.jpg
微信图片_20250501011637.jpg
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2025-5-1 04:50 , Processed in 0.232989 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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