找回密码
 立即注册

微信扫码登录

搜索
查看: 608|回复: 5

[技术探讨] esphome里espnow的简单代码示例

[复制链接]

193

主题

2907

回帖

9444

积分

元老级技术达人

积分
9444
金钱
6329
HASS币
80
发表于 2025-9-20 15:42:42 | 显示全部楼层 |阅读模式
本帖最后由 bugensui 于 2025-9-20 16:00 编辑

一共2个esp设备,1个是esp32开发板的开关按钮(是发送端),另外1个是esp32开发板上的板载led灯(接收端),目前esphome的espnow只能在同1个信道通信(比如:发射端连接的是wifi 1,接收端连接的是wifi 2,那可能无法通信,因为不是一个信道),示例是用esp开发板1连接的开关,切换esp32开发板2上的led灯(蓝色的灯)。

下载.jpg

发送端设备yaml代码
里面主要的是替换成接收端mac地址,然后这个字符串std::string data = "kai"可以自定义,你定义为on或者off都可以,到时候接收端判断这个字符即可。
espnow:
  auto_add_peer: true


binary_sensor:
  - platform: gpio
    name: relay_toggle
    pin:
      number: GPIO12
      mode:
        input: true
        pullup: true
    id: gpio_light_id
    on_state:
      then:
        - espnow.send:
            address: 68:接收端mac地址:CC
            data: !lambda |-
              std::string data = "kai" ;           
              unsigned char* buffer = (unsigned char*)data.c_str();
              return std::vector<unsigned char>(buffer, buffer + data.length() + 1);




接收端设备yaml代码
下面代码里,替换掉发送端设备的mac地址,通过判断字符串的方式验证是否切换灯的开和关,esp32kf3_led这个是接收端设备上灯的id
espnow:
  auto_add_peer: true
  peers:
    - "88:发送端设备mac地址:34"
  on_receive:
    - logger.log:
        format: 'Received "%s" from %s: RSSI: %ddBm'
        args:
          - data
          - format_mac_address_pretty(info.src_addr).c_str()
          - info.rx_ctrl->rssi
    - lambda: |-
        const char * command = (const char *)data;
        if (strncmp(command, "kai", 3) == 0) {
        auto call = id(esp32kf3_led).toggle();
        call.perform();
        ESP_LOGI("jieguo", "kai");
        }



评分

参与人数 1金钱 +20 收起 理由
sorrypqa + 20 高手,这是高手!

查看全部评分

回复

使用道具 举报

7

主题

71

回帖

1115

积分

金牌会员

积分
1115
金钱
1037
HASS币
0
发表于 2025-9-20 16:42:17 | 显示全部楼层
能不能发送传感器的数值呢 比如温湿度的
回复

使用道具 举报

193

主题

2907

回帖

9444

积分

元老级技术达人

积分
9444
金钱
6329
HASS币
80
 楼主| 发表于 2025-9-20 16:51:57 | 显示全部楼层
mqs000 发表于 2025-9-20 16:42
能不能发送传感器的数值呢 比如温湿度的

可以的,发送端把传感器数值转成文本,然后在接收端接收,然后给模板传感器赋值
回复

使用道具 举报

1

主题

79

回帖

1055

积分

金牌会员

积分
1055
金钱
975
HASS币
0
发表于 2025-9-20 18:58:21 | 显示全部楼层
非常感谢楼主,适合学习
回复

使用道具 举报

3

主题

345

回帖

3607

积分

论坛元老

积分
3607
金钱
3259
HASS币
0
发表于 2025-9-30 13:31:42 | 显示全部楼层
请教下如何发送接收sensor数据,比如温湿度,能否写一个参考,用AI写了几个编译都不成功,感谢
回复

使用道具 举报

193

主题

2907

回帖

9444

积分

元老级技术达人

积分
9444
金钱
6329
HASS币
80
 楼主| 发表于 2025-9-30 13:50:30 | 显示全部楼层
iamhyde 发表于 2025-9-30 13:31
请教下如何发送接收sensor数据,比如温湿度,能否写一个参考,用AI写了几个编译都不成功,感谢 ...

你直接把数字写成字符串,然后接收这个字符串不行吗?然后接收端处理下,把字符串(数字)处理成真正的数字,我没有这个需求,所以没有去研究
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )

GMT+8, 2025-10-18 17:56 , Processed in 0.053652 second(s), 9 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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