找回密码
 立即注册

微信扫码登录

搜索
查看: 56|回复: 0

[求助] 插排刷完后日志老是报错,且无实体

[复制链接]

7

主题

32

回帖

285

积分

中级会员

积分
285
金钱
246
HASS币
0
发表于 昨天 22:55 | 显示全部楼层 |阅读模式
homeassistan ,ESPHOME,NODE-RED,都是飞牛NAS下的DOCKER安装的,日志每隔1分半左右报一下错”[14:48:12.555][W][api.connection:1880]: Home Assistant 2024.12.4 (192.168.124.22): Reading failed CONNECTION_CLOSED errno=11“,还有就是ESPHOME添加后无实体
下面是YAML文件代码



###########################################################################################
#注意事项:
# 1.固件的编译环境为esphome-v2023.11.4,可正常编译运行;不想升级esphome版本,则需要修改min_version的值,尝试编译固件。
# 2.OTA升级固件之后,请长按电源键5秒,等待蓝灯闪烁,重置设备并重新配网,避免出现奇怪的问题。
#固件功能:
#一.插排按钮:
# 1.实现智能模式与普通模式。
#   功能可配置,为normal或者smart模式,web界面或者homeassistant中下拉框选择。
#    normal: 普通模式,插排按钮按下之后全开或者全关
#    smart:  智能模式(此模式为默认模式),插排按钮按下之后只操作[主继电器]通断,不改变[从继电器]之前的状态
# 2.长按、双击、单击操作
#   长按:按住电源按钮5秒以上,插排会重置flash上的信息(包括插座记忆状态),并进入配网状态,
#   双击:双击电源键,从继电器接通或断开
#   单击:单击电源键,按下实现第[1]条功能配置的相应模式(智能模式/普通模式)
#二.指示灯
#   蓝灯常亮:wifi已连接
#   蓝灯熄灭:wifi未连接
#   蓝灯闪烁:ap配网模式
#   红灯闪烁/熄灭:esphome status_led light
#   白灯常亮:从继电器 真正通电
#   白灯熄灭:从继电器 真正断电
#三.断电记忆
#   记忆状态写入间隔1分钟,也就是说开关等组件状态发生变化,1分钟后才会被记录到flash,下次通电之后可恢复这个状态(可以配置成0s,所有状态变化立刻写入flash,但频繁的状态变化会缩短flash寿命。)
#四.计量功能 - todo
############################################################################################
substitutions:
  button_pin: GPIO4
  relay_master_pin: GPIO0
  relay_slave_pin: GPIO12
  relay_enable_pin: GPIO15
  led_blue_pin: GPIO16
  led_red_pin: GPIO14
  led_white_pin: GPIO5
  node_name: cmcc-powerboard1
  node_id: cmcc_powerboard1
  node_name_friendly: ${node_name}

esphome:
  name: ${node_name}
  project:
    name: "CMCC.CMPOWER W1"
    version: "1.0.0"
  min_version: 2023.11.4
  on_boot:
    - priority: 0
      then:
        - lambda: |-
            if(nullptr != esphome::captive_portal::global_captive_portal)
            {
              //配网模式,蓝色led闪烁
              if(esphome::captive_portal::global_captive_portal->is_active() && !id(${node_id}_wifi).is_connected())
              {
                id(led_blue).turn_off().perform();
                id(led_blue).turn_on().set_effect("fast").perform();
              }
            }

esp8266:
  board: esp01_1m
  restore_from_flash: true

preferences:
  flash_write_interval: 1min

wifi:
  id: ${node_id}_wifi
  manual_ip:
    static_ip: 192.168.124.15
    gateway: 192.168.124.1
    subnet: 255.255.255.0
  ap:
    ssid: "${node_id} hotspot"
    password: !secret ap_password
  on_connect:
    - light.turn_on:
        id: led_blue
        effect: "None"
  on_disconnect:
    - light.turn_off: led_blue
captive_portal:

logger:
    level: INFO

api:
  encryption:
    key: !secret cmcc-powerboard1_api_key
  #避免未接入homeassistant时,模块一直重启(默认15分钟重启一次)
  reboot_timeout: 0s

ota:
  platform: esphome
  password: !secret ota_password

