Configuraciones avanzadas e integraciones > Conexión de activos con Edge MicroServer (EMS)
Conexión de activos con Edge MicroServer (EMS)
Edge MicroServer (EMS) es una aplicación autónoma instalada en un dispositivo remoto. Establece comunicaciones continuadas bidireccionales entre el dispositivo y un host de ThingWorx.
En esta sección se explica cómo conectar las propiedades de activos en ThingWorx a un dispositivo utilizando Edge MicroServer (EMS) y el recurso de scripts de Lua que se suministra con EMS.
Para obtener información sobre cómo conectar propiedades de activos utilizando Edge SDK, consulte el Centro de ayuda de ThingWorx Edge Java SDK.
Requisitos previos
Asegúrese de tener lo siguiente:
Edge MicroServer (EMS) y el recurso de scripts de Lua (LSR) que se suministra.
ThingWorx Composer 8.2.0 o una versión superior con ThingWorx Apps instalado.
Centro de ayuda de ThingWorx WebSocket-based Edge MicroServer (WS EMS) y Lua Script Resource (LSR). En estas instrucciones se da por sentado que está familiarizado con ese centro de ayuda.
Configuración de ThingWorx
1. En ThingWorx Composer, cree una clave de aplicación para utilizarla en EMS.
a. En Seguridad > Claves de aplicación, pulse en Nueva.
b. Introduzca los valores pertinentes:
Nombre: este valor se necesita al configurar EMS.
Referencia de nombre de usuario: seleccione el usuario que utilizará EMS. Por ejemplo, Administrator.
Fecha de vencimiento: defina la correspondiente fecha de vencimiento para la clave de aplicación según las políticas de la compañía. Si se deja en blanco, el valor por defecto es un día.
c. Pulse en Guardar.
2. Cree el activo (cosa) en ThingWorx con el que desea conectar los dispositivos remotos. Utilice una de las siguientes plantillas de cosa base, o una plantilla de cosa que implemente una de las siguientes plantillas de cosa:
RemoteThing
RemoteThingWithFileTransfer
RemoteThingWithTunnels
RemoteThingWithTunnelsAndFileTransfer
PTC.ISA95.PhysicalAssetBaseThingTemplate
Sea cual sea la plantilla de cosa base utilizada, el activo debe implementar la definición de cosa RemoteAccessible.
Se recomienda implementar las definiciones de cosa en las plantillas de cosa, en lugar de hacerlo en los activos individuales.
Configuración de EMS
2. Vaya al fichero siguiente: <ubicación_instalación_EMS>/microserver/etc/config.json.
3. Edite el fichero config.json para que host, port y appKey apunten a ThingWorx. Puede utilizar el ejemplo siguiente, o el fichero config.json.minimal.
{
"ws_servers": [{
"host": "localhost",
"port": 8080
}],
"appKey": "84fbd93b-1ca5-4057-be39-5a2b3bd1cf9e",
"ws_connection":{
"encryption":"none"
"http_server" : {
"host": "10.232.247.58",
"port": 8000,
"ssl" : false,
"certificate": "<ruta absoluta para certificar fichero>",
"private_key": "<ruta absoluta a clave privada>",
"passphrase": "password"
"authenticate": false,
"user": "johnsmith",
"password": "DP:AQABAKs1GFoUEW1XfDlwab4J4huKthm9GP3seM3PEjOMVoyFD3es2ZDtN2ngA99oLkcODQ",
"content_read_timeout": 20000,
"ports_to_try": 10,
"max_clients": 15,
"enable_csrf_tokens": true,
"csrf_token_rotation_period": 10
},

"logger":{
"level":"WARN",
"publish_directory":"<ruta absoluta a \MicroServer\edge\logs>",
"publish_level":"INFO",
"max_file_storage":2000000,
"auto_flush":true
},

"certificates":{
"validate":false,
"allow_self_signed":true
},
"file":{
"buffer_size":32400,
"virtual_dirs":[{
"in":"<ruta absoluta a \MicroServer\edge\in>"
}, {
"out":"<ruta absoluta a \MicroServer\edge\out>"
},{
"staging":"<ruta absoluta a \MicroServer\edge\staging>"
}],
"staging_dir":"staging"
}
}
4. Guarde el fichero config.json modificado.
5. Ejecute el fichero <ubicación_instalación_EMS>/microserver/wsems.exe como opción, o instálelo como servicio.
Configuración del recurso de scripts de Lua (LSR)
1. Busque el fichero config.lua.example en el directorio <ubicación_instalación_EMS>/microserver/etc.
2. En el fichero, localice la sección Connection parameters y modifíquela de acuerdo con la configuración de EMS. Por ejemplo:
--
-- Connection parameters
--
scripts.rap_host = "EMS IP Address"
scripts.rap_port = "EMS Port"
scripts.rap_ssl = true
scripts.rap_userid = "EMS HTTP Server User ID"
scripts.rap_password = "password"
scripts.rap_server_authenticate = true
scripts.rap_cert_file = "Path to CA cert file."
scripts.rap_deny_selfsigned = true
scripts.rap_validate = true
3. Localice la sección HTTP Server Configuration y configúrela para el recurso de scripts de Lua. Por ejemplo:
--
-- HTTP Server Configuration
--
scripts.script_resource_host = "localhost"
scripts.script_resource_port = "8001"
scripts.script_resource_ssl = "false"
scripts.script_resource_certificate_chain = "/path/to/lsr_http_server_certificate_chain/file"
scripts.script_resource_private_key = "/path/to/private/key"
scripts.script_resource_passphrase = "password"
scripts.script_resource_authenticate = "false"
scripts.script_resource_userid = "johnsmith"
scripts.script_resource_password = "AES:EncryptedPassword"
scripts.script_resource_enable_csrf_tokens = true
scripts.script_resource_csrf_token_rotation_period = 10
scripts.script_resource_enable_rest_services = false
4. Identifique el activo al que desea enlazar las propiedades. Busque la sección siguiente en el fichero config.lua.example:
scripts.EdgeThing = {
file = "thing.lua",
template = "example",
}
Reemplace EdgeThing con el valor de Nombre del activo actual de ThingWorx.
También puede especificar la propiedad identifier aquí. Después de ejecutar el script de Lua más adelante en este proceso, creará un identificador en ThingWorx que podrá seleccionar como valor de Identificador en la página Información general del activo en ThingWorx Composer.
* 
Una cosa remota puede estar enlazada por nombre o por identificador, pero no por ambos. Cuando una cosa remota enlazada por nombre también tiene un identificador, la ejecución de servicios remotos o la extracción de propiedades remotas para la cosa no funcionan del modo previsto.
Para enlazar una cosa remota por nombre, no especifique ningún identificador. Si ya se ha especificado un identificador, elimínelo.
La propiedad template representa el script que identifica la información que se desea enviar del dispositivo al activo, como las propiedades o lo servicios remotos. En el código de ejemplo anterior, el fichero example que se muestra se encuentra aquí: <ubicación_instalación_EMS>/microserver/etc/custom/templates/example.lua. Los ficheros example.lua contienen ejemplos para crear sus propiedades y servicios remotos propios.
Ejecución de EMS y el recurso de scripts de Lua (LSR)
Una vez completadas las configuraciones, ejecute EMS como servicio o desde la línea de comandos, y luego ejecute LSR como servicio o desde la línea de comandos. En las pantalla siguientes se muestran ejemplos de ejecución de ambos desde la línea de comandos.
EMS:
Script de Lua:
Si hay un error en la configuración, la interfaz de la línea de comandos lo notifica.
Enlace de propiedades remotas
Tras la ejecución correcta de LSR, las propiedades remotas definidas en el script que ha especificado como template están disponibles para enlazarlas con el activo en ThingWorx.
1. En ThingWorx Composer, abra el activo.
2. En la página Propiedades y alertas, pulse en Gestionar enlaces.
3. En la ventana Gestionar enlaces, pulse en Remoto. Arrastre las propiedades remotas que desea enlazar al activo desde el panel izquierdo y suéltelas en el panel derecho.
4. Pulse en Terminado.
5. Pulse en Guardar para guardar el activo.