<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://kb.unipi.technology/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>Unipi technology Knowledge Base cs:sw:01-mervis</title>
        <description></description>
        <link>https://kb.unipi.technology/</link>
        <lastBuildDate>Sun, 11 Oct 2026 13:22:14 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>https://kb.unipi.technology/lib/tpl/merviskb2/images/favicon.ico</url>
            <title>Unipi technology Knowledge Base</title>
            <link>https://kb.unipi.technology/</link>
        </image>
        <item>
            <title>Mervis IDE</title>
            <link>https://kb.unipi.technology/cs:sw:01-mervis:01-mervis-ide?rev=1628251417</link>
            <description>&lt;pre&gt;
@@ -3,22 +3,22 @@
  
-   * připojit se k PLC a to i vzdáleně skrze internetové spojení
-   * spravovat konfigurace kontrolérů včetně aktualizace běhového prostředí[[cs:sw:01-mervis:02-mervis-rt| Mervis RT]]
+   * připojit se k jednotkám a to i vzdáleně skrze internetové spojení
+   * spravovat konfigurace jednotek včetně aktualizace běhového prostředí[[cs:sw:01-mervis:02-mervis-rt| Mervis RT]]
    * vytvářet programy metodou [[cs:automation:02-glossary:iec61131-3-hidden#metoda_funkcnich_bloku_fbd|funkčních bloků (FBD)]] či [[cs:automation:02-glossary:iec61131-3-hidden#strukturovany_text_st|ve strukturovaném textu (ST)]] podle [[cs:automation:02-glossary:iec61131-3-hidden|IEC61131-3]]
    * vytvářet funkční knihovny a Modbusová zařízení pro jejich snadné pozdější využití v jiných projektech
    * vytvářet webová uživatelská rozhraní (HMI)
    * vytvářet projekty pro [[cs:sw:01-mervis:05-mervis-scada|Mervis SCADA]] - prostředí pro vzdálený management instalací
-   * propojovat kontroléry s [[cs:hw:05-sensors:1-wire|1-Wire]] senzory a [[cs:hw:04-extensions|rozšiřujícími moduly Unipi]]
+   * propojovat jednotky se [[cs:hw:05-sensors:1-wire|1-Wire]] senzory a [[cs:hw:04-extensions|rozšiřujícími moduly Unipi]]
    * nahrávat a ladit výsledná řešení skrze [[cs:sw:01-mervis:02-mervis-rt|Mervis RT]]
    * ... a mnoho dalšího
  
- Projekt v Mervis IDE se označuje jako **řešení**. Jedno **řešení** se pak skládá z parametrů připojení Vašeho kontroleru či kontrolérů, jejich konfigurace, programů, knihoven a rozhraní HMI. 
+ Projekt v Mervis IDE se označuje jako **řešení**. Jedno **řešení** se pak skládá z parametrů připojení Vaší jednotky či několika jednotek, jejich konfigurace, programů, knihoven, rozhraní HMI, atd... 
  
  Na následujícím snímku vidíme typické uživatelské rozhraní Mervis IDE
  
  {{ :en:sw:01-mervis:mervis-ide-introduction-01-workspace.png?direct |}}
  
- V **levém panelu** Sestava lze vidět rozbalený strom kontroléru, obsahující seznam nakonfigurovaných komunikačních kanálů (1-Wire, Modbus) a skrze ně připojených zařízení. V záložce **Spustitelné projekty** se nachází všechny Vaše programy a funkční knihovny. V záložce **HMI projekty** pak máte přístup ke všem Vašim HMI rozhraním.
+ V **levém panelu** Sestava lze vidět rozbalený strom jednotky (PLC), obsahující seznam nakonfigurovaných komunikačních kanálů (1-Wire, Modbus) a skrze ně připojených zařízení. V záložce **Spustitelné projekty** se nachází všechny Vaše programy a funkční knihovny. V záložce **HMI projekty** pak máte přístup ke všem Vašim HMI rozhraním.
  
  V **hlavním okně** můžete vidět [[cs:automation:02-glossary:iec61131-3-hidden#metoda_funkcnich_bloku_fbd|FBD]] program v módu ladění. Levý sloupec pracovního okna je určen pro **vstupy** programu. Pravý sloupec pracovního okna slouží pro umístění **výstupů** programu. Na plochu mezi nimi se pak umisťují funkční bloky (FB), kdy každý funkční blok představuje předem vytvořený kód plnící určitou funkci. Jak bylo řečeno výše, program je momentálně v módu ladění, ve kterém lze snadno sledovat hodnoty jednotlivých proměnných na vstupech a výstupech a případně je ručně přepisovat. Tyto hodnoty se zobrazují v malých šedých boxech vedle příslušného vstupu/výstupu. Mód ladění Vám také umožňuje zobrazit aktuální hodnoty formou grafu - viz sekce pod **hlavním oknem** na snímku. 
  
  Panel **Vlastnosti** na pravém okraji obrazovky představuje kompletní seznam všech vlastností a hodnot pro daný objekt. Na vzorovém snímku se zobrazují parametry pro vstup &amp;#039;&amp;#039;office_thermometer_temperature&amp;#039;&amp;#039;. /* FIXME vyměnit obrázek za CZ verzi a změnit název na: kancelar_teplomer_teplota */

&lt;/pre&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>cs:sw:01-mervis</category>
            <pubDate>Fri, 06 Aug 2021 12:03:37 +0000</pubDate>
        </item>
        <item>
            <title>Mervis RT</title>
            <link>https://kb.unipi.technology/cs:sw:01-mervis:02-mervis-rt?rev=1745850438</link>
            <description>&lt;pre&gt;
@@ -3,7 +3,13 @@
  
- &amp;lt;WRAP center round tip 60%&amp;gt;
+ &amp;lt;WRAP group center round box 95%&amp;gt;
+ {{ :files:img_warning-line_b.png?nolink |}}
+ &amp;lt;WRAP half column 13%&amp;gt;
+ {{ :en:hw:08_safety-instructions_pseudo-ISO-7010-info.png?nolink |(i)}}
+ &amp;lt;/WRAP&amp;gt;
+ &amp;lt;WRAP half column 83%&amp;gt;
+ **Poznámka:** \\
  Pro jednotky Unipi poskytujeme obrazy s operačním systémem GNU/Linux a předinstalovaným běhovým prostředím Mervis RT. Více informací naleznete v [[cs:sw:01-mervis:06-tutorials|tutoriálech]].
- 
+ &amp;lt;/WRAP&amp;gt;
  &amp;lt;/WRAP&amp;gt;
  
  

&lt;/pre&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>cs:sw:01-mervis</category>
            <pubDate>Mon, 28 Apr 2025 14:27:18 +0000</pubDate>
        </item>
        <item>
            <title>Mervis DB</title>
            <link>https://kb.unipi.technology/cs:sw:01-mervis:03-mervis-db?rev=1750157891</link>
            <description>&lt;pre&gt;
@@ -3,12 +3,12 @@
  
- Mervis DB je vysoce optimalizovaná databáze určená pro dlouhodobé ukládání dat z jednotek, aplikací a mnoha jiných zařízení, které využívají otevřeného API databáze. 
+ Mervis DB je vysoce optimalizovaná databáze určená pro dlouhodobé ukládání dat z jednotek, aplikací a mnoha jiných zařízení.
  
  Hlavní využití s jednotkami Unipi je ukládání historických dat a jejich analýza pomocí [[cs:sw:01-mervis:05-mervis-scada|Mervis SCADA]]. 
  
  Standardním způsobem použití Mervis DB je varianta cloudové služby. Přístupové údaje k Mervis DB jsou vygenerovány **společně s projektem Mervis SCADA** a jsou určeny pro všechny PLC, jenž jsou k tomuto SCADA projektu připojeny.
  
- Pro nasazení Mervis DB společně s Mervis SCADA pokračujte návodem [[cs:sw:01-mervis:mervis-scada-project-hidden|]].
+ Pro nasazení Mervis DB pokračujte návodem [[cs:sw:01-mervis:mervis-scada-project-hidden|]].
  
  &amp;lt;WRAP group center round box 95%&amp;gt;
  {{ :files:img_warning-line_b.png?nolink |}}
  &amp;lt;WRAP half column 13%&amp;gt;
@@ -19,9 +19,9 @@
  Při smazání projektu Mervis SCADA nebo při zablokování účtu je automaticky zastaveno i ukládání do Mervis DB.
  &amp;lt;/WRAP&amp;gt;
  &amp;lt;/WRAP&amp;gt;
  
- 
+ /*
  ===== Migrace a správa dat =====
  V rámci placené služby nabízíme také několik variant správy dat:
    * Přesun dat mezi účty Mervis DB, včetně možné úpravy časové značky
    * Import dat z Excelového, nebo CSV souboru
@@ -31,595 +31,5 @@
  V případě zájmu o některou z výše zmíněných služeb kontaktujte naše [[info@unipi.technology|obchodní oddělení]].
  
  \\
  {{cs:sw:01-mervis:migrace_mervis-db_cz.png?direct|}}
- 
- 
- ===== Mervis DB Viewer =====
- K prohlížení ukládaných dat z cloudové instance Mervis DB na serverech Unipi lze využít Mervis DB Viewer. Jedná se o on-line aplikaci, která se spojí s databází a zobrazí dle zadaných parametrů (např. časového rozmězí) data která obsahuje. 
- 
- URL adresa: [[https://db.unipi.technology/viewer]].
- 
- {{cs:sw:01-mervis:db-mervis-info-viewer.png?direct|}}
- 
- 
- ===== API =====
- Mervis DB nabízí otevřené rozhraní protokolu SOAP. Odpovídající WSDL je k ke stažení:
- 
-   * {{:cs:sw:01-mervis:mervisdb_wsdl-2017-07-12.zip|}}
- 
- Pro speciální použití existují i další rozhraní pro komunikaci s Mervis DB - pro jejich použití a popis kontaktujte prosím [[cs:contact:00-start|technickou podporu]].
- 
- ==== Seznam základních podporovaných funkcí ====
- 
- ^ Funkce                                      ^ Popis                                                                                                                                                 ^
- | SaveData                                    | Uloží jeden, nebo více záznamů z jedné nebo více proměnných.                                                                                          |
- | GetData/GetDataAsync                        | Přečte jeden, nebo více záznamů z jedné nebo více proměnných.                                                                                         |
- | GetParticularData/GetParticulatDataAsync    | Optimalizovaná metoda pro čtení „speciálních“ dat - poslední hodnota, poslední hodnota po určitém časovém okamžiku atd.                               |
- | GetVariables                                | Získá seznam proměnných.                                                                                                                            |
- | GetAllVariables                             |                                                                                                                                                       |
- | ServerAlive                                 | Zastaralé                                                                                                                                             |
- | DeleteVariables                             |                                                                                                                                                       |
- | DeleteData                                  |                                                                                                                                                       |
- | EnsureVariables                             |                                                                                                                                                       |
- | GetTransformedData/GetTransformedDataAsync  | Metoda čtení agregovaných výsledků s daným časovým obdobím, agregace může být min, max, integrál, vážený průměr, první, poslední a medián   |
- | GetServerVersion                            |                                                                                                                                                       |
- | GetVariableStats                            | Zastaralé                                                                                                                                             |
- | GetVariableStatsAsync                       | Zastaralé                                                                                                                                             |
- | CheckCredentials                            |                                                                                                                                                       |
- 
- 
- ==== Vlastnosti objektu ====
-   * (UTC)TimeStamp - UTC časová značka záznamu
-   * GoodThrough - UTC časová značka konce platnosti konkrétního záznamu 
-   * Interval - časová perioda (v sekundách), kdy má být zaznamenána další hodnota 
- 
- 
- ==== Příklady použití ====
- 
- === C# ===
- 
- {{cs:sw:01-mervis:mervis_db_csharp.png?direct|}}
- 
- &amp;lt;html&amp;gt;&amp;lt;span class=&amp;quot;kbBlueText&amp;quot;&amp;gt;Příklady ke stažení:&amp;lt;/span&amp;gt;&amp;lt;/html&amp;gt; \\
-   * {{cs:sw:01-mervis:mervisdb_getdata_example.zip|}}
-   * {{cs:sw:01-mervis:mervisdb_savedata_example.zip|}}    
-     
- &amp;lt;html&amp;gt;&amp;lt;span class=&amp;quot;kbBlueText&amp;quot;&amp;gt;Příklad kódu:&amp;lt;/span&amp;gt;&amp;lt;/html&amp;gt; \\
- 
- &amp;lt;code csharp| MervisDB_GetData_Example.cs&amp;gt;
- using System;
- using System.Linq;
- using System.Threading.Tasks;
- using MervisDb_GetData_Example.MervisDbService;
-  
- namespace MervisDb_GetData_Example {
-  class Program {
-   static void Main(string[] args) {
-    //
-    // Demo of asynchronous methods.
-    //
-    var task = Task.Run(async() =&amp;gt; {
- 	//
- 	// Create access to the real server.
- 	// Without SSL connections, you have to remove binding parameters &amp;quot;&amp;lt;security mode=&amp;quot;Transport&amp;quot;/&amp;gt;&amp;quot; in the App.config.
- 	// The client is automatically generated from the WSDL file available here: https://kb.mervis.info/doku.php/en:mervis-db:10-api
- 	//
- 	using(HistoryDbAccessClient client = new HistoryDbAccessClient(&amp;quot;HistoryAccess&amp;quot;, &amp;quot;http://db.unipi.technology/dbaccess&amp;quot;)) {
- 	 // Authentication credetials in the database.
- 	 Credentials credentials = new Credentials {
- 	  Name = &amp;quot;XXXX&amp;quot;, Password = &amp;quot;YYYY&amp;quot;
- 	 };
-  
- 	 // Specification of the variables through Key-Value.
- 	 // Here we use 2 variables.
- 	 KeyValuePair[][] keys = new KeyValuePair[][] {
- 	  new KeyValuePair[] {
- 		new KeyValuePair {
- 		 Key = &amp;quot;DPGuid&amp;quot;, Value = &amp;quot;338E2882-D72B-4D17-A241-73E8BC30F458&amp;quot;
- 		}, new KeyValuePair {
- 		 Key = &amp;quot;StationName&amp;quot;, Value = &amp;quot;AAABBB&amp;quot;
- 		}
- 	   },
- 	   new KeyValuePair[] {
- 		new KeyValuePair {
- 		 Key = &amp;quot;DPGuid&amp;quot;, Value = &amp;quot;CC80211D-3D29-4CC2-91A2-F69483D566B5&amp;quot;
- 		}, new KeyValuePair {
- 		 Key = &amp;quot;StationName&amp;quot;, Value = &amp;quot;AAABBB&amp;quot;
- 		}
- 	   }
- 	 };
-  
- 	 // From-To dates. The dates must be specified in the UTC time zone.
- 	 DateTime utcTo = DateTime.UtcNow;
- 	 DateTime utcFrom = DateTime.UtcNow.AddDays(-1);
-  
- 	 // Retrieving the data goes through cycling of values and variables. The server returns recommended values needed for the the next cycle.
- 	 int variableOffset = 0; // the offset of the variable
- 	 int variableCount = 10; // maximal number of variables returned in one request
- 	 int valueOffset; // the offset of the value
- 	 int valueCount = 1000; // maximal values in on request
-  
- 	 Console.WriteLine(&amp;quot;Reading values...&amp;quot;);
-  
- 	 do {
- 	  valueOffset = 0;
- 	  do {
- 	   // Execute the request.
- 	   var result = await client.GetDataAsyncAsync(credentials, keys, utcFrom, utcTo, variableOffset, variableCount, valueOffset, valueCount);
-  
- 	   // Check the return code. &amp;quot;0;OK&amp;quot; is what we want.
- 	   if (!result.ReturnCode.StartsWith(&amp;quot;0;&amp;quot;)) {
- 		Console.WriteLine(&amp;quot;Error on reading: {0}&amp;quot;, result.ReturnCode);
- 	   }
-  
- 	   // Cycle through the data and print it out.
- 	   foreach(var valRecord in result.Data) {
- 		Console.WriteLine(&amp;quot;Variable: {0}&amp;quot;, String.Concat(valRecord.Keys.Select((i) =&amp;gt; {
- 		 return String.Format(&amp;quot;{0}={1}; &amp;quot;, i.Key, i.Value);
- 		})));
-  
- 		foreach(var value in valRecord.Vals) {
- 		 Console.WriteLine(&amp;quot;{0}-&amp;gt;{1} [{2}] {3}&amp;quot;, value.Ts, value.Gt, value.Hvt, value.Dv /* Use value type according to the Hvt (History Value Type) */ );
- 		}
- 	   }
-  
- 	   valueOffset = result.NextValueOffset;
- 	   variableOffset = result.NextVariableOffset;
- 	  }
- 	  while (valueOffset != -1);
- 	 }
- 	 while (variableOffset != -1);
- 	}
-    });
-  
-    Console.WriteLine(&amp;quot;DB communication is running in background&amp;quot;);
-  
-    try {
- 	task.Wait();
-    } catch (Exception exc) {
- 	Console.WriteLine(&amp;quot;Exception: {0}&amp;quot;, exc.ToString());
-    }
-  
-    Console.WriteLine(&amp;quot;DB communication finished&amp;quot;);
-  
-    Console.ReadLine();
-   }
-  }
- }
- &amp;lt;/code&amp;gt;
- 
- &amp;lt;code csharp| MervisDB_SaveData_Example.cs&amp;gt;
- using System;
- using System.Collections.Generic;
- using System.Threading.Tasks;
- using MervisDb_SaveData_Example.MervisDbService;
-  
- namespace MervisDb_SaveData_Example
- {
- 	class Program
- 	{
- 		static void Main(string[] args)
- 		{
- 			//
- 			// Demo of asynchronous methods.
- 			//
- 			var task = Task.Run(async () =&amp;gt;
- 			{
- 				//
- 				// Create access to the real server.
- 				// Without SSL connections, you have to remove binding parameters &amp;quot;&amp;lt;security mode=&amp;quot;Transport&amp;quot;/&amp;gt;&amp;quot; in the App.config.
- 				// The client is automatically generated from the WSDL file available here: https://kb.mervis.info/doku.php/en:mervis-db:10-api
- 				//
- 				using (HistoryDbAccessClient client = new HistoryDbAccessClient(&amp;quot;HistoryAccess&amp;quot;, &amp;quot;http://db.unipi.technology/dbaccess&amp;quot;))
- 				{
- 					// Authentication credetials in the database.
- 					Credentials credentials = new Credentials { Name = &amp;quot;XXXX&amp;quot;, Password = &amp;quot;YYYY&amp;quot; };
-  
- 					// Adding records...
- 					List&amp;lt;ValueRecord&amp;gt; records = new List&amp;lt;ValueRecord&amp;gt;();
-  
- 					DateTime utcTimeStamp = new DateTime(2018, 1, 1, 12, 0, 0, DateTimeKind.Utc);
-  
- 					// Each value is stored in a ValueRecord structure
- 					ValueRecord rec = new ValueRecord();
-  
- 					rec.UtcTimeStamp = utcTimeStamp;                // time stamp of the value, UTC date time must be used
- 					rec.HistoryValueType = HistoryValueType.Double; // type of the value
- 					rec.DoubleValue = 23.4;                         // value itself
- 					rec.Interval = 60.0;                            // sampling period in seconds. When the difference of timestamps of subsequent values if greater than 1.1 multiple of the interval, the data should be considered incomplete.
- 					rec.Keys = new KeyValuePair[]										// identification of the variable. At least one key-value pair must be &amp;quot;IsKey&amp;quot; to identify a variable.
- 					{
- 						new KeyValuePair { IsKey = true, Key = &amp;quot;Root&amp;quot;, Value = &amp;quot;Building A&amp;quot;},
- 						new KeyValuePair { IsKey = true, Key = &amp;quot;Level1&amp;quot;, Value = &amp;quot;Floor 1&amp;quot;},
- 						new KeyValuePair { IsKey = true, Key = &amp;quot;Level2&amp;quot;, Value = &amp;quot;Room 7&amp;quot;},
- 						new KeyValuePair { IsKey = true, Key = &amp;quot;Level3&amp;quot;, Value = &amp;quot;Temperature&amp;quot;},
- 						new KeyValuePair { IsKey = false, Key = &amp;quot;Description&amp;quot;, Value = &amp;quot;Temperature in the room 7&amp;quot;},
- 						new KeyValuePair { IsKey = false, Key = &amp;quot;Unit&amp;quot;, Value = &amp;quot;°C&amp;quot;},
- 					};
-  
- 					records.Add(rec);
-  
- 					// Save data method returns the number of stored records					
- 					int recordsSaved = await client.SaveDataAsync(credentials, records.ToArray());
-  
- 					Console.WriteLine(&amp;quot;Records saved: {0}&amp;quot;, recordsSaved);
- 				}
- 			});
-  
- 			Console.WriteLine(&amp;quot;DB communication is running in background&amp;quot;);
-  
- 			try
- 			{
- 				task.Wait();
- 			}
- 			catch (Exception exc)
- 			{
- 				Console.WriteLine(&amp;quot;Exception: {0}&amp;quot;, exc.ToString());
- 			}
-  
- 			Console.WriteLine(&amp;quot;DB communication finished&amp;quot;);
-  
- 			Console.ReadLine();
- 		}
- 	}
- }
- &amp;lt;/code&amp;gt;
- 
- 
- &amp;lt;code csharp| MervisDb_GetTransformedData_Example.cs&amp;gt;
- using System;
- using System.Linq;
- using System.Threading.Tasks;
- using MervisDb_GetTransformedData_Example.MervisDbService;
-  
- namespace MervisDb_GetTransformedData_Example
- {
- 	class Program
- 	{
- 		static void Main(string[] args)
- 		{
- 			//
- 			// Demo of asynchronous method.
- 			//
- 			var task = Task.Run(async () =&amp;gt;
- 			{
- 				//
- 				// Create access to the real server.
- 				// Without SSL connections, you have to remove binding parameters &amp;quot;&amp;lt;security mode=&amp;quot;Transport&amp;quot;/&amp;gt;&amp;quot; in the App.config.
- 				// The client is automatically generated from the WSDL file available here: https://kb.mervis.info/doku.php/en:mervis-db:10-api
- 				//
- 				using (HistoryDbAccessClient client = new HistoryDbAccessClient(&amp;quot;HistoryAccess&amp;quot;, &amp;quot;http://db.unipi.technology/dbaccess&amp;quot;))
- 				{
- 					// Authentication credentials in the database.
- 					Credentials credentials = new Credentials { Name = &amp;quot;XXXXX&amp;quot;, Password = &amp;quot;YYYYY&amp;quot; };
-  
- 					// Specification of the variables through Key-Value.
- 					// Here we use 2 variables.
- 					KeyValuePair[][] variableKeys = new KeyValuePair[][] {
- 						new KeyValuePair[] {
- 							new KeyValuePair (false, /*Key*/ &amp;quot;DPGuid&amp;quot;, /*Value*/ &amp;quot;338E2882-D72B-4D17-A241-73E8BC30F458&amp;quot;),
- 							new KeyValuePair (false, /*Key*/ &amp;quot;StationName&amp;quot;, /*Value*/ &amp;quot;AAABBB&amp;quot;)
- 						},
- 						new KeyValuePair[] {
- 							new KeyValuePair (false, /*Key*/ &amp;quot;DPGuid&amp;quot;, /*Value*/ &amp;quot;CC80211D-3D29-4CC2-91A2-F69483D566B5&amp;quot;),
- 							new KeyValuePair (false, /*Key*/ &amp;quot;StationName&amp;quot;, /*Value*/ &amp;quot;AAABBB&amp;quot;)
- 						}
- 					};
-  
- 					// Aggregation request
- 					var aggregation = new AggregationRequest();
- 					aggregation.Types = new AggregationType[] { AggregationType.Last };
- 					aggregation.Interpolation = InterpolationType.None;
- 					//aggregation.MaxNeighborDistance = ..only for interpolation;
- 					aggregation.IsoPattern = new string[] { &amp;quot;PT15M&amp;quot; }; // 15 min period (ISO 8601 duration pattern)
- 					aggregation.From = new DateTime(2018, 11, 24, 0, 0, 0, 0, DateTimeKind.Unspecified);
- 					aggregation.To =   new DateTime(2018, 11, 25, 0, 0, 0, 0, DateTimeKind.Unspecified);
- 					aggregation.TimeZone = @&amp;quot;Europe/Prague&amp;quot;;
-  
- 					// Retrieving the data goes through cycling of intervals and variables. The server returns recommended intervals needed for the the next cycle.
- 					int variableOffset = 0; // the offset of the variable
- 					int variableCount = 10; // maximal number of variables returned in one request
- 					int intervalOffset;       // the offset of the interval
- 					int intervalCount = 1000; // maximal values in on request
-  
- 					Console.WriteLine(&amp;quot;Reading values...&amp;quot;);
-  
- 					do
- 					{
- 						intervalOffset = 0;
-  
- 						do
- 						{
- 							// Execute the request.
- 							var result = await client.GetTransformedDataAsyncAsync(credentials, aggregation, variableKeys, variableOffset, variableCount, intervalOffset, intervalCount);
-  
- 							// Check the return code. &amp;quot;0;OK&amp;quot; is what we want.
- 							if (!result.ReturnCode.StartsWith(&amp;quot;0;&amp;quot;))
- 							{
- 								Console.WriteLine(&amp;quot;Error on reading: {0}&amp;quot;, result.ReturnCode);
- 							}
-  
- 							// Cycle through the data and print it out.
- 							if (result.Data != null)
- 							{
- 								foreach (VariableAggregate vag in result.Data)
- 								{
- 									Console.WriteLine(&amp;quot;Variable: {0}&amp;quot;, String.Concat(vag.Keys.Select((i) =&amp;gt; { return String.Format(&amp;quot;{0}={1}; &amp;quot;, i.Key, i.Value); })));
-  
- 									foreach (Interval value in vag.Data)
- 									{
- 										Console.Write(&amp;quot; {0}-&amp;gt;{1} quality: {2:0.00} &amp;quot;, value.Begin, value.End, value.DataQuality);
-  
- 										if (value.Last != null)
- 										{
- 											Console.Write(&amp;quot; Last Value: {0} (stamp {1}, origin {2})&amp;quot;, value.Last.Value, value.Last.Stamp, value.Last.Origin);
- 										}
-  
- 										Console.WriteLine();
- 									}
- 								}
- 							}
-  
- 							variableOffset = result.NextVariableOffset;
- 							intervalOffset = result.NextIntervalOffset;
-  
- 						} while (intervalOffset != -1);
-  
- 					} while (variableOffset != -1);
- 				}
- 			});
-  
- 			Console.WriteLine(&amp;quot;DB communication is running in background&amp;quot;);
-  
- 			try
- 			{
- 				task.Wait();
- 			}
- 			catch (Exception exc)
- 			{
- 				Console.WriteLine(&amp;quot;Exception: {0}&amp;quot;, exc.ToString());
- 			}
-  
- 			Console.WriteLine(&amp;quot;DB communication finished&amp;quot;);
-  
- 			Console.ReadLine();
- 		}
-  
- 	}
- }
- &amp;lt;/code&amp;gt;
- 
- 
- === Matlab ===
- 
- {{cs:sw:01-mervis:mervisdb_matlab_api.png?direct|}}
- 
- == Podporované funkce: ==
- ^ Funkce                 ^ Popis                                                          ^
- | SaveData               | Uloží jeden, nebo více záznamů z jedné nebo více proměnných.   |
- | GetData                | Přečte jeden, nebo více záznamů z jedné nebo více proměnných.  |
- | GetDataUnmerged        | Přečte jeden, nebo více záznamů z jedné nebo více proměnných. Umožňuje nastavit více možností než funkce GetData. |
- | GetDataOrigin          | Přečte data přesně tak, jak jsou uložena v databázi.           |
- | DeleteVariable         | Smažte celou proměnnou nebo určitý interval.                   |
- | GetRequiredTimestamp   | Získej časovou značku v závislosti na nastavení vstupu.        |
- 
- == Toolbox ==
- Pro komunikaci Matlabu s Mervis DB potřebujete nainstalovat toolbox: 
-   * {{cs:sw:01-mervis:mervisdb_matlabtoolbox.zip|}}
-   * Zobrazení nápovědy ke každé z funkcí je možné: &amp;lt;code matlab&amp;gt;
- help MervisDatabse.supported_function_name
- &amp;lt;/code&amp;gt;
- 
- == Kód ==
- &amp;lt;code matlab| MervisDB_GetData_example.m&amp;gt;
- % Instance of Mervis DB 
- mervisDB = MervisDatabase(&amp;#039;username&amp;#039;, &amp;#039;password&amp;#039;, &amp;#039;dbUrl&amp;#039;);
-  
- % Time interval definition
- from = localMatlab2utcMatlab(datenum(2017, 1, 1)); %1.1.2017 in utc
- to = localMatlab2utcMatlab(datenum(2017, 31, 1)); %31.1.2017 in utc
- samplePeriod = 5*60; % 5 minutes
- outputTimeZone = &amp;#039;Local&amp;#039;; % possible &amp;#039;Local&amp;#039; or  &amp;#039;Utc&amp;#039; parameter;
-  
- % Specifying varibles to download
- varKeys1 = {&amp;#039;DPGuid&amp;#039;, &amp;#039;338E2882-D72B-4D17-A241-73E8BC30F458&amp;#039;;...
-             &amp;#039;StationName&amp;#039;, &amp;#039;XXXXXXX&amp;#039;}; % Keys definition of first variable
- varKeys2 = {&amp;#039;DPGuid&amp;#039;, &amp;#039;CC80211D-3D29-4CC2-91A2-F69483D566B5&amp;#039;;...
-             &amp;#039;StationName&amp;#039;, &amp;#039;YYYYYYY&amp;#039;}; % Keys definition of second variable
-  
- variable1 = MervisDbVariable(varKeys1); % Create MervisDbVariable object from defined keys
- variable2 = MervisDbVariable(varKeys2);
-  
- arrayOfVarKeys = [variable1; variable2]; % array of MervisDbVariables objects
-  
- % help for function getData
- help MervisDatabase.getData 
-  
- % Download required data
- [data, time] = mervisDB.getData(arrayOfVarKeys, from, to, samplePeriod, outputTimeZone);
-  
- % Get all variables with defined keys
- allVaribales = mervisDB.getAllVars(varKeys1);
- &amp;lt;/code&amp;gt;
- 
- === PHP ===
- 
- == Kód ==
- &amp;lt;code php| MervisDB_GetData_example.php&amp;gt;
- &amp;lt;?php
- /*
- Mervis DB PHP example - getdata
  */
- try {
-  
-   $soapClient = new SoapClient(&amp;#039;./wsdl/singlewsdl.xml&amp;#039;, array(
- 	&amp;#039;compression&amp;#039; =&amp;gt; SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP,
- 	&amp;#039;trace&amp;#039; =&amp;gt; 0,
- 	&amp;#039;features&amp;#039; =&amp;gt; SOAP_SINGLE_ELEMENT_ARRAYS
-   ));
-   $soapClient-&amp;gt;__setLocation(&amp;#039;http://db.unipi.technology/dbaccess&amp;#039;);
-  
-   $credentials = array(
- 	&amp;#039;Name&amp;#039; =&amp;gt; &amp;#039;XXXXXXX&amp;#039;,
- 	&amp;#039;Password&amp;#039; =&amp;gt; &amp;#039;YYYYYYY&amp;#039;
-   );
-  
-   $utcTZ   = new DateTimezone(&amp;#039;UTC&amp;#039;); //all time realted values are expected in UTC
-   $utcFrom = new DateTime(&amp;#039;-120minutes&amp;#039;, $utcTZ); //
-   $utcTo   = new DateTime(&amp;#039;now&amp;#039;, $utcTZ); //
-  
-   $valOffset = 0;
-   $valCount  = 20; //how many values should be returned in one request at most. Recommended value: 5000
-   $varOffset = 0;
-   $varCount  = 4; //how many variable should be returned in on request at most
-  
-   $variablesKey = array(
- 	array(
- 	  array(
- 		&amp;#039;IsKey&amp;#039; =&amp;gt; true,
- 		&amp;#039;Key&amp;#039; =&amp;gt; &amp;#039;DPGuid&amp;#039;,
- 		&amp;#039;Value&amp;#039; =&amp;gt; &amp;#039;338E2882-D72B-4D17-A241-73E8BC30F458&amp;#039;
- 	  ),
- 	  array(
- 		&amp;#039;IsKey&amp;#039; =&amp;gt; true,
- 		&amp;#039;Key&amp;#039; =&amp;gt; &amp;#039;StationName&amp;#039;,
- 		&amp;#039;Value&amp;#039; =&amp;gt; &amp;#039;AAAAAAAAAA&amp;#039;
- 	  )
- 	),
- 	array(
- 	  array(
- 		&amp;#039;IsKey&amp;#039; =&amp;gt; true,
- 		&amp;#039;Key&amp;#039; =&amp;gt; &amp;#039;DPGuid&amp;#039;,
- 		&amp;#039;Value&amp;#039; =&amp;gt; &amp;#039;CC80211D-3D29-4CC2-91A2-F69483D566B5&amp;#039;
- 	  ),
- 	  array(
- 		&amp;#039;IsKey&amp;#039; =&amp;gt; true,
- 		&amp;#039;Key&amp;#039; =&amp;gt; &amp;#039;StationName&amp;#039;,
- 		&amp;#039;Value&amp;#039; =&amp;gt; &amp;#039;BBBBBBB&amp;#039;
- 	  )
- 	)
-   );
-  
-   echo &amp;quot;Reading values from: {$utcFrom-&amp;gt;format(&amp;#039;c&amp;#039;)} to: {$utcTo-&amp;gt;format(&amp;#039;c&amp;#039;)}\n\n&amp;quot;;
-  
-   $counter = 0;
-  
-   do {
- 	$response  = null;
- 	$valOffset = 0;
- 	do {
- 	  $response  = $soapClient-&amp;gt;GetData(array(
- 		&amp;#039;credentials&amp;#039; =&amp;gt; $credentials,
- 		&amp;#039;variablesKey&amp;#039; =&amp;gt; $variablesKey,
- 		&amp;#039;utcFrom&amp;#039; =&amp;gt; $utcFrom-&amp;gt;format(&amp;#039;Y-m-d\TH:i:s\Z&amp;#039;),
- 		&amp;#039;utcTo&amp;#039; =&amp;gt; $utcTo-&amp;gt;format(&amp;#039;Y-m-d\TH:i:s\Z&amp;#039;),
- 		&amp;#039;valueOffset&amp;#039; =&amp;gt; $valOffset,
- 		&amp;#039;valueCount&amp;#039; =&amp;gt; $valCount,
- 		&amp;#039;variableCount&amp;#039; =&amp;gt; $varCount,
- 		&amp;#039;variableOffset&amp;#039; =&amp;gt; $varOffset
- 	  ));
- 	  $valOffset = $response-&amp;gt;nextValueOffset;
- 	  $varOffset = $response-&amp;gt;nextVariableOffset;
-  
- 	  foreach ($response-&amp;gt;GetDataResult-&amp;gt;Mvr as $varArray) {
- 		foreach ($varArray-&amp;gt;Keys-&amp;gt;KeyValuePair as $kvp) //the set of keys depends on the source of the data
- 		  {
- 		  if ($kvp-&amp;gt;Key == &amp;#039;DPName&amp;#039;) {
- 			echo &amp;quot;\n{$kvp-&amp;gt;Value}\n&amp;quot;;
- 			$counter++;
- 		  }
- 		}
-  
- 		if (isset($varArray-&amp;gt;Vals-&amp;gt;I)) {
- 		  foreach ($varArray-&amp;gt;Vals-&amp;gt;I as $val) {
- 			echo &amp;quot;  t: {$val-&amp;gt;Ts}   Interval: {$val-&amp;gt;Ivl}  {$valOffset} {$varOffset}\n&amp;quot;;
- 		  }
- 		} else {
- 		  echo &amp;quot;empty\n&amp;quot;;
- 		}
-  
- 	  }
-  
- 	} while ($response-&amp;gt;nextValueOffset != -1); //-1 - no more data available
-   } while ($response-&amp;gt;nextVariableOffset != -1); //-1 - no more data available
- }
- catch (Exception $e) {
-   print_r($e);
- }
- ?&amp;gt;
- &amp;lt;/code&amp;gt;
- 
- 
- /*
- ===== Excel Exporter =====
- K dispozici je také nástroj pro příkazovou řádku s názvem Excel Exporter, který může z vašich dat v Mervis DB vytvořit plně přizpůsobitelný soubor aplikace Microsoft Excel.
- 
- Jeho základem je šablona XLSX souboru, ve kterém můžete pomocí speciální syntaxe umisťovat data z Mervis DB.
- 
- ==== Příklad: ====
- V tomto příkladu si ukážeme, jak exportovat jednu proměnnou z Mervis DB do Excelového souboru.
- 
-     Obrázek
- 
- === Soubor s konfigurací ===
- Nejprve je třeba vytvořit konfigurační soubor XML, kde se definuje mapování mezi sadou klíčů popisujících jednotlivé proměnné Mervis DB a některými názvy proměnných, které budou použity později v šabloně aplikace Excel.
- 
- Můžete také definovat název výstupního souboru a také zda má být soubor pouze aktualizován nebo přepsán. 
- 
- &amp;lt;code xml| ExcelDemo.xml&amp;gt;
- &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;
- &amp;lt;RcWareDbExporterVariableTemplateFile&amp;gt;
- 	 &amp;lt;exportTemplate&amp;gt;exceldemo.xlsx&amp;lt;/exportTemplate&amp;gt;
- 	 &amp;lt;exportOutput&amp;gt;exceldemo_[yyyy-MM-dd_HH-mm].xlsx&amp;lt;/exportOutput&amp;gt;
- 	 &amp;lt;fillIncrementaly&amp;gt;false&amp;lt;/fillIncrementaly&amp;gt;
- 	 &amp;lt;variables&amp;gt;
- 		  &amp;lt;variable name=&amp;quot;OutsideTemperature&amp;quot;&amp;gt;
- 			   &amp;lt;keyValuePairs&amp;gt;
- 					&amp;lt;keyValuePair key=&amp;quot;DPGuid&amp;quot; value=&amp;quot;338E2882-D72B-4D17-A241-73E8BC30F458&amp;quot; isId=&amp;quot;true&amp;quot; /&amp;gt;
- 					&amp;lt;keyValuePair key=&amp;quot;StationName&amp;quot; value=&amp;quot;ENERGO&amp;quot; isId=&amp;quot;true&amp;quot; /&amp;gt;
- 			   &amp;lt;/keyValuePairs&amp;gt;
- 		  &amp;lt;/variable&amp;gt;
- 		  &amp;lt;variable name=&amp;quot;HereCouldBeSomeOtherVariable&amp;quot;&amp;gt;
- 			   &amp;lt;keyValuePairs&amp;gt;
- 					&amp;lt;keyValuePair key=&amp;quot;DPGuid&amp;quot; value=&amp;quot;338E2882-D72B-4D17-A241-73E8BC30F458&amp;quot; isId=&amp;quot;true&amp;quot; /&amp;gt;
- 					&amp;lt;keyValuePair key=&amp;quot;StationName&amp;quot; value=&amp;quot;ENERGO&amp;quot; isId=&amp;quot;true&amp;quot; /&amp;gt;
- 			   &amp;lt;/keyValuePairs&amp;gt;
- 		  &amp;lt;/variable&amp;gt;
- 	 &amp;lt;/variables&amp;gt;
- &amp;lt;/RcWareDbExporterVariableTemplateFile&amp;gt;
- &amp;lt;/code&amp;gt;
- 
- === Excelová šablona ===
- Pomocí jednoduchého jazyka šablony můžete definovat, které hodnoty z Mervis DB se maji umístit na jaké místo ve výstupním souboru aplikace Excel. 
- 
- &amp;lt;code&amp;gt;
- [YEAR:2016|MONTH:1|DAY:15|HOUR:12|MINUTE:0|VARIABLE:OutsideTemperature]
- &amp;lt;/code&amp;gt;
- 
- Libovolnou z hodnot definujících čas lze vynechat a bude nahrazena aktuálním datem, časem nebo hodnotami předanými prostřednictvím parametrů příkazového řádku. 
- 
-     obrázek
- 
- 
- === Spuštění exportéru ===
- &amp;lt;code | runExcelDemo.bat&amp;gt;
- .\ESG.RcWareDb.DataExporter\ESG.RcWareDb.DataExporter.exe tmpPath:&amp;quot;ExcelDemo.xml&amp;quot; srvUrl:&amp;quot;http://db.unipi.technology/dbaccess&amp;quot; srvUser:&amp;quot;exceldemo&amp;quot; srvPsw:&amp;quot;pfi4cj4qrj&amp;quot; timeTolerance:300 toleranceType:before
- &amp;lt;/code&amp;gt;
- 
- Pro více informací spusťte:
- &amp;lt;code | runHelpInfo.bat&amp;gt;
- .\ESG.RcWareDb.DataExporter\ESG.RcWareDb.DataExporter.exe --help
- &amp;lt;/code&amp;gt;
- 
- === Výstup ===
- Výstupní soubor je definován v konfiguračním souboru XML. Ukázkový výstup by měl vypadat následovně: 
- 
-     obrázek
- 
- === Celý příklad ke stažení: ===
- 
- Příklad: excelexporterdemo.zip
- */
- 
- 
- 

&lt;/pre&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>cs:sw:01-mervis</category>
            <pubDate>Tue, 17 Jun 2025 10:58:11 +0000</pubDate>
        </item>
        <item>
            <title>Mervis Proxy</title>
            <link>https://kb.unipi.technology/cs:sw:01-mervis:04-mervis-proxy?rev=1758537219</link>
            <description>&lt;pre&gt;
@@ -15,10 +15,10 @@
  {{ :en:hw:08_safety-instructions_pseudo-ISO-7010-info.png?nolink |(i)}}
  &amp;lt;/WRAP&amp;gt;
  &amp;lt;WRAP half column 83%&amp;gt;
  **Poznámka:** \\
- U jednotek Unipi Patron a Neuron je žádanka zahrnuta v ceně a je součástí balení jednotky. U jednotek Unipi 1.1 a Gate lze žádanku získat buď nákupem [[https://www.unipi.technology/cs/unipi-1-1-kompletni-sada-p123|kompletní sady]], případně nákupem [[https://www.unipi.technology/cs/mervis-p56|samostatného produktu]]
+ U jednotek Unipi Patron a Neuron je žádanka zahrnuta v ceně a je součástí balení jednotky. U jednotek Unipi 1.1, Edge a Gate lze žádanku získat buď nákupem [[https://www.unipi.technology/cs/unipi-1-1-kompletni-sada-p123|kompletní sady]], případně nákupem [[https://www.unipi.technology/cs/mervis-p56|samostatného produktu]]
  &amp;lt;/WRAP&amp;gt;
  &amp;lt;/WRAP&amp;gt;
  
  ==== Proxy URL ====
  Veškeré Proxy URL naleznete v odkazu: [[cs:sw:01-mervis:urls-hidden#mervis_proxy|Seznam URL pro Mervis]].

&lt;/pre&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>cs:sw:01-mervis</category>
            <pubDate>Mon, 22 Sep 2025 10:33:39 +0000</pubDate>
        </item>
        <item>
            <title>Mervis SCADA</title>
            <link>https://kb.unipi.technology/cs:sw:01-mervis:05-mervis-scada?rev=1741251256</link>
            <description>&lt;pre&gt;
@@ -15,10 +15,8 @@
  
    * URL: [[https://scada.unipi.technology#/login?username=demo]]
    * Login: demo
    * Heslo: demo
- 
- SCADA rovněž může fungovat v místní instalaci na Vašem vlastním serveru. Na vyžádání Vám poskytneme více informací. 
  
  
  === Chci si SCADA pořídit!  ===
  Služba Mervis SCADA je již veřejně dostupná. Na [[mervis-scada-project-hidden|tomto odkazu]] naleznete podrobný tutoriál k vytvoření SCADA projektu.

&lt;/pre&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>cs:sw:01-mervis</category>
            <pubDate>Thu, 06 Mar 2025 08:54:16 +0000</pubDate>
        </item>
        <item>
            <title>Návody</title>
            <link>https://kb.unipi.technology/cs:sw:01-mervis:06-tutorials?rev=1783005059</link>
            <description>&lt;pre&gt;
@@ -1,7 +1,5 @@
- ~~NOCACHE~~
  ==%hide Návody ==  
- == ==
  ====== Návody pro Mervis ======      
  ~~NOTOC~~  
  &amp;lt;WRAP center round box&amp;gt;
  &amp;lt;html&amp;gt;&amp;lt;span class=&amp;quot;kbBlueText&amp;quot;&amp;gt;YouTube návody:&amp;lt;/span&amp;gt;&amp;lt;/html&amp;gt;

&lt;/pre&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>cs:sw:01-mervis</category>
            <pubDate>Thu, 02 Jul 2026 15:10:59 +0000</pubDate>
        </item>
        <item>
            <title>PlcTool</title>
            <link>https://kb.unipi.technology/cs:sw:01-mervis:065-plctool?rev=1746453884</link>
            <description>&lt;pre&gt;
@@ -28,12 +28,15 @@
  
  ===== Ke stažení =====
  Po stažení vybrané varianty je **nutné** archiv rozbalit.
  
+ &amp;lt;WRAP center round box&amp;gt;
    * {{ :files:software:mervis:plctool:plctool-1.0.27-linux-arm64.zip |PlcTool - Linux ARM64 (1.0.27)}}
    * {{ :files:software:mervis:plctool:plctool-1.0.27-linux-arm.zip |PlcTool - Linux ARM32 (1.0.27)}}
    * {{ :files:software:mervis:plctool:plctool-1.0.27-linux-x64.zip |PlcTool - Linux x64 (1.0.27)}}
    * {{ :files:software:mervis:plctool:plctool-1.0.27-win-x64.zip |PlcTool - Windows x64 (1.0.27)}}
+ &amp;lt;/WRAP&amp;gt;
+ 
  
  **Staré** verze:
  
    * {{ :files:software:mervis:plctool:2023-11-01_plctool_linux-x64.zip |PlcTool - Linux x64 (1.0.0)}}

&lt;/pre&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>cs:sw:01-mervis</category>
            <pubDate>Mon, 05 May 2025 14:04:44 +0000</pubDate>
        </item>
        <item>
            <title>Certifikace Mervis</title>
            <link>https://kb.unipi.technology/cs:sw:01-mervis:07-certification?rev=1745854601</link>
            <description>&lt;pre&gt;
@@ -3,7 +3,13 @@
  
- &amp;lt;WRAP center round info 60%&amp;gt;
+ &amp;lt;WRAP group center round box 95%&amp;gt;
+ {{ :files:img_warning-line_b.png?nolink |}}
+ &amp;lt;WRAP half column 13%&amp;gt;
+ {{ :en:hw:08_safety-instructions_pseudo-ISO-7010-info.png?nolink |(i)}}
+ &amp;lt;/WRAP&amp;gt;
+ &amp;lt;WRAP half column 83%&amp;gt;
  Pokud patříte mezi zkušené uživatele Mervisu a máte za sebou dokončené projekty založené na Mervisu, pro získání certifikace nám stačí zaslat jeden z Vašich projektů.
+ &amp;lt;/WRAP&amp;gt;
  &amp;lt;/WRAP&amp;gt;
  
  ===== Řízení teploty a světel v místnosti =====
  Vaším úkolem je realizovat řízení vytápění a osvětlení v jedné místnosti. Veškeré HW

&lt;/pre&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>cs:sw:01-mervis</category>
            <pubDate>Mon, 28 Apr 2025 15:36:41 +0000</pubDate>
        </item>
    </channel>
</rss>