web_server:
  port: 80
  include_internal: true
  version: 2

output:
  #主、从继电器触发引脚
  - platform: gpio
    id: pin_trigger_relay_enable
    pin:
      number: ${relay_enable_pin}
      inverted: true

  #主继电器  
  - platform: gpio
    id: pin_relay_master
    pin:
      number: ${relay_master_pin}
      inverted: true

  #从继电器
  - platform: gpio
    id: pin_relay_slave
    pin:
      number: ${relay_slave_pin}
      inverted: true

  #白色led
  - platform: esp8266_pwm
    id: pin_led_white
    pin:
      number: ${led_white_pin}
      inverted: true

  #蓝色led
  - platform: esp8266_pwm
    id: pin_led_blue
    pin:
      number: ${led_blue_pin}
      inverted: true

  #红色led
  - platform: esp8266_pwm
    id: pin_led_red
    pin:
      number: ${led_red_pin}
      inverted: true


light:
  #白色led(分路继电器的状态)
  - platform: monochromatic
    name: ${node_name_friendly} Led White
    id: led_white
    output: pin_led_white
    restore_mode: ALWAYS_OFF
    default_transition_length: 0s

  #蓝灯常亮-wifi已连接
  #蓝灯闪烁-配网模式
  #红灯闪烁,蓝灯熄灭-wifi未连接
  #蓝色led(wifi状态)  
  - platform: monochromatic
    name: ${node_name_friendly} Led Blue
    id: led_blue
    output: pin_led_blue
    restore_mode: ALWAYS_OFF
    default_transition_length: 0s
    effects:
        #配网模式
      - pulse:
          name: "fast"
          transition_length: 0ms
          update_interval: 100ms

          #预留(未使用,可用作指示其他状态)
      - pulse:
          name: "slow"
          transition_length: 200ms
          update_interval: 500ms
  #红色led(wifi状态与配网状态)
  - platform: status_led
    name: ${node_name_friendly} Led Red
    id: led_red
    output: pin_led_red

#  红蓝灯合并(后期实现彩色status_led)
#  - platform: cwww
#    name: "Status Lights"
#    cold_white: pin_led_blue
#    warm_white: pin_led_red
#    cold_white_color_temperature: 6536 K
#    warm_white_color_temperature: 2000 K
#    constant_brightness: true
#    restore_mode: ALWAYS_OFF
#    default_transition_length: 0s
#    effects:
#      - pulse:
#          name: "fast"
#          transition_length: 0ms
#          update_interval: 100ms

button:
  #实现一个电平反转,触发继电器动作
  - platform: output
    #name: ${node_name_friendly} Relay Trigger
    id: trigger_relay_enable
    output: pin_trigger_relay_enable
    duration: 10ms
    internal: true

  - platform: template
    name: ${node_name_friendly} One-Key-All-Turn-On
    id: button_one_key_all_turn_on
    on_press:
      then:
        - switch.turn_on: relay_master_logic
        - switch.turn_on: relay_slave_logic
  - platform: template
    name: ${node_name_friendly} One-Key-All-Turn-Off
    id: button_one_key_all_turn_off
    on_press:
      then:
        - switch.turn_off: relay_slave_logic
        - switch.turn_off: relay_master_logic

