# https://github.com/FlorianSoler/OpenBeken-Action-lsc-smartplug-with-monitoring-guide/tree/main?tab=readme-ov-file substitutions: devicename: lscp01 low_devicename: lscp01 friendly_devicename: LSC Plug 01 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: false # determine whether true reports Voltage number: P11 cf_pin: # current or voltage (ele_pin: 7) inverted: true # the logic of BL0937 is opposite from HLW8012 number: P24 cf1_pin: # Power (vi_pin: 8) inverted: true # the logic of BL0937 is opposite from HLW8012 number: P26 update_interval: 2s # PC191HA measures and returns Voltage OR Current according to the value of sel_pin, # but it can change the value of sel_pin periodically 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 VOLTAGE current_resistor: "0.0006" # HIGHER VALUE GIVES LOWER WATTAGE # 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 power: name: $friendly_devicename Power id: ${low_devicename}_power unit_of_measurement: W accuracy_decimals: 2 filters: - skip_initial: 2 # current: # name: $friendly_devicename Current # id: ${low_devicename}_current # unit_of_measurement: A # accuracy_decimals: 3 # filters: # - multiply: 0.18 # - skip_initial: 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}_power filters: - multiply: 0.001 # to kWh unit_of_measurement: kWh 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