관리자

세콤(에스원) 출퇴근 기록 연동 가이드

2026-04-08

본 가이드는 세콤(에스원) 출입 통제 시스템의 데이터를 샤플(Shopl) 앱의 출퇴근 데이터로 자동 연동하기 위한 설정 방법을 안내합니다.

시작 전 확인 사항
  • 세콤링크 지원 여부: 사용 중인 세콤매니저 프로그램이 <세콤링크> 기능을 지원해야 합니다. (미지원 시 세콤 담당 엔지니어에게 문의)
  • 사번 일치: 세콤매니저 프로그램에 등록된 직원의 사원번호와 샤플에 등록된 구성원의 사번이 반드시 일치해야 출퇴근 데이터가 연동됩니다.
  • 근무지 매핑: 세콤매니저 프로그램에 등록된 ‘단말기’ 정보와 샤플에 등록된 ‘근무지’에 대한 연결이 필요합니다. 근무지별 설치된 단말기 정보(ID)를 샤플팀에 전달 부탁드립니다.
  • PC 환경: 세콤 매니저가 설치된 PC는 데이터 전송을 위해 항상 전원이 켜져 있고 인터넷에 연결되어 있어야 합니다.

1. 샤플 DB 접근 설정 (ODBC)

세콤(에스원) 출입 통제 시스템의 데이터를 샤플 DB로 전송하기 위한 통로를 만드는 과정입니다.

1-1 PostgreSQL ODBC Driver 설치

샤플 DB는 PostgreSQL 기반입니다. 세콤 서버 PC에 드라이버를 설치해 주세요.

  • 아래 링크를 클릭해서 PostgreSQL ODBC Driver 를 설치합니다.

1-2 시스템 DSN 추가

  1. Windows 시작 메뉴에서 [ODBC 데이터 원본(32비트)]를 찾아 실행합니다.
  2. [시스템 DSN] 탭으로 이동합니다.
  3. [추가] 버튼을 클릭합니다.
  4. [새 데이터 원본 만들기] 에서 [PostgreSQL Unicode(x86)] 을 선택합니다.
  5. PostgreSQL ANSI ODBC Driver (psqlODBC) Setup 창에서 아래 데이터를 입력합니다.
    • Data Source: shopl (반드시 영문 소문자로 입력)
    • Database: shopl
    • Server: 52.79.141.233
    • Port: 16432
    • User Name: 샤플에서 발급 후 제공드리는 User Name 입력
    • Password: 샤플에서 발급 후 제공드리는 Password 입력
  6. [Test] 버튼을 클릭해서 “Connection successful” 메시지가 나오면, [Save] 버튼을 클릭하여 저장합니다.
  • ODBC 설정에서 시스템 DSN 추가가 안되는 경우, [ODBC 데이터 원본(32비트)] 를 관리자 권한으로 실행하여 재시도 바랍니다.

2. 세콤매니저 외부전송 설정

세콤매니저 프로그램에서 샤플 DB로 출퇴근 데이터를 전송해주는 설정입니다.

2-1 ERP 서버 설정

  1. 세콤매니저 실행 후 상단 메뉴 [파일] → [ERP 설정] → [세콤링크] 메뉴를 클릭합니다.
  2. ProviderODBC로 선택합니다.
  3. DSN/User/Password에 1.2단계에서 설정한 정보를 동일하게 입력합니다.
    • DSN: shopl
    • User: 샤플에서 발급 후 제공드리는 User Name 입력
    • Password: 샤플에서 발급 후 제공드리는 Password 입력
  4. [접속확인] 버튼을 클릭하고, “접속성공” 메시지가 뜨는 걸 확인합니다.

2-2 쿼리(Query) 등록

[자동 전송설정] 우측의 [쿼리 관리] 버튼을 클릭하여 아래 두 가지 쿼리를 신규 등록합니다.
(복사하여 붙여넣기 하세요.)

  • 쿼리 이름: shopl_연동쿼리
  • 관련 테이블: Alarm
  • 세콤매니저(근태관리) 쿼리:
