Skip to main content

A library to access Android devices which run JPI

Project description

pyJPI - An asynchronous Python module to interact with Android devices running JPI

Maintenance Latest release Newest commit

PyPI version fury.io

Overview

pyJPI is an asynchronous Python library designed to programmatically interact with Android devices running JPI.

This library is a key component for a core integration with Home Assistant.

More details on the integration can be found on the JPI page.

Features

  • Asynchronous operations are built with ``aiohttp` for non-blocking I/O, which is perfect for integrations and background tasks.
  • API: battInfo
  • API: get
  • API: getDeviceName

Installation

You can install pyJPI from PyPI using pip:

pip install pyjpi

Usage

Here is a more detailed example of how to use the library to connect, fetch status, and perform an action on an Android device running JPI.

import aiohttp
from pyjpi import jpiInit

async def main():
    """Main function to demonstrate library usage."""
    # Create an aiohttp session with SSL verification disabled.
    # Be cautious with this setting; it's useful for self-signed certificates
    # but not recommended for production environments without proper validation.
    session = aiohttp.ClientSession( connector=aiohttp.TCPConnector( verify_ssl=False ))

    # Get a handle on the pyJPI library.
    handle = await jpiInit( session )

    # Have an URL somewhere.
    url = "http://myhost.example.com:8080"

    # Then just has to call the library functions.
    try:
        res = await handle.get( url )
        # returns a dict { resp: ClientResponse, text: str } or False
        res = await handle.getDeviceName( url )
        # returns the device name as set by the manufacturer (a single string) or False
        res = await handle.battInfo( url )
        # returns a dict { level: integer, charging: bool, power: bool }


if __name__ == "__main__":
    main()

Available functions

  • async jpiInit( session: aiohttp.ClientSession ) -> JPILibrary:

Initializes the library.

Returns a handle on it.

Available classes

  • JPILibrary:

The class which manages the devices accesses.

Available JPILibrary methods

  • async get( url: str) -> dict:

Runs a HTTP GET method on the specified URL.

Returns a dict with:

    resp: the `aiohttp.ClientResponse`
    text: the resp.text() content
  • async getDeviceName( url: str) -> str:

Runs a HTTP GET method on f"{url}?action=getDeviceName" url.

Returns a string which contains the device name as set by the manufacturer.

  • async battInfo( url: str) -> dict:

Runs a HTTP GET method on on f"{url}?action=battInfo" url.

Returns a dict with:

    level: an integer with the current battery level in %
    charging: a boolean which says if the battery is currently charging
    power: a boolean which says if the power is on on the device.

Contributing

We welcome contributions as well as additional codeowners to pyjpi.

Issues & help

In case of support or error, please report your issue request to our Issues tracker.

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

pyjpi-0.1.15rc0.tar.gz (6.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyjpi-0.1.15rc0-py3-none-any.whl (5.7 kB view details)

Uploaded Python 3

File details

Details for the file pyjpi-0.1.15rc0.tar.gz.

File metadata

  • Download URL: pyjpi-0.1.15rc0.tar.gz
  • Upload date:
  • Size: 6.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.8.18

File hashes

Hashes for pyjpi-0.1.15rc0.tar.gz
Algorithm Hash digest
SHA256 826275c58ea45b71e567f6d0fe28ff6c7ca023925264349b78f77580669eace1
MD5 596475234de1b66af3896631927f02e4
BLAKE2b-256 44c9036193e4a5db5d6300fc1202e64945981b820c715ceda3e5c20178a419c5

See more details on using hashes here.

File details

Details for the file pyjpi-0.1.15rc0-py3-none-any.whl.

File metadata

  • Download URL: pyjpi-0.1.15rc0-py3-none-any.whl
  • Upload date:
  • Size: 5.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.8.18

File hashes

Hashes for pyjpi-0.1.15rc0-py3-none-any.whl
Algorithm Hash digest
SHA256 5b8e0c64083beb7408fc0b056ca34de8dcd0895a328a72c6b6911e1991d62a48
MD5 0a15b6de079fd31ee9bebad8c3b189a4
BLAKE2b-256 0f728997aea655029d45e6a4eabd71e510a2313beccef79f59ea6d43f45c4c4d

See more details on using hashes here.

Supported by

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