Mobius4 is the next version of Mobius which basically implements the global IoT middleware standard, oneM2M. This new version provides the new code base with modern Javascript async-await syntax for better readibility and maintenance. Also, the database has been changed from MySQL to PostgreSQL with PostGIS.
In oneM2M Release 5, TR-0071 is defining candidate solutions for AIoT applications. Mobius4 implements those features in advance before the public release so developers can try them.
Mobius4 implements oneM2M Common Services Entity (CSE) which is the IoT middleware. By the configuration, it runs as ASN/MN-CSE as well as IN-CSE.
oneM2M protocol bindings:
- HTTP
- MQTT
oneM2M primitive serialization:
- JSON
oneM2M resource types (until Release 4):
- CSEBase, AE, remoteCSE
- accessControlPolicy
- container, contentInstance, latest, oldest
- subscription
- group, fanOutPoint
oneM2M resource types (oneM2M TR-0071, next release):
- modelRepo, mlModel, modelDeployList, modelDeployment
- mlDatasetPolicy, dataset, datasetFragment
Other features:
- discovery with Filter Criteria parameter
- geo-query with location common attribute (Rel-4 feature)
- children resources retrieval with Result Content parameter
Try oneM2M APIs over HTTP binding with Postman client. You can download Postman script collection and import it on your Postman. There are two variables set in the collection mp_url for Mobius4 platform URL and cb for CSEBase resource name, so please add in your Postman variable settings.
There are some modifications from the previous version so please check Mobius4 how-to for the Mobius developers. If you're trying the new oneM2M features on AI, check Rel-5 features how-to.
Since Mobius4 is developed with Node.js and PostgreSQL, any operating system that supports them can run Mobius4.
- Node.js v22
- PostgreSQL v17
- PostGIS
- MQTT broker (e.g. Mosquitto)
-
Create a database named
mobius4on PostgreSQL -
Get Mobius4 source codes from this git repository
git clone https://github.com/iotketi/mobius4- Install node packages in the 'mobius4' folder
cd mobius4
npm install-
Set Mobius4 configuration file
config/default.json -
Run Mobius4
node mobius4.jsYou can change the following settings in the config/default.json configuration file.
| level 1 | level 2 | description |
|---|---|---|
| cse | cse_type | CSE Mode (1: IN, 2: MN, 3: ASN) |
| cse | sp_id | M2M Service Provider ID which shall start with '//' |
| cse | cse_id | CSE ID which shall start with '/' |
| cse | csebase_rn | Resource name of the CSEBase resource |
| cse | poa | Point of access of this CSE |
| cse | registrar.cse_type | CSE type of the Registrar (registration target) when this CSE registers to another CSE |
| cse | registrar.cse_id | CSE ID of the Registrar |
| cse | registrar.csebase_rn | CSEBase resource name of the Registrar |
| cse | registrar.ip | IP address of the Registrar |
| cse | registrar.port | Port number of the Registrar |
| cse | registrar.versions | Supported oneM2M versions of the Registrar |
| cse | admin | ID of the Administrator which has full privileges to any of resources |
| cse | aeid_length | String length of AE ID |
| cse | expired_resource_cleanup_interval_days | Interval of expired(obsolete) resource cleanup in days |
| cse | discovery_limit | Max number of resource IDs in the discovery response |
| cse | allow_discovery_for_any | If this is true, access control is ommitted for discovery operation which can reduce reponse time. |
| cse | keep_alive_timeout | HTTP session timeout in seconds |
| cb | default_acp | Default accessControlPolicy resource which is created at the initial run. This is set to the CSEBase resouce. |
| cb | default_acp.rn | Resource name of the default accessControlPolicy resource. |
| cb | default_acp.create | Allow Create privilege |
| cb | default_acp.retrieve | Allow Retrieve privilege |
| cb | default_acp.update | Allow Update privilege |
| cb | default_acp.delete | Allow Delete privilege |
| cb | default_acp.discovery | Allow Discovery privilege |
| request | max_body_size | Max HTTP body size |
| http | port | HTTP server port |
| https | port | HTTPS server port |
| mqtt | ip | MQTT broker IP address |
| mqtt | port | MQTT broker port number |
| db | host | Database address |
| db | port | Database port number |
| db | name | Database name: mobius4 |
| db | user | User name |
| db | pw | User password |
| length | entity_id | Lenght of AE and CSE ID |
| length | ri | Length of resourceID (ri) attribute |
| length | pi | Length of parentID (pi) attribute |
| length | rn_random | Length of random string part of resourceName (rn |
| length | rn | Max length of resourceName (rn) attribute |
| length | structured_res_id | Max length of structured resource ID e.g. Mobius/cnt1 |
| length | str_token | Length of each string token e.g. cnt1 |
| length | url | e.g. pointOfAcess attribute |
| length | data | e.g. datasetFagment attribute |
| default | common.et_month | Default number of months for resource expiration. expiration time = current time + et_month |
| default | container.mbs | Default maxNumberOfSize of a container resource |
| default | container.mni | Default maxNumberOfInstance of a container resource |
| default | container.mia | Default maxNumberOfAge of a container resource |
| default | datasetPolicy.tcd | Default time correlation duration for a dataset creation |
| default | datasetPolicy.nvp | Default null value policy for a dataset creation |
| default | datasetPolicy.nrhd | Default number of rows in historical dataset |
| default | datasetPolicy.nrld | Default number of rows in live dataset |
Mobius provides oneM2M resource browser tool for real-time monitoring the resource events in Mobius4. Mobius version 4 compatible resource browser can be downloaded in the "Releases" menu on this github repository (on the right handside).
When the pop up requests for ACP Originator name, put your Admin ID in your configuration (e.g. SM) to have full privileges to access all of your resources.
| Version | Date | description |
|---|---|---|
| 4.0.0 | 2025-09-22 | Initial release of Mobius4 |
