Details
-
Type: Monitor
-
Status: Open
-
Priority: Major
-
Resolution: Unresolved
-
Affects Version/s: None
-
Fix Version/s: None
-
Component/s: FIWARE-TECH-HELP
-
HD-Enabler:IDAS
Description
Created question in FIWARE Q/A platform on 11-03-2019 at 18:03
Please, ANSWER this question AT https://stackoverflow.com/questions/55107058/fiware-android-leshan-based-client-to-lwm2miotagent
Question:
FIWARE - Android Leshan-based Client to LwM2MIoTAgent
Description:
My experiment consists of using an Android Client (https://github.com/ApplicationPlatformForIoT/LwM2MDemoClientAndroid) and make it interact with the FIWARE LwM2MIoT Agent (https://github.com/telefonicaid/lightweightm2m-iotagent)
1) I am able to establish communication between the client and the Agent.
2) I am NOT able to find the attributes I defined in the Android client;
3) Hence, I can´t ensure the interaction between the client(s) and the broker (Update the attributes values, query the lazies values in the broker).
=>===> Any hint to overcome this situation would be welcome!
The main details of the experiments, I hope, are given in the SEVEN steps below.
- ONE: I start by provisioning the following device: *
{
"count": 1,
"devices": [
{
"device_id": "Illuminance",
"service": "factory",
"service_path": "/robots",
"entity_name": "Robot:Illuminance",
"entity_type": "Robot",
"attributes": [
],
"lazy": [
],
"commands": [],
"static_attributes": [],
"internal_attributes": {
"lwm2mResourceMapping": {
"Value":
,
"Application":
}
}
}
]
}
- TWO: I configured the device in the client Android as follows : *
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<LWM2M xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://openmobilealliance.org/tech/profiles/LWM2M.xsd">
<Object ObjectType="MODefinition">
<Name>Illuminance</Name>
<Description1>Illuminance sensor, example units = lx</Description1>
<ObjectID>3301</ObjectID>
<ObjectURN>urn:oma:lwm2m:ext:3301</ObjectURN>
<MultipleInstances>Multiple</MultipleInstances>
<Mandatory>Optional</Mandatory>
<MandatoryBoolean>false</MandatoryBoolean>
<Resources>
<Item ID="5700">
<Name>Sensor Value</Name>
<Operations>R</Operations>
<MultipleInstances>Single</MultipleInstances>
<Mandatory>Mandatory</Mandatory>
<MandatoryBoolean>true</MandatoryBoolean>
<Type>Float</Type>
<RangeEnumeration/>
<Units>Defined by “Units” resource.</Units>
<Description>The current value of the luminosity sensor.</Description>
</Item>
<Item ID="5750">
<Name>Application Type</Name>
<Operations>RW</Operations>
<MultipleInstances>Single</MultipleInstances>
<Mandatory>Optional</Mandatory>
<MandatoryBoolean>false</MandatoryBoolean>
<Type>String</Type>
<RangeEnumeration/>
<Units/>
<Description>The application type of the sensor or actuator as a string, for instance "Air Pressure".</Description>
</Item>
</Resources>
<Description2/>
</Object>
</LWM2M>
- THREE: My java file for the sensor is : *
public class Illuminance extends GenericSensor implements SensorEventListener {
public static final String TAG = "Illuminance";
public static final int ID = 3301;
private SensorManager sensorManager;
private TextView txtIlluminance;
private Handler handler;
private long latestMeasurement = 0;
private String application;
public Illuminance(int instanceId, SensorManager sensorManager, TextView txtIlluminance)
{ super(instanceId); this.txtIlluminance = txtIlluminance; this.sensorManager = sensorManager; super.setUnits("lx"); handler = new Handler(); } @Override
public void start() {
Sensor lightSensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
if(lightSensor != null)
else
{ Log.d(TAG, "No light sensor found."); } }
@Override
public ReadResponse read(int resourceid) {
switch (resourceid)
}
@Override
public WriteResponse write(int resourceid, LwM2mResource value) {
switch (resourceid)
}
@Override
public void stop()
public double getSensorValue()
{ return latestMeasurement; }private void setApplication(String t)
{ application = t; }public String getApplication()
{ return application; } @Override
public void onSensorChanged(final SensorEvent event) {
if(System.currentTimeMillis() - latestMeasurement > 10000) {
Log.v(TAG, "Light value: " + event.values[0]);
setValue(event.values[0]);
handler.post(new Runnable() {
public void run()
});
latestMeasurement = System.currentTimeMillis();
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
}
- FOUR: As or the "init" method in the MAin Activity, I have the following configurations in he original Android code: *
// Instance of sensor service
SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
// Leveraged EB sensors
Illuminance illuminance = new Illuminance(0, sensorManager, txtIlluminance);
addSmartObject(illuminance);
//Parse xml into java by
//Loading the .xml raw resource models into a single List of ObjectModels
List<ObjectModel> models = ObjectLoader.loadDefault();
InputStream is = getResources().openRawResource(R.raw.illuminance);
ObjectModel oModel = ObjectLoader.loadDdfFile(is, "modelstream");
models.add(oModel);
-
-
- FIVE. When I connect the Andoid client device to the Server, it is registered but I can´t find my Active , neither the LAzy attributes. ***
-
{"op":"LWM2MLib.Registration","time":"2019-03-11T11:39:49.841Z","lvl":"DEBUG","msg":"Storing the following device in the db:\n
{\n \"name\": \"Illuminance\",\n \"lifetime\": \"3600\",\n \"address\": \"10.3.1.121\",\n \"port\": 5683,\n \"creationDate\": \"2019-03-11T11:39:49.841Z\"\n}"}
{"op":"LWM2MLib.Registration","time":"2019-03-11T11:39:49.842Z","lvl":"DEBUG","msg":"Registered device [Illuminance] with type [Robot]"} {"op":"LWM2MLib.Registration","time":"2019-03-11T11:39:49.844Z","lvl":"DEBUG","msg":"Calling user handler for registration actions for device [Illuminance]"} {"op":"IOTAgent.LWM2MHandlers","time":"2019-03-11T11:39:49.845Z","lvl":"DEBUG","msg":"Handling registration of the device"} time=2019-03-11T11:39:49.847Z | lvl=DEBUG | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.MongoDBGroupRegister | srv=n/a | subsrv=n/a | msg=Looking for group params ["resource","apikey"] with queryObj {} | comp=IoTAgent
time=2019-03-11T11:39:49.859Z | lvl=DEBUG | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.MongoDBGroupRegister | srv=n/a | subsrv=n/a | msg=Device group for fields [["resource","apikey"]] not found: [{}] | comp=IoTAgent
time=2019-03-11T11:39:49.861Z | lvl=ERROR | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.Alarms | srv=n/a | subsrv=n/a | msg=Raising [MONGO-ALARM]:
| comp=IoTAgent
time=2019-03-11T11:39:49.863Z | lvl=DEBUG | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.MongoDBDeviceRegister | srv=n/a | subsrv=n/a | msg=Looking for device with id [Illuminance]. | comp=IoTAgent
time=2019-03-11T11:39:49.878Z | lvl=ERROR | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.Alarms | srv=n/a | subsrv=n/a | msg=Releasing [MONGO-ALARM] | comp=IoTAgent
time=2019-03-11T11:39:49.882Z | lvl=DEBUG | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.DeviceService | srv=n/a | subsrv=n/a | msg=Update provisioned device in Device Service | comp=IoTAgent
time=2019-03-11T11:39:49.883Z | lvl=DEBUG | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.MongoDBDeviceRegister | srv=n/a | subsrv=n/a | msg=Looking for device with id [Illuminance]. | comp=IoTAgent
time=2019-03-11T11:39:49.888Z | lvl=DEBUG | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.DeviceService | srv=n/a | subsrv=n/a | msg=Creating initial entity in the Context Broker:
{
"url": "http://orionunified:1026/v1/updateContext",
"method": "POST",
"json": {
"contextElements": [
],
"updateAction": "APPEND"
},
"headers":
} | comp=IoTAgent
time=2019-03-11T11:39:49.917Z | lvl=DEBUG | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.DeviceService | srv=n/a | subsrv=n/a | msg=Initial entity created successfully. | comp=IoTAgent
time=2019-03-11T11:39:49.920Z | lvl=DEBUG | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.DeviceService | srv=n/a | subsrv=n/a | msg=Sending device registrations to Context Broker at http://orionunified:1026/NGSI9/registerContext | comp=IoTAgent
time=2019-03-11T11:39:49.922Z | lvl=DEBUG | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.DeviceService | srv=n/a | subsrv=n/a | msg=Using the following request:
{
"url": "http://orionunified:1026/NGSI9/registerContext",
"method": "POST",
"json": {
"contextRegistrations": [
{
"entities": [
],
"attributes": [
,
,
,
,
,
,
,
,
,
,
{ "name": "Luminosity Sensor#0", "type": "string" } ],
"providingApplication": "http://idaslwm2m:4041"
}
],
"duration": "P1Y",
"registrationId": "5c8642fa684ccedc01ce71bf"
},
"headers":
}
- SIX : Via wireshark, I also noticed that the Android client payload is "application/link-format" when connecting to the server and " application/vnd.oma.lwm2m+tlv" when transfering the data. *
DEVICE CONNECTION TO THE SERVER
Frame 21417: 129 bytes on wire (1032 bits), 129 bytes captured (1032 bits) on interface 0
Ethernet II, Src: TctMobil_3b:1e:48 (d0:9d:ab:3b:1e:48), Dst: Vmware_11:0a:d0 (00:0c:29:11:0a:d0)
Internet Protocol Version 4, Src: 10.3.1.121, Dst: 10.3.3.43
User Datagram Protocol, Src Port: 5684, Dst Port: 5683
Constrained Application Protocol, Confirmable, POST, MID:390
01.. .... = Version: 1
..00 .... = Type: Confirmable (0)
.... 1000 = Token Length: 8
Code: POST (2)
Message ID: 390
Token: 41542d95d7dde946
Opt Name: #1: Uri-Path: rd
Opt Name: #2: Content-Format: application/link-format
Opt Name: #3: Uri-Query: b=U
Opt Name: #4: Uri-Query: lwm2m=1.0
Opt Name: #5: Uri-Query: lt=3600
Opt Name: #6: Uri-Query: ep=robot2
End of options marker: 255
[Response In: 21439]
[Uri-Path: /rd]
Payload: Payload Content-Format: application/link-format, Length: 37
Payload Desc: application/link-format
[Payload Length: 37]
DATA TRANSFERT
Frame 23950: 68 bytes on wire (544 bits), 68 bytes captured (544 bits) on interface 0
Ethernet II, Src: TctMobil_3b:1e:48 (d0:9d:ab:3b:1e:48), Dst: Vmware_11:0a:d0 (00:0c:29:11:0a:d0)
Internet Protocol Version 4, Src: 10.3.1.121, Dst: 10.3.3.43
User Datagram Protocol, Src Port: 5684, Dst Port: 5683
Constrained Application Protocol, Non-Confirmable, 2.05 Content, MID:398
01.. .... = Version: 1
..01 .... = Type: Non-Confirmable (1)
.... 0100 = Token Length: 4
Code: 2.05 Content (69)
Message ID: 398
Token: 115744a3
Opt Name: #1: Observe: 36
Opt Name: #2: Content-Format: application/vnd.oma.lwm2m+tlv
End of options marker: 255
[Request In: 22145]
[Response Time: 99.920193000 seconds]
[Uri-Path: /3301/0/5700]
Payload: Payload Content-Format: application/vnd.oma.lwm2m+tlv, Length: 12
Payload Desc: application/vnd.oma.lwm2m+tlv
[Payload Length: 12]
Lightweight M2M TLV (1 element)
- SEVEN: when I do the experiments with the Fiware Client from https://github.com/telefonicaid/lwm2m-node-lib/blob/master/bin/iotagent-lwm2m-client.js, the captured traffic over Wireshark are as follow: *
DEVICE CONNECTION TO THE SERVER
Frame 14476: 112 bytes on wire (896 bits), 112 bytes captured (896 bits) on interface 0
Ethernet II, Src: fa:16:3e:25:bf:4a (fa:16:3e:25:bf:4a), Dst: Vmware_11:0a:d0 (00:0c:29:11:0a:d0)
Internet Protocol Version 4, Src: 10.3.4.22, Dst: 10.3.3.43
User Datagram Protocol, Src Port: 43649, Dst Port: 5683
Constrained Application Protocol, Confirmable, POST, MID:62716
01.. .... = Version: 1
..00 .... = Type: Confirmable (0)
.... 0100 = Token Length: 4
Code: POST (2)
Message ID: 62716
Token: 6d4d85f8
Opt Name: #1: Uri-Path: rd
Opt Name: #2: Uri-Query: ep=Illuminance
Opt Name: #3: Uri-Query: lt=85671
Opt Name: #4: Uri-Query: lwm2m=1.0
Opt Name: #5: Uri-Query: b=U
End of options marker: 255
[Response In: 14496]
[Uri-Path: /rd]
Payload: Payload Content-Format: application/octet-stream (no Content-Format), Length: 1
Payload Desc: application/octet-stream
[Payload Length: 19]
Data (19 bytes)
Data: 3c2f333333332f303e2c3c2f333330312f303e
[Length: 19]
DATA TRANSFERT
Frame 25895: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) on interface 0
Ethernet II, Src: fa:16:3e:25:bf:4a (fa:16:3e:25:bf:4a), Dst: Vmware_11:0a:d0 (00:0c:29:11:0a:d0)
Internet Protocol Version 4, Src: 10.3.4.22, Dst: 10.3.3.43
User Datagram Protocol, Src Port: 43649, Dst Port: 5683
Constrained Application Protocol, Acknowledgement, 2.05 Content, MID:23556
01.. .... = Version: 1
..10 .... = Type: Acknowledgement (2)
.... 0100 = Token Length: 4
Code: 2.05 Content (69)
Message ID: 23556
Token: 958d27cd
End of options marker: 255
[Request In: 25865]
[Response Time: 0.003624000 seconds]
[Uri-Path: /3301/0/5700]
Payload: Payload Content-Format: application/octet-stream (no Content-Format), Length: 3
Payload Desc: application/octet-stream
[Payload Length: 3]
Data (3 bytes)
Data: 333035
[Length: 3]
- EIGHT=> entilties it broker before and After connecting the client (connect serverIP 5684 Illuminance /) *
{
"id": "Robot:Illuminance",
"type": "Robot",
"Value": {
"type": "Float",
"value": " ",
"metadata": {}
}
}
Activity
Field | Original Value | New Value |
---|---|---|
Component/s | FIWARE-TECH-HELP [ 10278 ] |
HD-Enabler | IDAS [ 10884 ] | |
Description |
Created question in FIWARE Q/A platform on 11-03-2019 at 18:03 {color: red}Please, ANSWER this question AT{color} https://stackoverflow.com/questions/55107058/fiware-android-leshan-based-client-to-lwm2miotagent +Question:+ FIWARE - Android Leshan-based Client to LwM2MIoTAgent +Description:+ My experiment consists of using an Android Client (https://github.com/ApplicationPlatformForIoT/LwM2MDemoClientAndroid) and make it interact with the FIWARE LwM2MIoT Agent (https://github.com/telefonicaid/lightweightm2m-iotagent) 1) I am able to establish communication between the client and the Agent. 2) I am NOT able to find the attributes I defined in the Android client; 3) Hence, I can´t ensure the interaction between the client(s) and the broker (Update the attributes values, query the lazies values in the broker). =>===> Any hint to overcome this situation would be welcome! The main details of the experiments, I hope, are given in the SEVEN steps below. * ONE: I start by provisioning the following device: * { "count": 1, "devices": [ { "device_id": "Illuminance", "service": "factory", "service_path": "/robots", "entity_name": "Robot:Illuminance", "entity_type": "Robot", "attributes": [ { "object_id": "Value", "name": "Value", "type": "Float" } ], "lazy": [ { "object_id": "Type", "name": "Type", "type": "String" } ], "commands": [], "static_attributes": [], "internal_attributes": { "lwm2mResourceMapping": { "Value": { "objectType": 3301, "objectInstance": 0, "objectResource": 5700 }, "Application": { "objectType": 3301, "objectInstance": 0, "objectResource": 5750 } } } } ] } * TWO: I configured the device in the client Android as follows : * <?xml version="1.0" encoding="UTF-8" standalone="no"?> <LWM2M xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://openmobilealliance.org/tech/profiles/LWM2M.xsd"> <Object ObjectType="MODefinition"> <Name>Illuminance</Name> <Description1>Illuminance sensor, example units = lx</Description1> <ObjectID>3301</ObjectID> <ObjectURN>urn:oma:lwm2m:ext:3301</ObjectURN> <MultipleInstances>Multiple</MultipleInstances> <Mandatory>Optional</Mandatory> <MandatoryBoolean>false</MandatoryBoolean> <Resources> <Item ID="5700"> <Name>Sensor Value</Name> <Operations>R</Operations> <MultipleInstances>Single</MultipleInstances> <Mandatory>Mandatory</Mandatory> <MandatoryBoolean>true</MandatoryBoolean> <Type>Float</Type> <RangeEnumeration/> <Units>Defined by “Units” resource.</Units> <Description>The current value of the luminosity sensor.</Description> </Item> <Item ID="5750"> <Name>Application Type</Name> <Operations>RW</Operations> <MultipleInstances>Single</MultipleInstances> <Mandatory>Optional</Mandatory> <MandatoryBoolean>false</MandatoryBoolean> <Type>String</Type> <RangeEnumeration/> <Units/> <Description>The application type of the sensor or actuator as a string, for instance "Air Pressure".</Description> </Item> </Resources> <Description2/> </Object> </LWM2M> * THREE: My java file for the sensor is : * public class Illuminance extends GenericSensor implements SensorEventListener { public static final String TAG = "Illuminance"; public static final int ID = 3301; private SensorManager sensorManager; private TextView txtIlluminance; private Handler handler; private long latestMeasurement = 0; private String application; public Illuminance(int instanceId, SensorManager sensorManager, TextView txtIlluminance) { super(instanceId); this.txtIlluminance = txtIlluminance; this.sensorManager = sensorManager; super.setUnits("lx"); handler = new Handler(); } @Override public void start() { Sensor lightSensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); if(lightSensor != null) { sensorManager.registerListener(this, lightSensor, SensorManager.SENSOR_DELAY_NORMAL); setMaxRangeValue(lightSensor.getMaximumRange()); setMinRangeValue(lightSensor.getMinDelay()); } else { Log.d(TAG, "No light sensor found."); } } @Override public ReadResponse read(int resourceid) { switch (resourceid) { case 5700: //sensor value return ReadResponse.success(resourceid, getSensorValue()); case 5750: // return ReadResponse.success(resourceid, getApplication()); default: return super.read(resourceid); } } @Override public WriteResponse write(int resourceid, LwM2mResource value) { switch (resourceid) { case 5750: setApplication((String) value.getValue()); fireResourcesChange(resourceid); return WriteResponse.success(); default: return super.write(resourceid, value); } } @Override public void stop() { sensorManager.unregisterListener(this); } public double getSensorValue() { return latestMeasurement; } private void setApplication(String t) { application = t; } public String getApplication() { return application; } @Override public void onSensorChanged(final SensorEvent event) { if(System.currentTimeMillis() - latestMeasurement > 10000) { Log.v(TAG, "Light value: " + event.values[0]); setValue(event.values[0]); handler.post(new Runnable() { public void run() { txtIlluminance.setText(Float.toString(event.values[0])); } }); latestMeasurement = System.currentTimeMillis(); } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } } * FOUR: As or the "init" method in the MAin Activity, I have the following configurations in he original Android code: * // Instance of sensor service SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); // Leveraged EB sensors Illuminance illuminance = new Illuminance(0, sensorManager, txtIlluminance); addSmartObject(illuminance); //Parse xml into java by //Loading the .xml raw resource models into a single List of ObjectModels List<ObjectModel> models = ObjectLoader.loadDefault(); InputStream is = getResources().openRawResource(R.raw.illuminance); ObjectModel oModel = ObjectLoader.loadDdfFile(is, "modelstream"); models.add(oModel); *** FIVE. When I connect the Andoid client device to the Server, it is registered but I can´t find my Active , neither the LAzy attributes. *** {"op":"LWM2MLib.COAPRouter","time":"2019-03-11T11:39:49.836Z","lvl":"DEBUG","msg":"Handling request with method [POST] on url [/rd?b=U&lwm2m=1.0&lt=3600&ep=Illuminance] with messageId [50]"} {"op":"LWM2MLib.COAPUtils","time":"2019-03-11T11:39:49.837Z","lvl":"DEBUG","msg":"Extracting query parameters from request"} {"op":"LWM2MLib.COAPUtils","time":"2019-03-11T11:39:49.838Z","lvl":"DEBUG","msg":"Processing query [b=U&lwm2m=1.0&lt=3600&ep=Illuminance]"} {"op":"LWM2MLib.Registration","time":"2019-03-11T11:39:49.839Z","lvl":"DEBUG","msg":"Handling registration request"} {"op":"LWM2MLib.COAPUtils","time":"2019-03-11T11:39:49.840Z","lvl":"DEBUG","msg":"Checking for the existence of the following parameters [[\"ep\"]]"} {"op":"LWM2MLib.Registration","time":"2019-03-11T11:39:49.841Z","lvl":"DEBUG","msg":"Storing the following device in the db:\n{\n \"name\": \"Illuminance\",\n \"lifetime\": \"3600\",\n \"address\": \"10.3.1.121\",\n \"port\": 5683,\n \"creationDate\": \"2019-03-11T11:39:49.841Z\"\n}"} {"op":"LWM2MLib.Registration","time":"2019-03-11T11:39:49.842Z","lvl":"DEBUG","msg":"Registered device [Illuminance] with type [Robot]"} {"op":"LWM2MLib.Registration","time":"2019-03-11T11:39:49.844Z","lvl":"DEBUG","msg":"Calling user handler for registration actions for device [Illuminance]"} {"op":"IOTAgent.LWM2MHandlers","time":"2019-03-11T11:39:49.845Z","lvl":"DEBUG","msg":"Handling registration of the device"} time=2019-03-11T11:39:49.847Z | lvl=DEBUG | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.MongoDBGroupRegister | srv=n/a | subsrv=n/a | msg=Looking for group params ["resource","apikey"] with queryObj {} | comp=IoTAgent time=2019-03-11T11:39:49.859Z | lvl=DEBUG | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.MongoDBGroupRegister | srv=n/a | subsrv=n/a | msg=Device group for fields [["resource","apikey"]] not found: [{}] | comp=IoTAgent time=2019-03-11T11:39:49.861Z | lvl=ERROR | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.Alarms | srv=n/a | subsrv=n/a | msg=Raising [MONGO-ALARM]: {"name":"DEVICE_GROUP_NOT_FOUND","message":"Couldn\t find device group","code":404} | comp=IoTAgent time=2019-03-11T11:39:49.863Z | lvl=DEBUG | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.MongoDBDeviceRegister | srv=n/a | subsrv=n/a | msg=Looking for device with id [Illuminance]. | comp=IoTAgent time=2019-03-11T11:39:49.878Z | lvl=ERROR | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.Alarms | srv=n/a | subsrv=n/a | msg=Releasing [MONGO-ALARM] | comp=IoTAgent {"op":"IOTAgent.LWM2MHandlers","time":"2019-03-11T11:39:49.880Z","lvl":"DEBUG","msg":"Preregistered device found."} time=2019-03-11T11:39:49.882Z | lvl=DEBUG | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.DeviceService | srv=n/a | subsrv=n/a | msg=Update provisioned device in Device Service | comp=IoTAgent time=2019-03-11T11:39:49.883Z | lvl=DEBUG | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.MongoDBDeviceRegister | srv=n/a | subsrv=n/a | msg=Looking for device with id [Illuminance]. | comp=IoTAgent time=2019-03-11T11:39:49.888Z | lvl=DEBUG | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.DeviceService | srv=n/a | subsrv=n/a | msg=Creating initial entity in the Context Broker: { "url": "http://orionunified:1026/v1/updateContext", "method": "POST", "json": { "contextElements": [ { "type": "Robot", "isPattern": "false", "id": "Robot:Illuminance", "attributes": [] } ], "updateAction": "APPEND" }, "headers": { "fiware-service": "factory", "fiware-servicepath": "/robots", "fiware-correlator": "78d63062-e5c9-4fde-b6b8-db73adc5a003" } } | comp=IoTAgent time=2019-03-11T11:39:49.917Z | lvl=DEBUG | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.DeviceService | srv=n/a | subsrv=n/a | msg=Initial entity created successfully. | comp=IoTAgent time=2019-03-11T11:39:49.920Z | lvl=DEBUG | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.DeviceService | srv=n/a | subsrv=n/a | msg=Sending device registrations to Context Broker at [http://orionunified:1026/NGSI9/registerContext] | comp=IoTAgent time=2019-03-11T11:39:49.922Z | lvl=DEBUG | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.DeviceService | srv=n/a | subsrv=n/a | msg=Using the following request: { "url": "http://orionunified:1026/NGSI9/registerContext", "method": "POST", "json": { "contextRegistrations": [ { "entities": [ { "type": "Robot", "isPattern": "false", "id": "Robot:Illuminance" } ], "attributes": [ { "name": "Application Type", "type": "String" }, { "name": "Short Server ID", "type": "Integer" }, { "name": "Lifetime", "type": "Integer" }, { "name": "Default Minimum Period", "type": "Integer" }, { "name": "Default Maximum Period", "type": "Integer" }, { "name": "Disable", "type": "" }, { "name": "Disable Timeout", "type": "Integer" }, { "name": "Notification Storing When Disabled or Offline", "type": "Boolean" }, { "name": "Binding", "type": "String" }, { "name": "Registration Update Trigger", "type": "" }, { "name": "Luminosity Sensor#0", "type": "string" } ], "providingApplication": "http://idaslwm2m:4041" } ], "duration": "P1Y", "registrationId": "5c8642fa684ccedc01ce71bf" }, "headers": { "fiware-service": "factory", "fiware-servicepath": "/robots" } } * SIX : Via wireshark, I also noticed that the Android client payload is "application/link-format" when connecting to the server and " application/vnd.oma.lwm2m+tlv" when transfering the data. * DEVICE CONNECTION TO THE SERVER Frame 21417: 129 bytes on wire (1032 bits), 129 bytes captured (1032 bits) on interface 0 Ethernet II, Src: TctMobil_3b:1e:48 (d0:9d:ab:3b:1e:48), Dst: Vmware_11:0a:d0 (00:0c:29:11:0a:d0) Internet Protocol Version 4, Src: 10.3.1.121, Dst: 10.3.3.43 User Datagram Protocol, Src Port: 5684, Dst Port: 5683 Constrained Application Protocol, Confirmable, POST, MID:390 01.. .... = Version: 1 ..00 .... = Type: Confirmable (0) .... 1000 = Token Length: 8 Code: POST (2) Message ID: 390 Token: 41542d95d7dde946 Opt Name: #1: Uri-Path: rd Opt Name: #2: Content-Format: application/link-format Opt Name: #3: Uri-Query: b=U Opt Name: #4: Uri-Query: lwm2m=1.0 Opt Name: #5: Uri-Query: lt=3600 Opt Name: #6: Uri-Query: ep=robot2 End of options marker: 255 [Response In: 21439] [Uri-Path: /rd] Payload: Payload Content-Format: application/link-format, Length: 37 Payload Desc: application/link-format [Payload Length: 37] DATA TRANSFERT Frame 23950: 68 bytes on wire (544 bits), 68 bytes captured (544 bits) on interface 0 Ethernet II, Src: TctMobil_3b:1e:48 (d0:9d:ab:3b:1e:48), Dst: Vmware_11:0a:d0 (00:0c:29:11:0a:d0) Internet Protocol Version 4, Src: 10.3.1.121, Dst: 10.3.3.43 User Datagram Protocol, Src Port: 5684, Dst Port: 5683 Constrained Application Protocol, Non-Confirmable, 2.05 Content, MID:398 01.. .... = Version: 1 ..01 .... = Type: Non-Confirmable (1) .... 0100 = Token Length: 4 Code: 2.05 Content (69) Message ID: 398 Token: 115744a3 Opt Name: #1: Observe: 36 Opt Name: #2: Content-Format: application/vnd.oma.lwm2m+tlv End of options marker: 255 [Request In: 22145] [Response Time: 99.920193000 seconds] [Uri-Path: /3301/0/5700] Payload: Payload Content-Format: application/vnd.oma.lwm2m+tlv, Length: 12 Payload Desc: application/vnd.oma.lwm2m+tlv [Payload Length: 12] Lightweight M2M TLV (1 element) * SEVEN: when I do the experiments with the Fiware Client from https://github.com/telefonicaid/lwm2m-node-lib/blob/master/bin/iotagent-lwm2m-client.js, the captured traffic over Wireshark are as follow: * DEVICE CONNECTION TO THE SERVER Frame 14476: 112 bytes on wire (896 bits), 112 bytes captured (896 bits) on interface 0 Ethernet II, Src: fa:16:3e:25:bf:4a (fa:16:3e:25:bf:4a), Dst: Vmware_11:0a:d0 (00:0c:29:11:0a:d0) Internet Protocol Version 4, Src: 10.3.4.22, Dst: 10.3.3.43 User Datagram Protocol, Src Port: 43649, Dst Port: 5683 Constrained Application Protocol, Confirmable, POST, MID:62716 01.. .... = Version: 1 ..00 .... = Type: Confirmable (0) .... 0100 = Token Length: 4 Code: POST (2) Message ID: 62716 Token: 6d4d85f8 Opt Name: #1: Uri-Path: rd Opt Name: #2: Uri-Query: ep=Illuminance Opt Name: #3: Uri-Query: lt=85671 Opt Name: #4: Uri-Query: lwm2m=1.0 Opt Name: #5: Uri-Query: b=U End of options marker: 255 [Response In: 14496] [Uri-Path: /rd] Payload: Payload Content-Format: application/octet-stream (no Content-Format), Length: 1 Payload Desc: application/octet-stream [Payload Length: 19] Data (19 bytes) Data: 3c2f333333332f303e2c3c2f333330312f303e [Length: 19] DATA TRANSFERT Frame 25895: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) on interface 0 Ethernet II, Src: fa:16:3e:25:bf:4a (fa:16:3e:25:bf:4a), Dst: Vmware_11:0a:d0 (00:0c:29:11:0a:d0) Internet Protocol Version 4, Src: 10.3.4.22, Dst: 10.3.3.43 User Datagram Protocol, Src Port: 43649, Dst Port: 5683 Constrained Application Protocol, Acknowledgement, 2.05 Content, MID:23556 01.. .... = Version: 1 ..10 .... = Type: Acknowledgement (2) .... 0100 = Token Length: 4 Code: 2.05 Content (69) Message ID: 23556 Token: 958d27cd End of options marker: 255 [Request In: 25865] [Response Time: 0.003624000 seconds] [Uri-Path: /3301/0/5700] Payload: Payload Content-Format: application/octet-stream (no Content-Format), Length: 3 Payload Desc: application/octet-stream [Payload Length: 3] Data (3 bytes) Data: 333035 [Length: 3] * EIGHT=> entilties it broker before and After connecting the client (connect serverIP 5684 Illuminance /) * { "id": "Robot:Illuminance", "type": "Robot", "Value": { "type": "Float", "value": " ", "metadata": {} } } |
Created question in FIWARE Q/A platform on 11-03-2019 at 18:03
{color: red}Please, ANSWER this question AT{color} https://stackoverflow.com/questions/55107058/fiware-android-leshan-based-client-to-lwm2miotagent +Question:+ FIWARE - Android Leshan-based Client to LwM2MIoTAgent +Description:+ My experiment consists of using an Android Client (https://github.com/ApplicationPlatformForIoT/LwM2MDemoClientAndroid) and make it interact with the FIWARE LwM2MIoT Agent (https://github.com/telefonicaid/lightweightm2m-iotagent) 1) I am able to establish communication between the client and the Agent. 2) I am NOT able to find the attributes I defined in the Android client; 3) Hence, I can´t ensure the interaction between the client(s) and the broker (Update the attributes values, query the lazies values in the broker). =>===> Any hint to overcome this situation would be welcome! The main details of the experiments, I hope, are given in the SEVEN steps below. * ONE: I start by provisioning the following device: * { "count": 1, "devices": [ { "device_id": "Illuminance", "service": "factory", "service_path": "/robots", "entity_name": "Robot:Illuminance", "entity_type": "Robot", "attributes": [ { "object_id": "Value", "name": "Value", "type": "Float" } ], "lazy": [ { "object_id": "Type", "name": "Type", "type": "String" } ], "commands": [], "static_attributes": [], "internal_attributes": { "lwm2mResourceMapping": { "Value": { "objectType": 3301, "objectInstance": 0, "objectResource": 5700 }, "Application": { "objectType": 3301, "objectInstance": 0, "objectResource": 5750 } } } } ] } * TWO: I configured the device in the client Android as follows : * <?xml version="1.0" encoding="UTF-8" standalone="no"?> <LWM2M xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://openmobilealliance.org/tech/profiles/LWM2M.xsd"> <Object ObjectType="MODefinition"> <Name>Illuminance</Name> <Description1>Illuminance sensor, example units = lx</Description1> <ObjectID>3301</ObjectID> <ObjectURN>urn:oma:lwm2m:ext:3301</ObjectURN> <MultipleInstances>Multiple</MultipleInstances> <Mandatory>Optional</Mandatory> <MandatoryBoolean>false</MandatoryBoolean> <Resources> <Item ID="5700"> <Name>Sensor Value</Name> <Operations>R</Operations> <MultipleInstances>Single</MultipleInstances> <Mandatory>Mandatory</Mandatory> <MandatoryBoolean>true</MandatoryBoolean> <Type>Float</Type> <RangeEnumeration/> <Units>Defined by “Units” resource.</Units> <Description>The current value of the luminosity sensor.</Description> </Item> <Item ID="5750"> <Name>Application Type</Name> <Operations>RW</Operations> <MultipleInstances>Single</MultipleInstances> <Mandatory>Optional</Mandatory> <MandatoryBoolean>false</MandatoryBoolean> <Type>String</Type> <RangeEnumeration/> <Units/> <Description>The application type of the sensor or actuator as a string, for instance "Air Pressure".</Description> </Item> </Resources> <Description2/> </Object> </LWM2M> * THREE: My java file for the sensor is : * public class Illuminance extends GenericSensor implements SensorEventListener { public static final String TAG = "Illuminance"; public static final int ID = 3301; private SensorManager sensorManager; private TextView txtIlluminance; private Handler handler; private long latestMeasurement = 0; private String application; public Illuminance(int instanceId, SensorManager sensorManager, TextView txtIlluminance) { super(instanceId); this.txtIlluminance = txtIlluminance; this.sensorManager = sensorManager; super.setUnits("lx"); handler = new Handler(); } @Override public void start() { Sensor lightSensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); if(lightSensor != null) { sensorManager.registerListener(this, lightSensor, SensorManager.SENSOR_DELAY_NORMAL); setMaxRangeValue(lightSensor.getMaximumRange()); setMinRangeValue(lightSensor.getMinDelay()); } else { Log.d(TAG, "No light sensor found."); } } @Override public ReadResponse read(int resourceid) { switch (resourceid) { case 5700: //sensor value return ReadResponse.success(resourceid, getSensorValue()); case 5750: // return ReadResponse.success(resourceid, getApplication()); default: return super.read(resourceid); } } @Override public WriteResponse write(int resourceid, LwM2mResource value) { switch (resourceid) { case 5750: setApplication((String) value.getValue()); fireResourcesChange(resourceid); return WriteResponse.success(); default: return super.write(resourceid, value); } } @Override public void stop() { sensorManager.unregisterListener(this); } public double getSensorValue() { return latestMeasurement; } private void setApplication(String t) { application = t; } public String getApplication() { return application; } @Override public void onSensorChanged(final SensorEvent event) { if(System.currentTimeMillis() - latestMeasurement > 10000) { Log.v(TAG, "Light value: " + event.values[0]); setValue(event.values[0]); handler.post(new Runnable() { public void run() { txtIlluminance.setText(Float.toString(event.values[0])); } }); latestMeasurement = System.currentTimeMillis(); } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } } * FOUR: As or the "init" method in the MAin Activity, I have the following configurations in he original Android code: * // Instance of sensor service SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); // Leveraged EB sensors Illuminance illuminance = new Illuminance(0, sensorManager, txtIlluminance); addSmartObject(illuminance); //Parse xml into java by //Loading the .xml raw resource models into a single List of ObjectModels List<ObjectModel> models = ObjectLoader.loadDefault(); InputStream is = getResources().openRawResource(R.raw.illuminance); ObjectModel oModel = ObjectLoader.loadDdfFile(is, "modelstream"); models.add(oModel); *** FIVE. When I connect the Andoid client device to the Server, it is registered but I can´t find my Active , neither the LAzy attributes. *** {"op":"LWM2MLib.COAPRouter","time":"2019-03-11T11:39:49.836Z","lvl":"DEBUG","msg":"Handling request with method [POST] on url [/rd?b=U&lwm2m=1.0&lt=3600&ep=Illuminance] with messageId [50]"} {"op":"LWM2MLib.COAPUtils","time":"2019-03-11T11:39:49.837Z","lvl":"DEBUG","msg":"Extracting query parameters from request"} {"op":"LWM2MLib.COAPUtils","time":"2019-03-11T11:39:49.838Z","lvl":"DEBUG","msg":"Processing query [b=U&lwm2m=1.0&lt=3600&ep=Illuminance]"} {"op":"LWM2MLib.Registration","time":"2019-03-11T11:39:49.839Z","lvl":"DEBUG","msg":"Handling registration request"} {"op":"LWM2MLib.COAPUtils","time":"2019-03-11T11:39:49.840Z","lvl":"DEBUG","msg":"Checking for the existence of the following parameters [[\"ep\"]]"} {"op":"LWM2MLib.Registration","time":"2019-03-11T11:39:49.841Z","lvl":"DEBUG","msg":"Storing the following device in the db:\n{\n \"name\": \"Illuminance\",\n \"lifetime\": \"3600\",\n \"address\": \"10.3.1.121\",\n \"port\": 5683,\n \"creationDate\": \"2019-03-11T11:39:49.841Z\"\n}"} {"op":"LWM2MLib.Registration","time":"2019-03-11T11:39:49.842Z","lvl":"DEBUG","msg":"Registered device [Illuminance] with type [Robot]"} {"op":"LWM2MLib.Registration","time":"2019-03-11T11:39:49.844Z","lvl":"DEBUG","msg":"Calling user handler for registration actions for device [Illuminance]"} {"op":"IOTAgent.LWM2MHandlers","time":"2019-03-11T11:39:49.845Z","lvl":"DEBUG","msg":"Handling registration of the device"} time=2019-03-11T11:39:49.847Z | lvl=DEBUG | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.MongoDBGroupRegister | srv=n/a | subsrv=n/a | msg=Looking for group params ["resource","apikey"] with queryObj {} | comp=IoTAgent time=2019-03-11T11:39:49.859Z | lvl=DEBUG | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.MongoDBGroupRegister | srv=n/a | subsrv=n/a | msg=Device group for fields [["resource","apikey"]] not found: [{}] | comp=IoTAgent time=2019-03-11T11:39:49.861Z | lvl=ERROR | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.Alarms | srv=n/a | subsrv=n/a | msg=Raising [MONGO-ALARM]: {"name":"DEVICE_GROUP_NOT_FOUND","message":"Couldn\t find device group","code":404} | comp=IoTAgent time=2019-03-11T11:39:49.863Z | lvl=DEBUG | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.MongoDBDeviceRegister | srv=n/a | subsrv=n/a | msg=Looking for device with id [Illuminance]. | comp=IoTAgent time=2019-03-11T11:39:49.878Z | lvl=ERROR | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.Alarms | srv=n/a | subsrv=n/a | msg=Releasing [MONGO-ALARM] | comp=IoTAgent {"op":"IOTAgent.LWM2MHandlers","time":"2019-03-11T11:39:49.880Z","lvl":"DEBUG","msg":"Preregistered device found."} time=2019-03-11T11:39:49.882Z | lvl=DEBUG | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.DeviceService | srv=n/a | subsrv=n/a | msg=Update provisioned device in Device Service | comp=IoTAgent time=2019-03-11T11:39:49.883Z | lvl=DEBUG | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.MongoDBDeviceRegister | srv=n/a | subsrv=n/a | msg=Looking for device with id [Illuminance]. | comp=IoTAgent time=2019-03-11T11:39:49.888Z | lvl=DEBUG | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.DeviceService | srv=n/a | subsrv=n/a | msg=Creating initial entity in the Context Broker: { "url": "http://orionunified:1026/v1/updateContext", "method": "POST", "json": { "contextElements": [ { "type": "Robot", "isPattern": "false", "id": "Robot:Illuminance", "attributes": [] } ], "updateAction": "APPEND" }, "headers": { "fiware-service": "factory", "fiware-servicepath": "/robots", "fiware-correlator": "78d63062-e5c9-4fde-b6b8-db73adc5a003" } } | comp=IoTAgent time=2019-03-11T11:39:49.917Z | lvl=DEBUG | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.DeviceService | srv=n/a | subsrv=n/a | msg=Initial entity created successfully. | comp=IoTAgent time=2019-03-11T11:39:49.920Z | lvl=DEBUG | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.DeviceService | srv=n/a | subsrv=n/a | msg=Sending device registrations to Context Broker at [http://orionunified:1026/NGSI9/registerContext] | comp=IoTAgent time=2019-03-11T11:39:49.922Z | lvl=DEBUG | corr=78d63062-e5c9-4fde-b6b8-db73adc5a003 | trans=78d63062-e5c9-4fde-b6b8-db73adc5a003 | op=IoTAgentNGSI.DeviceService | srv=n/a | subsrv=n/a | msg=Using the following request: { "url": "http://orionunified:1026/NGSI9/registerContext", "method": "POST", "json": { "contextRegistrations": [ { "entities": [ { "type": "Robot", "isPattern": "false", "id": "Robot:Illuminance" } ], "attributes": [ { "name": "Application Type", "type": "String" }, { "name": "Short Server ID", "type": "Integer" }, { "name": "Lifetime", "type": "Integer" }, { "name": "Default Minimum Period", "type": "Integer" }, { "name": "Default Maximum Period", "type": "Integer" }, { "name": "Disable", "type": "" }, { "name": "Disable Timeout", "type": "Integer" }, { "name": "Notification Storing When Disabled or Offline", "type": "Boolean" }, { "name": "Binding", "type": "String" }, { "name": "Registration Update Trigger", "type": "" }, { "name": "Luminosity Sensor#0", "type": "string" } ], "providingApplication": "http://idaslwm2m:4041" } ], "duration": "P1Y", "registrationId": "5c8642fa684ccedc01ce71bf" }, "headers": { "fiware-service": "factory", "fiware-servicepath": "/robots" } } * SIX : Via wireshark, I also noticed that the Android client payload is "application/link-format" when connecting to the server and " application/vnd.oma.lwm2m+tlv" when transfering the data. * DEVICE CONNECTION TO THE SERVER Frame 21417: 129 bytes on wire (1032 bits), 129 bytes captured (1032 bits) on interface 0 Ethernet II, Src: TctMobil_3b:1e:48 (d0:9d:ab:3b:1e:48), Dst: Vmware_11:0a:d0 (00:0c:29:11:0a:d0) Internet Protocol Version 4, Src: 10.3.1.121, Dst: 10.3.3.43 User Datagram Protocol, Src Port: 5684, Dst Port: 5683 Constrained Application Protocol, Confirmable, POST, MID:390 01.. .... = Version: 1 ..00 .... = Type: Confirmable (0) .... 1000 = Token Length: 8 Code: POST (2) Message ID: 390 Token: 41542d95d7dde946 Opt Name: #1: Uri-Path: rd Opt Name: #2: Content-Format: application/link-format Opt Name: #3: Uri-Query: b=U Opt Name: #4: Uri-Query: lwm2m=1.0 Opt Name: #5: Uri-Query: lt=3600 Opt Name: #6: Uri-Query: ep=robot2 End of options marker: 255 [Response In: 21439] [Uri-Path: /rd] Payload: Payload Content-Format: application/link-format, Length: 37 Payload Desc: application/link-format [Payload Length: 37] DATA TRANSFERT Frame 23950: 68 bytes on wire (544 bits), 68 bytes captured (544 bits) on interface 0 Ethernet II, Src: TctMobil_3b:1e:48 (d0:9d:ab:3b:1e:48), Dst: Vmware_11:0a:d0 (00:0c:29:11:0a:d0) Internet Protocol Version 4, Src: 10.3.1.121, Dst: 10.3.3.43 User Datagram Protocol, Src Port: 5684, Dst Port: 5683 Constrained Application Protocol, Non-Confirmable, 2.05 Content, MID:398 01.. .... = Version: 1 ..01 .... = Type: Non-Confirmable (1) .... 0100 = Token Length: 4 Code: 2.05 Content (69) Message ID: 398 Token: 115744a3 Opt Name: #1: Observe: 36 Opt Name: #2: Content-Format: application/vnd.oma.lwm2m+tlv End of options marker: 255 [Request In: 22145] [Response Time: 99.920193000 seconds] [Uri-Path: /3301/0/5700] Payload: Payload Content-Format: application/vnd.oma.lwm2m+tlv, Length: 12 Payload Desc: application/vnd.oma.lwm2m+tlv [Payload Length: 12] Lightweight M2M TLV (1 element) * SEVEN: when I do the experiments with the Fiware Client from https://github.com/telefonicaid/lwm2m-node-lib/blob/master/bin/iotagent-lwm2m-client.js, the captured traffic over Wireshark are as follow: * DEVICE CONNECTION TO THE SERVER Frame 14476: 112 bytes on wire (896 bits), 112 bytes captured (896 bits) on interface 0 Ethernet II, Src: fa:16:3e:25:bf:4a (fa:16:3e:25:bf:4a), Dst: Vmware_11:0a:d0 (00:0c:29:11:0a:d0) Internet Protocol Version 4, Src: 10.3.4.22, Dst: 10.3.3.43 User Datagram Protocol, Src Port: 43649, Dst Port: 5683 Constrained Application Protocol, Confirmable, POST, MID:62716 01.. .... = Version: 1 ..00 .... = Type: Confirmable (0) .... 0100 = Token Length: 4 Code: POST (2) Message ID: 62716 Token: 6d4d85f8 Opt Name: #1: Uri-Path: rd Opt Name: #2: Uri-Query: ep=Illuminance Opt Name: #3: Uri-Query: lt=85671 Opt Name: #4: Uri-Query: lwm2m=1.0 Opt Name: #5: Uri-Query: b=U End of options marker: 255 [Response In: 14496] [Uri-Path: /rd] Payload: Payload Content-Format: application/octet-stream (no Content-Format), Length: 1 Payload Desc: application/octet-stream [Payload Length: 19] Data (19 bytes) Data: 3c2f333333332f303e2c3c2f333330312f303e [Length: 19] DATA TRANSFERT Frame 25895: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) on interface 0 Ethernet II, Src: fa:16:3e:25:bf:4a (fa:16:3e:25:bf:4a), Dst: Vmware_11:0a:d0 (00:0c:29:11:0a:d0) Internet Protocol Version 4, Src: 10.3.4.22, Dst: 10.3.3.43 User Datagram Protocol, Src Port: 43649, Dst Port: 5683 Constrained Application Protocol, Acknowledgement, 2.05 Content, MID:23556 01.. .... = Version: 1 ..10 .... = Type: Acknowledgement (2) .... 0100 = Token Length: 4 Code: 2.05 Content (69) Message ID: 23556 Token: 958d27cd End of options marker: 255 [Request In: 25865] [Response Time: 0.003624000 seconds] [Uri-Path: /3301/0/5700] Payload: Payload Content-Format: application/octet-stream (no Content-Format), Length: 3 Payload Desc: application/octet-stream [Payload Length: 3] Data (3 bytes) Data: 333035 [Length: 3] * EIGHT=> entilties it broker before and After connecting the client (connect serverIP 5684 Illuminance /) * { "id": "Robot:Illuminance", "type": "Robot", "Value": { "type": "Float", "value": " ", "metadata": {} } } |
Assignee | Jose Gato Luis [ josegato ] |
Assignee | Jose Gato Luis [ josegato ] | Fermín Galán [ fermin ] |