고급 구성 및 통합 > Edge MicroServer에 자산 연결(EMS)
Edge MicroServer에 자산 연결(EMS)
Edge MicroServer(EMS)는 원격 장치에 설치된 독립 실행형 응용 프로그램입니다. 이 응용 프로그램은 항상 실행되며 장치와 ThingWorx 호스트 간에 양방향 통신을 설정합니다.
이 단원에서는 Edge MicroServer(EMS)를 사용하여 ThingWorx의 자산 속성을 장치에 연결하는 방법과 EMS와 함께 제공되는 Lua 스크립트 리소스를 연결하는 방법에 대해 설명합니다.
Edge SDK를 사용하여 자산 속성을 연결하는 방법에 대한 자세한 내용은 ThingWorx Edge Java SDK 도움말 센터를 참조하십시오.
사전 요구 사항
다음 항목이 있는지 확인해야 합니다.
Edge MicroServer(EMS) 및 번들로 제공되는 Lua 스크립트 리소스(LSR)
ThingWorx Apps가 설치된 ThingWorx Composer 8.2.0 이상
ThingWorx WS EMS(WebSocket-based Edge MicroServer) 및 LSR(Lua 스크립트 리소스) 도움말 센터. 이러한 지침에서는 사용자가 이 도움말 센터의 내용을 잘 알고 있다고 가정합니다.
ThingWorx 구성
1. ThingWorx Composer에서 사용자의 EMS에서 사용할 응용 프로그램 키를 만듭니다.
a. 보안 > 응용 프로그램 키에서 새로 만들기를 클릭합니다.
b. 적절한 값을 입력합니다.
이름 - 이 값은 EMS를 구성할 때 필요합니다.
사용자 이름 참조 - EMS를 사용할 사용자를 선택합니다. 예를 들어 Administrator입니다.
만료 날짜 - 회사 정책에 따라 응용 프로그램 키에 대한 적절한 만료 날짜를 설정합니다. 비워 두면 기본값인 하루로 설정됩니다.
c. 저장을 클릭합니다.
2. ThingWorx에서 원격 장치를 연결할 자산(사물)을 만듭니다. 다음 기본 사물 템플릿 중 하나를 사용하거나 다음 사물 템플릿 중 하나를 구현하는 템플릿을 사용합니다.
RemoteThing
RemoteThingWithFileTransfer
RemoteThingWithTunnels
RemoteThingWithTunnelsAndFileTransfer
PTC.ISA95.PhysicalAssetBaseThingTemplate
사용된 기본 사물 템플릿에 상관없이 자산이 RemoteAccessible 사물 형태를 구현해야 합니다.
개별 자산이 아닌 사물 템플릿에 사물 형태를 구현하는 것이 좋습니다.
EMS 구성
2. 다음 파일로 이동합니다. <EMS 설치 위치>/microserver/etc/config.json
3. host, portappKey가 사용자의 ThingWorx 시스템을 대상으로 지정되도록 config.json 파일을 편집합니다. 다음 예 또는 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": "<인증서 파일에 대한 절대 경로>",
"private_key": "<비공개 키에 대한 절대 경로>",
"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":"<\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":"<\MicroServer\edge\in에 대한 절대 경로>"
}, {
"out":"<\MicroServer\edge\out에 대한 절대 경로>"
},{
"staging":"<\MicroServer\edge\staging에 대한 절대 경로>"
}],
"staging_dir":"staging"
}
}
4. 수정된 config.json 파일을 저장합니다.
5. <EMS 설치 위치>/microserver/wsems.exe 파일을 옵션으로 실행하거나 서비스로 설치합니다.
LSR(Lua 스크립트 리소스) 구성
1. <EMS 설치 위치>/microserver/etc 디렉터리에서 config.lua.example을 찾습니다.
2. 파일에서 Connection parameters 섹션을 찾은 다음 EMS 설정에 따라 수정합니다. 예:
--
-- 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. HTTP Server Configuration 섹션을 찾는 다음 Lua 스크립트 리소스에 맞게 구성합니다. 예:
--
-- 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. 속성을 바인딩할 자산을 식별합니다. config.lua.example 파일에서 다음 섹션을 찾습니다.
scripts.EdgeThing = {
file = "thing.lua",
template = "example",
}
EdgeThingThingWorx의 실제 자산 이름 값으로 대체합니다.
또는 여기에서 identifier 속성을 지정할 수 있습니다. 이 프로세스의 후반부에 Lua 스크립트를 실행하면 ThingWorx에 식별자가 생성되고 ThingWorx Composer에서 해당 자산에 대한 일반 정보 페이지에서 식별자를 선택할 수 있습니다.
* 
원격 사물은 이름이나 식별자 중 하나로만 바인딩될 수 있습니다. 이름으로 바인딩된 원격 사물에 식별자도 있는 경우 원격 서비스를 실행하거나 사물에 대한 원격 속성을 가져오려고 하면 예상대로 작동하지 않습니다.
이름으로 원격 사물을 바인딩하려면 식별자를 지정하지 마십시오. 식별자가 이미 지정된 경우에는 제거합니다.
template 속성은 장치에서 자산으로 보낼 정보(예: 원격 속성 또는 원격 서비스)를 식별하는 스크립트를 나타냅니다. 위의 코드 예에서 example 파일은 <EMS 설치 위치>/microserver/etc/custom/templates/example.lua에 있습니다. example.lua 파일에는 사용자 고유의 원격 속성 및 원격 서비스를 만드는 예가 포함되어 있습니다.
EMS 및 LSR(Lua 스크립트 리소스) 실행
구성을 완료한 후 EMS를 서비스로 또는 명령줄에서 실행한 다음 LSR을 서비스로 또는 명령줄에서 실행합니다. 다음 그림은 명령줄에서 실행되는 예를 보여줍니다.
EMS:
Lua 스크립트:
구성에 오류가 있으면 명령줄 인터페이스가 오류를 보고합니다.
원격 속성 바인딩
LSR이 성공적으로 실행되면 template으로 지정한 스크립트에 정의되어 있는 원격 속성을 ThingWorx의 자산에 바인딩할 수 있습니다.
1. ThingWorx Composer에서 자산을 엽니다.
2. 속성 및 경고 페이지에서 바인딩 관리를 클릭합니다.
3. 바인딩 관리 창에서 원격을 클릭합니다. 자산에 바인딩할 원격 속성을 왼쪽 창에서 오른쪽 창으로 끌어서 놓습니다.
4. 완료를 클릭합니다.
5. 저장을 클릭하여 자산을 저장합니다.