Todos los productos
Search
Centro de documentos

IoT Platform:Uso de las funciones avanzadas

Última actualización: Sep 07, 2026

Este tema describe cómo configurar IoT as Bridge SDK para usar las funciones avanzadas. Puede especificar rutas de archivos de configuración y registrar puentes de forma dinámica. También puede invocar las operaciones encapsuladas en IoT as Bridge SDK para enviar datos de Thing Specification Language (TSL), enviar propiedades o eventos, establecer propiedades e invocar servicios.

Especificación de rutas de archivos de configuración

De forma predeterminada, el archivo de configuración de un puente es application.conf, y el archivo de configuración de la asignación de certificados de dispositivos es devices.conf.

IoT as Bridge SDK permite especificar rutas de archivos personalizadas. Antes de llamar al método bootstrap(), llame al método ConfigFactory.init() para especificar la ruta de un archivo de configuración. También puede crear una instancia e implementar los métodos según sus necesidades de negocio.

Código de ejemplo:

private static DeviceConfigManager selfDefineDeviceConfigManager = new DeviceConfigManager() {
    @Override
    public DeviceIdentity getDeviceIdentity(String originalIdentity) {
        return devicesMap.get(originalIdentity);
    }

    @Override
    public String getOriginalIdentity(String productKey, String deviceName) {
        return null;
    }
};
BridgeBootstrap bridgeBootstrap = new BridgeBootstrap();
ConfigFactory.init(ConfigFactory.getBridgeConfigManager("application-self-define.conf"),selfDefineDeviceConfigManager);
bridgeBootstrap.bootstrap();

Registro dinámico de puentes

Cuando se despliegan puentes en una gran cantidad de servidores, el proceso de despliegue se vuelve complejo si necesita asignar puentes distintos a cada servidor de puente. Configure el archivo de configuración del puente application.conf para registrar puentes de forma dinámica.

Debe especificar los parámetros productKey y popClientProfile del puente en el archivo de configuración. Después, IoT as Bridge SDK llama a una operación de API de IoT Platform para registrar el puente y utiliza la dirección MAC del servidor de puente como DeviceName del puente.

Nota
  • Para registrar puentes de forma dinámica, solo configure el archivo de configuración del puente. Para consultar el código de ejemplo, consulte Use the basic features.

  • Especifique todos los campos del parámetro popClientprofile. Si ya se usó una dirección MAC como DeviceName de un dispositivo existente, ese dispositivo se utilizará como puente.

  • Los parámetros deviceName y deviceSecret deben quedar vacíos. Si ya especificó la información de un puente, no podrá registrarlo de forma dinámica.

  • Se recomienda usar dispositivos de prueba dedicados para la depuración. No depure programas en computadoras locales para evitar posibles impactos en el entorno de producción.

    Si depura los programas en varias computadoras locales, las direcciones MAC de dichas máquinas se registrarán como nombres de puente. Estos puentes se asociarán con todos los dispositivos especificados en el archivo devices.conf.

<!--@div {"id":"table_e5p_pzi_wuw","data-tag="table"}-->

Tabla 1. Parámetros

Parámetro

Obligatorio

Descripción

productKey

Sí

El ProductKey del producto al que pertenece el puente.

subDeviceConnectMode

No

El tipo de puente.

  • Si este parámetro se establece en 3, se crea un puente de gran tamaño. Se pueden conectar un máximo de 500,000 dispositivos al puente.

  • Si no se especifica este parámetro, se crea un puente de tamaño pequeño. Se pueden conectar un máximo de 1,500 dispositivos al puente.

Los puentes de gran tamaño y de tamaño pequeño utilizan políticas distintas para desconectar dispositivos. Para obtener más información, consulte la sección Disconnect a device from IoT Platform del tema "Uso de las funciones básicas".

http2Endpoint

Sí

El endpoint de la puerta de enlace HTTP/2. Este endpoint se usa para establecer una conexión persistente entre el puente e IoT Platform mediante el protocolo HTTP/2.

Formato del endpoint:

  • Instancias Enterprise Edition: https://${IotInstanceId}.http2.iothub.aliyuncs.com:443.

    Reemplace ${IotInstanceId} por el ID de la instancia que adquirió.

    Por ejemplo, si el ID de la instancia es iot-cn-g06kwb**, el endpoint es https://iot-cn-g06kwb**.http2.iothub.aliyuncs.com:443.

  • Instancias públicas: el formato del endpoint para las instancias públicas de la nueva versión difiere del formato de las instancias públicas de la versión anterior.

    • Las instancias públicas de la nueva versión usan el mismo formato de endpoint que las instancias Enterprise Edition.

    • Instancias públicas de la versión anterior: https://${productKey}.iot-as-http2.${RegionId}.aliyuncs.com:443.

      Reemplace ${productKey} por el ProductKey del producto al que pertenece su puente.

      Reemplace ${RegionId} por el ID de la región donde reside su servicio de IoT Platform. Para obtener más información sobre los ID de región, consulte Regions and Zones.

      Por ejemplo, si el ProductKey de un puente es a1abcab** y la instancia pública reside en la región China (Shanghai), el endpoint es https://a1abcab**.iot-as-http2.cn-shanghai.aliyuncs.com:443.

    Para obtener más información sobre las instancias de IoT Platform, consulte Overview.

authEndpoint

Sí

El endpoint del servicio de verificación de dispositivos.

Formato del endpoint:

  • Instancias Enterprise Edition: https://${IotInstanceId}.auth.iothub.aliyuncs.com/auth/bridge.

    Reemplace ${IotInstanceId} por el ID de la instancia que adquirió.

    Por ejemplo, si el ID de la instancia es iot-cn-g06kwb**, el endpoint es https://iot-cn-g06kwb**.auth.iothub.aliyuncs.com/auth/bridge.

  • Instancias públicas: el formato del endpoint para las instancias públicas de la nueva versión difiere del formato de las instancias públicas de la versión anterior.

    • Las instancias públicas de la nueva versión usan el mismo formato de endpoint que las instancias Enterprise Edition.

    • Instancias públicas de la versión anterior: https://iot-auth.${RegionId}.aliyuncs.com/auth/bridge.

      Reemplace ${RegionId} por el ID de la región donde reside su servicio de IoT Platform. Para obtener más información sobre los ID de región, consulte Regions and Zones.

      Por ejemplo, si una instancia reside en la región China (Shanghai), el endpoint es https://iot-auth.cn-shanghai.aliyuncs.com/auth/bridge.

popClientProfile

Sí

Si especifica este parámetro, IoT as Bridge SDK llama automáticamente a una operación de IoT Platform para crear un puente.

A continuación se describen los campos de popClientProfile.

<!--@div {"id":"table_byt_tbf_otw","data-tag="table"}-->

Tabla 2. popClientProfile

Campo

Obligatorio

Descripción

accessKey

Sí

El AccessKey ID de su cuenta de Alibaba Cloud.

Inicie sesión en la consola de IoT Platform, coloque el puntero sobre su foto de perfil y haga clic en AccessKey Management. En la página AccessKey Pair, puede crear o consultar pares de AccessKey.

accessSecret

Sí

El AccessKey secret de su cuenta de Alibaba Cloud.

name

Sí

El ID de la región a la que pertenece el puente.

Para obtener más información sobre los ID de región, consulte Regions and zones.

region

Sí

product

Sí

El nombre del producto. Establezca el valor en Iot.

endpoint

Sí

El endpoint de la API en la región especificada. El valor debe indicarse con el formato iot.${RegionId}.aliyuncs.com.

Reemplace ${RegionId} por el ID de la región donde reside su servicio de IoT Platform. Para obtener más información sobre los ID de región, consulte Regions and Zones.

Por ejemplo, si su servicio de IoT Platform reside en la región China (Shanghai), el endpoint es iot.cn-shanghai.aliyuncs.com.

A continuación se muestra un código de ejemplo para configurar un puente de tamaño pequeño. En este ejemplo se utiliza una instancia Enterprise Edition.

// The sendpoint of services.
http2Endpoint = "https://${IotInstanceId}.http2.iothub.aliyuncs.com:443"
authEndpoint = "https://${IotInstanceId}.auth.iothub.aliyuncs.com/auth/bridge"

// The parameters of the bridge.
productKey = ${YourProductKey}

popClientProfile = {
    accessKey = ${YourAliyunAccessKey}
    accessSecret = ${YourAliyunAccessSecret}
    name = cn-shanghai
    region = cn-shanghai
    product = Iot
    endpoint = iot.cn-shanghai.aliyuncs.com
}

Llamada a operaciones para enviar datos TSL

IoT as Bridge SDK encapsula las operaciones para enviar datos. Llame a la operación reportProperty para enviar propiedades, a la operación fireEvent para enviar eventos y a la operación updateDeviceTag para actualizar etiquetas. Un dispositivo puede usar estas operaciones para notificar propiedades, notificar eventos y actualizar etiquetas de dispositivo.

Nota
  • Antes de llamar a las operaciones reportProperty y fireEvent, defina propiedades y eventos en la consola de IoT Platform. Inicie sesión en la consola de IoT Platform y vaya a la página de detalles de un producto. Luego, defina las propiedades y los eventos en la pestaña Define Feature. Para obtener más información, consulte Add a TSL model manually.

  • Si una etiqueta ya existe cuando llama a la operación updateDeviceTag, se actualiza el valor de dicha etiqueta. Para consultar las etiquetas existentes, vaya a la página de detalles de un dispositivo en la consola de IoT Platform. Si la etiqueta no existe, IoT Platform la crea automáticamente.

Código de ejemplo:

TslUplinkHandler tslUplinkHandler = new TslUplinkHandler();
// Submit a property. 
// The testProp property is defined. 
String requestId = String.valueOf(random.nextInt(1000));
// The timestamp is not included in the submitted property data. 
tslUplinkHandler.reportProperty(requestId, originalIdentity, "testProp", random.nextInt(100));
// The timestamp is included in the submitted property data. 
//tslUplinkHandler.reportProperty(requestId, originalIdentity, "testProp", random.nextInt(100), System.currentTimeMillis());

// Submit an event. 
// The testEvent event is defined. 
requestId = String.valueOf(random.nextInt(1000));
HashMap<String, Object> params = new HashMap<String, Object>();
params.put("testEventParam", 123);
// The timestamp is not included in the submitted event data. 
tslUplinkHandler.fireEvent(originalIdentity, "testEvent", ThingEventTypes.INFO, params);
// The timestamp is included in the submitted event data.
//tslUplinkHandler.fireEvent(originalIdentity, "testEvent", ThingEventTypes.INFO, params, System.currentTimeMillis());

// Update a device tag. 
// The key of the tag is set to testDeviceTag. 
requestId = String.valueOf(random.nextInt(1000));
tslUplinkHandler.updateDeviceTag(requestId, originalIdentity, "testDeviceTag", String.valueOf(random.nextInt(1000)));

A continuación se describen los parámetros.

Parámetro

Descripción

requestId

El ID de la solicitud.

originalIdentity

El identificador original del dispositivo.

testProp

El identificador de la propiedad. En este ejemplo, el identificador de la propiedad definida es testProp. La propiedad testProp se envía a IoT Platform.

random.nextInt(100)

El valor de la propiedad. Al definir una propiedad, puede establecer un rango de valores. En este ejemplo, random.nextInt(100) indica un número entero aleatorio menor que 100.

testEvent

El identificador del evento. En este ejemplo, el identificador del evento definido es testEvent. El evento testEvent se envía a IoT Platform.

ThingEventTypes.INFO

El tipo de evento. ThingEventTypes especifica el tipo de evento. El valor INFO indica que el tipo de evento es INFO.

En este ejemplo, el tipo de evento se estableció en INFO cuando se definió el evento testEvent en la consola de IoT Platform.

Si el tipo de evento es ERROR, establezca este parámetro en ThingEventTypes.ERROR.

params

Los parámetros de salida del evento. Los identificadores, tipos de datos y rangos de valores de los parámetros de salida se definen en la consola de IoT Platform. En este ejemplo, el identifier del parámetro de salida es testEventParam, y el valor es 123.

testDeviceTag

La clave de la etiqueta. El tipo de dato es cadena de texto. En este ejemplo, la clave es testDeviceTag. Establezca la clave de la etiqueta según las reglas de configuración de claves de etiqueta y sus necesidades de negocio. Para obtener más información, consulte Tags.

String.valueOf(random.nextInt(1000))

El valor de la etiqueta. El tipo de dato es cadena de texto. En este ejemplo, String.valueOf(random.nextInt(1000)) indica un número entero aleatorio menor que 1,000. Establezca el valor de la etiqueta según las reglas de configuración de valores de etiqueta y sus necesidades de negocio. Para obtener más información, consulte Tags.

System.currentTimeMillis()

La marca de tiempo del sistema. Especifique una marca de tiempo UNIX que represente el número de milisegundos transcurridos desde el 1 de enero de 1970 a las 00:00:00 en Tiempo Universal Coordinado (UTC).

Llamada a operaciones para enviar varias propiedades y eventos a la vez

IoT as Bridge SDK encapsula las operaciones para enviar varias propiedades y eventos a la vez. Cree un objeto BatchPostEventPropertyMessage y llame a los métodos addProperty() y addEvent() para agregar los datos de propiedades y eventos. Luego, cree un objeto TslUplinkHandler y llame al método BatchPostEventPropertyMessage() para enviar los datos.

Nota

Antes de llamar a las operaciones reportProperty y fireEvent, defina propiedades y eventos en la consola de IoT Platform. Inicie sesión en la consola de IoT Platform y vaya a la página de detalles de un producto. Luego, defina las propiedades y los eventos en la pestaña Define Feature. Para obtener más información, consulte Add a TSL model manually.

Código de ejemplo:

TslUplinkHandler tslUplinkHandler = new TslUplinkHandler();
// Submit multiple properties and events at a time.
String requestId = String.valueOf(random.nextInt(1000));
long startTime = System.currentTimeMillis() - 3000;

// Create a message to submit data.
BatchPostEventPropertyMessage batchPostEventPropertyMessage = new BatchPostEventPropertyMessage();
Map<String, Object> aiEventParams = new HashMap<>();
aiEventParams.put("EventContent", "hello world");
batchPostEventPropertyMessage
    .addProperty("PowerConsumption", 1000, startTime)
    .addProperty("PowerConsumption", 123, startTime + 1000)
    .addProperty("LightAdjustLevel", 23, startTime)
    .addProperty("LightAdjustLevel", 44, startTime + 1000)
    .addProperty("LightAdjustLevel", 47, startTime + 2000)
    .addEvent("AIEvent", aiEventParams, startTime);
batchPostEventPropertyMessage.setId(requestId);

// Submit the data.
tslUplinkHandler.batchPostEventPropertyMessage(originalIdentity, batchPostEventPropertyMessage);

A continuación se describen los parámetros.

Parámetro

Descripción

requestId

El ID de la solicitud.

startTime

Las marcas de tiempo de las propiedades y los eventos que se van a enviar. Especifique una marca de tiempo UNIX que represente el número de milisegundos transcurridos desde el 1 de enero de 1970 a las 00:00:00 UTC. Puede especificar un valor personalizado para este parámetro según sus necesidades de negocio.

aiEventParams

La información del evento.

PowerConsumption

Los identificadores de las propiedades. En este ejemplo, los identificadores de las propiedades definidas incluyen PowerConsumption y LightAdjustLevel. Se envían los valores de ambas propiedades en distintos momentos.

LightAdjustLevel

AIEvent

El identificador del evento. En este ejemplo, el identificador del evento definido es AIEvent. El evento AIEvent se envía a IoT Platform.

originalIdentity

El identificador original del dispositivo.

Llamada a operaciones para establecer propiedades e invocar servicios

IoT as Bridge SDK encapsula la operación PropertySetHandler para establecer propiedades y la operación ServiceInvokeHandler para invocar servicios. Un dispositivo puede usar estas operaciones para recibir comandos de IoT Platform y actualizar datos.

Código de ejemplo:

BridgeBootstrap bridgeBootstrap = new BridgeBootstrap();
// Set properties.
bridgeBootstrap.setPropertySetHandler(new PropertySetHandler() {
    @Override
    public void onPropertySet(PropertySetMessage msg) {
        log.info("on property set, {}", msg.getParams());
        // If you call the replySuccess() method, the SDK sends the /property/set_reply message to IoT Platform. The response code is 200.
        msg.replySuccess();
        // If you call the replyFail() method, the SDK sends the /property/set_reply message to IoT Platform. You can specify the response code based on your business requirements.
        //msg.replyFail(400);
    }
});

// Call services.
bridgeBootstrap.setServiceInvokeHandler(new ServiceInvokeHandler() {
    @Override
    public void onServiceInvoke(ServiceInvokeMessage message) {
        log.info("on service invoke, {}", message.getParams());
        // If you call the replySuccess() method, the SDK sends the /service/{service.identifier}_reply message to IoT Platform. The response code is 200.
        message.replySuccess();
        // If you call the replyFail() method, the SDK sends the /service/{service.identifier}_reply message to IoT Platform. You can specify the response code based on your business requirements.
        //msg.replyFail(400);
    }
});