Thorsten Vogt
Super Seeqer-
Posts
171 -
Joined
-
Last visited
-
Days Won
53
Content Type
Profiles
Forums
Events
Library
Downloads
Gallery
Everything posted by Thorsten Vogt
-
Hi Ali, yes, you can do this. For demo I created a forecast based on the last 2 days: Then I calculated the running average for the forecast: In the resulting view you can see the average starting and ending two days later: Regards, Thorsten
- 8 replies
-
- rolling statistics
- rolling average
-
(and 2 more)
Tagged with:
-
Hi Ali, I think the green trend is calculating the average from 12/11/2018 6:16 pm to 12/11/2019 6:16 pm. The formula I gave you is resetting at 01/01/2019 and therefore calculating the average from 01/01/2019 00:00 to 12/11/2019 6:16 pm which might cause the difference. To use the formula with the intended range you may change it to $signal.runningAggregate(average(), condition(1y, capsule(now()-1y, now()))) That will create a condition with one capsule beginning 1 year ago and ending now which will be used for the calculation. The value at the end of the capsule then matches the average calculated by Seeq for the display range. However, as the window for the calculation (now - 1y) is changing, the calculated values for a specific timestamp are uncertain and may change frequently. Therefore I think you should disable the cache for the calculated item. See discussion in following topic: Regards, Thorsten
- 8 replies
-
- 1
-
- rolling statistics
- rolling average
-
(and 2 more)
Tagged with:
-
Hi Ali, you can try using runningAggregate-Formula: $signal.runningAggregate(average(), years()) caclulates the running average for each year resetting on 01.01. 00:00 Regards, Thorsten
- 8 replies
-
- rolling statistics
- rolling average
-
(and 2 more)
Tagged with:
-
Rollup Calculations using Tree File Connector
Thorsten Vogt replied to Thorsten Vogt's topic in General Seeq Discussions
Hi Sean, I want the calculation to be made by Seeq if possible. I have an Asset Tree like the one below (generated from the Example Data of Seeq) : Under each Area (A-D) is a Power Signal: What I would like to have is an automatic calculation for all Power-Attributes placed here (e.g. Sum of Signals): What I tried so far was creating a global scoped Formula-Signal doing the calculation and referencing that in the Tree File Connector - Configuration. This is a workaround for small areas. But for my use case at the customer we are talking about 200 Signals under a certain area, which is hard to deal with in manual formula creation ? Regards, Thorsten -
Hi Sanjhosh, you can try to remove the values from the signal as @Joanna Zinsli described above. Another way would be using within(). In this example I display only values from the "Temperature" signal, when the signal "Relative Humidity" is above 75 %. I used remove() and within() in the following formulas: The condition is determined by a simple "Value Search": Regards, Thorsten
-
Comparing a signal against duration and not actual time
Thorsten Vogt replied to Sanjhosh's topic in General Seeq Discussions
Hi Sanjhosh, when you are able to define a condition that identifies each run, you can visualize an overlay of the curves of the resulting capsules with "Capsule Time" view. Regards, Thorsten -
Hi Ali, Seeq tries to interpolate missing values. In the following example I removed the values from the temperature curve, if the value is less than 73°F. I get a curve with the expected gap and Seeq informs with that message that it is not able to interpolate the values: If you do the same with a signal that has a maximum interpolation of greater than the gap, Seeq interpolates the values and does not show the message: If you do not want to interpolate you should use the within() function. Seeq than does not show the message. Regards, Thorsten
-
Hi Ali, the message indicates, that your signal interpolates values only for an interval of 40h. In this case the gap between two samples is 7d, so no interpolation can be made. You can append the function setMaxInterpolation() to interpolate values between these samples. Regards, Thorsten
-
Monthly Average under certain conditions
Thorsten Vogt replied to Moriel's topic in General Seeq Discussions
Hi Moriel, you can use a formula to calculate this: In this example I calculate the average power consumption for each month only when "Compressor Stage" equals "STAGE 2". Regards, Thorsten -
Calculate Time Running per Day
Thorsten Vogt replied to Sam White's topic in General Seeq Discussions
Hi Atul, as far as I know there is currently no way to import the data out of an Excel file in a Seeq native way. I would suggest contacting Seeq support regarding this topic. However you can evaluate the following options: - If you are able to transform the data into CSV format you can use the CSV import. - Another possibility would be using the way that Brian described here (with using Excel instead of Access): - If you have access to Seeq Data Labs you could use Python and Pandas to read the data from Excel and write it back to Seeq (https://datatofish.com/read_excel/). - Using Seeq Connector SDK to implement your own connector or using Seeq Server SDK/REST API to push data to Seeq Regards, Thorsten- 10 replies
-
- 1
-
- time running
- running
-
(and 4 more)
Tagged with:
-
Hi Atul, can you try to remove the hourly condition from the date range associated with the scorecard? Regards, Thorsten
- 5 replies
-
- organizer topic
- scorecard
- (and 6 more)
-
scorecard Scorecard Time Modification
Thorsten Vogt replied to Atul Sharma's topic in General Seeq Discussions
Hi, it seems that the condition used for calculating "Vent valve opening" is different than the one used for calculating the other two. Can you check this? Regards, Thorsten -
Nested IF Statement in SEEQ
Thorsten Vogt replied to Jitesh Vachheta's topic in General Seeq Discussions
Hi Jitesh, I tried to develop a nested if with the following logic: if (temp > 66) { if (rh > 50) { temp = 1/temp ; } else if (wetbulb < 75) { temp *= 2; } } If no condition is met, the temperature should not be modified. However it would be great if you could provide an example of what you are trying to achieve. Regards, Thorsten -
Viewing and Exporting Histograms
Thorsten Vogt replied to Marcie's topic in General Seeq Discussions
Hi Marcie, for exporting the data of a Histogram you can use the Seeq REST API / Seeq Server SDK to develop a custom solution. I created a "quick and dirty" sample based on C# for demonstration: using OfficeOpenXml; using Seeq.Sdk.Api; using Seeq.Sdk.Client; using Seeq.Sdk.Model; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Histogram2Xls { class Program { private static ApiClient apiClient { get; set; } static void Main(string[] args) { ConnectToSeeq(); FormulaRunOutputV1 output = GetDataFromSeeq(); ExportToExcel(output); } private static void ConnectToSeeq() { apiClient = new ApiClient(string.Format("{0}api", "http://<your Seeq Server>:34216/")); AuthApi authApi = new AuthApi(apiClient); AuthInputV1 input = new AuthInputV1(); input.Username = "<your Seeq Username>"; input.Password = "<your Seeq Password>"; authApi.Login(input); } private static FormulaRunOutputV1 GetDataFromSeeq() { FormulaRunInputV1 input = new FormulaRunInputV1(); input.Function = "6ED15A0C-0FBB-4D22-A0A3-D32AF43CC904"; input.Parameters = new List<string>{ "condition2=140CB04E-3DC3-4363-8D49-4D950A47FDDA", "signalToAggregate=0955829B-BBDC-4130-8204-ABAAB469BDBE" }; input.Fragments = new List<string>{ "viewCapsule=capsule('2019-04-22T00:00:00Z', '2019-04-29T00:00:00Z')" }; FormulasApi formulasApi = new FormulasApi(apiClient); FormulaRunOutputV1 output = formulasApi.RunFormula_0(input); return output; } private static void ExportToExcel(FormulaRunOutputV1 output) { List<DataItem> items = new List<DataItem>(); foreach (List<Object> objList in output.Table.Data) { DataItem item = new DataItem(); item.Day = Convert.ToInt32(objList[0]); item.Stage = objList[1].ToString(); item.Value = Convert.ToDouble(objList[2]); items.Add(item); } ExcelPackage excelPackage = new ExcelPackage(new System.IO.FileInfo("D:\\Temp\\Histogram.xlsx")); ExcelWorksheet workSheet = excelPackage.Workbook.Worksheets.Add("Data"); int row = 1; workSheet.Cells[row, 1].Value = "Day of week"; workSheet.Cells[row, 2].Value = "OFF"; workSheet.Cells[row, 3].Value = "STAGE 1"; workSheet.Cells[row, 4].Value = "STAGE 2"; workSheet.Cells[row, 5].Value = "TRANSITION"; List<int> days = items.OrderBy(x => x.Day).Select(x => x.Day).Distinct().ToList(); foreach (int day in days) { row++; List<DataItem> itemsForDay = items.Where(x => x.Day == day).ToList(); workSheet.Cells[row, 1].Value = day; foreach (DataItem item in itemsForDay) { int colIdx = GetColIdx(item.Stage); workSheet.Cells[row, colIdx].Value = item.Value; } } excelPackage.Save(); } private static int GetColIdx(string stage) { if (stage == "OFF") return 2; if (stage == "STAGE 1") return 3; if (stage == "STAGE 2") return 4; if (stage == "TRANSITION") return 5; return -1; } } public class DataItem { public int Day { get; set; } public string Stage { get; set; } public double Value { get; set; } } } This sample is very static and exports the data of a specific histogram. The configuration is made in the function GetDataFromSeeq(): input.Function takes the ID of the Histogram input.Parameters takes a list of parameters that the histogram uses for calculation input.Fragments takes the list of FormulaParameters All this information can be retrieved from the properties of - the histogram - the signal used for calculation - the condition used for grouping The resulting Excel file looks like this: As mentioned before this is just a sample which is very static and needs some adjustments regarding your needs. Regards, Thorsten -
Start and End values of a signal
Thorsten Vogt replied to girish.joshi's topic in General Seeq Discussions
Hi, you can get the start and end value the following way: 1. Import data from CSV and create a capsule for complete range of data by doing a simple Value Search: 2. In order to get only the first and the last value of the imported data create another two capsules that represent a small interval just after start and just before end of the capsule created in step 1. 3. Use the "Signal from Condition" tool to calculate the start and end values: You could also skip step 2 and use the capsule created in step 1 inside step 3 as the bounding condition. But then you have to specify a maximum duration of the capsule which may decrease performance. Regards, Thorsten -
Condition With Batch Wise Data
Thorsten Vogt replied to Jitesh Vachheta's topic in General Seeq Discussions
Hi Jitesh, you could do a simple Value Search to get a batch whenever the Compressor stage does not match "OFF". The duration of the resulting batches is displayed in the capsules window: By using signal from condition you can calculate the total duration of each batch: In case you want a new batch starting with each value change you can use toCondition(): Hope this helps. Regards, Thorsten- 1 reply
-
- 2
-
- batch
- value search
-
(and 2 more)
Tagged with:
-
Hi Drew, in order to see the numeric values you must change the visualization to "Scorecard". The values are then displayed in a table. Regards, Thorsten
-
Hi Drew, if I understand the problem correctly, you want the current value to be displayed. As far as I know it is not possible to display the last value in the chart all the time. But you can get an overwiew of the last values of your signals by creating some Scorecard Metrics that display the current value at the end of the display range. These values are being updated if the Auto Update setting is active: Hope this helps. Regards, Thorsten
-
Hi Jitesh, you can achieve this by filtering the values with the filter() function: $stage.toCapsules().filter($x -> $x.getProperty("Value") != "OFF") You should think of using toCondition() instead of using toCapsules(), as toCapsules() generates a capsule for each interval between recorded points even if the value stays the same. You can see this in the Capsules window of your screenshot. By using toCondition() you will get only one capsule per change of value: $stage.toCondition() If you want to filter the results of toCondition() you have to specify a maximum duration for the capsules before using filter(): $stage.toCondition().setMaximumDuration(1wk).filter($x -> $x.getProperty("Value") != "OFF") Regards, Thorsten
- 4 replies
-
- 1
-
- histogram
- tocondition()
- (and 6 more)
-
Export data, but only for discrete timestamps
Thorsten Vogt replied to Kevin's topic in General Seeq Discussions
Hi Kevin, you can resample the continuos signal with the timestamps of the discrete one: $continous.resample($discrete) This will create a new signal with interpolated values. Exporting the values with original timestamps should give you the desired results. Regards, Thorsten -
Timestamp for last sample in a signal
Thorsten Vogt replied to Ruben's topic in General Seeq Discussions
Hi Ruben, you can do it by using this formula. The formula gets the values for the last eight hours, picks the last sample and gets its key (timestamp). Based on that timestamp the condition of the previous 24 hours is build. You can also use pick(-1) instead of last(). You should keep in mind that the capsule itself is uncertain because of the use of now(). Regards, Thorsten -
Hi Chris, I was able to achive this by using Property Transforms on the specific datasources: https://seeq12.atlassian.net/wiki/spaces/KB/pages/127009211/Connector+Property+Transforms But I think you have to be careful with this setting as you can easily define a possibly wrong setting for your data items. In my case, the interpolation value for the data item was preserved, although I removed the transformation. Regards, Thorsten
- 3 replies
-
- max interppolation
- setmaxinterpolation
-
(and 1 more)
Tagged with:
-
Creating comments in View-Only mode not possible?
Thorsten Vogt replied to Thorsten Vogt's topic in General Seeq Discussions
Hi Lindsey, yes, please link me to this item. Regards, Thorsten- 4 replies
-
- comments
- commenting
-
(and 3 more)
Tagged with: