도구를 범위별로
에이전트가 부를 수 있는 도구 하나하나가 하는 일이며, 그것을 알리는 기능 스위치별로 묶었고, 스위치가 필요 없는 도움말 도구도 함께 다룹니다.
도구 이름은 변하지 않는 snake_case 식별자입니다. 오류는 구조화되어 있고 바로 손댈 수 있습니다. 실패한 호출은 무엇이 잘못되었는지와, 그것을 고치는 도구나 단계를 밝히는 힌트를 함께 돌려주므로, 에이전트는 짐작하는 대신 스스로 고쳐 갑니다. 서버는 모든 에이전트에게 앱이 어떻게 동작하는지에 관한 질문에 답하기 전에 help_search와 help_read로 도움말을 읽으라고 안내하고, 백업(관리) 범위가 켜져 있으면 구성을 바꾸기 전에 구성 백업을 만들라고도 안내합니다. 이 가운데 어느 목록을 에이전트가 실제로 보는지는 범위마다 열리는 것에 있으며, 여기에 범위가 필요 없는 도움말 도구가 더해집니다.
도움말
두 도움말 도구는 설치본에 담긴 그대로의 이 문서를 읽습니다. 도움말 패널이 여는 것과 같은 글이며, 스테이션에 설치된 버전에 맞춰 쓰였습니다. 범위 스위치가 어떻게 되어 있든 전체 스위치가 켜져 있으면 endpoint와 함께 제공됩니다. 그 내용은 공개 문서이고 스테이션에 관한 것은 아무것도 보여 주지 않기 때문입니다. 둘 다 런타임이 정지된 동안에도 계속 동작합니다.
| 도구 | 하는 일 |
|---|---|
help_search |
질문의 낱말로 글을 찾아, 글마다 slug, 제목, 요약, 그 낱말이 걸리는 절을 가장 잘 맞는 것부터 돌려줍니다(기본 10개, 최대 50개). 대소문자와 악센트는 무시합니다. 검색어가 없으면 모든 글을 나열합니다. |
help_read |
slug로 글 하나를 통째로 일반 텍스트로 읽습니다. 제목, 요약, 절 목록, 본문을 돌려주며, 절마다 제목 줄 하나에 두고 표는 한 행을 한 줄에 두며, 그 글이 링크하는 글들의 slug도 덧붙입니다. |
둘 다 기본으로 스테이션의 인터페이스 언어를 읽으므로, 답이 가리키는 페이지, 버튼, 필드가 화면에 있는 것과 같습니다. 어느 쪽이든 culture로 설치된 도움말에 담긴 다른 언어를 지정할 수 있습니다. 담겨 있지 않은 언어는 담겨 있는 언어 목록과 함께 거부되며, 다른 언어가 대신 답하는 일은 없습니다. 도움말이 없거나 읽을 수 없는 설치본은 호출마다 글 대신 그 이유를 답합니다.
Connector, 읽기
| 도구 | 하는 일 |
|---|---|
connector_browse |
Connector 페이지가 그리는 트리를 실시간 상태 건전성과 함께 나열합니다. 스테이션에 추가한 모든 드라이버가 아래에 아무것도 없는 것까지 나오며, 장치, 시리얼 회선, 브로커 가운데 하나를 가진 드라이버는 언제나 추가된 상태입니다. Modbus RTU는 드라이버, 시리얼 회선, 장치, 태그로, MQTT는 드라이버, 브로커(세션 상태와 함께), 장치, 태그로, 그 밖의 모든 드라이버는 드라이버, 장치, 태그로 나오며 장치마다 그 폴더가 옆에 놓입니다. Generic serial and TCP는 시리얼 회선을 Modbus RTU처럼, 네트워크 장치를 다른 드라이버처럼 나열하며, 장치마다 전송 방식을 붙입니다. SCPI instruments도 시리얼 회선과 그 밖의 장치를 같은 방식으로 나열합니다. File 장치는 폴더, 파일 이름, 읽는 방식(파일 하나 또는 수신 폴더), 형식을 담습니다. Database 장치는 데이터베이스 종류(databaseKind)를 담습니다. 장치마다 error를 담습니다. 그 장치의 페이지가 보여 주는 바로 그 한 문장이며, 스테이션의 언어로 쓰입니다. 오류가 시리얼 회선이나 브로커의 것이면 그곳을 가리키는 문장, 아니면 장치 자신의 오류(연결되지 않음, 연결이 거부됨, 드라이버의 경고), 그것도 아니면 읽기가 거부되는 태그의 요약이며, 태그마다의 이유는 tag_read의 readFailure입니다. 장치에 오류가 없으면 null입니다. 장치가 연결되어 있지 않은 태그에 대해 tag_read가 주는 문장은 이곳을 가리킵니다. tag_read와 tag_write와 Logic 수식이 쓰는 태그 별칭(Driver.Folders….Device.Tag)을 드러냅니다. Connector가 정지되어 있는 동안 별칭은 null입니다. |
tag_read |
별칭으로 태그 하나의 실시간 값을 읽습니다. valueRaw는 어떤 단계도 거치기 전의 장치 자체의 값이고, value는 변환 경로의 모든 단계(소수 자릿수 단계 포함)를 지난 공학값입니다. 장치가 2.718281828459로 보고하는 Double은 소수 자릿수가 2이면 2.72로 읽힙니다. 그 밖에 품질, 두 시각, 그리고 substitution이 있습니다. substitution은 그 값이 장치가 보고한 것이 아니라 설정한 대체값인지를 알려 줍니다. None(측정값이거나 값이 아예 없음), NaNReplaced(읽기가 NaN이어서 선언한 대체값이 그 자리를 대신함), LastGoodHeld(읽기가 실패해 마지막으로 도착한 읽기가 그 읽기의 원시값과 시각과 함께 유지됨), ReadFailureReplaced(읽기가 실패해 선언한 대체값이 제시됨) 가운데 하나입니다. 대체값은 값으로 치므로 한계 결함이 생기지 않는 한 품질은 정상으로 남지만, 결코 측정값은 아닙니다. communicating은 장치가 아직 응답하는지를 알려 줍니다. 마지막 읽기가 실패했거나 아직 아무것도 읽지 않았으면 false입니다. 태그의 읽기 주기에 짧은 여유를 더한 시간이 새 읽기 없이 지나간 읽기는 실패한 읽기로 셉니다. 값, 품질, substitution은 실패한 읽기일 때처럼 답하고(기본으로는 값이 없고 품질이 나쁘며, 태그가 정한 대로 유지한 읽기나 선언한 숫자), communicating은 false이며, 시각은 마지막으로 들어온 읽기를 가리킵니다. 태그의 한계를 벗어난 값은 연결 결함이 아닙니다. 품질은 나빠지지만 communicating은 true로 남습니다. readFailure는 읽기가 도착하지 않은 이유를 태그 패널이 보여 주는 바로 그 한 문장으로, 스테이션의 언어로 알려 줍니다. 태그 자신의 읽기가 거부되었을 때는 장치나 드라이버가 준 이유이고, 태그의 장치가 연결되어 있지 않을 때는 그 장치를 가리키는 문장입니다. 태그가 읽히는 동안에는 null이고, 도착하지 않은 읽기에 아직 기록된 이유가 없을 때도 null입니다. |
modbus_server_status |
스테이션 자체의 Modbus 서버를 보고합니다. 켜져 있는지(enabled), port, status(Off, Listening, PortInUse, 시스템의 말을 failure에 담은 Failed, 또는 RuntimeStopped), 지금 연결된 클라이언트(한 번에 최대 maximumClients개), 그리고 레지스터 맵의 각 행입니다. 각 행의 registerClass, 0부터 센 register와 lastRegister, 형식과 배치, access(ReadOnly 또는 ReadAndWrite), 신호원(태그나 변수를 주소와 id로), 그리고 클라이언트가 지금 그 자리에서 읽는 value와 good, 또는 클라이언트가 예외 04를 받는 이유인 gap(NoSource, SourceRemoved, NoGoodValue, NotRepresentable)을 돌려줍니다. 런타임이 멈춰 있는 동안에도 동작합니다. |
station_broker_status |
스테이션 자체의 MQTT 브로커를 보고합니다. 장치가 발행하는 브로커이며, 스테이션이 읽는 브로커가 아닙니다. 켜져 있는지(enabled), port, status(Off, Listening, PortInUse, 시스템의 말을 failure에 담은 Failed, 또는 RuntimeStopped), authentication(Anonymous 또는 UsernamePassword, username과 hasPassword를 함께, 비밀번호는 빼고), 지금 연결된 장치(동시에 최대 maximumClients대), 그리고 thisStationEntry입니다. 이것은 스테이션이 이 브로커를 읽는 MQTT 드라이버의 브로커 이 스테이션입니다. 런타임이 정지해 있어도 동작합니다. |
mqtt_publish_list |
스테이션이 읽는 각 MQTT 브로커에 발행하는 것, 곧 각 브로커의 발행 카드를 나열합니다. 브로커의 publishTopicPrefix와 발행 중인지, 각 행의 신호원(주소로. 신호원이 삭제되었으면 removed), topic, 메시지(value 또는 alarm)가 붙으며, 두 가지 메시지는 payloads에서 설명합니다. 런타임이 멈춰 있는 동안에도 동작합니다. access가 ReadAndWrite인 행은 writeTopic(토픽 뒤에 /set을 붙인 것)에서 값을 받아 신호원에 쓰고 진단 로그에 MQTT <브로커 이름>으로 기록합니다. payloads.write는 그 토픽이 받는 것을 알려 줍니다. 각 브로커는 publishFormat을 알려 줍니다. Sparkplug B인 브로커는 sparkplug(그룹, 스테이션의 엣지 노드 ID, 장치)를 더하고, 그 각 행은 어떤 장치와 메트릭으로 발행되는지 알려 주며, payloads.sparkplug는 Sparkplug B를 내보내는 방식을 알려 줍니다(Sparkplug B로 발행). |
remote_access_devices |
네트워크로 스테이션의 화면을 누가 열고 있는지 알려 줍니다. 지금 다른 컴퓨터나 태블릿에서 연결된 브라우저(주소, 브라우저와 시스템, 페이지, 사용자, 언제부터인지, 각각이 어느 구성된 기기인지)와, 구성된 기기마다 어떻게 열리는지(시작 화면, 고정, 누구로 로그인하는지, 돌아가기까지의 분, 보기 전용, 그리고 고정 사용자나 시작 화면이 바뀌었을 때 다르게 열리는 이유)입니다. 키나 그 해시는 결코 담지 않습니다. 런타임이 정지한 동안에도 동작합니다. |
server_status |
내장 OPC UA 서버의 상태 건전성을 알립니다. 켜져 있는지(enabled), 돌고 있는지, 가동 시간, endpoint URL, 접속해 있는 클라이언트 세션, 그리고 설정된 주소 공간의 크기입니다. available은 Connector 런타임이 읽고 있는지(서버가 꺼져 있거나 정지해 있는 동안에도 읽습니다)를, serverError는 서버의 마지막 시작이 실패한 까닭을 말합니다. list는 서버가 제공하는 것, 그리고 제공하는 전부입니다. 태그, Logic 변수, 경보, 장치 명령마다 한 행이며, 각 행에는 access와 클라이언트에 설정하는 node가 있습니다. 비어 있는 동안 servesNothing은 true입니다. |
Connector, 구성
| 도구 | 하는 일 |
|---|---|
driver_capabilities |
앱이 섬길 수 있는 모든 드라이버를 나열하며, 장치에 필요한 연결 칸, 태그 주소 모델(자유 입력 주소와 형식 있는 칸), 장치 검색 지원과 그 매개변수, 타이밍 범위, 지원하는 값 형식, 그리고 포트를 지정하지 않은 장치에 연결할 때 쓰는 포트인 defaultPort를 함께 보여 줍니다. added는 그 드라이버가 스테이션에 추가되었는지, 곧 Connector 트리에 그려지는지를 알려 줍니다. device_upsert, serial_line_upsert, mqtt_broker_upsert로 장치, 시리얼 회선, 브로커를 만들면 그 드라이버가 추가됩니다. AVEVA PI와 HTTP는 장치가 쓰는 전송 방식의 포트로 연결하므로 defaultPortByTransport도 줍니다. 기본인 HTTPS에서는 443, 암호화하지 않는 연결에서는 80입니다. Generic serial and TCP는 genericSerialTcp를 더합니다. 전송 방식, 바이트를 입력하는 방식, 메시지가 끝나는 방식, 체크섬, 태그의 읽기 방식과 필터와 꺼내는 방식, 값을 읽고 쓰는 방식, 그리고 완성된 예 두 가지입니다. Omron은 omron을 더합니다. 두 프로토콜 각각의 장치 칸, 주소 형식, 데이터 형식과 FINS 전송 방식과 범위, 쓰기, 장치 검색입니다. SCPI instruments는 scpi를 더합니다. 전송 방식, 이 컴퓨터에 VISA가 있는지(visa.installed), 종료 문자, 쓰기 확인, 초기 설정 명령, 쿼리와 쓰기 명령을 적는 법과 응답을 읽는 법, 장치 검색, 그리고 완성된 예 두 가지입니다. NI-DAQmx는 niDaqmx를 더합니다. 측정마다 채널 예, 단위, 칸, 허용하는 데이터 형식과 접근입니다. 제품에 포함할 수 없는 것이 장치에 필요한 드라이버는 prerequisite를 더합니다(Fluke NetDAQ의 경우 Visual C++ 2005 런타임, OPC DA의 경우 OPC Core Components(OpcEnum과 OPC DA 프록시/스텁), NI-DAQmx의 경우 National Instruments의 NI-DAQmx, SCPI의 경우 VISA 장치에만 필요한 64비트 VISA(NI-VISA 또는 Keysight IO Libraries Suite, 두 페이지와 함께), Database의 경우 ODBC 장치에 필요한 64비트 ODBC 드라이버 또는 데이터 원본으로, 장치별로 판단하므로(perDevice가 true) installed는 null로 남고 빠진 것은 장치 자신의 오류가 알려 줍니다). 이 컴퓨터에 그것이 있는지(installed, 스테이션에 추가된 드라이버의 경우), 공식 다운로드 페이지, 파일, 설치 방법, 알려진 실수, 그 다음에 일어나는 일입니다. SNMP는 snmp를 더합니다. 버전과 각 버전이 받는 자격 증명, SNMPv3 보안 수준과 프로토콜, 값의 종류별 형식, 드라이버가 이름을 아는 모든 표준 객체와 그 OID, 읽기와 쓰기의 동작, 장치 검색, 그리고 완전한 예 두 가지입니다. File은 file을 더합니다. 간단한 경로, 폴더와 그 안에서만 움직이는 제한, 파일 이름의 형태, 파일 하나 또는 수신 폴더, 형식과 그 주소 문법, 태그가 읽는 것과 그 형식, 텍스트 설정, 읽기와 쓰기의 동작, 장치 검색, 그리고 완전한 예 세 가지입니다. Database는 database를 더합니다. 각 데이터베이스와 그 필드와 자체 포트, 암호화, 태그가 읽는 두 가지 방식과 쓰는 두 가지 방식, 값은 @value나 @now로만 문에 들어간다는 규칙, 대기 시간, 데이터베이스 사용자에 관한 조언, 장치 검색, 그리고 완전한 예 네 가지입니다. 에이전트가 device_upsert나 tag_upsert 전에 읽는 지도입니다. |
serial_line_list |
꺼져 있거나 비어 있는 것까지 포함해, 저장된 모든 시리얼 회선을 변하지 않는 id와 드라이버로 나열합니다. Modbus RTU 회선은 전송 모드와 설정값과 자동값과 실제 적용값도 함께 나옵니다. |
serial_line_upsert |
시리얼 회선을 만들거나 변하지 않는 id로 고칩니다. driver는 회선이 속하는 드라이버로, ModbusRtu(기본), GenericSerialTcp, Scpi, Omron 가운데 하나이며 만들 때 정해집니다. 범용 드라이버, SCPI 드라이버, Omron 드라이버의 회선은 mode, responseTimeoutMs, minimumTransactionIntervalMs를 거부합니다. 이름과 사용 여부는 언제든 바뀌고, 최소 트랜잭션 간격도 켜져 있는 동안 바뀌며, 시리얼 포트와 보드레이트와 시리얼 형식과 전송 모드와 응답 제한 시간은 저장된 회선이 꺼져 있을 때에만 바뀝니다. |
serial_line_delete |
변하지 않는 id로 회선을 삭제합니다. 아직 장치를 담고 있는 회선은, 그 아래의 모든 장치와 태그를 삭제하도록 호출이 명시적으로 허락하지 않는 한 거부됩니다. |
mqtt_broker_list |
저장된 모든 MQTT 브로커를, 사용 안 함인 것과 빈 것까지 포함해 나열합니다. 변하지 않는 id, 응답하는 위치, 전송 방식, 사용자 이름, 클라이언트 ID, 킵얼라이브, 토픽 접두사, 장치 개수가 붙습니다. 비밀번호가 저장되어 있는지는 알려 주지만 비밀번호 자체는 절대 돌려주지 않습니다. 발행 형식(publishFormat)과 Sparkplug B 그룹(sparkplugGroupId)도 붙습니다. |
mqtt_broker_upsert |
MQTT 브로커를 만들거나 변하지 않는 id로 갱신합니다. 이름, 사용 여부, 호스트(mqtt://나 mqtts:// 주소 전체는 나누어 읽음), 포트, TLS, 사용자 이름, 비밀번호, 클라이언트 ID, 킵얼라이브, 발행 카드가 토픽을 제안할 때 쓰는 접두사(publishTopicPrefix. 빈 문자열이면 기본값으로 돌아감)입니다. 넘긴 인수만 바뀝니다. 브로커는 호스트가 있을 때만 사용으로 바꿀 수 있고, 다른 브로커가 쓰는 클라이언트 ID는 거부됩니다. 연결 변경을 저장하면 브로커 아래 모든 장치가 함께 쓰는 세션이 다시 연결됩니다. publishFormat(Json 또는 SparkplugB)으로 발행 카드를 내보내는 방식을, sparkplugGroupId로 스테이션 엣지 노드의 Sparkplug B 그룹을 고릅니다(빈 문자열이면 GanterLab으로 돌아가고, /, +, #를 담은 그룹은 거부됩니다). |
mqtt_broker_delete |
변하지 않는 id로 브로커를 삭제합니다. 아직 장치를 담고 있는 브로커는, 그 아래의 모든 장치와 태그를 삭제하도록 호출이 명시적으로 허락하지 않는 한 거부됩니다. |
mqtt_publish_upsert |
브로커의 발행 카드에 행을 만들거나(brokerId와 source. 태그는 Connector.와 별칭, 변수는 Variables.와 경로, 경보는 Alarms.와 경로) id로 행을 편집합니다. topic은 생략할 수 있습니다. 생략하면 브로커의 접두사 아래로 신호원 이름에서 제안된 토픽이 붙고, 빈 문자열이면 그것을 다시 가져옵니다. 한 브로커는 같은 신호원도 같은 토픽도 한 번만 발행하며, 토픽에는 +나 #를 쓸 수 없고 $로 시작할 수도 없습니다. 행이 다른 브로커로 옮겨 가는 일은 없습니다. access는 기본값인 ReadOnly 또는 ReadAndWrite이며, ReadAndWrite는 쓰는 드라이버의 쓰기 접근이 있는 태그나 내부 값 변수만 받습니다. 그러면 스테이션은 행의 토픽 뒤에 /set을 붙인 토픽에 발행된 것을 씁니다(되쓰기). 한 행의 토픽은 다른 행의 토픽 뒤에 /set을 붙인 것일 수 없습니다. Sparkplug B인 브로커에서는 행이 메트릭으로 발행되고(row.sparkplug), ReadAndWrite는 Sparkplug B 명령이 보낸 값을 받습니다. |
mqtt_publish_delete |
발행 카드의 행을 id로 삭제합니다. 스테이션은 그 발행을 멈추지만 태그, 변수, 경보는 건드리지 않습니다. |
device_upsert |
드라이버와 이름으로 장치를 만들거나 고칩니다(드라이버는 만든 뒤에 바뀌지 않습니다). 건네준 매개변수만 바뀌고, 연결 칸은 드라이버마다 다르며, 장치를 폴더로 옮기면 옛 태그 주소에 대한 모든 참조가 고쳐 쓰입니다. Generic serial and TCP 장치는 transport와 메시지, 체크섬 카드의 칸을 받으며, serialLineId는 자기 드라이버의 회선만 받습니다. 회선 위의 장치는 호스트, 포트, 폴더를 거부합니다. Omron 장치는 omronProtocol(Fins 또는 NjNx)과, FINS에서는 FINS 카드의 fins* 칸을 받습니다. 이름으로 읽는 장치는 포트를 거부합니다. SCPI 장치는 transport(Tcp, Visa, 또는 자기 드라이버 회선의 serialLineId와 함께 쓰는 SerialLine), visaResource, terminator, responseTimeoutMs, writeCheck, setupCommands를 받습니다. NI-DAQmx 장치는 NI MAX가 붙인 이름인 daqmxDevice를 받습니다. SNMP 장치는 snmpVersion, snmpCommunity(SNMPv1, SNMPv2c), username, password, snmpSecurityLevel, snmpAuthProtocol, snmpPrivacyProtocol, snmpPrivacyPassword(SNMPv3), responseTimeoutMs, snmpRetries를 받으며, 각 비밀이 설정되었는지만 돌려주고 비밀 자체는 돌려주지 않습니다. File 장치는 fileFolder, fileName, fileMode(SingleFile 또는 Inbox), fileFormat, fileEncoding, fileSeparator, fileDecimal, fileHeaderRow, fileWrites를 받고, 쓰기가 켜져 있으면 fileHeaderText와 fileLineEnd도 받으며, file.fileStatus로 동작 중인 드라이버가 읽는 파일과 거기서 읽어 낸 것을 돌려줍니다. Database 장치는 databaseKind를 받고, 서버에서는 host, port, databaseName(SQL Server에서는 추가로 databaseInstance, databaseWindowsSignIn, databaseEncryption), SQLite에서는 databaseFile, ODBC에서는 databaseOdbc를 username, password와 함께 받으며, database로 주소와 장치가 아직 사용자를 기다리는지를 돌려주고, 비밀번호는 절대 돌려주지 않습니다. 0에서 65535를 벗어난 포트는 거부되며, 0은 드라이버가 연결하는 포트를 뜻합니다. 변경은 곧바로 실행 중인 서버에 맞춰집니다. |
device_delete |
장치와 그 모든 태그를 삭제합니다. 곧바로 실행 중인 서버에 맞춰집니다. |
tag_upsert |
장치에 태그를 만들거나 고칩니다. 주소 지정은 드라이버마다 다릅니다(자유 입력 주소와 형식 있는 칸. Generic serial and TCP에서는 읽기 방식, 요청, 필터, 꺼내는 방식, 쓰기 칸, SCPI instruments에서는 address로 주는 쿼리와 valueField, writeTemplate, NI-DAQmx에서는 address로 주는 물리 채널과 측정의 daqmx* 칸, SNMP에서는 숫자나 표준 이름으로 address로 주는 OID, File에서는 address로 주는 열이나 경로, fileSource, fileRow와 그 칸, fileWriteMode와 fileLineTemplate이며, 자유 텍스트의 값은 범용 드라이버의 value* 칸을 쓰고, 새 태그는 읽기 전용으로 만들어지며, Database에서는 address로 주는 값 열, databaseSource, databaseTable, databaseRow와 그 칸 또는 databaseQuery, 그리고 태그가 쓸 때는 databaseWriteMode와 databaseCommand이며, 새 태그는 역시 읽기 전용으로 만들어집니다). 응답은 조립된 버스 주소와 tag_read용 별칭을 되돌려 줍니다. 올바르지 않은 읽기 단계도 들어 있습니다. NaN 동작은 숫자 태그에, 읽기 실패 표시는 스테이션이 읽는 모든 태그에 있으며, 그 가운데 Replace만 숫자 태그와 부울 태그로 한정됩니다. 태그의 새 형식이 받을 수 없는 Replace가 이미 저장되어 있으면 그 대신 기본값이 저장됩니다. 형식이 숫자가 아니게 되면 NaN 동작은 PassThrough가 되고, 형식이 String, DateTime, Guid, ByteString이 되면 읽기 실패 표시는 ShowError가 됩니다. |
tag_delete |
태그를 삭제합니다. 곧바로 맞춰집니다. |
server_start |
내장 OPC UA 서버를 켜고 시작합니다. 그 행의 사용과 같습니다. 목록을 제공하며, server_stop까지는 다시 시작해도 켜진 채로 있습니다. 이미 돌고 있으면 아무 일도 하지 않습니다. Connector 자신이 돌고 있지 않으면 그것을 먼저 시작하며 지금의 구성을 올립니다. |
server_stop |
서버를 끄고 얌전히 멈춥니다. 사용 안 함과 같습니다. OPC UA 클라이언트는 끊기고 server_start가 다시 켤 때까지 아무것도 공개하지 않습니다. Connector는 계속 읽고, 태그 읽기와 Logic과 기록도 계속됩니다. |
server_restart |
켜져 있는 동안 서버만 멈춘 다음 시작합니다. 그동안 Connector는 계속 읽습니다. 꺼진 서버는 물리칩니다. 켜는 것은 server_start이기 때문입니다. 장치와 태그의 변경은 connector_refresh로 반영합니다. |
server_list_upsert |
OPC UA 서버의 목록에 행을 만들거나, id로 행을 고칩니다. source는 태그(Connector.와 별칭), 변수(Variables.와 그 경로), 경보(Alarms.와 그 경로), 장치 명령(장치의 주소, 점, 명령의 이름과 ()) 중 하나를 가리키며, 신호원은 목록에 한 번만 넣을 수 있습니다. access는 모든 새 행의 기본값인 ReadOnly 또는 ReadAndWrite이며, ReadAndWrite는 쓰기 접근이 있는 태그나 내부 값 변수만 받습니다. 그때 클라이언트의 쓰기는 Logic 쓰기 깔때기를 지나고 클라이언트 세션과 함께 진단 로그에 기록됩니다. 응답에는 행과 그 node가 담깁니다. |
server_list_delete |
id로 목록의 행을 삭제합니다. 클라이언트는 그 노드를 더 이상 찾지 못하며, 행이 제공하던 신호원은 건드리지 않습니다. |
modbus_server_configure |
Modbus 서버를 켜거나 끄고(enabled), 페이지처럼 다른 port(1에서 65535)로 옮깁니다. 웹 서버, 에이전트 접근, OPC UA 서버에 정해진 포트와 다른 프로그램이 잡고 있는 포트는 거부되며, Windows 방화벽은 절대 바꾸지 않습니다. 켜면 포트에 닿는 어떤 기기든 맵이 제공하는 것을 읽을 수 있습니다. modbus_server_status처럼 서버 전체를 돌려줍니다. |
station_broker_configure |
페이지와 마찬가지로 스테이션 자체의 MQTT 브로커를 켜거나 끄고(enabled), 다른 port로 옮기고, authentication, username, password를 바꿉니다. 순서는 포트, 인증, 그다음 켜기나 끄기입니다. 웹 서버, 에이전트 접근, OPC UA 서버, Modbus 서버에 설정된 포트와 다른 프로그램이 쓰고 있는 포트는 거부됩니다. Windows 방화벽은 바꾸지 않습니다. 켜면 MQTT 드라이버에 브로커 이 스테이션이 추가됩니다. station_broker_status처럼 브로커 전체로 응답합니다. |
modbus_map_upsert |
Modbus 서버의 레지스터 맵에 행을 만들거나, id로 행을 고칩니다. source는 태그를 주소(Connector.와, connector_browse가 나열하는 별칭)로, 변수(Variables.와 그 경로)로, 또는 경보(Alarms.와 그 경로. 항상 ReadOnly이며 alarmValue가 정한 상태 Active, Acked, State 중 하나를 제공합니다)로 가리킵니다. registerClass(기본값 HoldingRegister), register(0부터), type(기본값 Float, 코일이나 디스크리트 입력에서는 Boolean), String의 length, mostSignificantByte와 mostSignificantWord는 Modbus 태그와 같은 필드와 규칙을 따릅니다. access는 모든 새 행의 기본값인 ReadOnly 또는 ReadAndWrite이며, ReadAndWrite는 홀딩 레지스터나 코일만 받고, 쓰기를 받는 신호원(쓰기 접근이 있는 태그, 내부 값 변수)이어야 합니다. 새 행에는 register와 source가 필요하며, 맵이 거부한 행에는 이유와 힌트가 돌아옵니다. |
modbus_map_delete |
레지스터 맵의 행을 id로 삭제합니다. 그 뒤로 그 레지스터를 읽는 클라이언트는 예외 02를 받으며, 그 행이 제공하던 태그나 변수는 건드리지 않습니다. |
remote_access_device_update |
원격 접근 페이지의 행과 똑같이, 구성된 기기의 이름, 시작 화면(ID나 이름으로 가리키는 대시보드, 지우려면 비워 두며 그러면 고정도 풀립니다), 고정, 조작 없는 분(돌아가지 않으려면 0), 보기 전용을 바꿉니다. 기기가 누구로 로그인할지는 여기서 바꾸지 않습니다. 그것은 로컬 사용자 관리가 있는 사람이 해야 합니다. 기기의 구성과 잊기는 스테이션 화면에서 하며, 도구로는 결코 하지 않습니다. remote_access_devices가 보여 주는 그대로의 기기로 답합니다. |
Connector, 조작
| 도구 | 하는 일 |
|---|---|
connector_refresh |
실행 중인 서버를 설정된 장치에 맞추어 조금씩 조정합니다(더하고 빼고 다시 만듭니다). 전체 다시 시작 없이 변경을 적용하는 가벼운 방법입니다. |
device_discover |
드라이버의 장치 검색 스캔을 돌리고 후보를 그 태그와 함께 돌려주며 아무것도 저장하지 않습니다. 프로토콜이 실제 스캔을 지원하는 드라이버만 참여하고, 이미 있는 후보에는 그렇다는 표시가 붙습니다. SNMP 스캔은 snmpCommunity와 함께 주는 target이나, 설정된 장치인 snmpDevice를 탐색하며, SNMPv3 에이전트는 후자로 스캔합니다. File 스캔은 설정된 장치인 fileDevice, 또는 스캔을 위해 입력한 fileFolder, fileName, fileMode, fileFormat을 읽습니다. Database 스캔은 설정된 장치인 databaseDevice와, 선택 사항인 databaseTables(테이블 이름이나 *를 쓰는 패턴)를 읽습니다. 드라이버의 스캔 범위 카드가 거부할 target이나, 스캔에 필요한데 주지 않은 target은 어떤 형태여야 하는지와 함께 거부됩니다. 값, 테이블, 객체의 한도에서 멈춘 Database, File, SNMP 스캔은 나머지를 보려면 무엇을 넘겨야 하는지와 함께 cut으로 그렇다고 알려 줍니다. 모두 읽은 목록에는 cut이 없습니다. |
Logic, 읽기
| 도구 | 하는 일 |
|---|---|
logic_browse |
뿌리에서 시작하는 Logic 주소 공간, 곧 모든 수식이 읽는 그 점 트리를 둘러봅니다. System, Server, Connector, Variables, Alarms, Process, Assets입니다. 운전자가 만든 폴더도 실제 주소 단계이며, 자식 포인트에는 실시간 값과 품질이 함께 담기고, Connector 태그의 포인트에는 logic_read가 알려 주는 것과 같은 substitution과 communicating도 담깁니다. |
logic_read |
점 주소(예를 들어 Variables.Setpoint)로 포인트 하나를 읽고 실시간 값과 품질을 돌려줍니다. Connector 태그의 포인트는 tag_read가 알려 주는 것과 같은 substitution과 communicating도 지니며, 대체값이나 응답을 멈춘 장치의 읽기와 실시간 측정값은 그것으로 가립니다. 다른 포인트에는 둘 다 없습니다. 끊긴 읽기는 거기서 실패한 읽기로 읽힙니다. |
Logic, 구성
upsert는 일부만 바꿉니다(빠뜨린 매개변수는 값을 그대로 지킵니다). 그리고 합쳐진 초안은 모두 Logic 편집기가 적용하는 것과 같은 검사를 통과합니다. 올바르지 않은 초안은 거부되고 반쯤 적용되는 것은 없습니다.
| 도구 | 하는 일 |
|---|---|
variable_upsert |
변수를 만들거나 고칩니다. 수식(주소 공간 위의 읽기 전용 JavaScript 수식 하나)이거나 내부 값(쓸 수 있고 원하면 유지되는 값)입니다. 이름이 키이고, 그것을 다듬은 것이 주소입니다. 폴더 매개변수가 변수를 그 자리에 놓으며 옛 주소에 대한 모든 참조를 고쳐 씁니다. |
variable_delete |
경로로 변수를 삭제하며 유지된 값도 함께 삭제합니다. 그 변수에 묶인 채널은 신호원을 잃습니다. |
action_upsert |
액션을 만들거나 고칩니다. 쓰기 동사가 정확히 둘, 곧 내부 값 변수 대입과 공학값 태그 쓰기뿐인 JavaScript 실행문 묶음입니다. 정적으로 검사하며 저장할 때 결코 실행하지 않습니다. |
action_delete |
이름으로 액션을 삭제합니다. 그것에 묶인 트리거는 쉽니다. |
trigger_upsert |
간격 트리거를 만들거나 고칩니다. intervalMs(최소 100)마다 묶인 액션이 액션 차선에서 발동하고, 실행이 아직 끝나지 않았을 때의 틱은 건너뜁니다. 액션과의 묶임은 느슨하며 이름으로 이어집니다. |
trigger_delete |
트리거를 삭제합니다. 묶여 있던 액션은 그대로입니다. |
alarm_upsert |
경보를 만들거나 고칩니다. 부울 조건 수식, 우선순위(심각/높음/보통/낮음), 발생과 복귀 지연, 확인이 필요한지 여부, 그리고 알림 방식입니다. 바뀐 조건이나 타이밍을 저장하면 돌고 있던 상태 기계가 초기화됩니다. |
alarm_delete |
경로로 경보를 삭제합니다. 발생 중인 알림은 먼저 지워집니다. |
logic_folder_upsert |
한 구역(Variables, Alarms, Actions, Triggers이며 많아야 세 단계)의 정리용 폴더를 만들거나 이름을 바꾸거나 다시 놓습니다. Variables와 Alarms에서는 폴더 경로가 주소의 일부이므로, 이름 바꾸기와 옮기기는 그 아래의 모든 수식과 스크립트와 조건과 대시보드 바인딩을 고쳐 씁니다. |
logic_folder_delete |
폴더를 삭제합니다. 그 안에 있던 것은 아무것도 없어지지 않습니다. 항목과 하위 폴더는 한 단계 위로 다시 놓이고 참조는 고쳐 쓰입니다. 옮겨 갈 자리에서 이름이 부딪히면 삭제가 거부됩니다. |
Logic, 조작
이것들은 모두 페이지가 타는 그 로직 쓰기 깔때기를 똑같이 타고 출처 MCP로 기록됩니다. 쓰기는 로직을 떠나 장치 자신의 전달 대기열로 가고, 답을 기다리는 쪽은 도구 호출이므로, 돌아오는 것은 값이 어떻게 되었는지이지 보냈다는 사실만이 아닙니다.
| 도구 | 하는 일 |
|---|---|
variable_write |
내부 값 변수에 값을 씁니다(출력 형식으로 맞추고, 유지 변수라면 유지합니다). 수식 변수는 계산되는 값이므로 쓰기를 거부합니다. |
tag_write |
쓸 수 있는 태그에 공학값을 씁니다. 태그의 변환 경로를 거꾸로 지나 장치 형식으로 맞춘 다음 설비에 씁니다. 응답에는 쓰기가 끝난 뒤 태그가 보여 주는 것, 곧 값과 품질과 substitution과 communicating이 tag_read가 알려 주는 그대로 담깁니다. 그래서 쓰기는 받았지만 읽기에 응답을 멈춘 장치를 아직 응답하는 장치와 가릴 수 있습니다. 읽기 전용 태그와 읽기 전용 드라이버는 이유와 함께 거부됩니다. |
action_run |
액션 차선에서 액션 하나를 실행하고 그 결과와 걸린 시간을 돌려줍니다. 꺼진 액션은 돌지 않고 실패합니다. |
alarm_ack |
경보 하나를 확인합니다. 운전자의 응답이며, 기다리는 것이 없으면 아무 일도 하지 않습니다. |
alarm_ack_all |
응답을 기다리는 모든 경보를 로직 대기열 항목 하나로 확인하며, 전이마다 기록을 남깁니다. |
로그, 읽기
| 도구 | 하는 일 |
|---|---|
logs_read |
프로그램 전체의 실시간 로그 흐름을(Events 콘솔에 나오는 그것입니다) 최소 심각도(Debug/Information/Warning/Error이며 기본값은 Information), 영역(App/Server/Connector/Logic/Process/Dashboard/Agent/Licensing), 구성 요소, 그리고 맥락 문자열로 걸러 읽습니다. 가장 새로운 것부터 돌려줍니다(기본값 100, 최대 500). 에이전트의 조작은 Agent 영역 아래에 기록됩니다. |
event_history_read |
다시 시작해도 남는 오래가는 운영 이벤트 시간선을 읽습니다. 경보 전이, 발생 기록 전이, 인터록 전이입니다. 갈래(Alarm/Occurrence/Interlock), 양 끝을 포함한 UTC 기간, 그리고 수준(경보 우선순위, 발생 기록 심각도, 인터록 전이)으로 거릅니다. 가장 새로운 것부터이며 기본값 100, 최대 500입니다. 엄격하게 읽기 전용입니다. 어떤 것도 기록 항목을 비우거나 지울 수 없습니다. |
Process, 읽기
| 도구 | 하는 일 |
|---|---|
process_models |
Process 모델을 통째로 나열합니다. 채널, 공유 묶음, 배선이 풀린 유닛과 그 실행 상태, 절차, 패널, 레시피, 판정, 발생 기록, 그리고 전역 보고서 템플릿 라이브러리입니다. 에이전트가 무엇을 시작하기 전에 읽는 지도입니다. |
process_runs |
실행을 최근 것부터 나열합니다. id, 이름, 상태, 종합 판정, 무엇이 돌았는지, 누가 시작했는지(스테이션/사용자/자동화/에이전트), 타이밍과 사이클 진행입니다. 진행 중인 실행으로 좁힐 수 있고, 이름이나 메타데이터 값(일련번호, 로트 등)의 일부로 찾을 수 있으며, 개수 상한을 둘 수 있습니다(기본값 50). |
process_run |
id로 실행 하나의 얼어붙은 기록 전체를 읽습니다. 스냅숏, 메타데이터, 샘플 수가 붙은 판정 기준, 발생 구간과 이벤트, 실제로 실행된 레시피 쓰기, 코멘트, 그리고 인쇄 시도가 붙은 얼어붙은 보고서와 라벨 산출물입니다. 원하면 데이터로그의 행 수와 시간 범위도 계산합니다. |
process_samples |
실행이 기록한 샘플을 기록 중에도, 끝난 뒤에도 읽습니다. 샘플이 500개 이하인 구간은 기록된 그대로 옵니다. 샘플마다 점 하나이고 채널마다 값 하나입니다. 그보다 긴 구간은 요약되어 옵니다. 그 길이를 같은 길이의 조각 500개로 나누고, 조각마다 각 채널의 최솟값, 최댓값, 평균을 담으므로 피크는 최댓값에 남습니다. 응답은 둘 중 어느 쪽인지 알리고, 요약이면 조각 하나의 길이와 조각 하나가 모은 샘플 수도 알립니다. fromUtc와 toUtc로 구간을 좁힐 수 있고, 충분히 좁은 구간은 기록된 그대로 돌아옵니다. channels는 이름을 댄 채널만 읽습니다. |
unit_status |
유닛의 실시간 상태를 알립니다. 실행 중인지(그리고 그 실행이 무엇인지)와 채널마다의 지금 공학값이며, 기록하지 않고 읽습니다. |
Process, 구성
| 도구 | 하는 일 |
|---|---|
process_view_configure |
모델의 패널 하나만 설정합니다. 그 옆에 그려지는 아이콘과, 그것이 View 페이지에 설지 여부입니다. Process 묶음의 그 밖의 것은 MCP로 쓸 수 없습니다. 나머지는 Process 페이지에서 편집합니다. |
Process, 조작
에이전트가 시작하거나 끝내거나 코멘트를 남긴 실행은 행위자로 에이전트를 기록하며, 마침 시험대에 로그인해 있던 운전자를 기록하지 않습니다.
| 도구 | 하는 일 |
|---|---|
process_snapshot |
절차 밖에서 유닛의 데이터로그 행 하나를 담습니다. 부를 때마다 판정 없이(종합 판정 None) 이미 완료된 새 즉시 실행이 이력에 만들어집니다. |
process_evaluate |
데이터로그 행 하나를 담고 판정으로 그것을 판단합니다. 완료된 즉시 실행을 만들고 그 종합 판정을 돌려줍니다. |
process_recipe_apply |
즉시 레시피를 Process 쓰기 깔때기와 신호원 잠금을 거쳐 유닛에 한 번 적용합니다. 설비에 명령하며 실행은 만들지 않습니다(쓰기는 기록됩니다). 시간형 레시피는 거부됩니다. |
process_start |
유닛에서 절차 실행을 시작하며, 절차가 묻는 메타데이터 칸을 담은 JSON 객체를 함께 건넵니다. 건넨 값은 모두 기록되거나, 아무것도 시작되지 않습니다. 절차가 묻지 않는 칸, 일련번호 칸에 준 값(시작할 때 애플리케이션이 조립합니다), 두 번 적은 칸 가운데 하나라도 있으면 시작이 거부되고, 필수 메타데이터가 없거나 올바르지 않을 때, 유닛이 이미 실행 중일 때, 또는 공유 채널 잠금이 부딪힐 때도 마찬가지입니다. 새 실행의 id를 돌려줍니다. |
process_stop |
돌고 있는 실행을 정지합니다. 마무리 묶음, 얼어붙은 이력 스냅숏, 계산된 종합 판정이 이루어집니다. |
process_hold |
실행의 시간 프로파일을 마지막 설정값에서 일시 정지합니다. 데이터로그는 계속 기록합니다. |
process_resume |
일시 정지된 실행의 시간 프로파일을 재개합니다. |
process_abort |
실행 중이거나 일시 정지된 실행을 중단합니다. 마무리가 돌고 스냅숏이 기록되며, 상태는 중단됨이 되고 종합 판정은 불합격이 됩니다. |
process_comment |
실행 파일에 시각이 찍힌 코멘트를 더합니다. 실행 중이면 시간선 메모이고, 끝난 뒤라면 실행 뒤 메모입니다. |
process_report |
끝난 실행의 PDF 보고서를 만들거나 다시 만들고 그 파일 경로를 돌려줍니다. 전역 라이브러리의 이름 있는 템플릿은 절차에 설정된 것을 덮어씁니다. 둘 다 없으면 모든 구획을 담는 기본 서식이 적용됩니다. 실행이 진행 중인 동안에는 거부됩니다. |
process_run_delete |
기록된 실행을 영구히 삭제합니다. 이력 색인의 가리킴과 실행마다의 데이터베이스 파일입니다. 진행 중일 때는 거부되며 구성은 건드리지 않습니다. |
대시보드, 구성
이 도구들이 읽고 돌려주는 역할 이름은 어느 스테이션에서나 영어입니다. Not signed in, Viewer, Operator, Maintainer, Developer이며, 화면에 어떤 말이 나오든 그대로입니다. Admin은 목록에 넣을 수 없습니다. 언제나 모든 대시보드를 보기 때문입니다. 관리자가 이름을 바꾼 역할은 그가 입력한 이름으로 불립니다.
| 도구 | 하는 일 |
|---|---|
dashboard_list |
대시보드를(또는 모델을 부르면 그 모델의 화면을) 나열합니다. 격자 크기, 폴더, 아이콘, 시작 표시, 역할별 보임, 그리고 위치와 층과 속성 JSON을 담은 모든 구성 요소, 게다가 저장된 모든 연결망입니다. 구성 요소 갈래 카탈로그도 갈래마다의 기본 크기와 기본 속성 묶음과 함께 돌려줍니다. |
dashboard_upsert |
이름으로 대시보드를 만들거나 고칩니다. 격자 크기(구성 요소를 떼어 놓게 될 축소는 거부됩니다), View 페이지의 시각화 열에 있는 폴더와 아이콘, 시작 표시, 전체 화면에서 상태 표시줄을 보일지, 그리고 역할별 보임입니다. 모델을 부르면 그 모델의 화면을 가리킵니다. 열려 있는 대시보드 페이지는 그 변경을 실시간으로 비춥니다. |
dashboard_delete |
이름으로 대시보드와 그 구성 요소를 삭제합니다. 모델을 부르면 그 모델의 화면을 대신 삭제합니다. |
component_upsert |
갈래로 구성 요소를 더하거나(달리 말하지 않으면 그 갈래의 기본 크기로 첫 빈 칸에 놓입니다) id로 하나를 고칩니다. 놓이는 자리는 격자 안이어야 하고, 겹침은 허용되며 z 층이 그리는 순서를 정합니다. 속성 JSON은 그 갈래의 형식 있는 묶음입니다. 모델을 부르면 그 모델의 화면을 가리키므로, 거기에서 만든 화면을 여기에서 배치할 수 있습니다. |
component_delete |
id로 구성 요소를 없앱니다. 모델을 부르면 그 모델의 화면을 가리킵니다. |
connection_upsert |
심볼 연결점 둘을 형식 있는 연결망으로 잇습니다. 캔버스 편집기가 하는 것과 똑같이 심볼 카탈로그에서 종류와 역할과 방향을 풀어냅니다. 서로 다른 종류로 풀리는 끝은, 정의되지 않은 연결을 명시적으로 허락하지 않는 한 실패합니다. 이미 연결을 담고 있는 앵커는 거부됩니다. 모델을 부르면 그 모델의 화면을 가리킵니다. |
connection_delete |
id와 예상하는 개정 번호로 연결망 하나를 없앱니다. 그래서 오래된 삭제가 더 새로운 편집을 덮어쓰는 대신 거부됩니다. 모델을 부르면 그 모델의 화면을 가리킵니다. |
화면, 자동 조작
이 도구들은 실제 애플리케이션 창을 움직입니다. 에이전트가 흉내가 아니라 운전자가 보는 그 화면을 확인할 수 있도록 있는 것입니다. 조작은 살아 있는 셸로 보내지므로, 동작마다 ui_screenshot을 뒤따르게 해서 그 효과를 보는 것이 올바른 쓰임새이고, 모호하게 맞는 것은 짐작한 클릭 대신 후보 목록으로 돌아옵니다.
| 도구 | 하는 일 |
|---|---|
ui_state |
셸의 상태를 알립니다. 활성 페이지, 쓸 수 있는 페이지, 테마, 창 크기와 보임 여부, 그리고 이 인스턴스가 화면을 제공하는 루프백 주소입니다. 무엇보다 먼저 부르는 자리 잡기 호출입니다. |
ui_navigate |
셸의 페이지를 어느 스테이션에서나 영어인 안정된 이름으로 활성화합니다: View, Process, Logic, Connector, Users, Validation, Events, Agent, Settings, Account. 스테이션 언어로 탐색 막대에 표시되는 이름표도 받아들입니다. |
ui_screenshot |
화면에 보이는 대로 창을 PNG 파일로 담고 그 절대 경로를 돌려줍니다. 창이 알림 영역에 감춰져 있으면 먼저 되돌립니다. 창 전체 대신 이름이 붙은 화면 영역 하나(고유하고 보이는 data-doc-region 영역)를 담을 수도 있고, 없거나 감춰졌거나 모호한 영역은 조용히 전체 담기로 물러서는 대신 보이는 영역을 나열하며 실패합니다. |
ui_scroll |
활성 페이지의 주 스크롤 영역을 맨 위나 맨 아래로, 또는 화면 단위로 스크롤하고 그 위치를 돌려주므로 긴 페이지를 훑을 수 있습니다. |
ui_set_theme |
스테이션의 테마를 적용합니다(시스템 설정 따름, 밝게, 어둡게). 스테이션 창이 그리는 테마이며, 자기 테마를 고르지 않은 브라우저는 모두 이를 따릅니다. 자기 테마를 고른 브라우저는 그것을 유지합니다. 스테이션 창에서 테마 키로 고른 것과 똑같이 저장되므로, 예의 바른 에이전트라면 끝난 뒤 원래 값으로 되돌립니다. |
ui_resize |
되돌린 창의 크기를 장치 독립 단위로 바꾸며 창의 최솟값으로 붙습니다. 좁은 배치를 살펴볼 때 쓸모가 있습니다. |
ui_click |
글자가 맞는, 보이는 단추나 하이퍼링크나 확인란이나 스위치를 누릅니다. 확인란과 스위치는 그 칸 이름표로 찾고, 결과는 어느 상태로 놓였는지 알립니다. 모호하면 하나를 고르는 대신 후보를 돌려줍니다. |
ui_set_text |
칸 이름표로 찾은 텍스트 상자에 값을 쓰며, 입력할 때처럼 바인딩을 확정합니다. |
ui_select |
보이는 글자로 항목을 고릅니다. 빗금으로 나눈 경로는 트리를 따라가며 지나는 길을 펼치고, 마디 하나짜리는 지금 페이지의 목록과 탭과 콤보 상자 항목과 표의 행에도 맞습니다. |
백업, 관리
| 도구 | 하는 일 |
|---|---|
backup_create |
구성 데이터베이스의 온라인 스냅숏을 백업 폴더에 만들며, 원하면 메모를 붙입니다. 기록된 실행은 구성 밖에 있으므로 백업이나 복원이 결코 건드리지 않습니다. |
backup_list |
구성 백업을 나열하고(파일 이름, 만든 시각, 크기, 메모) 이미 예약된 복원이 있으면 함께 보여 줍니다. |
백업 삭제 도구는 일부러 두지 않았습니다. 얼마나 오래 보관할지는 운전자만 정하며, 백업 페이지에서 정합니다.
백업, 복원
| 도구 | 하는 일 |
|---|---|
backup_restore |
다음 애플리케이션 시작에서 백업이 지금의 구성을 대신하도록 예약합니다. 돌고 있는 앱에서는 아무것도 바뀌지 않고 이 도구가 앱을 다시 시작하지도 않습니다. 대신되는 구성은 먼저 저절로 스냅숏으로 남으며, 운전자는 다시 시작하기 전까지 설정에서 예약된 복원을 취소할 수 있습니다. 기록이 진행 중인 동안에는 거부됩니다. |
설정, 관리
| 도구 | 하는 일 |
|---|---|
settings_read |
스테이션의 표시와 수명 주기 기본 설정을 읽습니다. 날짜와 시간과 숫자 형식, 소수 자릿수, 테마, 닫을 때 알림 영역으로 보내기와 충돌 보고서 표시입니다. |
localization_set |
표시 기본 설정을 고칩니다(일부만 바꾸며 빠뜨린 매개변수는 그대로입니다). 표시에만 적용됩니다. 저장과 드라이버 입출력과 기록은 언제나 문화권과 무관한 형식을 씁니다. |
asset_list |
사용자 자산(이미지, 아이콘, 색)을 id와 값과 경로와 함께 나열합니다. |
asset_import |
로컬 파일 경로의 PNG나 JPG를 앱이 가진 자산 라이브러리로 가져오고 새 자산 id를 돌려줍니다. 바이트를 복사하므로 원본 파일은 그 뒤에 옮겨도 됩니다. |
symbol_validate |
인라인 심볼 내용(원시 SVG나 v2 패키지)을 아무것도 저장하지 않고 검사합니다. 실제 가져오기를 그대로 한 번 돌려 보는 것이며, 오류와 정화기 경고와 무엇을 알아보았는지의 요약을 돌려줍니다. 이 도구의 설명에는 옮길 수 있는 심볼 규약 전체가 담겨 있습니다. |
symbol_import |
인라인 심볼 내용을 새 사용자 심볼 자산으로 가져오고 그 id와 user:<guid> 참조를 돌려줍니다. 언제나 새 자산을 만들며, 부딪히는 이름에는 꼬리가 저절로 붙습니다. |
제보, 초안 작성
| 도구 | 하는 일 |
|---|---|
report_draft |
에이전트가 쓴 내용을 채워 넣은 제보 서식을 스테이션의 창에 엽니다. kind(DriverRequest, Bug, Suggestion), summary(120자 이하의 한 줄. 더 길면 자르지 않고 거부합니다), details(선택 사항)를 받습니다. 제목 표시줄의 제보 단추처럼 먼저 창을 캡처하고, 그 캡처를 선택한 채로 제보에 붙입니다. 서식이 열렸고 아무것도 보내지 않았다고 곧바로 답합니다. |
이 도구는 보내지 않습니다. 스테이션에 있는 사람이 제보를 읽고 원하면 고친 뒤 보내기를 누릅니다. 결과는 스테이션의 상태 표시줄에 나오고 에이전트에게는 돌아가지 않습니다. 이 범위가 켜져 있는 동안 서버는 모든 에이전트에게, Ganter Lab에 없는 드라이버가 필요할 때, 호출이 프로그램 결함처럼 보이는 방식으로 실패할 때, 또는 사람이 개선을 요청할 때 제보를 제안하라고 알립니다. driver_capabilities, device_upsert, device_discover의 설명도 같은 말을 합니다.
reason과 함께 거부하며, 그때는 아무것도 열지 않고 아무것도 캡처하지 않습니다.
reason |
언제 |
|---|---|
not_permitted |
스테이션에 로그인한 역할에 Ganter에 제보 보내기가 없을 때. |
no_station_window |
서식을 열 스테이션 자체 창이 없을 때. 페이지를 브라우저에만 내주는 호스트입니다. |
no_credential |
세션이 보낼 수 없을 때. 로그인했든 안 했든 데모 프로필이거나, 자격 증명이 없는 스테이션의 Ganter 계정 로그인일 때입니다. |
form_busy |
스테이션에서 제보 서식이 열려 있거나, 제보를 캡처하거나 보내는 중일 때. |
draft_in_progress |
사람이 쓰고 있는 제보가 서식에 있을 때. 아무도 바꾸지 않은 에이전트의 이전 초안은 대신 새로 바뀝니다. |
Ganter 계정에 로그인하지 않은 스테이션은 막히지 않습니다. 서식이 열리고, 제보가 계정 없이 나가므로 Ganter가 답할 수 없다는 것을 알려 줍니다.
무엇인가를 바꾸는 다른 도구처럼, 런타임이 정지된 동안에는 Runtime stopped로 답합니다.