LwM2M Registry に多くのリソースが定義されていますが、独自に定義できます。これをカスタムオブジェクトと呼びます。 カスタムオブジェクトは XML, JSON で定義します。
カスタムオブジェクトは以下の手順で行います。カスタムオブジェクトを定義する場合、これに対応したクライアントエージェントの実装も必要となります。
- モデル定義 XML の作成
- クライアントエージェントを実装する
- 実装クラスの作成
main
関数でモデル定義 XML と実装クラスの読み込み
- Inventory へのモデル定義 XML の適用
ステップ 1: モデル定義 XML を作成する
以下は ObjectID 30000
を XML で定義した例となります。
<?xml version="1.0" encoding="UTF-8"?>
<LWM2M xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://openmobilealliance.org/tech/profiles/LWM2M.xsd">
<Object ObjectType="MODefinition">
<Name>Custom Model</Name>
<Description1>Custom model</Description1>
<ObjectID>30000</ObjectID>
<ObjectURN>urn:oma:lwm2m:oma:30000</ObjectURN>
<MultipleInstances>Single</MultipleInstances>
<Mandatory>Optional</Mandatory>
<Resources>
<Item ID="0">
<Name>CurrentX</Name>
<Operations>R</Operations>
<MultipleInstances>Single</MultipleInstances>
<Mandatory>Mandatory</Mandatory>
<Type>Float</Type>
<RangeEnumeration />
<Units>m</Units>
<Description>Current location in X.</Description>
</Item>
<Item ID="1">
<Name>TargetX</Name>
<Operations>RW</Operations>
<MultipleInstances>Single</MultipleInstances>
<Mandatory>Mandatory</Mandatory>
<Type>Float</Type>
<RangeEnumeration />
<Units>m</Units>
<Description>Target location in X.</Description>
</Item>
<Item ID="2">
<Name>Execute Command</Name>
<Operations>E</Operations>
<MultipleInstances>Single</MultipleInstances>
<Mandatory>Mandatory</Mandatory>
<Type />
<RangeEnumeration />
<Units />
<Description>Execute command.</Description>
</Item>
</Resources>
<Description2 />
</Object>
</LWM2M>
ObjectID 30099, 30100, 30101, 30110, 30111 を SORACOM Mosaic で利用しています。
ステップ 2: クライアントエージェントを実装する
実装クラスの作成および main
関数でのモデル定義 XML と実装クラスの読み込みはクライアントエージェント側の実装となります。SORACOM Inventory Agent for Java の Readme をご確認ください。ソースコードを入手可能です。
ステップ 3: Inventory へのモデル定義 XML を適用する
コンソールのメニュー[オブジェクトモデル]をクリックします。
[オブジェクトモデルの追加]をクリックします。
「1. モデル定義 XML の作成」で作成したデバイスオブジェクトモデルを入力します。XML と JSON 形式での入力が可能です。
以下のようにカスタムオブジェクトが定義できました。
以上でユーザーコンソールからカスタムオブジェクト、リソース名を表示できます。