Skip to main content

Python library and CLI for communicating with myenergi API.

Project description

pymyenergi

An async Python library for myenergi API

This is a very early release, things are changing rapidly so use at your own risk!

[!IMPORTANT] This work is not officially supported by myenergi and functionality can stop working at any time without warning

Installation

The easiest method is to install using pip (pip/pip3):

pip install pymyenergi

Installing within a Python virtual environment is often a good idea:

python -m venv .venv
source .venv/bin/activate
pip install pymyenergi

To update to the latest version:

pip install pymyenergi -U

Setup will add a CLI under the name myenergicli. See below for usage.

CLI

A simple CLI is provided with this library.

If no username, password, app_email or app_password is supplied as input arguments, and no configuration file is found, you will be prompted for credentials.

Configuration file will be searched for in ./.myenergi.cfg and ~/.myenergi.cfg.

Example configuration file

[hub]
serial=12345678
password=your-password
app_email=myemail@email.com
app_password=your-app-password

CLI usage

usage: myenergi [-h] [-u USERNAME] [-p PASSWORD] [-e APP_EMAIL] [-a APP_PASSWORD] [-d] [-j] [--skip-oauth]
                {list,overview,zappi,eddi,harvi,libbi} ...

myenergi CLI.

positional arguments:
  {list,overview,zappi,eddi,harvi,libbi}
                        sub-command help
    list                list devices
    overview            show overview
    zappi               use zappi --help for available commands
    eddi                use eddi --help for available commands
    harvi               use harvi --help for available commands
    libbi               use libbi --help for available commands

optional arguments:
  -h, --help            show this help message and exit
  -u USERNAME, --username USERNAME
  -p PASSWORD, --password PASSWORD
  -e APP_EMAIL, --app_email APP_EMAIL
  -a APP_PASSWORD, --app_password APP_PASSWORD
  -d, --debug
  -j, --json

Library usage

Install pymyenergi using pip (requires Python > 3.6)

Example library usage

import asyncio
from pymyenergi.connection import Connection
from pymyenergi.client import MyenergiClient
from sys import argv
import logging

logging.basicConfig()
logging.root.setLevel(logging.INFO)

user, password = argv

async def zappis() -> None:
    conn = Connection(user, password)
    client = MyenergiClient(conn)

    zappis = await client.getDevices('zappi')
    for zappi in zappis:
        print(f"Zappi {zappi.serial_number} charge mode {zappi.charge_mode}")

loop = asyncio.get_event_loop()
loop.run_until_complete(zappis())

Example library usage - Zappi

import asyncio
from pymyenergi.connection import Connection
from pymyenergi.zappi import Zappi
from sys import argv
import logging

logging.basicConfig()
logging.root.setLevel(logging.INFO)

user, password, zappi_serial = argv


async def get_data() -> None:
    conn = Connection(user, password)
    zappi = Zappi(conn, zappi_serial)
    await zappi.refresh()
    print(f"Zappi S/N {zappi.serial_number} version {zappi.firmware_version}")
    print(f"Status: {zappi.status} Plug status: {zappi.plug_status} Locked: {zappi.locked}")
    print(f"Priority: {zappi.priority}")
    print(f"Charge mode: {zappi.charge_mode} {zappi.num_phases} phase")
    print()
    print(f"Lock when plugged in   : {zappi.lock_when_pluggedin}")
    print(f"Lock when unplugged    : {zappi.lock_when_unplugged}")
    print(f"Charge when locked     : {zappi.charge_when_locked}")
    print(f"Charge session allowed : {zappi.charge_session_allowed}")
    print(f"Charge added: {zappi.charge_added}")
    print()
    print(f"CT 1 {zappi.ct1.name} {zappi.ct1.power}W")
    print(f"CT 2 {zappi.ct2.name} {zappi.ct2.power}W")
    print(f"CT 3 {zappi.ct3.name} {zappi.ct3.power}W")
    print(f"CT 4 {zappi.ct4.name} {zappi.ct4.power}W")
    print(f"CT 5 {zappi.ct5.name} {zappi.ct5.power}W")
    print(f"CT 6 {zappi.ct6.name} {zappi.ct6.power}W")
    print()
    print(f"Supply voltage: {zappi.supply_voltage}V frequency: {zappi.supply_frequency}Hz")
    print("Power:")
    print(f"  Grid      : {zappi.power_grid}W")
    print(f"  Generated : {zappi.power_generated}W")
    print()
    # print(f"      Boost start at {zappi.boost_start_hour}:{zappi.boost_start_minute} add {zappi.boost_amount}kWh")
    print(f"Smart Boost start at {zappi.smart_boost_start_hour}:{zappi.smart_boost_start_minute} add {zappi.smart_boost_amount}kWh")

loop = asyncio.get_event_loop()
loop.run_until_complete(get_data())

Libbi support

Currently supported features:

  • Reads a few values such as State of Charge, DCPV CT
  • Battery in and out energy
  • Gets and sets the current operating mode (normal/stopped/export)
  • Change priority of Libbi
  • Enable/Disable charging from the grid
  • Set charge target (in Wh)

CLI examples:

myenergi libbi show
myenergi libbi mode normal
myenergi libbi priority 1
myenergi libbi energy
myenergi libbi chargefromgrid false
myenergi libbi chargetarget 10200

Credits

twonk for documenting the unofficial API

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pymyenergi-0.2.2.tar.gz (21.1 kB view details)

Uploaded Source

Built Distribution

pymyenergi-0.2.2-py3-none-any.whl (23.5 kB view details)

Uploaded Python 3

File details

Details for the file pymyenergi-0.2.2.tar.gz.

File metadata

  • Download URL: pymyenergi-0.2.2.tar.gz
  • Upload date:
  • Size: 21.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for pymyenergi-0.2.2.tar.gz
Algorithm Hash digest
SHA256 b90a9b7b1d8ff02c7308517e508ebb3d8fe35c85428feaaa2dae21126306ff92
MD5 8647630441d9ffbc99a3d5bb8e782112
BLAKE2b-256 00efb6e8b2b8b7afd2502656926f783102ac5b86699eaa52afde11f737c328f2

See more details on using hashes here.

File details

Details for the file pymyenergi-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: pymyenergi-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 23.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for pymyenergi-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 17374fa38181593eb46277839191e74c48a4bc115ed282e5373c92ee40e2310d
MD5 5dcbe9f7e2d9141d234146f8a3107227
BLAKE2b-256 09461cbcaf48220bccd60924e9fc7f57671dd8ba89ebd208286446a6eb0a4206

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page