Wiki source code of 3. Metering Channels

Last modified by Iaroslav Platonov on 2026/06/08 09:57

Show last authors
1 {{html clean="false"}}
2 <style>
3 /* ── Disable XWiki automatic heading counters inside our content ── */
4 .doc-content h1::before,.doc-content h2::before,
5 .doc-content h3::before,.doc-content h4::before,
6 .doc-content h5::before,.doc-content h6::before {
7 content:none !important; display:none !important;
8 }
9 .doc-content { counter-reset:none !important; }
10
11 /* ── Reading progress bar ── */
12 #rn-prog { position:fixed;top:0;left:0;height:3px;width:0;background:#005AB4;z-index:9999;pointer-events:none; }
13
14 /* ── Page content wrapper ── */
15 .doc-wrap { position:relative; }
16 .doc-content {
17 margin-right:224px;
18 border-left:1px solid #E8E8E8;
19 border-right:1px solid #E8E8E8;
20 padding:0 32px;
21 }
22
23 /* ── Right "On This Page" TOC ── */
24 .doc-toc {
25 position:absolute;top:0;right:0;width:200px;
26 font-size:12.5px;line-height:1.55;
27 padding:20px 0 20px 16px;
28 }
29 .doc-toc.is-fixed { position:fixed;width:200px;overflow-y:auto;z-index:10; }
30 .toc-header { display:flex;justify-content:space-between;align-items:center;margin-bottom:10px; }
31 .toc-header strong { font-size:13px;font-weight:700;color:#222; }
32 .toc-toggle { background:none;border:none;cursor:pointer;color:#555;font-size:14px;padding:0 2px;line-height:1; }
33 .toc-toggle:hover { color:#222; }
34 .doc-toc ul { list-style:none;margin:0;padding:0; }
35 .doc-toc li { margin:0; }
36 .doc-toc a { display:block;padding:3px 0;color:#555;text-decoration:none;border-left:2px solid transparent;transition:color .12s; }
37 .doc-toc a:hover { color:#222;text-decoration:underline; }
38 .doc-toc a.toc-on { color:#222;font-weight:700;border-left:2px solid #005AB4;padding-left:5px; }
39 .tl1 > a { font-weight:600;color:#222; }
40 .tl2 > a { padding-left:14px; }
41 .tl3 > a { padding-left:26px;font-size:12px; }
42
43 /* ── Typography ── */
44 .doc-content h1 { font-size:1.6em;font-weight:700;color:#222;margin:0 0 6px 0;border:none; }
45 .rn-meta { font-size:.8em;color:#555;margin:0 0 28px 0; }
46 .doc-content h2 { font-size:1.15em;font-weight:700;color:#222;margin:36px 0 10px 0;display:flex;align-items:baseline;gap:7px;scroll-margin-top:16px; }
47 .doc-content h3 { font-size:1em;font-weight:700;color:#222;margin:22px 0 8px 0;display:flex;align-items:baseline;gap:6px;scroll-margin-top:16px; }
48 .doc-content h4 { font-size:.93em;font-weight:700;color:#222;margin:14px 0 6px 0;display:flex;align-items:baseline;gap:5px;scroll-margin-top:16px; }
49 .doc-content p { font-size:.93em;color:#333;line-height:1.75;margin:0 0 12px 0; }
50 .doc-content strong { color:#222; }
51 .doc-content code { background:#f5f5f5;border:1px solid #E8E8E8;border-radius:3px;padding:1px 5px;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:.82em;color:#222;line-height:1; }
52
53 /* ── Anchor icon ── */
54 .anchor-icon { color:#E8E8E8;text-decoration:none;opacity:0;transition:opacity .15s;vertical-align:middle;margin-left:4px;display:inline-flex;align-items:center; }
55 h2:hover .anchor-icon,h3:hover .anchor-icon,h4:hover .anchor-icon { opacity:1; }
56 .anchor-icon:hover { color:#005AB4; }
57
58 /* ── Callout notes ── */
59 .note { border-radius:6px;padding:12px 16px;margin:14px 0;border:1px solid transparent; }
60 .note-info { background:#e1f1f9 !important;border-color:#b3d4ee !important;border-left:4px solid #005AB4 !important; }
61 .note-warning { background:#fff4ec !important;border-color:#f5cba7 !important;border-left:4px solid #DD5600 !important; }
62 .note-tip { background:#e5f3df !important;border-color:#b7dba5 !important;border-left:4px solid #73A839 !important; }
63 .note-hd { font-weight:700;font-size:.85em;display:flex;align-items:center;gap:5px;margin-bottom:5px; }
64 .note-info .note-hd { color:#003d80 !important; }
65 .note-warning .note-hd { color:#a03d00 !important; }
66 .note-tip .note-hd { color:#3d6b1a !important; }
67 .note-body { font-size:.875em;color:#222 !important;line-height:1.65; }
68
69 /* ── Section index list ── */
70 .section-index { list-style:disc;padding-left:20px;margin:0 0 20px 0; }
71 .section-index li { margin-bottom:12px; }
72 .section-index li a { color:#005AB4;font-weight:600;font-size:.93em;text-decoration:underline; }
73 .section-index li p { margin:3px 0 0 0;font-size:.875em;color:#333;line-height:1.6; }
74
75 /* ── Parent topic ── */
76 .parent-topic { font-size:.82em;color:#555;margin:18px 0 24px 0;border-top:1px solid #E8E8E8;padding-top:10px; }
77 .parent-topic a { color:#005AB4; }
78
79 /* ── Accordion ── */
80 details.acc { border:1px solid #E8E8E8;border-radius:4px;margin-bottom:5px; }
81 details.acc summary { display:flex;align-items:center;gap:8px;padding:9px 12px;cursor:pointer;list-style:none;background:none;user-select:none; }
82 details.acc summary::-webkit-details-marker { display:none; }
83 details.acc summary::before { content:'▶';font-size:.58em;color:#555;transition:transform .18s;flex-shrink:0; }
84 details.acc[open] summary::before { transform:rotate(90deg); }
85 details.acc summary:hover { background:#f5f5f5; }
86 .acc-num { font-size:.8em;color:#555;min-width:28px;font-weight:600; }
87 .acc-title { font-size:.9em;font-weight:700;color:#222;flex:1; }
88 .acc-body { padding:10px 14px 12px 14px;font-size:.88em;color:#333;line-height:1.7; }
89
90 /* ── Images ── */
91 .fig { margin:12px auto 24px auto;width:fit-content;max-width:100%; }
92 .fig img { border-radius:4px 4px 0 0;border:1px solid #E8E8E8;display:block;cursor:zoom-in;max-width:100%;box-shadow:0 1px 4px rgba(0,0,0,.10);transition:box-shadow .15s; }
93 .fig img:hover { box-shadow:0 3px 12px rgba(0,90,180,.18); }
94 .fig-cap { font-size:.78em;color:#555;margin:0;padding:5px 8px;background:#f5f5f5;border:1px solid #E8E8E8;border-top:none;border-radius:0 0 4px 4px;display:block;width:100%;box-sizing:border-box; }
95
96 /* ── Lightbox ── */
97 #rn-lb { display:none;position:fixed;inset:0;z-index:9998;background:rgba(0,0,0,.8);cursor:zoom-out;align-items:center;justify-content:center; }
98 #rn-lb.open { display:flex; }
99 #rn-lb-wrap { position:relative;cursor:default;max-width:92vw;max-height:90vh; }
100 #rn-lb-wrap img { max-width:100%;max-height:90vh;border-radius:5px;display:block; }
101 #rn-lb-x { position:absolute;top:-13px;right:-13px;background:#005AB4;color:#fff;width:26px;height:26px;border-radius:50%;border:none;cursor:pointer;font-size:15px;display:flex;align-items:center;justify-content:center; }
102 #rn-lb-cap { position:fixed;bottom:18px;left:50%;transform:translateX(-50%);color:#ddd;font-size:.78em;background:rgba(0,0,0,.55);padding:3px 12px;border-radius:14px;pointer-events:none; }
103
104 /* ── Back to top ── */
105 #rn-top { position:fixed;bottom:60px;right:60px;z-index:9997;width:36px;height:36px;border-radius:50%;background:#005AB4;color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transform:translateY(8px);transition:opacity .22s,transform .22s;pointer-events:none;box-shadow:0 2px 8px rgba(0,90,180,.3); }
106 #rn-top.on { opacity:1;transform:translateY(0);pointer-events:auto; }
107 #rn-top:hover { background:#0066cc; }
108
109 /* ── Toast ── */
110 .rn-toast { position:fixed;bottom:66px;right:24px;z-index:9999;background:#222;color:#fff;font-size:.74em;padding:4px 11px;border-radius:4px;pointer-events:none;opacity:0;transition:opacity .18s; }
111 .rn-toast.on { opacity:1; }
112
113 /* ── Tables ── */
114 .rn-table { width:100%;border-collapse:collapse;margin:8px 0 18px 0;font-size:.875em; }
115 .rn-table th { background:#f5f5f5;text-align:left;padding:7px 12px;font-size:.78em;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#555;border-bottom:2px solid #E8E8E8; }
116 .rn-table td { padding:7px 12px;border-bottom:1px solid #E8E8E8;color:#333;vertical-align:top; }
117 .rn-table tr:last-child td { border-bottom:none; }
118 .rn-table tr:hover td { background:#f5f5f5; }
119 .sc { display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;background:#deeaf7;color:#005AB4;border-radius:3px;font-size:.8em;font-weight:700; }
120 </style>
121
122 <div id="rn-prog"></div>
123 <div id="rn-lb">
124 <div id="rn-lb-wrap">
125 <button id="rn-lb-x" onclick="closeLightbox()">✕</button>
126 <img id="rn-lb-img" src="" alt=""/>
127 </div>
128 <div id="rn-lb-cap"></div>
129 </div>
130 <button id="rn-top" onclick="window.scrollTo({top:0,behavior:'smooth'})" title="Back to top">
131 <svg width="14" height="14" viewBox="0 0 16 16" fill="currentColor"><path d="M8 4l5 5H3z"/></svg>
132 </button>
133 <div class="rn-toast" id="rn-toast">Link copied ✓</div>
134
135 <div class="doc-wrap">
136 <div class="doc-content">
137
138 <ul class="section-index">
139 <li><a href="#s-intro">1. Introduction</a>
140 <p>Overview of the Metering Channels guide and its scope.</p></li>
141 <li><a href="#s-electricity">2. Electricity Metering</a>
142 <p>Device setup for electricity meters (SATEC, Modbus TCP) and metering channel configuration.</p></li>
143 <li><a href="#s-energy">3. Energy Metering</a>
144 <p>Energy resource metering setup — coming soon.</p></li>
145 <li><a href="#s-other">4. Other Types of Metering</a>
146 <p>Generating interval values from tags for devices without on-board storage.</p></li>
147 <li><a href="#s-calculated">5. Calculated Channels</a>
148 <p>Channel from tag, calculated channel, IM-based channels, Excel export/import.</p></li>
149 <li><a href="#s-receipt">6. Receipt of Accounting Data</a>
150 <p>Manual polling and recalculation of calculated channels.</p></li>
151 <li><a href="#s-analysis">7. Analysis of Metering Data</a>
152 <p>Viewing historical metering data and making manual data entries.</p></li>
153 </ul>
154
155 <!-- ═══ 1. INTRODUCTION ═══ -->
156 <h2 id="s-intro">1. Introduction <a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-intro')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h2>
157 <p>CENTO is a multifunctional software platform for data collection, processing, and display. This guide covers the setup of electricity metering, energy resource metering, and other types of metering.</p>
158 <p>It is assumed that the reader has already reviewed the <strong>User Manual</strong> and <strong>Setup Manual</strong> and is familiar with the main interface elements and CENTO configuration basics.</p>
159
160 <!-- ═══ 2. ELECTRICITY METERING ═══ -->
161 <h2 id="s-electricity">2. Electricity Metering <a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-electricity')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h2>
162
163 <h3 id="s-device-setup">2.1. Device Setup <a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-device-setup')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h3>
164 <p>CENTO can work with a variety of metering devices that measure and store power profiles. The metering function is enabled by adding the metering protocol on the <strong>Device editing</strong> page (<code>Settings → Devices, tags, channels → Devices</code>). Communication parameters (RTU address, TCP/UDP port, timeout, polling schedule) and the <strong>File#</strong> field (storing power and power profiles) are configured here.</p>
165 <p>The example below uses the <em>SATEC (Modbus TCP)</em> protocol.</p>
166 <div class="fig">
167 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-27%20at%2018.53.58.png" alt="Figure 2.1. Settings of the E/E metering protocol" style="max-width:100%;" onclick="openLightbox(this)"/>
168 <p class="fig-cap">Figure 2.1. Settings of the E/E metering protocol</p>
169 </div>
170 <div class="fig">
171 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-27%20at%2018.56.14.png" alt="Screenshot 2025-11-27 at 18.56.14.png" style="max-width:100%;" onclick="openLightbox(this)"/>
172 </div>
173 <div class="fig">
174 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-27%20at%2018.56.53.png" alt="Screenshot 2025-11-27 at 18.56.53.png" style="max-width:100%;" onclick="openLightbox(this)"/>
175 </div>
176 <div class="fig">
177 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-27%20at%2018.57.26.png" alt="Screenshot 2025-11-27 at 18.57.26.png" style="max-width:100%;" onclick="openLightbox(this)"/>
178 </div>
179 <div class="fig">
180 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-27%20at%2018.57.54.png" alt="Screenshot 2025-11-27 at 18.57.54.png" style="max-width:100%;" onclick="openLightbox(this)"/>
181 </div>
182 <div class="fig">
183 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-27%20at%2018.58.26.png" alt="Screenshot 2025-11-27 at 18.58.26.png" style="max-width:100%;" onclick="openLightbox(this)"/>
184 </div>
185 <div class="fig">
186 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-27%20at%2018.58.55.png" alt="Screenshot 2025-11-27 at 18.58.55.png" style="max-width:100%;" onclick="openLightbox(this)"/>
187 </div>
188 <div class="fig">
189 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-27%20at%2018.59.34.png" alt="Screenshot 2025-11-27 at 18.59.34.png" style="max-width:100%;" onclick="openLightbox(this)"/>
190 </div>
191 <div class="fig">
192 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-27%20at%2019.00.09.png" alt="Screenshot 2025-11-27 at 19.00.09.png" style="max-width:100%;" onclick="openLightbox(this)"/>
193 </div>
194 <div class="fig">
195 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-27%20at%2019.00.46.png" alt="Screenshot 2025-11-27 at 19.00.46.png" style="max-width:100%;" onclick="openLightbox(this)"/>
196 </div>
197 <div class="fig">
198 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-27%20at%2019.01.19.png" alt="Enabling/disabling time synchronisation on the CENTO side" style="max-width:100%;" onclick="openLightbox(this)"/>
199 <p class="fig-cap">Enabling/disabling time synchronisation on the CENTO side</p>
200 </div>
201 <div class="fig">
202 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-27%20at%2019.01.49.png" alt="Screenshot 2025-11-27 at 19.01.49.png" style="max-width:100%;" onclick="openLightbox(this)"/>
203 </div>
204 <div class="fig">
205 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-27%20at%2019.02.20.png" alt="Screenshot 2025-11-27 at 19.02.20.png" style="max-width:100%;" onclick="openLightbox(this)"/>
206 </div>
207 <div class="fig">
208 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-27%20at%2019.02.51.png" alt="Screenshot 2025-11-27 at 19.02.51.png" style="max-width:100%;" onclick="openLightbox(this)"/>
209 </div>
210 <div class="fig">
211 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-27%20at%2019.03.24.png" alt="Screenshot 2025-11-27 at 19.03.24.png" style="max-width:100%;" onclick="openLightbox(this)"/>
212 </div>
213 <div class="fig">
214 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-27%20at%2019.03.56.png" alt="Screenshot 2025-11-27 at 19.03.56.png" style="max-width:100%;" onclick="openLightbox(this)"/>
215 </div>
216
217 <h3 id="s-metering-channels">2.2. Setting Up Metering Channels <a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-metering-channels')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h3>
218 <p>Electricity meters often do not require manually adding channels to the tag list — all settings are in the metering protocol. The used accounting channels from the protocol automatically appear on the <strong>Tags, channels</strong> tab, but without a configured metering point they will not be included in the reports.</p>
219 <div class="fig">
220 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-27%20at%2019.06.17.png" alt="Figure 2.2. Display of metering channels" style="max-width:100%;" onclick="openLightbox(this)"/>
221 <p class="fig-cap">Figure 2.2. Display of metering channels</p>
222 </div>
223
224 <!-- ═══ 3. ENERGY METERING ═══ -->
225 <h2 id="s-energy">3. Energy Metering (Coming) <a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-energy')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h2>
226 <div class="note note-info">
227 <div class="note-hd"><span>ℹ</span> Note</div>
228 <div class="note-body">Energy metering setup is currently under development and will be documented in a future release.</div>
229 </div>
230
231 <h3 id="s-energy-device">3.1. Device Setup (Coming) <a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-energy-device')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h3>
232 <p>Configuration steps for energy resource metering devices will be published here when available.</p>
233
234 <!-- ═══ 4. OTHER TYPES ═══ -->
235 <h2 id="s-other">4. Other Types of Metering <a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-other')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h2>
236 <p>If a device does not have on-board storage for interval values of electricity/power or other metering types, CENTO can generate interval values from real-time tags. This is done by creating <strong>channel from tag</strong> entries — see Section 5.1.</p>
237
238 <!-- ═══ 5. CALCULATED CHANNELS ═══ -->
239 <h2 id="s-calculated">5. Calculated Channels <a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-calculated')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h2>
240 <div class="fig">
241 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-30%20at%2016.26.53.png" alt="Figure 5.1. List of calculated channels" style="max-width:100%;" onclick="openLightbox(this)"/>
242 <p class="fig-cap">Figure 5.1. List of calculated channels</p>
243 </div>
244
245 <h3 id="s-channel-from-tag">5.1. Channel from Tag <a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-channel-from-tag')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h3>
246 <p>To create a new metering channel from real-time data (tags), click the <strong>Add channel from tag</strong> button on the metering channels list page.</p>
247 <div class="fig">
248 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-30%20at%2016.29.45.png" alt="Figure 5.2. Channel from tag: editing" style="max-width:100%;" onclick="openLightbox(this)"/>
249 <p class="fig-cap">Figure 5.2. Channel from tag: editing</p>
250 </div>
251 <div class="fig">
252 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-30%20at%2016.28.39.png" alt="Screenshot 2025-11-30 at 16.28.39.png" style="max-width:100%;" onclick="openLightbox(this)"/>
253 </div>
254 <div class="fig">
255 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-30%20at%2016.30.29.png" alt="Screenshot 2025-11-30 at 16.30.29.png" style="max-width:100%;" onclick="openLightbox(this)"/>
256 </div>
257 <div class="fig">
258 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-30%20at%2016.30.53.png" alt="Screenshot 2025-11-30 at 16.30.53.png" style="max-width:100%;" onclick="openLightbox(this)"/>
259 </div>
260 <div class="fig">
261 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-30%20at%2016.31.25.png" alt="Screenshot 2025-11-30 at 16.31.25.png" style="max-width:100%;" onclick="openLightbox(this)"/>
262 </div>
263 <div class="fig">
264 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-30%20at%2016.31.55.png" alt="Screenshot 2025-11-30 at 16.31.55.png" style="max-width:100%;" onclick="openLightbox(this)"/>
265 </div>
266 <div class="fig">
267 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-30%20at%2016.32.28.png" alt="Screenshot 2025-11-30 at 16.32.28.png" style="max-width:100%;" onclick="openLightbox(this)"/>
268 </div>
269
270 <h3 id="s-calc-channel">5.2. Calculated Channel <a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-calc-channel')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h3>
271 <p>To create a channel that processes the values of several connections or interval values — for example, summing electricity consumption across a group of consumers — click the <strong>Add calculated channel</strong> button.</p>
272 <div class="fig">
273 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-30%20at%2016.33.58.png" alt="Settlement channel: editing page" style="max-width:100%;" onclick="openLightbox(this)"/>
274 <p class="fig-cap">Settlement channel: editing page</p>
275 </div>
276 <div class="fig">
277 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-30%20at%2016.34.28.png" alt="Figure 5.3. Metering channel: editing page" style="max-width:100%;" onclick="openLightbox(this)"/>
278 <p class="fig-cap">Figure 5.3. Metering channel: editing page</p>
279 </div>
280 <div class="fig">
281 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-30%20at%2016.35.23.png" alt="Screenshot 2025-11-30 at 16.35.23.png" style="max-width:100%;" onclick="openLightbox(this)"/>
282 </div>
283
284 <h3 id="s-calc-via-im">5.3. Calculated Channels via Information Model <a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-calc-via-im')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h3>
285 <p>For calculation channels of the same type, custom formulas can be defined that operate based on Information Model objects and their attributes. In addition to tags and channels, the IM can supply supplementary data (e.g. transformer ratios).</p>
286 <div class="fig">
287 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-30%20at%2016.36.34.png" alt="Custom formula templates for same-type channels" style="max-width:100%;" onclick="openLightbox(this)"/>
288 <p class="fig-cap">Custom formula templates for same-type channels</p>
289 </div>
290 <div class="fig">
291 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-30%20at%2016.37.01.png" alt="Fig. 5.4 – Creating a Formula Template" style="max-width:100%;" onclick="openLightbox(this)"/>
292 <p class="fig-cap">Fig. 5.4 – Creating a Formula Template</p>
293 </div>
294 <div class="fig">
295 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-30%20at%2016.37.47.png" alt="Figure 5.5. Creating custom formula" style="max-width:100%;" onclick="openLightbox(this)"/>
296 <p class="fig-cap">Figure 5.5. Creating custom formula</p>
297 </div>
298 <div class="fig">
299 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-30%20at%2016.38.43.png" alt="Figure 5.6. Calculation formula" style="max-width:100%;" onclick="openLightbox(this)"/>
300 <p class="fig-cap">Figure 5.6. Calculation formula</p>
301 </div>
302 <div class="fig">
303 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-30%20at%2016.39.09.png" alt="Figure 5.7. Using calculation formula" style="max-width:100%;" onclick="openLightbox(this)"/>
304 <p class="fig-cap">Figure 5.7. Using calculation formula</p>
305 </div>
306
307 <h3 id="s-excel-channels">5.4. Downloading / Uploading Calculated Channels <a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-excel-channels')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h3>
308 <p>The <strong>Configuration files</strong> page (<code>Settings → Configuration files</code>) provides import and export of calculation metering channels via Excel files.</p>
309 <div class="fig">
310 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-30%20at%2016.40.46.png" alt="Figure 5.8. Excel file for channel import/export" style="max-width:100%;" onclick="openLightbox(this)"/>
311 <p class="fig-cap">Figure 5.8. Excel file for channel import/export</p>
312 </div>
313 <div class="note note-warning">
314 <div class="note-hd"><span>⚠</span> Warning</div>
315 <div class="note-body">Always validate the Excel template version before importing. Mismatched column headers may cause import errors.</div>
316 </div>
317
318 <!-- ═══ 6. RECEIPT OF ACCOUNTING DATA ═══ -->
319 <h2 id="s-receipt">6. Receipt of Accounting Data <a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-receipt')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h2>
320 <p>The <strong>Analysis of the receipt of data</strong> page is shared across all metering types and is described in detail in the User Manual.</p>
321 <div class="fig">
322 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-30%20at%2016.44.01.png" alt="Figure 6.1. Analysis of the receipt of data" style="max-width:100%;" onclick="openLightbox(this)"/>
323 <p class="fig-cap">Figure 6.1. Analysis of the receipt of data</p>
324 </div>
325
326 <h3 id="s-manual-poll">6.1. Manual Polling <a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-manual-poll')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h3>
327 <p>To re-acquire data from metering devices, navigate to <code>Analysis → Receipt of metering data</code>. In the device tree, select the required metering point, find the missing data profiles, and initiate polling.</p>
328 <div class="fig">
329 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-30%20at%2016.45.10.png" alt="Selecting a metering point for manual poll" style="max-width:100%;" onclick="openLightbox(this)"/>
330 <p class="fig-cap">Selecting a metering point for manual poll</p>
331 </div>
332 <div class="fig">
333 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-30%20at%2016.46.01.png" alt="Figure 6.2. Message when number of devices or polling depth is exceeded" style="max-width:100%;" onclick="openLightbox(this)"/>
334 <p class="fig-cap">Figure 6.2. Message when number of devices or polling depth is exceeded</p>
335 </div>
336 <div class="fig">
337 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-30%20at%2016.46.40.png" alt="Figure 6.3. Confirmation of the start of the survey" style="max-width:100%;" onclick="openLightbox(this)"/>
338 <p class="fig-cap">Figure 6.3. Confirmation of the start of the survey</p>
339 </div>
340 <div class="fig">
341 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-30%20at%2016.47.46.png" alt="Screenshot 2025-11-30 at 16.47.46.png" style="max-width:100%;" onclick="openLightbox(this)"/>
342 </div>
343
344 <h3 id="s-recalculation">6.2. Recalculation of Calculated Channels <a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-recalculation')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h3>
345 <p>When data used in calculation channels or calculation formulas change, the channel values must be recalculated. Go to <code>Analysis → Receipt of metering data</code> and use the recalculation function.</p>
346 <div class="fig">
347 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-30%20at%2016.48.31.png" alt="Figure 6.4. Recalculation of channels" style="max-width:100%;" onclick="openLightbox(this)"/>
348 <p class="fig-cap">Figure 6.4. Recalculation of channels</p>
349 </div>
350
351 <!-- ═══ 7. ANALYSIS ═══ -->
352 <h2 id="s-analysis">7. Analysis of Metering Data <a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-analysis')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h2>
353
354 <h3 id="s-view-data">7.1. Viewing Metering Data <a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-view-data')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h3>
355 <p>To view historical electricity and energy metering data, select <strong>Metering data</strong> from the <code>Analysis</code> menu. The metering data analysis page opens with charts for the selected channel and time period.</p>
356 <div class="fig">
357 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-30%20at%2016.50.11.png" alt="Figure 7.1. Charts for electricity channels" style="max-width:100%;" onclick="openLightbox(this)"/>
358 <p class="fig-cap">Figure 7.1. Charts for electricity channels</p>
359 </div>
360 <div class="fig">
361 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-30%20at%2016.50.35.png" alt="Figure 7.2. Charts for energy resources channels" style="max-width:100%;" onclick="openLightbox(this)"/>
362 <p class="fig-cap">Figure 7.2. Charts for energy resources channels</p>
363 </div>
364 <div class="fig">
365 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-30%20at%2016.51.39.png" alt="Screenshot 2025-11-30 at 16.51.39.png" style="max-width:100%;" onclick="openLightbox(this)"/>
366 </div>
367 <div class="fig">
368 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-30%20at%2016.52.15.png" alt="Download button — exports selected metering channels to file" style="max-width:100%;" onclick="openLightbox(this)"/>
369 <p class="fig-cap">Download button — exports selected metering channels to file</p>
370 </div>
371
372 <h3 id="s-manual-entry">7.2. Metering Data Manual Entry <a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-manual-entry')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h3>
373 <p>With appropriate access rights, a user can make manual data entries. Hover over the target cell in the table, left-click, enter the new value, and click the save icon.</p>
374 <div class="fig">
375 <img src="/xwiki/bin/download/CENTO%20Manuals/5.%20Metering%20Channels/WebHome/Screenshot%202025-11-30%20at%2016.52.51.png" alt="Figure 7.3. Uploading file" style="max-width:100%;" onclick="openLightbox(this)"/>
376 <p class="fig-cap">Figure 7.3. Uploading file</p>
377 </div>
378 <div class="note note-info">
379 <div class="note-hd"><span>ℹ</span> Note</div>
380 <div class="note-body">Manual entries are logged with the user ID and timestamp and can be reviewed in the Event Logs.</div>
381 </div>
382
383 <div class="parent-topic">Parent topic: <a href="[[CENTO Manuals>>doc:CENTO Manuals.WebHome]]">CENTO Manuals</a></div>
384
385 </div><!-- /doc-content -->
386
387 <!-- ── RIGHT TOC ── -->
388 <nav class="doc-toc">
389 <div class="toc-header">
390 <strong>On This Page</strong>
391 <button class="toc-toggle" id="toc-tog" title="Collapse">«</button>
392 </div>
393 <ul id="toc-list">
394 <li class="tl1"><a href="#s-intro" data-toc>1. Introduction</a></li>
395 <li class="tl1"><a href="#s-electricity" data-toc>2. Electricity Metering</a></li>
396 <li class="tl2"><a href="#s-device-setup" data-toc>2.1 Device Setup</a></li>
397 <li class="tl2"><a href="#s-metering-channels" data-toc>2.2 Metering Channels</a></li>
398 <li class="tl1"><a href="#s-energy" data-toc>3. Energy Metering</a></li>
399 <li class="tl1"><a href="#s-other" data-toc>4. Other Types of Metering</a></li>
400 <li class="tl1"><a href="#s-calculated" data-toc>5. Calculated Channels</a></li>
401 <li class="tl2"><a href="#s-channel-from-tag" data-toc>5.1 Channel from Tag</a></li>
402 <li class="tl2"><a href="#s-calc-channel" data-toc>5.2 Calculated Channel</a></li>
403 <li class="tl2"><a href="#s-calc-via-im" data-toc>5.3 Via Information Model</a></li>
404 <li class="tl2"><a href="#s-excel-channels" data-toc>5.4 Download / Upload</a></li>
405 <li class="tl1"><a href="#s-receipt" data-toc>6. Receipt of Data</a></li>
406 <li class="tl2"><a href="#s-manual-poll" data-toc>6.1 Manual Polling</a></li>
407 <li class="tl2"><a href="#s-recalculation" data-toc>6.2 Recalculation</a></li>
408 <li class="tl1"><a href="#s-analysis" data-toc>7. Analysis</a></li>
409 <li class="tl2"><a href="#s-view-data" data-toc>7.1 Viewing Data</a></li>
410 <li class="tl2"><a href="#s-manual-entry" data-toc>7.2 Manual Entry</a></li>
411 </ul>
412 </nav>
413
414 </div><!-- /doc-wrap -->
415 <script>
416
417 (function(){
418 var bar = document.getElementById('rn-prog');
419 var top = document.getElementById('rn-top');
420 window.addEventListener('scroll', function(){
421 var d = document.documentElement;
422 var pct = d.scrollTop / (d.scrollHeight - d.clientHeight);
423 bar.style.width = (pct*100)+'%';
424 d.scrollTop > 280 ? top.classList.add('on') : top.classList.remove('on');
425 }, {passive:true});
426
427 /* TOC active via IntersectionObserver */
428 var links = Array.from(document.querySelectorAll('[data-toc]'));
429 var secs = links.map(function(a){
430 return {el: document.getElementById(a.getAttribute('href').slice(1)), a:a};
431 }).filter(function(s){return s.el;});
432
433 var busy = false;
434 var obs = new IntersectionObserver(function(entries){
435 if (busy) return;
436 entries.forEach(function(e){
437 if (!e.isIntersecting) return;
438 var i = secs.findIndex(function(s){return s.el===e.target;});
439 if (i<0) return;
440 secs.forEach(function(s){s.a.classList.remove('toc-on');});
441 secs[i].a.classList.add('toc-on');
442 var toc = document.querySelector('.doc-toc');
443 var link = secs[i].a;
444 toc.scrollTop = link.offsetTop - toc.offsetTop - toc.clientHeight/2 + link.clientHeight/2;
445 });
446 }, {rootMargin:'-8% 0px -60% 0px', threshold:0});
447 secs.forEach(function(s){obs.observe(s.el);});
448
449 links.forEach(function(a){
450 a.addEventListener('click', function(e){
451 var id = a.getAttribute('href').slice(1);
452 var el = document.getElementById(id);
453 if (!el) return;
454 e.preventDefault();
455 busy = true;
456 secs.forEach(function(s){s.a.classList.remove('toc-on');});
457 a.classList.add('toc-on');
458 el.scrollIntoView({behavior:'smooth',block:'start'});
459 setTimeout(function(){busy=false;}, 900);
460 });
461 });
462
463 /* TOC collapse */
464 var tocList = document.getElementById('toc-list');
465 var togBtn = document.getElementById('toc-tog');
466 var collapsed = false;
467 togBtn && togBtn.addEventListener('click', function(){
468 collapsed = !collapsed;
469 tocList.style.display = collapsed ? 'none' : '';
470 togBtn.textContent = collapsed ? '»' : '«';
471 });
472
473 /* Lightbox */
474 var lb = document.getElementById('rn-lb');
475 var lbI = document.getElementById('rn-lb-img');
476 var lbC = document.getElementById('rn-lb-cap');
477 window.openLightbox = function(img){
478 lbI.src = img.src; lbI.alt = img.alt; lbC.textContent = img.alt;
479 lb.classList.add('open'); document.body.style.overflow='hidden';
480 };
481 window.closeLightbox = function(){
482 lb.classList.remove('open'); document.body.style.overflow='';
483 };
484 lb.addEventListener('click', function(e){if(e.target===lb)closeLightbox();});
485 document.addEventListener('keydown', function(e){if(e.key==='Escape')closeLightbox();});
486
487 /* Copy anchor */
488 var toast = document.getElementById('rn-toast');
489 var t;
490 window.copyAnchor = function(id){
491 var url = location.href.split('#')[0]+'#'+id;
492 if(navigator.clipboard) navigator.clipboard.writeText(url).catch(function(){});
493 else { var x=document.createElement('textarea');x.value=url;document.body.appendChild(x);x.select();document.execCommand('copy');document.body.removeChild(x); }
494 toast.classList.add('on');
495 clearTimeout(t);
496 t = setTimeout(function(){toast.classList.remove('on');}, 1600);
497 };
498
499 /* ── Sticky TOC via JS ──
500 Uses position:absolute→fixed switch. No placeholder needed because
501 .doc-content has a fixed margin-right — content width never changes. */
502 (function(){
503 var toc = document.querySelector('.doc-toc');
504 var wrap = document.querySelector('.doc-wrap');
505 if (!toc || !wrap) return;
506
507 var navbar = document.querySelector('.navbar, nav.navbar, #topBar, header');
508 var navH = navbar ? navbar.offsetHeight : 0;
509 var footer = document.querySelector('footer, .xwikifooter, #xwikifooter, .bottombar, .sticky-container');
510
511 function update() {
512 var wr = wrap.getBoundingClientRect();
513
514 if (wr.top <= navH) {
515 /* Doc-wrap has scrolled above navbar — fix the TOC */
516 var footerTop = footer ? footer.getBoundingClientRect().top : window.innerHeight;
517 var h = Math.max(0, Math.min(window.innerHeight, footerTop) - navH);
518
519 toc.classList.add('is-fixed');
520 toc.style.top = navH + 'px';
521 toc.style.left = (wr.right - 200) + 'px'; /* right edge of wrap minus TOC width */
522 toc.style.height = h + 'px';
523 } else {
524 /* Still in natural position */
525 toc.classList.remove('is-fixed');
526 toc.style.top = toc.style.left = toc.style.height = '';
527 }
528 }
529
530 requestAnimationFrame(function(){ requestAnimationFrame(function(){
531 update();
532 window.addEventListener('scroll', update, {passive:true});
533 window.addEventListener('resize', update, {passive:true});
534 }); });
535 })();
536
537 /* ── Left panel navigation hints ── */
538 (function(){
539 var hints = {
540 'Preface': 'Introduction to CENTO Software documentation',
541 '1. User Manual': 'Web interface guide — login, diagrams, analysis, logs, reports',
542 '2. Setup Manual': 'System configuration and setup for administrators',
543 '3. Metering Channels': 'Metering channel configuration and data collection setup',
544 '4. Structure and Modules Description': 'CENTO system architecture and module overview',
545 '5. Diagrams Development Manual': 'Creating and configuring SCADA mimic diagrams',
546 '6. Flexible Reports Guide': 'Building configurable tabular reports from metering data',
547 '7. Events Setup': 'Configuring event rules, thresholds, and notifications',
548 '8. Control Setup Manual': 'Setting up remote control and switching operations',
549 'Network Diagram (CLOUD)': 'CENTO deployment topology for cloud installations',
550 'Network Diagram (On-Prem)': 'CENTO deployment topology for on-premises installations',
551 'Server Configuration Example': 'Reference server setup and configuration example',
552 'Technical Requirements': 'Hardware and software requirements for CENTO deployment',
553 'DEMO server': 'Access the live CENTO demo environment',
554 'Release Notes': 'Changelog and version history for the CENTO platform',
555 };
556 document.querySelectorAll('#leftPanels a').forEach(function(a){
557 var text = a.textContent.trim();
558 var hint = hints[text] || hints[text.replace(/^\d+\.\s*/, '')];
559 if (hint) a.setAttribute('data-hint', hint);
560 });
561 })();
562 })();
563
564 </script>
565 {{/html}}