Це стара версія документу!
Логування подій керування (MWJ Audit Service)
Опис
Служба логування подій керування (вхід/вихід операторів, запис тегів) для проєкту UA_Energy_Demo_23_04.
Складається з двох частин:
- mwj_audit_service.py — Python-скрипт, сканує журнал подій AlarmServer і віддає їх у JSON на ``127.0.0.1:5005/events``. Запускається автоматично через Task Scheduler.
- mwj_events.aspx — сторінка на WebHMI-сервері, яка проксіює цей JSON у браузер клієнта.
1. Розміщення скрипта
Скопіювати ``mwj_audit_service.py`` у папку проєкту:
C:\ProgramData\Schneider Electric\Power Operation\v2024\User\UA_Energy_Demo_23_04\mwj_audit_service.py
Перед запуском замінити в коді шлях до журналу під конкретний проєкт (та за потреби порт):
JOURNAL_DIR = r"C:\ProgramData\Schneider Electric\Power Operation\v2024\Data\UA_Energy_Demo_23_04\c1.AlarmServer1\Database\Journal\JnI00000" PORT = 5005 DAYS_BACK = 7 POLL_SEC = 1
- ``UA_Energy_Demo_23_04`` в ``JOURNAL_DIR`` — замінити на назву поточного проєкту (частина шляху до Journal).
- ``PORT`` — залишити 5005, якщо порт не зайнятий іншим сервісом.
2. Реєстрація завдання в Task Scheduler
Створити нове завдання (Create Task, не Basic Task) з іменем logging.
General
- Security options: Run whether user is logged on or not
- Увімкнути Run with highest privileges
- Configure for: відповідно до ОС сервера
Triggers
- New → Begin the task: At startup
- Status: Enabled
Actions
- New → Action: Start a program
- Program/script:
C:\python_portable\python.exe
- Add arguments:
mwj_audit_service.py
- Start in (обов'язково!):
C:\ProgramData\Schneider Electric\Power Operation\v2024\User\UA_Energy_Demo_23_04
(поле “Start in” вказує на папку, куди поклали скрипт у п.1 — без цього скрипт може не знайти сам себе при запуску не з тієї директорії)
Conditions
- Power: увімкнути Start the task only if the computer is on AC power та Stop if the computer switches to battery power
- Idle: не використовувати
- Network: не обмежувати
Зберегти завдання (OK), при потребі ввести пароль облікового запису Administrator.
Перевірка: запустити завдання вручну (Run), відкрити на сервері ``http://127.0.0.1:5005/health`` — має повернути ``OK``, і ``http://127.0.0.1:5005/events`` — має повернути масив JSON.
3. ASPX-міст
Файл ``mwj_events.aspx`` вставити за шляхом:
C:\Program Files (x86)\Schneider Electric\Power Operation\v2024\Applications\Web\WebHmi
Код без змін (порт 5005 має співпадати з портом у Python-скрипті):
<%@ Page Language="C#" AutoEventWireup="true" %>
<%@ Import Namespace="System.Net" %>
<%@ Import Namespace="System.IO" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
Response.Clear();
Response.ContentType = "application/json; charset=utf-8";
Response.AppendHeader("Access-Control-Allow-Origin", "*");
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://127.0.0.1:5005/events");
request.Method = "GET";
request.Timeout = 4000;
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
string json = reader.ReadToEnd();
Response.Write(json);
}
}
}
catch (Exception ex)
{
Response.StatusCode = 500;
Response.Write("{\"error\": \"" + ex.Message.Replace("\"", "\\\"") + "\"}");
}
Response.End();
}
</script>
Перевірка: ``https://<адреса_webhmi>/mwj_events.aspx`` має віддавати той самий JSON, що й ``http://127.0.0.1:5005/events`` на сервері.