| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 |
- # https://github.com/FlorianSoler/OpenBeken-Action-lsc-smartplug-with-monitoring-guide/tree/main?tab=readme-ov-file
- substitutions:
- devicename: lscp02
- low_devicename: lscp02
- friendly_devicename: LSC Plug 02
- update_interval_seconds: "15s"
-
- esphome:
- name: $devicename
- friendly_name: $friendly_devicename
- bk72xx:
- board: generic-bk7231t-qfn32-tuya
- #framework:
- # version: dev
- # Enable logging
- logger:
- web_server:
- port: 80
-
- # Enable Home Assistant API
- api:
- encryption:
- key: "ejeMnlF5M60w/yuYwAWn/kIBz701xLwVkUGf9iN8uLA="
- ota:
- password: "2c27af3ab81f992e23745c20ab5dfc02"
- wifi:
- ssid: !secret iot_ssid
- password: !secret iot_password
- domain: .int.mmax.cloud
- sensor:
- - platform: wifi_signal
- name: "WiFi Signal Sensor"
- update_interval: 60s
- - platform: uptime
- name: Uptime Sensor
- id: uptime_sensor
- update_interval: 60s
- on_raw_value:
- then:
- - text_sensor.template.publish:
- id: uptime_human
- state: !lambda |-
- int seconds = round(id(uptime_sensor).raw_state);
- int days = seconds / (24 * 3600);
- seconds = seconds % (24 * 3600);
- int hours = seconds / 3600;
- seconds = seconds % 3600;
- int minutes = seconds / 60;
- seconds = seconds % 60;
- return (
- (days ? to_string(days) + "d " : "") +
- (hours ? to_string(hours) + "h " : "") +
- (minutes ? to_string(minutes) + "m " : "") +
- (to_string(seconds) + "s")
- ).c_str();
- #
- # power monitoring
- #
- # PC191HA includes a BL0937 chip for measuring power consumption
- # and BL0937 is a variation of hlw8012, but using inverted SEL pin functionality
- - platform: hlw8012
- model: BL0937 # note that the model must be specified to use special calculation parameters
- sel_pin: # I believe that cf_pin reports either Voltage or Current depending on this select pin
- inverted: true # determine whether true reports Voltage
- number: P11
- cf1_pin:
- inverted: true
- number: P24
- cf_pin:
- inverted: true
- number: P26
- update_interval: 5s
- change_mode_every: 4
- # update_interval: 5s
- # initial_mode: "VOLTAGE"
- # change_mode_every: 4294967295
- # Adjust according to the actual resistor values on board to calibrate the specific unit
- # voltage_divider: "895" # LOWER VALUE GIVES LOWER VOLTAE
- # current_resistor: "0.0006" # HIGHER VALUE GIVES LOWER WATTAGE
- voltage_divider: "795"
- current_resistor: "0.001"
- # how the power monitoring values are returned to ESPHome
- voltage:
- name: $friendly_devicename Voltage
- id: ${low_devicename}_voltage
- unit_of_measurement: V
- accuracy_decimals: 1
- filters:
- - skip_initial: 2
- - sliding_window_moving_average:
- window_size: 4
- send_every: 2
- on_value:
- component.update: ${low_devicename}_apparent_power
- power:
- name: $friendly_devicename Power
- id: ${low_devicename}_power
- unit_of_measurement: W
- accuracy_decimals: 0
- on_value:
- component.update: ${low_devicename}_power_factor
- filters:
- # - skip_initial: 15
- - skip_initial: 2
- - sliding_window_moving_average:
- window_size: 4
- send_every: 2
- current:
- name: $friendly_devicename Current
- id: ${low_devicename}_current
- unit_of_measurement: A
- accuracy_decimals: 3
- filters:
- # - multiply: 1
- - multiply: 0.450
- - skip_initial: 2
- - sliding_window_moving_average:
- window_size: 4
- send_every: 2
- # power is simply current x voltage -- except that the pc191ha doesn't follow that formula.
- # Setting current_resistor to give an accurate Amperage does NOT also give the correct Wattage
- # my work-around is to calculate current from power / voltage
- # - platform: template
- # name: $friendly_devicename Current
- # id: ${low_devicename}_current
- # unit_of_measurement: A
- # accuracy_decimals: 2
- # update_interval: $update_interval_seconds
- # lambda: |-
- # return (id(${low_devicename}_power).state / id(${low_devicename}_voltage).state);
- # filters:
- # - skip_initial: 5 # give time for data to settle to avoid NaN
- - platform: total_daily_energy
- name: $friendly_devicename daily consumption
- id: ${low_devicename}_total_daily_energy
- power_id: ${low_devicename}_apparent_power
- filters:
- - multiply: 0.001 # to kWh
- unit_of_measurement: kWh
- - platform: template
- name: "Apparent power"
- id: ${low_devicename}_apparent_power
- unit_of_measurement: VA
- device_class: apparent_power
- lambda: |-
- return id(${low_devicename}_voltage).state * id(${low_devicename}_current).state;
- update_interval: never
- on_value:
- component.update: ${low_devicename}_power_factor
- - platform: template
- name: "Power factor"
- id: ${low_devicename}_power_factor
- unit_of_measurement: ''
- device_class: power_factor
- lambda: |-
- return id(${low_devicename}_power).state / id(${low_devicename}_apparent_power).state;
- filters:
- - clamp:
- min_value: 0
- max_value: 1
- update_interval: never
- text_sensor:
- - platform: template
- name: Uptime Human Readable
- id: uptime_human
- icon: mdi:clock-start
- - platform: wifi_info
- ip_address:
- name: IP Address
- entity_category: diagnostic
- light:
- - platform: status_led
- name: "led"
- internal: true
- id: led
- pin:
- number: P8
- inverted: true
- status_led:
- pin:
- number: P10
- inverted: true
- binary_sensor:
- - platform: status
- name: Status
- entity_category: diagnostic
- - platform: gpio
- pin:
- number: P7
- mode:
- input: true
- pullup: true
- inverted: true
- id: button1
- filters:
- - delayed_on: 50ms
- - delayed_off: 50ms
- on_click:
- - switch.toggle: outlet
- - platform: status
- name: ${friendly_devicename} status
- switch:
- - platform: gpio
- name: ${friendly_devicename} Outlet
- id: outlet
- pin: P6
- icon: mdi:power-socket-eu
- on_turn_on:
- - light.turn_on: led
- on_turn_off:
- - light.turn_off: led
- restore_mode: RESTORE_DEFAULT_OFF
- # Switch to restart the plug
- - platform: restart
- name: ${friendly_devicename} Restart Switch
- # Enable time component to reset energy at midnight
- time:
- - platform: homeassistant
- id: homeassistant_time
|