1. Erste Schritte
Diese Anleitung führt Sie durch die Schritte bis zum ersten Aufruf mit dem V5 Java API Client.
Schnellstart (60 Sekunden)
Die 3 benötigten Angaben
| Punkt | Wert | Woher |
|---|---|---|
| Serveradresse | http://<server-ip>:80 (mit TLS https://<server-ip>:443) | REST API Endpunkt. :7443 ist ausschließlich der Verwaltungskonsole vorbehalten — verwenden Sie für die API 80/443 |
| Konto-ID | z. B.: api | Benutzerkonto für API-Aufrufe |
| Token | UUID-Format | In der Konsole unter Sicherheitsverwaltung → API-Authentifizierungstoken (/token/index) für dieses Konto ausstellen → Sicherheitseinstellungen · Sicherheitsverwaltung |
Mit diesen drei Werten gelingt der erste Aufruf mit dem folgenden einzelnen Block.
import java.util.List;
import plantpulse.api.v5.APIClient_V5;
import plantpulse.api.v5.dto.response.SiteResponseV5;
try (APIClient_V5 client = new APIClient_V5(
"HTTP", "100.68.69.41", 80, "api", "<issued-token>", false)) {
client.connect(); // 인증
System.out.println(client.system().ping().isPing()); // → true
for (SiteResponseV5 s : client.site().list()) // 사이트 목록
System.out.println(s.getSite_id() + " — " + s.getSite_name());
}
Wenn dieser Block true und die Standortliste ausgibt, ist alles bereit. Die Abschnitte 1.1 bis 1.7 erläutern die einzelnen Schritte im Detail.
1.1 Abhängigkeit hinzufügen
Fügen Sie die JAR-Datei einfach dem Klassenpfad hinzu.
# 빌드 (Gradle + Java 21)
cd plantpulse-api
./gradlew build
Die Artefakte werden unter target/ erzeugt.
| Datei | Verwendung |
|---|---|
target/plantpulse-api.jar | Zur Integration in ein bestehendes Projekt samt Abhängigkeiten |
1.2 Client erstellen
Die Optionen werden dem Konstruktor APIClient_V5 direkt übergeben.
import plantpulse.api.v5.APIClient_V5;
APIClient_V5 client = new APIClient_V5(
"HTTPS", // 프로토콜: "HTTP" 또는 "HTTPS"
"100.68.69.41", // host
443, // port (REST API: 80=HTTP, 443=HTTPS)
"api", // user_id
"19ba7a54-1132-49f2-967e-3c6f5cd989a0", // token (api_key 발급용)
false); // debug
client.connect(); // 인증 + HTTP 클라이언트 초기화
// ... API 호출 ...
client.close(); // 종료
Konstruktorparameter
| Parameter | Typ | Beschreibung |
|---|---|---|
protocol | String | "HTTP" oder "HTTPS" |
host | String | Server-Host oder IP |
port | int | Server-Port |
user_id | String | Konto-ID für die Authentifizierung |
token | String | Ausgestelltes Token (UUID-Format) |
debug | boolean | Debug-Log für HTTP-Requests und -Responses |
Authentifizierungsablauf: Beim Aufruf von
connect()wird intern überuser_id+tokenein api_key bezogen, der anschließend bei allen Aufrufen automatisch im Header mitgesendet wird. Ein manueller Eingriff ist nicht erforderlich.
1.3 Erster API-Aufruf — ping & Standortliste
import java.util.List;
import plantpulse.api.v5.APIClient_V5;
import plantpulse.api.v5.dto.response.SiteResponseV5;
import plantpulse.api.v5.dto.response.SystemPingResponseV5;
public class FirstCall {
public static void main(String[] args) throws Exception {
try (APIClient_V5 client = new APIClient_V5(
"HTTP", "100.68.69.41", 80, "api",
"19ba7a54-1132-49f2-967e-3c6f5cd989a0", false)) {
client.connect();
// 1) 서버 헬스체크
SystemPingResponseV5 ping = client.system().ping();
System.out.println("Server alive: " + ping.isPing()
+ " (v" + ping.getVersion() + ")");
// 2) 사이트 목록 (typed DTO 리스트)
List<SiteResponseV5> sites = client.site().list();
for (SiteResponseV5 s : sites) {
System.out.println(s.getSite_id() + " — " + s.getSite_name());
}
}
}
}
Ausführungsergebnis:
Server alive: true (v5.0)
SITE_00001 — 대전 1공장
SITE_00002 — 천안 2공장
1.4 try-with-resources-Muster
APIClient_V5 implementiert AutoCloseable. Die Verwendung von try-with-resources wird empfohlen.
try (APIClient_V5 client = new APIClient_V5(proto, host, port, user, token, false)) {
client.connect();
// ... API 호출 ...
}
// close() 자동 호출 — HTTP 커넥션 정리
1.5 Die 13 Services auf einen Blick
Unmittelbar nach connect() sind über die folgenden Service-Methoden alle Domänen erreichbar (Lazy-Initialisierung).
client.system() // 헬스체크
client.site() // 사이트(공장)
client.customer() // 고객
client.employee() // 직원
client.product() // 제품
client.asset() // 자산 계층 (Area → Line → Equipment)
client.opc() // OPC 데이터 채널
client.tag() // 태그(데이터 포인트)
client.alarm() // 알람
client.order() // 작업지시
client.calendar() // 일정
client.path() // 자산 경로
client.flow() // Flow / Flow Node
1.6 Standardmuster der V5-Methodensignaturen
Alle Domänen-Services folgen einem einheitlichen Methodenmuster. Nur der Domänenname unterscheidet sich, die Verwendung ist identisch.
| Muster | Rückgabetyp | Rückgabewert bei Fehler | Beschreibung |
|---|---|---|---|
create(req) | *ResponseV5 | null | Anlegen |
update(id, req) | *ResponseV5 | null | Vollständige Änderung |
delete(id) | boolean | false | Löschen |
get(id) | *ResponseV5 | null | Einzelabfrage |
list() | List<*ResponseV5> | Leere Liste | Gesamtliste |
exists(id) | boolean | false | Existenzprüfung |
count() | long | 0 | Anzahl |
⚠️ Es werden keine Exceptions geworfen. Kommunikationsfehler oder ERROR-Antworten des Servers werden als die oben genannten sicheren Standardwerte zurückgegeben. Die Fehlerursache entnehmen Sie dem Log oder
BaseServiceV5.getErrorCode(env). Details siehe Antwortformat und Fehlerbehandlung.
1.7 Debug-Modus
Wird das letzte Konstruktorargument auf true gesetzt, werden HTTP-Requests und -Responses auf der Konsole ausgegeben.
APIClient_V5 client = new APIClient_V5(
"HTTP", "100.68.69.41", 80, "api", TOKEN, true); // debug=true
Beispielausgabe:
[V5] GET https://server/api/v5/site headers={api_key=ab****cd}
[V5] response: 200 {"_status":"OK","data":[{"site_id":"SITE_00001",...}]}
Nächste Schritte
- Regeln für Domänen-IDs — Bitte unbedingt als Nächstes lesen. Die Prüfung der ID-Präfixe wird erzwungen.
- Antwortformat und Fehlerbehandlung — Zuordnung der Fehlercodes und sichere Behandlungsmuster
- Site-Service — Anlegen der ersten Stammdaten