switch:
  #插排按钮-逻辑开关
  - platform: template
    name: ${node_name_friendly} Power Key
    id: power_key_logic
    lambda: |-
      return id(relay_master_real).state;
    restore_mode: DISABLED
    turn_on_action:
      - lambda: |-
          auto strMode = id(select_key_button_mode).state;
          id(relay_master_logic).turn_on();
          //此模式下使用继电器默认记忆状态
          if("smart" == strMode)
          {
            return;
          }
          //普通插排的逻辑,电源键全开或全关
          if("normal" == strMode)
          {
            id(relay_slave_logic).turn_on();
            return;
          }

    turn_off_action:
      - lambda: |-
          auto strMode = id(select_key_button_mode).state;
          id(relay_master_logic).turn_off();
          //此模式下使用继电器的记忆状态
          if("smart" == strMode)
          {
            return;
          }
          //普通插排的逻辑,电源键全开或全关
          if("normal" == strMode)
          {
            id(relay_slave_logic).turn_off();
            return;
          }
  
  #由于两个继电器可以由esp芯片独立控制,可能会出现这种场景:[主继电器]断开,[从继电器]打开,homeassistant显示[从继电器]是开启状态,但是此时[从继电器]的线路是没有电的;
  #为了避免出现这种令人疑惑的场景,增加逻辑开关。
    #  使用逻辑开关,控制[从继电器]的实际通电状态:
    #  从继电器接通且主继电器接通,白色指示灯点亮
    #  从继电器断开或者主继电器断开,白色指示灯熄灭
  
  #主继电器-逻辑开关
  - platform: template
    name: ${node_name_friendly} Relay Master
    id: relay_master_logic
    lambda: |-
      return id(relay_master_real).state;
    restore_mode: DISABLED
    turn_on_action:
      - switch.turn_on: relay_master_real
    turn_off_action:
      - switch.turn_off: relay_master_real

  #从继电器-逻辑开关
  - platform: template
    name: ${node_name_friendly} Relay Slave
    id: relay_slave_logic
    lambda: |-
      return id(relay_master_real).state && id(relay_slave_real).state;
    restore_mode: DISABLED
    turn_on_action:
      - switch.turn_on: relay_slave_real
      - switch.turn_on: relay_master_real
    turn_off_action:
      - switch.turn_off: relay_slave_real

  #主继电器-真实开关
  - platform: output
    #name: ${node_name_friendly} Relay Master Real
    id: relay_master_real
    output: pin_relay_master
    restore_mode: RESTORE_DEFAULT_OFF
    on_turn_on:
      - button.press: trigger_relay_enable
      - lambda: |-
          if(id(relay_slave_real).state)  id(led_white).turn_on().perform();   
    on_turn_off:
      - button.press: trigger_relay_enable
      - lambda: |-
          id(led_white).turn_off().perform();
    internal: true

  #从继电器-真实开关
  #internal-true 对前端隐藏,使用relay_slave_logic 代替直接控制 relay_slave_real
  - platform: output
    #name: ${node_name_friendly} Relay slave Real
    id: relay_slave_real
    output: pin_relay_slave
    restore_mode: RESTORE_DEFAULT_OFF
    on_turn_on:
      - button.press: trigger_relay_enable
      - lambda: |-
          if(id(relay_master_real).state)  id(led_white).turn_on().perform();
    on_turn_off:
      - button.press: trigger_relay_enable
      - lambda: |-
          id(led_white).turn_off().perform();
    internal: true

  #重启
  - platform: restart
    name: "${node_name_friendly} Restart"
    id: ${node_id}_restart
  #重置
  - platform: factory_reset
    name: ${node_name_friendly} FactoryReset
    id: ${node_id}_factory_reset

#插排电源按钮
binary_sensor:
  - platform: gpio
    #name: ${node_name_friendly} Power Key Real
    id: power_key
    internal: true
    pin:
      number: ${button_pin}
      inverted: true
      mode:
        input: true
        pullup: true
    #插排电源按钮单击、长按功能
    on_multi_click:
    #长按5s以上,重置为出厂模式,进入配网状态
    - timing:
        - ON for at least 5s
      then:
        - logger.log: "Long press."
        - switch.turn_on: ${node_id}_factory_reset
      invalid_cooldown: 0s
    #双击
    - timing:
        - ON for at most 0.5s
        - OFF for at most 0.5s
        - ON for at most 0.5s
        - OFF for at least 0.2s
      then:
        - logger.log: "double click."
        - switch.toggle: relay_slave_logic
      invalid_cooldown: 0s      
    #单击
    - timing:
        - ON for at most 0.3s
        - OFF for at least 0.2s
      then:
        - logger.log: "single click."
        - switch.toggle: power_key_logic
      invalid_cooldown: 0s
#物理按键:智能模式与普通模式
select:
  - platform: template
    name: ${node_name_friendly} Key Button Mode
    id: select_key_button_mode
    options:
     - "normal" #普通模式,一键强制全开或全关
     - "smart" #智能模式,只操作主继电器,不改变[从继电器]以前的状态
    initial_option: "smart"
    optimistic: true
    restore_value: true



回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-16 12:29 , Processed in 0.890854 second(s), 9 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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