> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/deployment/hi/self-hosted/enterprise/deployment-manager/services/opc-ua-server.md).

# OPC UA Server

OPC UA (Open Platform Communications Unified Architecture) एक औद्योगिक संचार प्रोटोकॉल है जो डिवाइसों, PLCs, और SCADA प्रणालियों के बीच डेटा का आदान-प्रदान करता है। OPC UA Server एक एज कंटेनर सेवा है जो डिवाइस पर टैग प्रकाशित करती है ताकि औद्योगिक क्लाइंट inference results पढ़ सकें और मान वापस लिख सकें।

आप Deployment Manager Configuration टैब से टैग, फ़ोल्डर, और सर्वर सेटिंग्स परिभाषित करते हैं, फिर अपने OPC UA क्लाइंट को डिवाइस की ओर इंगित करते हैं।

{% hint style="info" %}
OPC UA Server केवल Enterprise ग्राहकों के लिए उपलब्ध है। [Roboflow बिक्री टीम से संपर्क करें](https://roboflow.com/sales) और जानें।
{% endhint %}

## कनेक्शन विवरण

बदलें `<device-ip>` को Deployment Manager में डिवाइस पेज पर दिखाए गए IP पते से बदलें।

<table data-search="false"><thead><tr><th>उद्देश्य</th><th>पता</th></tr></thead><tbody><tr><td>OPC UA एंडपॉइंट</td><td><code>opc.tcp://&#x3C;device-ip>:4840/opcua/server</code></td></tr><tr><td>वेब UI और REST API</td><td><code>http://&#x3C;device-ip>:8092</code></td></tr></tbody></table>

<table data-search="false"><thead><tr><th>पोर्ट</th><th>प्रोटोकॉल</th><th>उद्देश्य</th></tr></thead><tbody><tr><td>4840</td><td>OPC UA बाइनरी</td><td>औद्योगिक क्लाइंट कनेक्शन (PLCs, SCADA)</td></tr><tr><td>8092</td><td>HTTP</td><td>वेब UI, REST API, दस्तावेज़ीकरण</td></tr></tbody></table>

## कॉन्फ़िगरेशन स्रोत

Configure मोडल के शीर्ष पर मौजूद "Configuration Source" टॉगल नियंत्रित करता है कि टैग और फ़ोल्डर कॉन्फ़िगरेशन कहाँ से आता है। डिवाइस पर एक समय में केवल एक ही स्रोत सक्रिय रहता है।

<table data-search="false"><thead><tr><th>स्रोत</th><th>संग्रहीत</th><th>इसे तब उपयोग करें जब</th></tr></thead><tbody><tr><td>"Web UI"</td><td><code>OPCUA_CONFIG</code></td><td>जब आप मोडल में ही टैग, फ़ोल्डर, और सर्वर सेटिंग्स को इनलाइन परिभाषित करना चाहते हैं। यह डिफ़ॉल्ट है।</td></tr><tr><td>"File"</td><td><code>OPCUA_CONFIG_FILE</code></td><td>कॉन्फ़िगरेशन किसी environment variable के लिए बहुत बड़ा है, जैसे हजारों टैग वाला deployment। सर्वर को डिवाइस पर किसी पथ की ओर इंगित करें (उदा.: <code>/data/opcua-config.json</code>).</td></tr></tbody></table>

"File" मोड में सर्वर स्टार्टअप पर सत्यापित करता है कि फ़ाइल मौजूद है, पढ़ने योग्य है, और खाली नहीं है, और यदि इनमें से कोई भी सच नहीं है तो एक स्पष्ट log entry के साथ शुरू होने में विफल रहता है। `OPCUA_CONFIG_FILE` से अधिक प्राथमिकता रखता है `OPCUA_CONFIG`.

स्रोत बदलते समय, मोडल खुला रहने पर इनलाइन मान और फ़ाइल पथ दोनों बने रहते हैं। सेव करने पर, जिस स्रोत को आपने नहीं चुना था उसे साफ़ कर दिया जाता है, इसलिए दोनों में से ठीक एक variable सेट रहता है। "File" मोड में service card इनलाइन टैग सूची के स्थान पर कॉन्फ़िगर किया गया फ़ाइल पथ दिखाती है।

## सर्वर सेटिंग्स

<table data-search="false"><thead><tr><th>सेटिंग</th><th>विवरण</th></tr></thead><tbody><tr><td>"Server Name"</td><td>सर्वर instance के लिए मानव-पठनीय नाम, जो नेटवर्क ब्राउज़ करने वाले क्लाइंट्स को दिखता है।</td></tr><tr><td>"Namespace URI"</td><td>टैग जिनके अंतर्गत पंजीकृत होते हैं, उस सर्वर namespace की पहचान करने वाला अद्वितीय URI। डिफ़ॉल्ट रूप से <code>http://opcua.roboflow.run</code>.</td></tr><tr><td>"Max Sessions"</td><td>एक साथ कितने OPC UA क्लाइंट जुड़े रह सकते हैं। डिफ़ॉल्ट रूप से <code>200</code>.</td></tr></tbody></table>

हर क्लाइंट एक सत्र रखता है, जिसमें प्रत्येक inference pod द्वारा टैग लिखना और प्रत्येक SCADA कनेक्शन शामिल है। किसी crashed client का सत्र तभी मुक्त होता है जब सर्वर उसका टाइमआउट कर देता है, इसलिए व्यस्त साइट पर live clients की तुलना में अधिक sessions हो सकते हैं। जब सीमा पहुँच जाती है, आगे के क्लाइंट्स को BadTooManySessions के साथ अस्वीकार कर दिया जाता है और उनके टैग अपडेट होना बंद हो जाते हैं। यदि कोई साइट डिफ़ॉल्ट से अधिक concurrent clients चलाती है, तो मान बढ़ाएँ। मोडल में इसे सेट करने पर यह server config में लिखा जाता है, और OPCUA\_MAX\_SESSIONS हाथ से प्रबंधित deployments के लिए इसे प्रति डिवाइस ओवरराइड कर सकता है। `BadTooManySessions` और उनके टैग अपडेट होना बंद हो जाते हैं। यदि कोई साइट डिफ़ॉल्ट से अधिक concurrent clients चलाती है, तो मान बढ़ाएँ। मोडल में इसे सेट करने पर यह server config में लिखा जाता है, और `OPCUA_MAX_SESSIONS` हाथ से प्रबंधित deployments के लिए इसे प्रति डिवाइस ओवरराइड कर सकता है।

## फ़ोल्डर और टैग

फ़ोल्डर टैग्स को एक पदानुक्रम में व्यवस्थित करते हैं। प्रत्येक फ़ोल्डर का एक नाम और एक वैकल्पिक विवरण होता है, और OPC UA address space में एक node के रूप में दिखाई देता है ताकि क्लाइंट्स टैग्स को ब्राउज़ और खोज सकें। कोई टैग किसी फ़ोल्डर से संबंधित हो सकता है या root स्तर पर रह सकता है।

टैग उन डेटा बिंदुओं को परिभाषित करते हैं जिन्हें सर्वर एक्सपोज़ करता है। प्रत्येक टैग में ये फ़ील्ड होते हैं:

<table data-search="false"><thead><tr><th>फ़ील्ड</th><th>विवरण</th></tr></thead><tbody><tr><td>"Display Name"</td><td>OPC UA क्लाइंट्स को दिखने वाला मानव-पठनीय नाम।</td></tr><tr><td>"Browse Name"</td><td>address space में उपयोग किया जाने वाला प्रोग्रामेटिक पहचानकर्ता। Display name से जनरेट किया जाता है।</td></tr><tr><td>"Data Type"</td><td>टैग में मौजूद मान का प्रकार।</td></tr><tr><td>"Access Level"</td><td>क्या टैग <code>ReadWrite</code> या <code>ReadOnly</code>.</td></tr><tr><td>"Folder"</td><td>टैग किस फ़ोल्डर से संबंधित है, या यदि असाइन नहीं है तो Root।</td></tr><tr><td>"Initial Value"</td><td>सर्वर शुरू होने पर प्रारंभिक मान। डेटा प्रकार के विरुद्ध सत्यापित किया जाता है।</td></tr><tr><td>"Description"</td><td>टैग किस काम के लिए है, उसका वैकल्पिक लेबल।</td></tr></tbody></table>

### डेटा प्रकार

<table data-search="false"><thead><tr><th>प्रकार</th><th>विवरण</th><th>उदाहरण</th></tr></thead><tbody><tr><td><code>बूलियन</code></td><td>सही या गलत</td><td><code>true</code></td></tr><tr><td><code>Int32</code></td><td>32-बिट साइन किया हुआ पूर्णांक</td><td><code>42</code></td></tr><tr><td><code>फ़्लोट</code></td><td>32-बिट फ़्लोटिंग-पॉइंट</td><td><code>3.14</code></td></tr><tr><td><code>डबल</code></td><td>64-बिट फ़्लोटिंग-पॉइंट</td><td><code>3.14159265359</code></td></tr><tr><td><code>स्ट्रिंग</code></td><td>UTF-8 पाठ</td><td><code>चल रहा है</code></td></tr><tr><td><code>DateTime</code></td><td>ISO 8601 समय-मुद्रा</td><td><code>2024-01-15T10:30:00Z</code></td></tr></tbody></table>

ये वे प्रकार हैं जो Configure मोडल प्रदान करता है। हाथ से लिखी गई कॉन्फ़िगरेशन फ़ाइल भी `Int16`, `UInt16`, और `UInt32`, का उपयोग कर सकती है, जिन्हें सर्वर स्वीकार करता है।

### एक्सेस स्तर

`ReadWrite` टैग्स को OPC UA क्लाइंट्स के साथ-साथ REST API, CLI, और वेब UI द्वारा पढ़ा और लिखा जा सकता है। इन्हें कंट्रोल आउटपुट, सेटपॉइंट, और उपयोगकर्ता द्वारा समायोज्य मानों के लिए उपयोग करें।

`ReadOnly` टैग OPC UA क्लाइंट के लेखन को `BadNotWritable`के साथ अस्वीकार करते हैं। REST API, CLI, और वेब UI फिर भी access level की परवाह किए बिना मान अपडेट कर सकते हैं, इसलिए `ReadOnly` सेंसर मानों, गणना किए गए आउटपुट, और उस system status के लिए उपयोग करें जिसे केवल डिवाइस को उत्पन्न करना चाहिए।

### वैकल्पिक बाधाएँ

संख्यात्मक प्रकार "Min Value" और "Max Value" का समर्थन करते हैं ताकि अनुमत सीमा को सीमित किया जा सके, साथ ही वर्णनात्मक इकाई लेबल के लिए "Engineering Units" भी (उदा.: °C, PSI, RPM)। String प्रकार वर्णों की संख्या सीमित करने के लिए "Max Length" का समर्थन करते हैं।

## प्रमाणीकरण

सर्वर डिफ़ॉल्ट रूप से SecurityPolicy None का उपयोग करते हुए anonymous connections की अनुमति देता है। प्रत्येक क्लाइंट से username और password की आवश्यकता के लिए Configure modal में "Require authentication" चालू करें।

जब टॉगल चालू हो, तो आपको username और password दोनों देने होंगे। पासवर्ड bcrypt से hash किया जाता है इससे पहले कि उसे संग्रहीत किया जाए, इसलिए मूल पासवर्ड कभी सहेजा नहीं जाता और बाद में पुनः प्राप्त नहीं किया जा सकता। मौजूदा सर्वर पर पासवर्ड बदलने के लिए, Configure modal में नया पासवर्ड दर्ज करें, या वर्तमान पासवर्ड बनाए रखने के लिए फ़ील्ड खाली छोड़ दें। टॉगल बंद करने पर anonymous access बहाल हो जाता है।

क्रेडेंशियल्स दो environment variables के रूप में संग्रहीत होते हैं, जिन्हें या तो साथ-साथ सेट होना चाहिए या दोनों को अनसेट छोड़ा जाना चाहिए:

<table data-search="false"><thead><tr><th>चर</th><th>विवरण</th></tr></thead><tbody><tr><td><code>OPCUA_USERNAME</code></td><td>क्लाइंट प्रमाणीकरण के लिए सादा-पाठ username।</td></tr><tr><td><code>OPCUA_PASSWORD_HASH</code></td><td>10 salt rounds पर पासवर्ड का bcrypt hash, जो शुरू होता है <code>$2b$10$</code>.</td></tr></tbody></table>

{% hint style="warning" %}
Environment variables संपादित करने के बजाय Configure modal के माध्यम से क्रेडेंशियल्स सेट करें। Modal आपके लिए bcrypt hash जनरेट करता है, और इसे सेट करना `OPCUA_PASSWORD_HASH` हाथ से करने के लिए बाहर से एक वैध hash तैयार करना आवश्यक है।
{% endhint %}

## टैग रिपोर्टिंग

सर्वर निर्धारित समय पर अपने टैग Roboflow को रिपोर्ट कर सकता है, ताकि आप साइट विज़िट के बिना देख सकें कि वह क्या सर्व करता है। इसे Configure modal के "Tag Reporting" सेक्शन में सेट करें।

<table data-search="false"><thead><tr><th>सेटिंग</th><th>विवरण</th></tr></thead><tbody><tr><td>"Send periodic tag reports"</td><td>रिपोर्टिंग को चालू या बंद करता है। डिफ़ॉल्ट रूप से चालू।</td></tr><tr><td>"Include tag values"</td><td>प्रत्येक टैग का वर्तमान मान भेजता है। केवल टैग counts भेजने के लिए इसे बंद करें। डिफ़ॉल्ट रूप से चालू।</td></tr><tr><td>"Reporting Interval"</td><td>रिपोर्टों के बीच सेकंड। डिफ़ॉल्ट 60।</td></tr></tbody></table>

सेटिंग्स environment variables के रूप में संग्रहीत होती हैं, जिन्हें सर्वर स्टार्टअप पर पढ़ता है:

<table data-search="false"><thead><tr><th>चर</th><th>डिफ़ॉल्ट</th><th>विवरण</th></tr></thead><tbody><tr><td><code>OPCUA_SNAPSHOT_INTERVAL_SECONDS</code></td><td><code>60</code></td><td>रिपोर्टों के बीच सेकंड। <code>0</code> रिपोर्टिंग बंद करता है।</td></tr><tr><td><code>OPCUA_SNAPSHOT_INCLUDE_VALUES</code></td><td><code>true</code></td><td><code>false</code> केवल टैग counts भेजता है।</td></tr><tr><td><code>OPCUA_SNAPSHOT_TTL_SECONDS</code></td><td>व्युत्पन्न</td><td>कोई रिपोर्ट कितनी देर तक वर्तमान रहती है। Modal इसे interval से व्युत्पन्न करता है और हर बार सेव करने पर इसे फिर से लिखता है।</td></tr></tbody></table>

सर्वर जिस मान को स्वीकार नहीं करता वह डिफ़ॉल्ट पर वापस जाने के बजाय रिपोर्टिंग बंद कर देता है, इसलिए एक टाइपो रिपोर्टों को रोक देता है। डिवाइस पेज ऐसे डिवाइस को not reporting के रूप में दिखाता है।

यदि इनमें से कोई भी variable reference द्वारा सेट है (`{$ref}`), तो modal रिपोर्टिंग को संपादित नहीं कर सकता और सेव करने पर इसे जैसा है वैसा ही छोड़ देता है। फॉर्म से रिपोर्टिंग प्रबंधित करने के लिए reference को literal value से बदलें।

{% hint style="warning" %}
"Include tag values" केवल आवधिक रिपोर्ट को नियंत्रित करता है। सर्वर फिर भी टैग मानों में बदलाव को अपने container log में लिखता है, जिसे Roboflow अलग से एकत्र करता है।
{% endhint %}

## निगरानी

डिवाइस पेज एक लाइव OPC UA स्थिति कार्ड दिखाता है जिसमें जुड़े हुए क्लाइंट्स की संख्या, "Max Sessions" के मुकाबले उपयोग में सत्र, और सबसे हाल की टैग रिपोर्ट शामिल होती है। टैग रिपोर्टिंग से पुराने इमेज पर मौजूद डिवाइस रिपोर्ट के स्थान पर यह बताता है।

जब सर्वर session cap तक पहुँचकर नए क्लाइंट्स को अस्वीकार करता है, तो कार्ड एक बैनर दिखाता है जिसमें session count, cap, और कितने क्लाइंट्स अस्वीकार किए गए थे, यह बताया जाता है। इसके बारे में ईमेल पाने के लिए, डिवाइस के "Device Alerts" टैब से एक "OPC UA Refusing Clients" अलर्ट जोड़ें और पहले कितने मिनट तक अस्वीकृतियाँ होने दें, यह सेट करें। देखें [डिवाइस अलर्ट सेट करें](/deployment/hi/self-hosted/enterprise/deployment-manager/setting-up/set-up-device-alerts.md).

## वेब इंटरफ़ेस

सर्वर पर एक वेब इंटरफ़ेस उपलब्ध है: `http://<device-ip>:8092`.

<table data-search="false"><thead><tr><th>पृष्ठ</th><th>पथ</th><th>सामग्री</th></tr></thead><tbody><tr><td>डैशबोर्ड</td><td><code>/</code></td><td>सभी कॉन्फ़िगर किए गए टैग उनके वर्तमान मानों के साथ, हर 2 सेकंड में रिफ़्रेश होते हैं। किसी भी टैग का मान उसके access level की परवाह किए बिना, एक edit dialog के माध्यम से संपादित किया जा सकता है।</td></tr><tr><td>दस्तावेज़ीकरण</td><td><code>/docs.html</code></td><td>सर्वर गाइड, कॉन्फ़िगरेशन फ़ॉर्मेट संदर्भ, और समस्या-समाधान नोट्स।</td></tr><tr><td>API एक्सप्लोरर</td><td><code>/api/docs</code></td><td>एंडपॉइंट्स का परीक्षण करने और अनुरोध तथा प्रतिक्रिया schema देखने के लिए इंटरैक्टिव Swagger UI।</td></tr></tbody></table>

## HTTP API

REST API टैग मानों और सर्वर जानकारी तक प्रोग्रामेटिक पहुँच देता है। सभी एंडपॉइंट JSON लौटाते हैं। बेस URL है `http://<device-ip>:8092/api`. देखें [सेवाएँ](/deployment/hi/self-hosted/enterprise/deployment-manager/services.md#using-the-apis) डिवाइस पर मौजूद सभी सेवा APIs द्वारा साझा किए गए नियमों के लिए।

{% hint style="warning" %}
HTTP API में प्रमाणीकरण नहीं होता। `OPCUA_USERNAME` और `OPCUA_PASSWORD_HASH` पोर्ट 4840 पर OPC UA बाइनरी एंडपॉइंट की सुरक्षा करते हैं, न कि पोर्ट 8092 की। जो भी पोर्ट 8092 तक पहुँच सकता है, वह किसी भी टैग में लिख सकता है।
{% endhint %}

टैग संरचना रनटाइम पर अपरिवर्तनीय होती है। टैग और फ़ोल्डर आते हैं `OPCUA_CONFIG` environment variable से, या उस फ़ाइल से जिसका नाम `OPCUA_CONFIG_FILE` बड़ी कॉन्फ़िगरेशनों के लिए, और इस API के माध्यम से बनाए, बदले, या हटाए नहीं जा सकते। केवल मान लिखे जा सकते हैं।

### टैग मान पढ़ें और लिखें

`accessLevel` OPC UA प्रोटोकॉल को नियंत्रित करता है, इस API को नहीं। जिस टैग को चिह्नित किया गया है `ReadOnly` OPC UA क्लाइंट्स से लिखने के अनुरोधों को `BadNotWritable` के साथ अस्वीकार करता है, लेकिन यहाँ अभी भी लिखा जा सकता है, जिससे एक pipeline sensor value प्रकाशित करती है जिसे औद्योगिक क्लाइंट्स को केवल उपभोग करना चाहिए।

```bash
curl http://<device-ip>:8092/api/tags

curl -X PUT http://<device-ip>:8092/api/tags/tag_temperature/value \
  -H "Content-Type: application/json" \
  -d '{"value": 25.5}'
```

{% openapi src="/files/8c914d14dc6f44c91b37945a6bc2ef30d4e4142c" path="/tags" method="get" %}
[edge-opcua-server.yaml](https://2297977984-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-21a215712d389ded373872b7a4e970e80be2c5fa%2Fedge-opcua-server.yaml?alt=media)
{% endopenapi %}

{% openapi src="/files/8c914d14dc6f44c91b37945a6bc2ef30d4e4142c" path="/tags/{id}" method="get" %}
[edge-opcua-server.yaml](https://2297977984-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-21a215712d389ded373872b7a4e970e80be2c5fa%2Fedge-opcua-server.yaml?alt=media)
{% endopenapi %}

{% openapi src="/files/8c914d14dc6f44c91b37945a6bc2ef30d4e4142c" path="/tags/{id}/value" method="put" %}
[edge-opcua-server.yaml](https://2297977984-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-21a215712d389ded373872b7a4e970e80be2c5fa%2Fedge-opcua-server.yaml?alt=media)
{% endopenapi %}

लिखने का अनुरोध `400` के साथ अस्वीकार किया जाता है जब मान अनुपस्थित हो, प्रकार टैग के `dataType`से मेल न खाता हो, या वह कॉन्फ़िगर किए गए `minValue`, `maxValue`, या `maxLength`से बाहर हो। ऐसे टैग पर लिखना जो मौजूद नहीं है, यह भी लौटाता है `400`, न कि `404`. `GET /tags/{id}` वापस देता है `404`, इसलिए यदि आपको किसी अज्ञात टैग को एक गलत मान से अलग करना हो तो इसका उपयोग करें।

### कॉन्फ़िगरेशन एंडपॉइंट्स

चल रहे कॉन्फ़िगरेशन के केवल-पठन दृश्य, जो लिखने से पहले टैग IDs और उनकी बाधाएँ खोजने के लिए उपयोगी हैं।

{% openapi src="/files/8c914d14dc6f44c91b37945a6bc2ef30d4e4142c" path="/config" method="get" %}
[edge-opcua-server.yaml](https://2297977984-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-21a215712d389ded373872b7a4e970e80be2c5fa%2Fedge-opcua-server.yaml?alt=media)
{% endopenapi %}

{% openapi src="/files/8c914d14dc6f44c91b37945a6bc2ef30d4e4142c" path="/config/folders" method="get" %}
[edge-opcua-server.yaml](https://2297977984-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-21a215712d389ded373872b7a4e970e80be2c5fa%2Fedge-opcua-server.yaml?alt=media)
{% endopenapi %}

### सत्र और स्वास्थ्य

एक बार `maxSessions` तक पहुँच जाता है, तो आगे के क्लाइंट्स को `BadTooManySessions`, इसलिए तुलना करें `sessionCount` को `maxSessions` अतिरिक्त गुंजाइश के लिए।

एक `200` से `/subscriptions` शून्य सत्र सूची के साथ और `maxSessions` का अनुपस्थित होना दर्शाता है कि OPC UA सर्वर चल नहीं रहा है। इसे warm-up के बजाय outage मानें: यदि एंडपॉइंट बिल्कुल भी जवाब देता है, तो startup पहले ही पूरा हो चुका है या विफल हो चुका है। इसके साथ पुष्टि करें `/health`, जो रिपोर्ट करता है `status: "unhealthy"` और `opcuaServer: "stopped"`.

`maxSessions` उस स्थिति में शून्य के बजाय अनुपस्थित रहता है ताकि कोई consumer जो गणना करता है `maxSessions - sessionCount` किसी अज्ञात सीमा को पूर्ण सीमा के रूप में न पढ़े।

{% openapi src="/files/8c914d14dc6f44c91b37945a6bc2ef30d4e4142c" path="/subscriptions" method="get" %}
[edge-opcua-server.yaml](https://2297977984-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-21a215712d389ded373872b7a4e970e80be2c5fa%2Fedge-opcua-server.yaml?alt=media)
{% endopenapi %}

{% hint style="info" %}
`/subscriptions` यदि spec में अनुपस्थित है, तो डिवाइस इसे पर परोसता है `/api/openapi.json`. रूट फिर भी सक्रिय रहता है, और यहाँ प्रलेखित है।
{% endhint %}

`/health` लौटाता है `200` चाहे OPC UA server चल रहा हो या नहीं। जाँचें `status` और `opcuaServer` status code के बजाय।

{% openapi src="/files/8c914d14dc6f44c91b37945a6bc2ef30d4e4142c" path="/health" method="get" %}
[edge-opcua-server.yaml](https://2297977984-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-21a215712d389ded373872b7a4e970e80be2c5fa%2Fedge-opcua-server.yaml?alt=media)
{% endopenapi %}

## CLI

यह `opcua-cli` टूल डिबगिंग, scripting, और त्वरित टैग operations के लिए सर्वर तक terminal पहुँच देता है जब वेब UI उपलब्ध न हो।

```bash
docker exec -it opcua-server opcua-cli
```

```bash
docker exec opcua-server opcua-cli <command>
```

<table data-search="false"><thead><tr><th>कमांड</th><th>विवरण</th></tr></thead><tbody><tr><td><code>सूची</code>, <code>ls</code></td><td>वर्तमान मानों के साथ सभी टैग सूचीबद्ध करें</td></tr><tr><td><code>read &#x3C;tag></code></td><td>किसी विशिष्ट टैग मान को पढ़ें</td></tr><tr><td><code>write &#x3C;tag> &#x3C;value></code></td><td>किसी टैग में मान लिखें</td></tr><tr><td><code>status</code></td><td>सर्वर स्वास्थ्य और अपटाइम दिखाएँ</td></tr><tr><td><code>clients</code></td><td>जुड़े हुए OPC UA क्लाइंट्स की सूची बनाएं</td></tr><tr><td><code>clients --detailed</code></td><td>सब्सक्रिप्शन विवरण के साथ क्लाइंट्स की सूची बनाएं</td></tr><tr><td><code>export</code></td><td>कॉन्फ़िगरेशन को JSON के रूप में निर्यात करें</td></tr></tbody></table>

```bash
docker exec opcua-server opcua-cli read Temperature
docker exec opcua-server opcua-cli write Temperature 25.5
docker exec opcua-server opcua-cli clients --detailed
```

## लॉगिंग

सेट करें `LOG_LEVEL` service पर verbosity नियंत्रित करने के लिए। देखें [डिवाइस कॉन्फ़िगरेशन अपडेट करें](/deployment/hi/self-hosted/enterprise/deployment-manager/making-changes/update-device-configuration.md) कि सेवा environment variables कहाँ संपादित करने हैं, और [डिवाइस लॉग देखें](/deployment/hi/self-hosted/enterprise/deployment-manager/monitoring/view-device-logs.md) आउटपुट पढ़ने के लिए।

<table data-search="false"><thead><tr><th>स्तर</th><th>विवरण</th></tr></thead><tbody><tr><td><code>DEBUG</code></td><td>विस्तृत निदान जानकारी</td></tr><tr><td><code>INFO</code></td><td>सामान्य संचालन संदेश (डिफ़ॉल्ट)</td></tr><tr><td><code>WARN</code></td><td>संभावित समस्याएँ जो संचालन नहीं रोकतीं</td></tr><tr><td><code>ERROR</code></td><td>ऐसी त्रुटियाँ जो कार्यक्षमता को प्रभावित करती हैं</td></tr></tbody></table>

मान case-insensitive होते हैं, और कोई अपरिचित मान वापस गिरता है `INFO`.
