/** Decoder **/// decode payload to stringvarstrArray=decodeToString(payload);varpayloadArray=strArray.replaceAll("\"","").split(',');vartelemetryPayload={};for(vari=2;i<payloadArray.length;i=i+2){vartelemetryKey=payloadArray[i];vartelemetryValue=parseFloat(payloadArray[i+1]);telemetryPayload[telemetryKey]=telemetryValue;}// Result object with device attributes/telemetry datavarresult={deviceName:payloadArray[0],deviceType:payloadArray[1],telemetry:telemetryPayload,attributes:{}};/** Helper functions 'decodeToString' and 'decodeToJson' are already built-in **/returnresult;
/** Decoder **/// decode payload to JSONvardata=decodeToJson(payload);// Result object with device/asset attributes/telemetry datavardeviceName=data.deviceName;vardeviceType=data.deviceType;varresult={deviceName:deviceName,deviceType:deviceType,attributes:{},telemetry:{temperature:data.temperature,humidity:data.humidity}};/** Helper functions 'decodeToString' and 'decodeToJson' are already built-in **/returnresult;
/** Decoder **/// decode payload to JSONvardata=decodeToJson(payload);// Result object with device/asset attributes/telemetry datavardeviceName=data.deviceName;vardeviceType=data.deviceType;varresult={deviceName:deviceName,deviceType:deviceType,attributes:{},telemetry:{temperature:data.temperature,humidity:data.humidity}};/** Helper functions **/functiondecodeToString(payload){returnString.fromCharCode.apply(String,payload);}functiondecodeToJson(payload){// covert payload to string.varstr=decodeToString(payload);// parse string to JSONvardata=JSON.parse(str);returndata;}returnresult;
/** Decoder **/// decode payload to stringvarpayloadStr=decodeToString(payload);// decode payload to JSON// var data = decodeToJson(payload);vardeviceName=payloadStr.substring(0,6);vardeviceType=payloadStr.substring(6,13);// Result object with device/asset attributes/telemetry datavarresult={deviceName:deviceName,deviceType:deviceType,attributes:{},telemetry:{temperature:parseFloat(payloadStr.substring(13,17)),humidity:parseFloat(payloadStr.substring(17,19))}};/** Helper functions 'decodeToString' and 'decodeToJson' are already built-in **/returnresult;
/** Decoder **/// decode payload to stringvarpayloadStr=decodeToString(payload);// decode payload to JSON// var data = decodeToJson(payload);vardeviceName=payloadStr.substring(0,6);vardeviceType=payloadStr.substring(6,13);// Result object with device/asset attributes/telemetry datavarresult={deviceName:deviceName,deviceType:deviceType,attributes:{},telemetry:{temperature:parseFloat(payloadStr.substring(13,17)),humidity:parseFloat(payloadStr.substring(17,19))}};/** Helper functions **/functiondecodeToString(payload){returnString.fromCharCode.apply(String,payload);}functiondecodeToJson(payload){// covert payload to string.varstr=decodeToString(payload);// parse string to JSONvardata=JSON.parse(str);returndata;}returnresult;
CoAP集成配置
进入Integrations部分,点击Add new integration。命名为CoAP Integration,选择类型COAP。
进入Integrations部分,点击Add new integration。命名为CoAP Integration,选择类型COAP。
添加刚创建的CoAP Uplink Converter。
复制CoAP endpoint URL,后续将在coap-client中用于测试CoAP集成。点击"添加"创建集成。
CoAP集成配置项
CoAP集成可配置安全模式:
NO SECURE(默认模式)
DTLS
MIXED
后两种类型在创建集成前,需在 .yml中启用DTLS支持,或在 .conf中覆盖下列环境变量:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Enable/disable DTLS 1.2 support
export COAP_DTLS_ENABLED=true
# Default CoAP DTLS bind port
export COAP_DTLS_BIND_PORT=5484
# Path to the key store that holds the SSL certificate
export COAP_DTLS_KEY_STORE=coapserver.jks
# Password used to access the key store
export COAP_DTLS_KEY_STORE_PASSWORD=server_ks_password
# Password used to access the key
export COAP_DTLS_KEY_PASSWORD=server_key_password
# Key alias
export COAP_DTLS_KEY_ALIAS=serveralias
# Skip certificate validity check for client certificates
export TB_COAP_X509_DTLS_SKIP_VALIDITY_CHECK_FOR_CLIENT_CERT=false
注意,上述环境变量使用默认DTLS配置。要在DTLS模式下正确启动CoAP服务,需至少更新key store配置。详见 CoAP over DTLS指南。