2026-04-14 04:02:43 +00:00
2026-04-14 04:02:43 +00:00
2026-04-14 04:02:43 +00:00
2026-04-14 04:02:43 +00:00
2026-04-14 04:02:43 +00:00

ExperionCrawler

Honeywell Experion OPC UA 서버를 위한 웹 기반 데이터 수집 도구.

아키텍처

ExperionCrawler/
└── src/
    ├── Core/
    │   ├── Domain/Entities/          # ExperionTag, ExperionRecord, ExperionServerConfig ...
    │   ├── Application/
    │   │   ├── Interfaces/           # IExperionCertificateService, IExperionOpcClient ...
    │   │   ├── Services/             # ExperionCrawlService
    │   │   └── DTOs/                 # ExperionServerConfigDto, ExperionCrawlRequestDto ...
    │   └── (Domain 은 Infrastructure 에 의존하지 않음)
    │
    ├── Infrastructure/
    │   ├── Certificates/             # ExperionCertificateService (pki/ 폴더 관리)
    │   ├── OpcUa/                    # ExperionOpcClient, ExperionStatusCodeService
    │   ├── Csv/                      # ExperionCsvService (CsvHelper)
    │   └── Database/                 # ExperionDbContext + ExperionDbService (EF Core / SQLite)
    │
    └── Web/
        ├── Controllers/              # ExperionCertificateController, ConnectionController ...
        ├── Program.cs                # DI 등록, 미들웨어
        └── wwwroot/                  # index.html + css/style.css + js/app.js

기능

메뉴 설명
01 인증서 관리 OPC UA 클라이언트 X.509 인증서 생성 / 상태 확인
02 서버 접속 테스트 OPC UA 서버 연결 테스트, 단일 태그 읽기, 노드 탐색
03 데이터 크롤링 복수 노드 주기 수집 → CSV 저장
04 DB 저장 CSV 파일 → SQLite DB 임포트, 레코드 조회

Ubuntu 서버 배포

사전 요구사항

# .NET 8 SDK (없으면 deploy.sh 가 자동 설치)
dotnet --version

한 번에 배포

git clone <repo> ExperionCrawler
cd ExperionCrawler
sudo bash deploy.sh

수동 실행 (개발/테스트)

cd src/Web
dotnet run
# → http://localhost:5000

서비스 관리

sudo systemctl status  experioncrawler
sudo systemctl restart experioncrawler
sudo systemctl stop    experioncrawler
sudo journalctl -u experioncrawler -f   # 실시간 로그

PKI 디렉토리 구조 (원본 Program.cs 준수)

<실행 위치>/
└── pki/
    ├── own/certs/{clientHostName}.pfx   ← 생성된 클라이언트 인증서
    ├── trusted/certs/                    ← 신뢰 피어 인증서
    ├── issuers/certs/                    ← 신뢰 발급자 (필수 경로)
    └── rejected/certs/                   ← 거부된 인증서

데이터 저장 위치

<실행 위치>/
└── data/
    ├── experion.db      ← SQLite DB
    └── csv/             ← 크롤링 CSV 파일

API 엔드포인트

GET  /api/certificate/status?clientHostName=dbsvr
POST /api/certificate/create       { clientHostName, subjectAltNames, pfxPassword }

POST /api/connection/test           { serverHostName, port, clientHostName, userName, password }
POST /api/connection/read           { serverConfig, nodeId }
POST /api/connection/browse         { serverConfig, startNodeId? }

POST /api/crawl/start               { serverConfig, nodeIds[], intervalSeconds, durationSeconds }

GET  /api/database/files
POST /api/database/import           { fileName }
GET  /api/database/records?limit=100&from=&to=

Swagger UI: http://<서버IP>:5000/swagger (Development 모드)

패키지 버전

패키지 버전
OPCFoundation.NetStandard.Opc.Ua.Client 1.5.374.85
OPCFoundation.NetStandard.Opc.Ua.Core 1.5.374.85
CsvHelper 33.0.1
Microsoft.EntityFrameworkCore.Sqlite 8.0.13
Swashbuckle.AspNetCore 6.8.1
Description
No description provided
Readme 18 MiB
Languages
C# 59.1%
JavaScript 17.8%
HTML 12.7%
CSS 8.5%
Shell 1.9%