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

 找回密码
 立即注册
查看: 283|回复: 5

[技术探讨] 有没有哪位大佬能够指导一下esphome,万分感谢

[复制链接]

34

主题

308

帖子

1418

积分

金牌会员

Rank: 6Rank: 6

积分
1418
金钱
1110
HASS币
0
发表于 2024-5-18 14:49:08 | 显示全部楼层 |阅读模式
买了一台杂牌的电动升降桌,通过逻辑分析仪,分析得出,当控制器T口发出特定的信号,同时促发另外一个口为高电平的时候,升降桌能够控制。但是在不控制的时候,升降桌也会有数据不断的在传送。网上找了一段乐歌升降桌的控制代码。有没有哪位指导一下,怎样修改代码才能实现我想要的功能。 比如说升的时候,发送指令0x9b, 0x06, 0x02, 0x10, 0x00,这个指令需要每隔11ms发送一次,不间断的发送,桌子就会一直上升,同时把另外一口设置成高电平,就可以实现升。要停止上升的话,只要回复成默认的指令,但是esphome的代码不会写,有人能帮一下忙吗?
substitutions:
  device_name: Flexispot E5B
  name: flexispot_e5b
  min_height: "73.6" # Min height + 0.1
  max_height: "122.9" # Max height - 0.1
  
esphome:
  name: ${name}
  comment: ${device_name}
  platform: ESP8266 # TODO Change to your platform
  board: nodemcuv2 # TODO Change to your board
  includes:
    - desk_height_sensor.h


captive_portal:

# Enable logging
logger:
  #level: DEBUG
  baud_rate: 0


# Enable Home Assistant API
api:

ota:

wifi:
  ssid: "NoNameHome"
  password: "abcdef790929"

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "chuangkexiaoxian"
    password: "123456789"

uart:
  - id: desk_uart
    baud_rate: 9600
    tx_pin: D5
    rx_pin: D6

sensor:
  - platform: wifi_signal
    name: "WiFi Signal"
    update_interval: 60s

  - platform: uptime
    name: Uptime

  - platform: custom
    lambda: |-
      auto desk_height_sensor = new DeskHeightSensor(id(desk_uart));
      App.register_component(desk_height_sensor);
      return {desk_height_sensor};
    sensors:
      id: "desk_height"
      name: Desk Height
      unit_of_measurement: cm
      accuracy_decimals: 1
      icon: "mdi:counter"

switch:
  - platform: gpio
    name: "Virtual Screen"
    pin:
      number: D2
      mode: OUTPUT
    restore_mode: ALWAYS_ON
    internal: true

  - platform: uart
    name: "Preset 1"
    id: switch_preset1
    icon: mdi:numeric-1-box
    data: [0x9b, 0x06, 0x02, 0x04, 0x00, 0xac, 0xa3, 0x9d]
    uart_id: desk_uart

  - platform: uart
    name: "Preset 2"
    id: switch_preset2
    icon: mdi:numeric-2-box
    data: [0x9b, 0x06, 0x02, 0x08, 0x00, 0xac, 0xa6, 0x9d]
    uart_id: desk_uart

  - platform: uart
    name: "Preset 3"
    id: switch_preset3
    icon: mdi:numeric-3-box
    data: [0x9b, 0x06, 0x02, 0x10, 0x00, 0xac, 0xac, 0x9d]
    uart_id: desk_uart

  - platform: uart
    name: "Up"
    id: switch_up
    icon: mdi:arrow-up-bold
    data: [0x9b, 0x06, 0x02, 0x01, 0x00, 0xfc, 0xa0, 0x9d]
    uart_id: desk_uart
    internal: true

  - platform: uart
    name: "Down"
    id: switch_down
    icon: mdi:arrow-down-bold
    data: [0x9b, 0x06, 0x02, 0x02, 0x00, 0x0c, 0xa0, 0x9d]
    uart_id: desk_uart
    internal: true

  - platform: uart
    name: "M"
    id: switch_m
    icon: mdi:alpha-m-circle
    data: [0x9b, 0x06, 0x02, 0x20, 0x00, 0xac, 0xb8, 0x9d]
    uart_id: desk_uart

  - platform: uart
    name: "(wake up)" # Not available on all control panels
    id: switch_wake_up
    icon: mdi:gesture-tap-button
    data: [0x9b, 0x06, 0x02, 0x00, 0x00, 0x6c, 0xa1, 0x9d]
    uart_id: desk_uart

cover:
  - platform: template
    # icon: mdi:table-chair
    # icon: mdi-human-male-height-variant
    name: "Desk"
    assumed_state: true

    # Move desk up
    open_action:
      - while:
          condition:
            sensor.in_range:
              id: desk_height
              below: ${max_height}
          then:
          - logger.log: "Executing up command"
          - switch.turn_on: switch_up
          - delay: 10ms
    
    # Move desk down
    close_action:
      - while:
          condition:
            sensor.in_range:
              id: desk_height
              above: ${min_height} 
          then:
          - logger.log: "Executing down command"
          - switch.turn_on: switch_down
          - delay: 10ms
    optimistic: true


回复

使用道具 举报

1

主题

49

帖子

698

积分

高级会员

Rank: 4

积分
698
金钱
649
HASS币
0
发表于 2024-5-18 15:50:26 | 显示全部楼层
本帖最后由 阿斯蒂芬 于 2024-5-18 15:53 编辑

interval:
  - interval: 11ms
    then:
      - if:
          condition:
            lambda: 判断是否上升
          then:
            - uart.write:
                id: desk_uart
                data: !lambda return 上升的数据
回复

使用道具 举报

1

主题

49

帖子

698

积分

高级会员

Rank: 4

积分
698
金钱
649
HASS币
0
发表于 2024-5-18 15:55:13 | 显示全部楼层
阿斯蒂芬 发表于 2024-5-18 15:50
interval:
  - interval: 11ms
    then:

循环发送参考这个,
回复

使用道具 举报

34

主题

308

帖子

1418

积分

金牌会员

Rank: 6Rank: 6

积分
1418
金钱
1110
HASS币
0
 楼主| 发表于 2024-5-18 19:06:29 | 显示全部楼层
阿斯蒂芬 发表于 2024-5-18 15:55
循环发送参考这个,

谢谢,回头我试试看。
回复

使用道具 举报

33

主题

2051

帖子

5357

积分

论坛元老

Rank: 8Rank: 8

积分
5357
金钱
3306
HASS币
60
QQ
发表于 2024-5-18 22:06:27 | 显示全部楼层
我的升降桌我还没研究,平常也不怎么升降
我不生产技术,我只是技术的搬运工。
回复

使用道具 举报

34

主题

308

帖子

1418

积分

金牌会员

Rank: 6Rank: 6

积分
1418
金钱
1110
HASS币
0
 楼主| 发表于 2024-5-21 11:47:37 | 显示全部楼层
本帖最后由 hcfong2020 于 2024-5-21 11:52 编辑
阿斯蒂芬 发表于 2024-5-18 15:55
循环发送参考这个,

循环的知道了,不过现在调试的时候debug产生的内容不知道在哪里可以查看。

ESP_LOGD("DEBUG", "Height 2 is: 0x%02x", incomingByte);
比如说上面的这段,在homeassistant的日志里面就是找不到,也打开了调试模式。
上面的那段debug是在desk_height_sensor.h,中的

突然发现好像找到在哪里了。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-6-2 15:08 , Processed in 0.052912 second(s), 28 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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