A MicroPython client for interacting with OM2M CSE (Work in Progress).
Project description
OM2M Python Client Documentation
This README provides a step-by-step guide to using the OM2M Python client to interact with an OM2M MN-CSE (Middle Node Common Services Entity). The code demonstrates creating and managing resources such as Application Entities (AE), Containers, ContentInstances, and Subscriptions.
Prerequisites
- Ensure you have an OM2M MN-CSE server running and accessible.
- Install the
om2m-clientlibrary:pip install micropython-om2m-client
- Adjust the
base_urland credentials to match your MN-CSE setup.
Example Steps
Step 1: Initialize the OM2M Client
Initialize the client with the base URL, CSE ID, CSE name, and authentication credentials.
from om2m_client.client import OM2MClient
client_mn = OM2MClient(
base_url="http://127.0.0.1:8282", # Adjust to your MN-CSE base URL
cse_id="mn-cse", # MN-CSE identifier
cse_name="mn-name", # MN-CSE resource name
username="admin", # Authentication username
password="admin", # Authentication password
use_json=True # Use JSON for data exchange
)
Step 2: Create an Application Entity (AE)
Create an AE under the MN-CSE with specific properties.
from om2m_client.models import AE
mn_ae = AE(
rn="MY_GATEWAY_SENSOR5", # Resource Name
api="mn-sensor-app5", # Application Identifier
rr=False, # Request Reachability
lbl=["Type/gatewaySensor", "Location/factory"]
)
ae_resource_id = client_mn.create_ae(mn_ae)
print("AE Resource ID (MN-CSE):", ae_resource_id)
Step 3: Create a Container
Create a Container under the previously created AE.
from om2m_client.models import Container
container_path = f"/{client_mn.cse_id}/{client_mn.cse_name}/{mn_ae.rn}"
mn_container = Container(
rn="DATA", # Container Name
lbl=["Category/temperature", "Unit/celsius"]
)
container_resource_id = client_mn.create_container(container_path, mn_container)
print("Container Resource ID (MN-CSE):", container_resource_id)
Step 4: Add a ContentInstance
Add a ContentInstance under the Container to store sensor data.
from om2m_client.models import ContentInstance
cin_path = f"{container_path}/DATA"
mn_cin = ContentInstance(
cnf="application/json", # Content Format
con="{\"temperature\": 27}" # Content (JSON string)
)
cin_resource_id = client_mn.create_content_instance(cin_path, mn_cin)
print("ContentInstance Resource ID (MN-CSE):", cin_resource_id)
Step 5: Discover Resources by Label
Retrieve resources matching a specific label, such as "Type/gatewaySensor".
discovery_response = client_mn.discover_resources_by_label("Type/gatewaySensor")
print("Discovery Response (MN-CSE):")
print(discovery_response)
Step 6: Create a Subscription
Create a Subscription to receive notifications on changes to the DATA container.
from om2m_client.models import Subscription
subscription_path = f"{container_path}/DATA"
mn_subscription = Subscription(
rn="MY_DATA_SUB", # Subscription Name
nu="http://localhost:1400/monitor", # Notification URI (local listener required)
nct=2 # Notification Content Type
)
subscription_resource_id = client_mn.create_subscription(subscription_path, mn_subscription)
print("Subscription Resource ID (MN-CSE):", subscription_resource_id)
Step 7: Retrieve and Print Resources
Retrieve and print the AE and Container content.
Retrieve AE Resource
retrieved_ae = client_mn.retrieve_resource(f"/{client_mn.cse_id}/{client_mn.cse_name}/MY_GATEWAY_SENSOR")
print("Retrieved AE Content (MN-CSE):")
print(retrieved_ae)
Retrieve Container Content
retrieved_data = client_mn.retrieve_resource(cin_path)
print("Retrieved DATA Container Content (MN-CSE):")
print(retrieved_data)
Notes
- Replace placeholders such as
base_url,cse_id,cse_name,username, andpasswordwith your actual OM2M server details. - Ensure your OM2M server is correctly configured to allow the operations in this example.
- The example assumes the MN-CSE uses JSON for communication.
This example serves as a template for integrating and managing resources using OM2M and Python. Customize it as needed for your specific use case.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file micropython_om2m_client-0.1.0b4.tar.gz.
File metadata
- Download URL: micropython_om2m_client-0.1.0b4.tar.gz
- Upload date:
- Size: 6.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.10.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
91a23da77bc3c861dd80736a8639495f856dd409f57a333b8d322cb1d4e35586
|
|
| MD5 |
aaaecc5d8f7645e9b8df389de9198f6e
|
|
| BLAKE2b-256 |
d69c868efb94a2f20eafd8ba3d24d61f05e505dbefbb71f7d171306a422f51fe
|
File details
Details for the file micropython_om2m_client-0.1.0b4-py3-none-any.whl.
File metadata
- Download URL: micropython_om2m_client-0.1.0b4-py3-none-any.whl
- Upload date:
- Size: 8.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.10.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
be5df6305db0415277fe57a1508f8d60029a6478bf6ab2f94fcbef7ebf9595c1
|
|
| MD5 |
590cb0292ba906a0463530017852a53f
|
|
| BLAKE2b-256 |
d9cd8cbc42cc3bdcb136c508a81e3a846ac0ff7bec58c453d92f83f3120194f0
|