npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

homebridge-lg-enervu

v0.1.3

Published

Homebridge plugin to integrate LG enerVu

Downloads

15

Readme

Homebridge LG EnerVu

verified-by-homebridge Downloads Version

Homebridge plugin to enable home automation based on LG EnerVu data.

Introduction

As LG doesn't offer an official API, this Plugin creates a web session to access the ESS data, similar to logging in on your browser. The cloud data is updated every 60 seconds by the ESS with data for the previous minute. You can chose to select data for the last ten seconds or the average for the whole minute. The upload timing and processing time on LG's servers result in a delay between 30 to 90 seconds from actual change to it being reflected in Homekit.
Disclaimer: This plugin is not endorsed by LG. It aims to mimic the communication between your browser and the server during an actual session, but I don't take any responsibility for your account being banned as a result of using this plugin. I do however use this myself and have not had any issues.

Installation

Make sure you can access your ESS data on the web using your email and password. Then install the Homebridge LG EnerVu plugin through Homebridge Config UI X or manually by:

$ sudo npm -g i homebridge-lg-enervu

To update Homebridge LG EnerVu, simply issue another sudo npm -g i homebridge-lg-enervu@latest.

Configuration

It is highly recommended that you use Homebridge Config UI X and configure this plugin using your email and password. Alternatively, you can edit and add the following configuration inside "platforms" in your config.json file. If you don't want to use your credentials, see here. Below you can find the minimum required config.

Base Config

    "platforms": [
        {
            "name": "LG EnerVu",
            "user": {
                "email": "your@email",
                "password": "password"
            },
            "platform": "LgEnerVu"
        }
    ]

Optional Parameters

Below are the optional parameters with their default settings if not specified.

        {
            "updateMotionSensor": true,
            "batterySoc": true,
            "pvPower": true,
            "loadPower": true,
            "batteryPower": true,
            "gridPower": true,
            "refreshTimeInMinutes": 1,
            "latestDataForPower": true,
            "language": "de-DE",
            "userAgent": 
                "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15",
            "sessionData": {
                "Cookie": "JSESSIONID=toBeFilled; lang=de; country=DE; ctCode=DE; AWSELB=toBeFilled; AWSELBCORS=toBeFilled; enervuCookieCompliance=on",
                "system_id": "toBeFilled",
                "ess_id": "toBeFilled"
            },
        }

| Option | Default | Explanation| | ---------------------------- | ---------------------------- | --------------------------------------------------------| | updateMotionSensor | true | Motion sensor that is triggered whenever new data is available, based on the refresh time settings and your ESS updating the cloud. Turn off to not create a motion sensor, e.g. when using the Eve App for automation| | batterySoc | true | Current battery level in percent, displayed via the lux reading of a light sensor for automation & battery status of all accessories. Disable to not create the light sensor and not show battery level.| | pvPower | true | The power produced by the PV system in Watts, displayed via the lux reading of a light sensor. Disable to not create the light sensor.| | loadPower | true | The power consumed by the load in Watts, displayed via the lux reading of a light sensor. Disable to not create the light sensor.| | batteryPower | true | The charging or discharging power of your battery in Watts, displayed via the lux reading of a light sensor & two switches turning on when charging/ discharging. Disable to not create the accessories.| | gridPower | true | The power exchange with the grid in Watts, displayed via the lux reading of a light sensor & two switches turning on when buying/selling electricity. Disable to not create the accessories.| | refreshTimeInMinutes | 1 [Range: 1-5] | Time in Minutes between updates. Restricted by ESS data updates (once per Minute) and server timeout (≈ 5 Minutes)| | latestDataForPower | true | The ESS sends 6 blocks of data, each with the average values for 10 seconds of the last minute. By default, the plugin picks the latest data, i.e. the average value from hh:mm:50 to hh:mm:60. If you prefer the average value of the last minute, set this to false. | | language |"de-De" (=German-Germany) | Sets the language for the site. Match this to your usual settings to have a consistent login history. Check here for a list of country codes. | | userAgent | "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15" (=Safari on MacOS)| Your default user agent (browser signature) when logging into EnerVu. Match this to your usual settings to have a consistent login history.| | sessionData | undefined | See below for more details. When sessionData is provided, all of Cookie, system_id and ess_id must be filled to create a valid config|

When disabling accessories after they have been created before, you might need to delete the LG EnerVu device from Homebridge cache inside settings for them to immediately disappear.

Session data

This data is automatically created on successful login to avoid needing to log in again after server restarts. On first launch, the plugin will use the session data to latch onto the session and ignore the provided username and password. This can also be used in case you don't want to supply your email and password but only a temporary cookie. First log into LG EnerVu and open developer tools. Both systemId and essId can be found by searching for them in the response of "main.do>XHRs>dashboard.do". Replace the fields inside Cookie with the values from your session. The existing session will be refreshed by the plugin indefinitely. Note that a session is closed by the server on inactivity, e.g. when a network error occurs, and these steps need to be repeated if no valid credentials are provided. To pass the config check, simply fill username and password with non-empty strings, e.g. "a_at_b.com".

Getting started & creating Automations

After adding the bridge, you will only see one tile. Opening it and accessing its settings, you can find all configured devices. Tapping them and deleting the default name reveals their actual function & you can name them accordingly.
Automations can be created using shortcuts inside your home app or with the help of the Eve App. If you prefer to use shortcuts inside the home app, create an automation triggered by the motion sensor and then scroll to the bottom to find "Convert to shortcut". Here you can create conditions against the light sensors, specifying exact trigger values.
You can find a tutorial on how to use the Eve App for automation here.