pablo / huawei-modem-python-api-client

Modem USB Huawei HTTP API Python client
MIT License
120 stars 50 forks source link
hacktoberfest

Build Status codecov Python Version PyPI Status PyPI Downloads Licence

Python HTTP API client for Huawei Modems

This is a python library to interact with a Huawei modem over HTTP API.

The library has been tested on these devices:

Please let me know if you tested it successfully with other modems as well.

Currently Supported

Prerequisites

requests library (and its dependencies) is required. six library (and its dependencies for Python 2 and 3 compatibility) typing library (support for type hints)

This is requirements.txt content:

requests>=2.25.1
six>=1.15.0
typing>=3.7.4.3

Installing

pip install huawei-modem-api-client

Example

import huaweisms.api.user
import huaweisms.api.wlan
import huaweisms.api.sms

ctx = huaweisms.api.user.quick_login("myusername", "mypassword")
print(ctx)
# output: <ApiCtx modem_host=192.168.8.1>

# sending sms
huaweisms.api.sms.send_sms(
    ctx,
    'phone-number',
    'this is the sms message'
)

# connected devices
device_list = huaweisms.api.wlan.get_connected_hosts(ctx)

Note: The default modem host is assumed to be 192.168.8.1. If that is not the case for you, you can specify your modem ip as follows:

import huaweisms.api.user
ctx = huaweisms.api.user.quick_login("myusername", "mypassword", modem_host='10.11.12.13')
print(ctx)

#output: <ApiCtx modem_host=10.11.12.13>

HTTPS Examples

When the router uses HTTPS instead of HTTP, you can pass the uri_scheme when creating the context instance which becomes used on subsequent api calls that use the same context.

import huaweisms.api.user
ctx = huaweisms.api.user.quick_login(
  'username',
  'password',
  modem_host='192.168.12.13',
  uri_scheme='https'
)

If the router that uses HTTPS uses self-signed certificates, there will be SSL errors. You can ignore certificate validation/verification as follows:

import huaweisms.api.user
ctx = huaweisms.api.user.quick_login(
  'username',
  'password',
  modem_host='192.168.12.13',
  uri_scheme='https',
  verify=False
)

Built With

Contributing

Send me a PM if you want to contribute.

Authors

License

This project is licensed under the MIT License - see the LICENSE.md file for details