The CSE implementation successfully passes most of the oneM2M Release 1 test cases, and all relevant test cases from Release 2, 3 and 4.
The ACME CSE supports oneM2M release 1, 2a, 3, and 4 for the supported resource types and functionalities listed below.
The ACME CSE supports the following CSE types:
CSE Type | Supported |
---|---|
IN | ✓ |
MN | ✓ |
ASN | ✓ |
The ACME CSE supports the following oneM2M resource types:
Resource Type | Supported | Remarks & Limitations |
---|---|---|
Access Control Policy (ACP) | ✓ | Attribute-based access control is yet not supported |
Action (ACTR) | ✓ | No support for the input attribute. |
Application Entity (AE) | ✓ | |
Container (CNT) | ✓ | |
ContentInstance (CIN) | ✓ | |
CrossResourceSubscription (CRS) | ✓ | |
CSEBase (CB) | ✓ | |
Dependency (DEPR) | ✓ | |
FlexContainer & Specializations | ✓ | Any specialization is supported and validated. See Importing Attribute Policies for further details. Supported specializations include: TS-0023 R4, GenericInterworking, AllJoyn. |
FlexContainerInstance | ✓ | Experimental. This is an implementation of the draft FlexContainerInstance specification. |
Group (GRP) | ✓ | The support includes requests via the fopt (fanOutPoint) virtual resource. Groups may contain remote resources. |
LocationPolicy (LCP) | ✓ | Only device based location policy is supported. The LCP's cnt stores geo-coordinates and geo-fencing results. |
Management Objects | ✓ | See also the list of supported management objects. |
Node (NOD) | ✓ | |
Polling Channel (PCH) | ✓ | Support for Request and Notification long-polling via the pcu (pollingChannelURI) virtual resource. requestAggregation functionality is supported, too. |
Remote CSE (CSR) | ✓ | Announced resources are supported. Transit request to resources on registered CSE's are supported. |
Request (REQ) | ✓ | Support for non-blocking requests. |
Schedule (SCH) | ✓ | Support for CSE communication, nodes, subscriptions and crossResourceSubscriptions. |
SemanticDescriptor (SMD) | ✓ | Support for basic resource handling and semantic queries. |
Subscription (SUB) | ✓ | Notifications via http(s) (direct url or an AE's Point-of-Access (POA)). BatchNotifications, attributes, statistics. Not all features are supported yet. |
TimeSeries (TS) | ✓ | Including missing data notifications. |
TimeSeriesInstance (TSI) | ✓ | dataGenerationTime attribute only supports absolute timestamps. |
TimeSyncBeacon (TSB) | ✓ | Experimental. Implemented functionality might change according to specification changes. |
The following table presents the supported management object specifications.
Management Objects |
---|
AreaNwkDeviceInfo (ANDI) |
AreaNwkInfo (ANI) |
Battery (BAT) |
DataCollect (DATC) |
DeviceCapability (DVC) |
DeviceInfo (DVI) |
EventLog (EVL) |
Firmware (FWR) |
Memory (MEM) |
MyCertFileCred (NYCFC) |
Reboot (REB) |
Software (SWR) |
WifiClient (WIFIC) |
Functionality | Supported | Remark |
---|---|---|
AE registration | ✓ | |
Blocking requests | ✓ | |
Delayed request execution | ✓ | Through the Operation Execution Timestamp request attribute. |
Discovery | ✓ | |
Geo-query | ✓ | |
Location | ✓ | Only *device based, and no network based location policies are supported. |
Long polling | ✓ | Long polling for request unreachable AEs and CSEs through <pollingChannel>. |
Non-blocking requests | ✓ | Non-blocking synchronous and asynchronous, and flex-blocking, incl. Result Persistence. |
Notifications | ✓ | E.g. for subscriptions and non-blocking requests. |
Partial Retrieve | ✓ | Support for partial retrieve of individual resource attributes. |
Remote CSE registration | ✓ | |
Request expiration | ✓ | The Request Expiration Timestamp request attribute |
Request forwarding | ✓ | Forwarding requests from one CSE to another. |
Request parameter validations | ✓ | |
Resource addressing | ✓ | CSE-Relative, SP-Relative and Absolute as well as hybrid addressing are supported. |
Resource announcements | ✓ | Under the CSEBaseAnnc resource (R4 feature). Bi-directional update sync. |
Resource expiration | ✓ | |
Resource validations | ✓ | |
Result expiration | ✓ | The Result Expiration Timestamp request attribute. Result timeouts for non-blocking requests depend on the resource expiration interval. |
Semantics | ✓ | Basic support for semantic descriptors and semantic queries and discovery. |
Standard oneM2M requests | ✓ | CREATE, RETRIEVE, UPDATE, DELETE, NOTIFY |
Subscriptions | ✓ | Incl. batch notification, and resource type and attribute filtering. |
Time Synchronization | ✓ | |
TimeSeries data handling | ✓ | Incl. missing data detection, monitoring and notifications. |
Functionality | Remark |
---|---|
HTTP CORS | Support for Cross-Origin Resource Sharing to support http(s) redirects. |
HTTP Authorization | Basic support for basic and bearer (token) authorization. |
HTTP WSGI | Support for the Python Web Server Gateway Interface to improve integration with a reverse proxy or API gateway, ie. Nginx. |
Text Console | Control and manage the CSE, inspect resources, run scripts in a text console. |
Test UI | Text-based UI to inspect resources and requests, configurations, stats, and more |
Testing: Upper Tester | Basic support for the Upper Tester protocol defined in TS-0019, and additional command execution support. |
Request Recording | Record requests to and from the CSE to learn and debug requests over Mca and Mcc. |
Script Interpreter | Lisp-based scripting support to extent functionalities, implement simple AEs, prototypes, test, ... |
Web UI |
These features are prove-of-concept implementations of new and currently discussed oneM2M features. They are not yet part of the oneM2M standard.
Functionality | Remark |
---|---|
Enhanced CSR functionality | Support of new eventEvaluationMode to react in missing events |
Subscription References | Support for subscription references for resource instead of direct subscriptions. |
Advanced Queries | Experimental implementation of a new query language to support enhanced query capabilities |
Simplified Time Synchronization | Experimental implementation of a simplified time synchronization mechanism. |
Support for DELETE requests for http/1.0 | Using PATCH requests to emulate DELETE requests for http/1.0 clients. |
The following result contents are implemented for standard oneM2M requests & discovery:
Discovery Type | RCN |
---|---|
nothing | 0 |
attributes | 1 |
hierarchical address | 2 |
hierarchical address + attributes | 3 |
attributes + child-resources | 4 |
attributes + child-resource-references | 5 |
child-resource-references | 6 |
original-resource | 7 |
child-resources | 8 |
modified attributes | 9 |
semantic content | 10 |
discovery result references | 11 |
Notification Event Types | Supported |
---|---|
resourceUpdate | ✓ |
resourceUpdate | ✓ |
createDirectChild | ✓ |
deleteDirectChild | ✓ |
retrieveCNTNoChild | ✗ |
triggerReceivedForAE | ✗ |
blockingUpdate | ✓ |
missingData | ✓ |
The following Protocol Bindings are supported:
Protocol Binding | Supported | Remark |
---|---|---|
http | ✓ | incl. TLS (https) and CORS support. basic and bearer authentication. Experimental: Using PATCH to replace missing DELETE in http/1.0 |
coap | ✗ | |
mqtt | ✓ | incl. mqtts |
WebSocket | ✗ |
The supported bindings can be used together, and combined and mixed in any way.
The following serialization types are supported:
Serialization Type | Supported | Remark |
---|---|---|
JSON | ✓ | In addition to normal JSON syntax, C-style comments ("//...", "#..." and "/* ... */") are supported as well. |
CBOR | ✓ | |
XML | ✗ |
The supported serializations can be used together, e.g. between different or even the same entity.
The ACME CSE runs at least on the following runtime environments:
Runtime Environment | Supported | Remark |
---|---|---|
Generic Linux | ✓ | Including Raspberry Pi OS (32bit) on Raspberry Pi 3 and 4. |
Mac OS | ✓ | Intel and Apple silicon. |
MS Windows | ✓ | |
Jupyter Notebooks | ✓ | ACME CSE can be run headless inside a Jupyter Notebook. |
- The intention of this CSE implemention is to support education and learning, experiments, and demonstrations, but not a production environment. Use it at your own risk.
- The underlying communication stacks and database system are not optimized in any way for high-volume, high-availability, or high-reliability.
- Unsupported resource types are just stored, but no validations or functionality are provided for those resources.