Name | pynanomodem JSON |
Version |
0.2.2
JSON |
| download |
home_page | None |
Summary | A Python implementation for Viasat IoT Nano modems. |
upload_time | 2025-08-21 12:54:49 |
maintainer | None |
docs_url | None |
author | Your Name |
requires_python | <4.0,>=3.10 |
license | Apache2.0 |
keywords |
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# pynanomodem
A Python library/package for interfacing to modems using Viasat's
[**IoT Nano**](https://www.viasat.com/enterprise/services/iot-nano)
satellite IoT service.
IoT Nano is a **Non-IP** messaging service offering very low power consumption,
low cost modules and devices for small amounts of data.
IoT Nano is intended for event-based remote data collection and device remote
control, combining two network protocols sharing the same global coverage:
* IDP (aka IsatData Pro) is a mature global service offering message size up
to about 5 kilobytes, relatively low latency of less than 20 seconds for small
messages and low throughput about 0.1 kbps.
* OGx offers various improvements to IDP such as lower power consuming
configurations, larger messages and faster throughput for larger messages.
These network protocols are optimized for geostationary satellite use, developed
by ORBCOMM in partnership with Viasat. The service(s) operate over the Viasat
global L-band global network and can be procured through a varietry of
authorized Viasat IoT service partners.
Example modems available:
* [Quectel CC200A-LB](https://www.quectel.com/product/cc200a-lb-satellite-communication-module)
* [ORBCOMM ST2100](https://www.orbcomm.com/en/partners/iot-hardware/st-2100)
* [ORBCOMM ST4000 / uBlox UBX-S52](https://content.u-blox.com/sites/default/files/documents/UBX-R52-S52_ProductSummary_UBX-19026227.pdf)
> [!NOTE]
> Obsoletes/replaces the Inmarsat `idpmodem` and `pynimomodem` projects.
## Installation and Use
Installing using pip:
```
pip install 'pynanomodem'
```
The library provides an abstract base class to encapsulate manufacturer-specific
AT commands as a common set of methods such as:
* `mo_message_send`
* `mt_message_recv`
* `get_location`
* `set_wakeup_interval`
* `get_network_state`
Viasat and/or manufacturers provide model-specific subclasses through
access to GitHub repositories based on mutual non-disclosure agreement.
## Background
### System Overview
*IoT Nano* is a store-and-forward satellite messaging technology
with flexible message sizes offering 2-way remote communications.
***Message***s are sent to or collected from a ***Device*** using its globally
unique *Device ID* (aka Mobile ID),
transacted through a ***Mailbox*** that provides authentication, encryption and
data segregation for cloud-based or enterprise client applications via a
REST **Messaging API**.
Messages can be *Mobile-Originated* (**MO**) sent by the remote device, or
*Mobile-Terminated* (**MT**) sent to the device.
Sensors and controls in the field are typically interfaced to a microcontroller
unit (MCU) connected to a satellite modem using a serial
interface with *AT commands* to send and receive messages, check network status,
and optionally use the built-in *Global Navigation Satellite System* (GNSS)
receiver to determine location-based information.
The first byte of the message is referred to as the
*Service Identification Number* (**SIN**) where values below 16 are reserved
for system use. SIN is intended to capture the concept of embedded
microservices used by an application.
The second byte of the message can optionally be defined as the
*Message Identifier Number* (**MIN**) intended to support remote operations
within each *SIN* embedded microservice with predefined binary formatting.
The *MIN* concept also supports an optional *codec* feature
allowing an XML file to be applied to a Mailbox to decode binary data into
a JSON-tagged message structure for easier integration to cloud applications.
### Modem Concept of Operation
1. Upon power-up or reset, the modem first acquires its location using
Global Navigation Satellite Systems (GNSS).
1. After getting its location, the modem tunes to the correct frequency, then
registers on the network. Once registered it can communicate on the
network.
1. MO messages are submitted by a microcontroller or IoT Edge device, which
then must monitor progress until the message is complete (either delivered or
timed out/failed due to blockage). Completed messages must then be cleared from
the modem transmit queue.
1. MT messages that arrive are stored in the modem's receive queue and the MCU
queries for *new* MT messages periodically or when prompted by the modem's
event notification mechanisms, if configured.
1. Network acquisition status and signal strength can also be queried using AT
commands.
1. Power saving features can be configured locally using AT commands or remotely
using the Messaging API. The primary mechanism for power savings is a
configurable *wakeup interval* that gets negotiated with the network so that
the network can store MT messages until the next modem wakeup.
1. If the modem cannot find the target frequency it begins to search for other
frequencies from a configuration map in its non-volatile memory. It will cycle
through beam acquisition attempts for a period of time before falling back to
a globally-accessible frequency where it may need to download
a new network configuration before re-attempting.
1. Prolonged obstruction of satellite signal will put the modem into *blockage*
state from which it will automatically try to recover based on an algorithm
influenced by its *power mode* setting.
## More Information
To find out more details about system integration and the detailed operation
of the IoT Nano service, please contact your local Viasat representative or
authorized distributor to sign a mutual non-disclosure agreement and
request access to the
[IoT Nano Developer Kit](https://github.com/inmarsat-enterprise/idp-developer-kit-nda)
repository.
Raw data
{
"_id": null,
"home_page": null,
"name": "pynanomodem",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.10",
"maintainer_email": null,
"keywords": null,
"author": "Your Name",
"author_email": "you@example.com",
"download_url": "https://files.pythonhosted.org/packages/d5/75/3f131ee5529e7519ff3f9009da7555a161dc73967a574f9700e29de20dac/pynanomodem-0.2.2.tar.gz",
"platform": null,
"description": "# pynanomodem\n\nA Python library/package for interfacing to modems using Viasat's\n[**IoT Nano**](https://www.viasat.com/enterprise/services/iot-nano)\nsatellite IoT service.\n\nIoT Nano is a **Non-IP** messaging service offering very low power consumption,\nlow cost modules and devices for small amounts of data.\nIoT Nano is intended for event-based remote data collection and device remote\ncontrol, combining two network protocols sharing the same global coverage:\n\n* IDP (aka IsatData Pro) is a mature global service offering message size up\nto about 5 kilobytes, relatively low latency of less than 20 seconds for small\nmessages and low throughput about 0.1 kbps.\n* OGx offers various improvements to IDP such as lower power consuming\nconfigurations, larger messages and faster throughput for larger messages.\n\nThese network protocols are optimized for geostationary satellite use, developed\nby ORBCOMM in partnership with Viasat. The service(s) operate over the Viasat\nglobal L-band global network and can be procured through a varietry of\nauthorized Viasat IoT service partners.\n\nExample modems available:\n* [Quectel CC200A-LB](https://www.quectel.com/product/cc200a-lb-satellite-communication-module)\n* [ORBCOMM ST2100](https://www.orbcomm.com/en/partners/iot-hardware/st-2100)\n* [ORBCOMM ST4000 / uBlox UBX-S52](https://content.u-blox.com/sites/default/files/documents/UBX-R52-S52_ProductSummary_UBX-19026227.pdf)\n\n> [!NOTE]\n> Obsoletes/replaces the Inmarsat `idpmodem` and `pynimomodem` projects.\n\n## Installation and Use\n\nInstalling using pip:\n```\npip install 'pynanomodem'\n```\n\nThe library provides an abstract base class to encapsulate manufacturer-specific\nAT commands as a common set of methods such as:\n\n* `mo_message_send`\n* `mt_message_recv`\n* `get_location`\n* `set_wakeup_interval`\n* `get_network_state`\n\nViasat and/or manufacturers provide model-specific subclasses through\naccess to GitHub repositories based on mutual non-disclosure agreement.\n\n## Background\n\n### System Overview\n\n*IoT Nano* is a store-and-forward satellite messaging technology\nwith flexible message sizes offering 2-way remote communications.\n\n***Message***s are sent to or collected from a ***Device*** using its globally\nunique *Device ID* (aka Mobile ID),\ntransacted through a ***Mailbox*** that provides authentication, encryption and\ndata segregation for cloud-based or enterprise client applications via a\nREST **Messaging API**.\n\nMessages can be *Mobile-Originated* (**MO**) sent by the remote device, or\n*Mobile-Terminated* (**MT**) sent to the device.\n\nSensors and controls in the field are typically interfaced to a microcontroller\nunit (MCU) connected to a satellite modem using a serial\ninterface with *AT commands* to send and receive messages, check network status,\nand optionally use the built-in *Global Navigation Satellite System* (GNSS)\nreceiver to determine location-based information.\n\nThe first byte of the message is referred to as the\n*Service Identification Number* (**SIN**) where values below 16 are reserved\nfor system use. SIN is intended to capture the concept of embedded\nmicroservices used by an application.\n\nThe second byte of the message can optionally be defined as the\n*Message Identifier Number* (**MIN**) intended to support remote operations \nwithin each *SIN* embedded microservice with predefined binary formatting.\nThe *MIN* concept also supports an optional *codec* feature\nallowing an XML file to be applied to a Mailbox to decode binary data into\na JSON-tagged message structure for easier integration to cloud applications.\n\n### Modem Concept of Operation\n\n1. Upon power-up or reset, the modem first acquires its location using \nGlobal Navigation Satellite Systems (GNSS).\n1. After getting its location, the modem tunes to the correct frequency, then\nregisters on the network. Once registered it can communicate on the\nnetwork.\n1. MO messages are submitted by a microcontroller or IoT Edge device, which\nthen must monitor progress until the message is complete (either delivered or\ntimed out/failed due to blockage). Completed messages must then be cleared from\nthe modem transmit queue.\n1. MT messages that arrive are stored in the modem's receive queue and the MCU\nqueries for *new* MT messages periodically or when prompted by the modem's\nevent notification mechanisms, if configured.\n1. Network acquisition status and signal strength can also be queried using AT\ncommands.\n1. Power saving features can be configured locally using AT commands or remotely\nusing the Messaging API. The primary mechanism for power savings is a\nconfigurable *wakeup interval* that gets negotiated with the network so that\nthe network can store MT messages until the next modem wakeup.\n1. If the modem cannot find the target frequency it begins to search for other\nfrequencies from a configuration map in its non-volatile memory. It will cycle\nthrough beam acquisition attempts for a period of time before falling back to\na globally-accessible frequency where it may need to download\na new network configuration before re-attempting.\n1. Prolonged obstruction of satellite signal will put the modem into *blockage*\nstate from which it will automatically try to recover based on an algorithm\ninfluenced by its *power mode* setting.\n\n## More Information\n\nTo find out more details about system integration and the detailed operation\nof the IoT Nano service, please contact your local Viasat representative or\nauthorized distributor to sign a mutual non-disclosure agreement and\nrequest access to the\n[IoT Nano Developer Kit](https://github.com/inmarsat-enterprise/idp-developer-kit-nda)\nrepository.",
"bugtrack_url": null,
"license": "Apache2.0",
"summary": "A Python implementation for Viasat IoT Nano modems.",
"version": "0.2.2",
"project_urls": null,
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "a93efe659cb6977ba06bb5429e527dd324d7eb26b402feb17fab608c9962c160",
"md5": "228de25271f9534dd25ef0c1fbfb8f01",
"sha256": "776763b86f34e315b13ea13bb74dca511b4d92b0faec12a0d5610cf6b3a45407"
},
"downloads": -1,
"filename": "pynanomodem-0.2.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "228de25271f9534dd25ef0c1fbfb8f01",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.10",
"size": 24995,
"upload_time": "2025-08-21T12:54:48",
"upload_time_iso_8601": "2025-08-21T12:54:48.543959Z",
"url": "https://files.pythonhosted.org/packages/a9/3e/fe659cb6977ba06bb5429e527dd324d7eb26b402feb17fab608c9962c160/pynanomodem-0.2.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d5753f131ee5529e7519ff3f9009da7555a161dc73967a574f9700e29de20dac",
"md5": "6eccef26e9973d7b4de740604bf14f6e",
"sha256": "19ce49235acccb9e1a00509c6073bbdf2be5a2821b063cb7fc153764fdc1ff23"
},
"downloads": -1,
"filename": "pynanomodem-0.2.2.tar.gz",
"has_sig": false,
"md5_digest": "6eccef26e9973d7b4de740604bf14f6e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.10",
"size": 24058,
"upload_time": "2025-08-21T12:54:49",
"upload_time_iso_8601": "2025-08-21T12:54:49.319710Z",
"url": "https://files.pythonhosted.org/packages/d5/75/3f131ee5529e7519ff3f9009da7555a161dc73967a574f9700e29de20dac/pynanomodem-0.2.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-21 12:54:49",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "pynanomodem"
}