<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'> <html class="client-nojs" dir="ltr" lang="en"> <head> <meta charset="UTF-8" /> <title>Модулі/Web кориÑтувача - OpenSCADAWiki</title> <meta content="MediaWiki 1.26.4" name="generator" /> <link href="https://www.gnu.org/copyleft/fdl.html" rel="copyright" /> <link href="../../en/files/doc.css" rel="stylesheet" /></head> <body><div class="floatright"><a href="../index.html"><img alt="OpenSCADA" src="../../en/files/index.png" /></a></div><div id="mw_header"> <div class="mw-indicators"> </div> <h1 id="firstHeading" lang="uk">Модулі/Web кориÑтувача</h1> </div><div class="mw-content-ltr" dir="ltr" id="mw-content-text" lang="uk"><div class="mw-pt-translate-header noprint" dir="ltr" lang="en">This page is a <span class="plainlinks"><a class="external text" href="http://oscada.org/wiki/index.php?title=Special:Translate&group=page-Modules%2FWebUser&action=page&filter=&language=uk" rel="nofollow noreferrer noopener" target="_blank">translated version</a></span> of the page <a class="external" href="http://oscada.org/wiki/Modules/WebUser" title="Modules/WebUser">Modules/WebUser</a> and the translation is 100% complete.</div><hr /><div class="mw-pt-languages" dir="ltr" lang="en"><div class="mw-pt-languages-list autonym"><a class="mw-pt-languages-ui mw-pt-progress mw-pt-progress--complete" href="../../en/Modules/WebUser.html" title="Modules/WebUser (100% translated)">English</a> • ‎<a class="mw-pt-progress mw-pt-progress--high" href="../../ru/Modules/WebUser.html" title="Модули/Web Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ (65% translated)">mRussian</a> • ‎<span class="mw-pt-languages-selected mw-pt-progress mw-pt-progress--complete">УкраїнÑька</span></div></div> <table class="wikitable"> <tr> <th> Модуль </th> <th> Ім'Ñ </th> <th> ВерÑÑ–Ñ </th> <th> Ð›Ñ–Ñ†ÐµÐ½Ð·Ñ–Ñ </th> <th> Джерело </th> <th> Мови </th> <th> Платформи </th> <th> Тип </th> <th> Ðвтор </th> <th> ÐžÐ¿Ð¸Ñ </th></tr> <tr> <td> <a href="../Modules/WebUser.html" title="Special:MyLanguage/Modules/WebUser">WebUser</a> </td> <td> WWW-Ñторінка кориÑтувача </td> <td> 2.0 </td> <td> GPL2 </td> <td> ui_WebUser.so </td> <td> en,uk,ru,de </td> <td> x86,x86_64,ARM </td> <td> КориÑтувацькі інтерфейÑи </td> <td> Роман Савоченко </td> <td> Забезпечує ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð²Ð»Ð°Ñних WWW-Ñторінок на внутрішній мові OpenSCADA. </td></tr></table> <p>Модуль надає кориÑтувачу механізм ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ WWW-Ñторінок, а також дозволÑÑ” оброблÑти інші WWW-запити на внутрішній мові OpenSCADA, зазвичай це <a href="../Modules/JavaLikeCalc.html" title="Special:MyLanguage/Modules/JavaLikeCalc">JavaLikeCalc</a>, не залучаючи при цьому низькорівневого програмуваннÑ. У ролі обробнику Ñторінок, модуль дозволÑÑ” викориÑтовувати <a href="../Program_manual.html#DAQTmpl" title="Special:MyLanguage/Documents/Program manual">Ñтандартні DAQ-Шаблони</a>. ВикориÑÑ‚Ð°Ð½Ð½Ñ DAQ-Шаблонів дозволÑÑ” Ñтворювати бібліотеки WWW-Ñторінок Ñ– здійÑнювати виклик Ñ—Ñ… у цьому модулі багаторазово, Ñк Ñ—Ñ… реалізації, а також надає контекÑÑ‚ даних Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñƒ із Ñ—Ñ… зв'ÑзуваннÑм з даними підÑиÑтеми "Збір Даних". </p><p>Окрім приналежноÑті Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð´Ð¾ OpenSCADA, він також належить Ñ– Ñ” модулем Ð¼Ð¾Ð´ÑƒÐ»Ñ Ñ‚Ñ€Ð°Ð½Ñпортного протоколу <a href="../Modules/HTTP.html" title="Special:MyLanguage/Modules/HTTP">Protocol.HTTP</a>. ВлаÑне, виклик модулю WebUser здійÑнюєтьÑÑ Ñ–Ð· Protocol.HTTP Ñ– за поÑередництвом розширеного механізму комунікації — екÑпортованою функцією HTTP() цього модулÑ. </p><p>ÐдреÑÐ°Ñ†Ñ–Ñ Ñторінок починаєтьÑÑ Ñ–Ð· другого елементу URI. Що пов'Ñзано із тим, що перший елемент URI викориÑтовуєтьÑÑ Ð´Ð»Ñ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ— Ñамого Ð¼Ð¾Ð´ÑƒÐ»Ñ ÐºÐ¾Ñ€Ð¸Ñтувацького WWW-інтерфейÑу. Ðаприклад, URL <i>http://localhost.localdomain:10002/WebUser/UserPage</i> можна розшифрувати Ñк виклик кориÑтувацької Ñторінки "UserPage" цього Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð½Ð° хоÑті "localhost.localdomain" через порт 10002. У випадку відÑутноÑті другого елементу URI та Ð²ÐºÐ°Ð·Ð°Ð½Ð½Ñ Ð½Ð° Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ–Ð½Ð´ÐµÐºÑу кориÑтувацьких Ñторінок у конфігурації — формуєтьÑÑ Ñ–Ð½Ð´ÐµÐºÑ Ñторінок (риÑ.1). </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:624px;"><a class="image" href="http://oscada.org/wiki/File:WebUser_idx_uk.png"><img class="thumbimage" height="288" src="../files/WebUser_idx_uk.png" width="622" /></a> <div class="thumbcaption">РиÑ.1. Ð†Ð½Ð´ÐµÐºÑ ÐºÐ¾Ñ€Ð¸Ñтувацьких Ñторінок.</div></div></div></div> <p>Головна вкладка конфігурації Ð¼Ð¾Ð´ÑƒÐ»Ñ (риÑ.2) міÑтить Ñтан модулÑ, надає можливіÑть Ð¾Ð±Ñ€Ð°Ð½Ð½Ñ Ñторінки по замовченню та дозволÑÑ” формувати перелік кориÑтувацьких Ñторінок. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:816px;"><a class="image" href="http://oscada.org/wiki/File:WebUser_main_uk.png"><img class="thumbimage" height="537" src="../files/WebUser_main_uk.png" width="814" /></a> <div class="thumbcaption">РиÑ.2. ОÑновна вкладка конфігурації модулÑ.</div></div></div></div> <h2><span class="mw-headline" id="WWW-.D1.81.D1.82.D0.BE.D1.80.D1.96.D0.BD.D0.BA.D0.B8">WWW-Ñторінки</span></h2> <p>Модуль надає можливіÑть ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ð¹ WWW-Ñторінок у об'єкті "КориÑтувацька WWW-Ñторінка" (риÑ.3). </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:782px;"><a class="image" href="http://oscada.org/wiki/File:WebUser_up_main_uk.png"><img class="thumbimage" height="583" src="../files/WebUser_up_main_uk.png" width="780" /></a> <div class="thumbcaption">РиÑ.3. Головна вкладка конфігурації кориÑтувацької Ñторінки.</div></div></div></div> <p>Головна вкладка міÑтить оÑновні Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ñ€Ð¸Ñтувацької WWW-Ñторінки: </p> <ul><li> Розділ "Стан" — міÑтить влаÑтивоÑті, Ñкі характеризують Ñтан Ñторінки: ÑтатуÑ, "Ввімкнено", ім'Ñ Ð‘Ð” (Ñка міÑтить конфігурацію Ñ– з відÑтеженнÑм наÑвноÑті даних у різних Ñховищах та наданнÑм поÑлідовного Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð´ÑƒÐ±Ð»Ñ–ÐºÐ°Ñ‚Ñ–Ð²) Ñ– дату оÑтанньої модифікації.</li> <li> Ідентифікатор, ім'Ñ Ñ– Ð¾Ð¿Ð¸Ñ Ñторінки.</li> <li> Стан "Ввімкнено", у Ñкий переводити Ñторінку при завантажені.</li> <li> Мова прÑмої процедури або <a href="../Program_manual.html#DAQTmpl" title="Special:MyLanguage/Documents/Program manual">DAQ-Шаблон</a>, пов'Ñзаний зі Ñторінкою.</li></ul> <p>Ð’ÑÑ– запити до кориÑтувацьких Ñторінок ÑпрÑмовуютьÑÑ Ð´Ð¾ процедури обробки запитів кориÑтувацької Ñторінки, або до процедури DAQ-Шаблону, Ñка предÑтавлена на вкладці "Програма" об'єкту Ñторінки кориÑтувача (риÑ.4). У випадку з DAQ-Шаблоном також надаєтьÑÑ Ð²ÐºÐ»Ð°Ð´ÐºÐ° конфігурації шаблону (риÑ.5). </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:893px;"><a class="image" href="http://oscada.org/wiki/File:WebUser_up_prog_uk.png"><img class="thumbimage" height="740" src="../files/WebUser_up_prog_uk.png" width="891" /></a> <div class="thumbcaption">РиÑ.4. Вкладка "Процедура" об'єкту кориÑтувацької WWW-Ñторінки.</div></div></div></div> <p>Вкладка процедури обробки запитів до кориÑтувацької Ñторінки міÑтить: </p> <ul><li> Таблицю контекÑту даних процедури. Переважно має ÑÐµÐ½Ñ Ð»Ð¸ÑˆÐµ при роботі за шаблоном Ñ– де можна контролювати цей Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸, включно з можливіÑтю Ð²Ñ‚Ñ€ÑƒÑ‡Ð°Ð½Ð½Ñ Ñ‡ÐµÑ€ÐµÐ· зміну значень даних.</li> <li> ТекÑÑ‚ прÑмої процедури Ñторінки, відÑутній у режимі роботи за шаблоном.</li> <li> Зв'Ñзки на дані підÑиÑтеми "Збір Даних", Ñкі видимі Ñ– доÑтупні Ð´Ð»Ñ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ режимі роботи за шаблоном та у ввімкненому Ñтані об'єкту Ñторінки.</li></ul> <p>Ð”Ð»Ñ Ð¿Ñ€Ñмої процедури обробки передвизначено Ñ– обов'Ñзкові або опціональні до ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñƒ шаблоні наÑтупні атрибути обміну з протоколом HTTP: </p> <ul><li> <i><b>Результат (rez)</b></i> <Ð Ñдок> — результат оброки, за замовченнÑм — "200 OK"; у режимі DAQ-Шаблону маєте пиÑати Ñюди прÑмо, не оператором "return"; Ð´Ð»Ñ Ð·Ð°Ð¿Ð¾Ð±Ñ–Ð³Ð°Ð½Ð½Ñ Ð½Ð°Ð´ÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð·Ð°Ð³Ð¾Ñ€Ð½ÑƒÑ‚Ð¾Ñ— у HTTP відповіді Ñтавте тут порожній Ñ€Ñдок, тобто відповідь надÑилайте прÑмо через <a href="../User_API.html#SYSTransport" title="Special:MyLanguage/Documents/User API">SYS.Transport["Modul"]["in_Transp"].writeTo()</a>;</li> <li> <i><b>Запит HTTP (HTTPreq)</b></i> <Ð Ñдок> — метод HTTP запиту на кшталт GET, POST, ...;</li> <li> <i><b>URL (url)</b></i> <Ð Ñдок> — URI запиту;</li> <li> <i><b>WWW-Ñторінка (page)</b></i> <Ð Ñдок> — вміÑÑ‚ Ñторінки Get/Post, Ñк Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñƒ так Ñ– відповіді;</li> <li> <i>Відправник (sender)</i> <Ð Ñдок> — відправник запиту;</li> <li> <i>КориÑтувач (user)</i> <Ð Ñдок> — аутентифікований кориÑтувач;</li> <li> <i><b>HTTP змінні (HTTPvars)</b></i> <Об'єкт> — HTTP змінні; змінені Ñ– додані змінні (окрім "Date", "Server", "Accept-Ranges" та "Content-Length") будуть розташовані у пакеті відповіді;</li> <li> <i>Параметри URL (URLprms)</i> <Об'єкт> — параметри URL;</li> <li> <i>Елементи вміÑту (cnts)</i> <Об'єкт::Array<XMLNodeObj>> — елементи вміÑту Ð´Ð»Ñ POST;</li> <li> <i>Цей об'єкт (this)</i> <Об'єкт> — вказівник на об'єкт цієї Ñторінки;</li> <li> <i>Об'єкт протоколу (prt)</i> <Об'єкт> — вказівник на об'єкт вхідної чаÑтини HTTP-протоколу;</li> <li> <i>Об'єкт транÑпорту (tr)</i> <Об'єкт> — вказівник на об'єкт вхідного транÑпорту до вхідної чаÑтини HTTP-протоколу;</li> <li> <i>ÐŸÐ»Ð°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð°Ñтупного ÑервіÑного виклику (schedCall)</i> <Ціле> — запишіть тут Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу у Ñекундах Ð´Ð»Ñ Ð¿Ð»Ð°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð½Ñ‚ÐµÐºÑту процедури у ÑервіÑному виклику; <a class="image" href="http://oscada.org/wiki/File:At.png"><img alt="At.png" height="22" src="../../en/files/At.png" width="22" /></a> ÑервіÑні виклики зазвичай здійÑнюютьÑÑ Ñ–Ð· періодичніÑтю 10 Ñекунд, тож ви можете планувати такі виклики не чаÑтіше за 10 Ñекунд.</li></ul> <p>Загальний Ñценарій запиту кориÑтувацької Ñторінки: </p> <ul><li> Ð—Ð¾Ð²Ð½Ñ–ÑˆÐ½Ñ Ð¼ÐµÑ€ÐµÐ¶ÐµÐ²Ð° ÑÑ‚Ð°Ð½Ñ†Ñ–Ñ Ñ„Ð¾Ñ€Ð¼ÑƒÑ” HTTP запит з URI виду "/WebUser/{UserPage}", Ñкий попадає на транÑпорт OpenSCADA із значеннÑм Ð¿Ð¾Ð»Ñ ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ— "Протокол", рівного "HTTP".</li> <li> ТранÑпорт ÑпрÑмовує запит на модуль транÑпортного протоколу "Protocol.HTTP".</li> <li> Модуль транÑпортного протоколу ÑпрÑмовує запит цьому модулю відповідно до першого елементу URI.</li> <li> Цей модуль обирає об'єкт Ñторінки кориÑтувача, Ñка вказана у другому елементі URI.</li> <li> ЗдійÑнюєтьÑÑ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¸Ñ… HTTP-протоколу Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð¸ Ñторінки: <ul><li> <i><b>HTTPreq</b></i> — вÑтановлюєтьÑÑ Ñƒ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ€Ñдка HTTP-Методу (на кшталт "GET", "POST"), залежно від типу запиту;</li> <li> <i><b>url</b></i> — адреÑа запитаного реÑурÑу (URI);</li> <li> <i><b>page</b></i> — вхідний одиничний вміÑÑ‚ Ñ– Ñторінка, що передаєтьÑÑ, Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¾Ð´Ñƒ "POST";</li> <li> <i>sender</i> — адреÑа відправника запиту;</li> <li> <i>user</i> — ідентифікатор аутентифікованого кориÑтувача, Ñкщо Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð¼Ð°Ð»Ð° міÑце;</li> <li> <i><b>HTTPvars</b></i> — розібраний перелік змінних протоколу HTTP у виглÑді влаÑтивоÑтей об'єкту;</li> <li> <i>URLprms</i> — розібраний перелік параметрів URL у виглÑді влаÑтивоÑтей об'єкту;</li> <li> <i>cnts</i> — розібрані елементи вміÑту Ð´Ð»Ñ POST, у Array<XMLNodeObj>, з вміÑтом елементів у текÑті з влаÑтивоÑÑ‚Ñми у атрибутах XMLNodeObj.</li></ul></li> <li> Виклик процедури на виконаннÑ, Ñка, обробивши запит, формує вміÑÑ‚ Ñторінки у "page" Ñ– результат запиту у "rez".</li> <li> Ðа Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ„Ð¾Ñ€Ð¼ÑƒÑ”Ñ‚ÑŒÑÑ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´ÑŒ з кодом Ð¿Ð¾Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ HTTP із "rez" Ñ– вміÑтом із "page", а також зміненими та доповненими змінними протоколу HTTP із "HTTPvars". Ð”Ð»Ñ Ð¿Ð¾Ñ€Ð¾Ð¶Ð½ÑŒÐ¾Ð³Ð¾ "rez" відповідь не формуєтьÑÑ!</li></ul> </div><table style="border-top: dotted 2px #999999; margin-top: 20pt; color: gray;" width="100%"><tr><td style="text-align: left;" width="40%"><a href="http://oscada.org/wiki/Modules/WebUser/uk">Modules/WebUser/uk</a> - <a href="http://oscada.org/en/main/about-the-project/licenses/">GFDL</a></td><td style="text-align: center;">April 2025</td><td style="text-align: right;" width="40%">OpenSCADA 1+r3018</td></tr></table></body> </html>