Skip to main content

An unofficial Python library to interface with your USMS account and smart meters.

Project description

USMS

An unofficial Python library to interface with your USMS account and smart meters.

Getting Started

Pre-requisites

  • Python >= 3.8
  • pip

Dependencies

Installation

python -m pip install usms

Quickstart

python -m usms --help
usage: __main__.py [-h] [-l LOG] -u USERNAME -p PASSWORD [-m METER] [--unit] [--consumption] [--credit]

options:
  -h, --help            show this help message and exit
  -l LOG, --log LOG
  -u USERNAME, --username USERNAME
  -p PASSWORD, --password PASSWORD
  -m METER, --meter METER
  --unit
  --consumption
  --credit

[!NOTE] The username parameter is the login ID that you use to log-in on the USMS website/app, i.e. your IC Number.

As an example, you can use the following command to get the current remaining unit:

python -m usms -u <ic_number> -p <password> -m <meter> --unit

Usage

from usms import USMSAccount
from datetime import datetime

username = "01001234" # your ic number
password = "hunter1"

# initialize the account
account = USMSAccount(username, password)

# print out the account information
print(account.reg_no)
print(account.name)
print(account.contact_no)
print(account.email)

# print out info on all meters under the account
for meter in account.meters:
    print(meter.no)
    print(meter.type)
    print(meter.address)
    print(meter.remaining_unit)
    print(meter.remaining_credit)

# to get info from a specific meter
meter = account.get_meter(12345678) # example meter number

# getting hourly breakdown of today's consumptions
date = datetime.now()
hourly_consumptions = meter.get_hourly_consumptions(date)
print(hourly_consumptions)
# getting daily breakdown of this month's comsumptions
daily_consumptions = meter.get_daily_consumptions(date)
print(daily_consumptions)

# get yesterday's total consumption
date = date.replace(day=date.day-1)
print(meter.get_total_day_consumption(date))

# get last month's total cost based un total consumption
date = date.replace(month=date.month-1)
print(meter.get_total_month_cost(date))

To-Do

  • Publish package to PyPI
  • Improve README
  • Support for water meter
  • Support for commercial/corporate accounts

License

Distributed under the MIT License. See LICENSE for more information.

Acknowledgments

  • USMS
  • httpx, used to make HTTP requests
  • lxml, used to parse HTML responses)

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

usms-0.3.3.tar.gz (10.6 kB view details)

Uploaded Source

Built Distribution

usms-0.3.3-py3-none-any.whl (9.7 kB view details)

Uploaded Python 3

File details

Details for the file usms-0.3.3.tar.gz.

File metadata

  • Download URL: usms-0.3.3.tar.gz
  • Upload date:
  • Size: 10.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for usms-0.3.3.tar.gz
Algorithm Hash digest
SHA256 8f8a4b2e6dd843040a558b063c7d8235b17d26bbc1a8ae7bd2dc46a6dd61be07
MD5 046c4103580cb04b9689ac5b5347f758
BLAKE2b-256 12b2dbb660a39eeefbd5c8a4222d50fd7f725ba608ac1be8bbebe967cff4ebb6

See more details on using hashes here.

File details

Details for the file usms-0.3.3-py3-none-any.whl.

File metadata

  • Download URL: usms-0.3.3-py3-none-any.whl
  • Upload date:
  • Size: 9.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for usms-0.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 d6abed47d68903dcce6e99e32bec1244a8d4ffb3d6443026bc929008c11d17a4
MD5 d8a3e8652f76d31c951fa2089ef69db7
BLAKE2b-256 8d10779cb1734f90790a31975f7a39e446ee683c83f31607a19e8de65aef0e18

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