SELECT REPLACE(REPLACE(REPLACE(AlarmDateTime, '-', ''), ' ', ''), ':', '')                      AS ATime,
       (CASE SUBSTR(Status, 1, 2) WHEN 'W-' THEN 1 WHEN 'FD' THEN 1 ELSE 0 END)                 AS ID,
       EqCodeID,
       Master,
       (CASE SUBSTR(Status, 1, 2) WHEN 'W-' THEN 0 WHEN 'FD' THEN 1 END)                        AS Param,
       REPLACE(REPLACE(REPLACE(ALARM.UpdateDate, '-', ''), ' ', ''), ':', '')                   AS AckTime,
       (CASE
            WHEN ALARM.CardNo LIKE '20000000000000%' THEN ALARM.CardNo
            WHEN LENGTH(ALARM.CardNo) = 18 THEN
                (CASE SUBSTR(ALARM.CardNo, 1, 1)
                     WHEN '0' THEN UPPER(SUBSTR(ALARM.CardNo, 12, 4))
                     WHEN '1' THEN UPPER(SUBSTR(ALARM.CardNo, 12, 4))
                     ELSE ALARM.CardNo END)
            ELSE ALARM.CardNo END)                                                              AS CardNo,
       PERSON.PID                                                                               AS PersonId,
       PERSON.Name                                                                              AS Name,
       PERSON.Sabun,
       CAST(SUBSTR(Status, CASE SUBSTR(Status, 1, 1) WHEN 'W' THEN 3 ELSE 4 END, 1) AS INTEGER) AS Flag1,
       CAST(SUBSTR(Status, CASE SUBSTR(Status, 1, 1) WHEN 'W' THEN 4 ELSE 5 END, 1) AS INTEGER) AS Flag2,
       CAST(SUBSTR(Status, CASE SUBSTR(Status, 1, 1) WHEN 'W' THEN 5 ELSE 6 END, 1) AS INTEGER) AS Flag3,
       CAST(SUBSTR(Status, CASE SUBSTR(Status, 1, 1) WHEN 'W' THEN 6 ELSE 7 END, 1) AS INTEGER) AS Flag4,
       ALARM.UpdateDate                                                                         AS UTime
FROM ALARM
         INNER JOIN PERSON ON ALARM.PID = PERSON.PID
         LEFT OUTER JOIN EQUSER ON ALARM.UpdateID = EQUSER.EqUserID
WHERE ID = 1
ERP 쿼리
INSERT INTO 샤플에서 발급 후 제공드리는 테이블명 입력 (event_datetime, terminal_id, ack_mode, ack_datetime, card_no, employee_id, employee_name, employee_number, event_type, auth_type)
VALUES ('_VAR0_', '_VAR3_', '_VAR4_', '_VAR5_', '_VAR6_', '_VAR7_', '_VAR8_', '_VAR9_', '_VAR10_', '_VAR13_')
  • ERP 쿼리:
INSERT INTO 샤플에서 발급 후 제공드리는 테이블명 입력 (event_datetime, terminal_id, ack_mode, ack_datetime, card_no, employee_id, employee_name, employee_number, event_type, auth_type)
VALUES ('_VAR0_', '_VAR3_', '_VAR4_', '_VAR5_', '_VAR6_', '_VAR7_', '_VAR8_', '_VAR9_', '_VAR10_', '_VAR13_')

모두 입력하셨다면, [추가] 버튼을 클릭해서 쿼리를 추가하도록 합니다.

(정상적으로 추가되었다면, 좌측 쿼리 목록에 shopl_연동쿼리가 보여집니다.)

2-3 자동 전송설정 > 쿼리 선택

  • [닫기] 버튼을 클릭하여, [사용자 쿼리 관리] 창을 닫습니다.
  • [자동 전송설정] 에 보여지는 사용자 쿼리 목록 중 조금 전 추가하신 shopl_연동쿼리를 체크하고 [저장] 버튼을 클릭합니다.
  • 이후 세콤 데이터가 정상적으로 샤플 DB로 전송되면 [최종 전송 시간] 에 값이 업데이트 됩니다.

3. 연동 확인 및 테스트

  1. 모든 설정을 마친 후 [저장][닫기] 버튼을 클릭합니다.
  2. 세콤 단말기에 태그를 했을 때 세콤매니저 상의 [최종 전송 시간]이 현재 시간으로 업데이트되는지 확인합니다.
  3. 샤플 테크팀에서 데이터 수신 여부를 최종 확인한 후, 샤플 앱의 출퇴근 기록에 반영됩니다.
💡 주의사항 (FAQ)
  • 전송이 안 돼요! 세콤매니저 PC의 방화벽에서 16432 포트가 허용되어 있는지 확인해 주십시오.
  • 사번을 수정했는데 반영이 안 돼요. 세콤 프로그램 특성상 사번 수정 전 발생한 과거 기록에는 수정된 사번이 소급 적용되지 않습니다. 반드시 사번을 먼저 맞춘 후 테스트해 주세요.
채팅 상담
우측 하단의 채팅을 클릭하시면 1:1 상담원 연결을 도와드립니다. 평균 5분 이내로 답변해드려요.
전화
대표 번호 : 070-8866-7982
운영 시간 : 09:00 ~ 18:00, 월-금(공휴일 제외)
이메일
구체적인 문의 · 대화가 필요하시다면 support@shoplworks.com 으로 연락해주세요.