Page 1 of 2

Data Source Value Arithmetic Plugin

Posted: Thu 29 Jan 2015, 22:00
by tomas
This plugin is used to perform arithmetic operations (plus, minus, multiplication, division and absolute difference) on values from two different data sources and make the result available in a third data source. It is possible to create chains of calculations where the data source holding the result from one calculation may be used as input for another calculation.

The data source value holding the result can be used when defining rules for group schedules. Examples of usage:
- Control circulation pump based on temperature difference
- Control ventilation based on difference in humidity or temperature
- Other stuff yet to explore :)
SwitchKingDSVArithmetic.png
In this example "INDATA 1" and "INDATA 2" are the sources for the calculation. Several data sources have been created for the results, "RESULTAT ...", to show the different arithmetic operators being available.

Instructions:
- Put the files in the Binaries folder (found in the zip file) in the Plugins folder where the Switch King Server is installed.
- Open the DSVArithmeticPlugin.dll.config file (using e.g. Notepad) and follow the instructions.
- Restart the Switch King Server

Create a new data source to publish the results from the calculation:
- Select File > New > Data Source
- Select option "Values provided from external system"
- Configure the remaining options for the data source at will and finish
- Open the newly created data source and make a note of the Data Source ID found on the General tab
- Use this ID in the .config file to save the results from the calculation
(Use the same approach to find out the Data Source IDs for your data sources on which to perform the calculation.)

Source code and Binaries are included in the zip file.
Source code is available for further development and please share your enhancements with the community. Thanks!

Filename: DSVArithmeticPlugin_0.1.zip
Version: 0.1
Date: 2015-01-29
Requirements: Switch King Server v 3.2.3 and later
Developer: Switch King
DSVArithmeticPlugin_0.1.zip
(Det går bra att posta frågor/kommentarer på svenska också i denna tråden.)

Re: Data Source Value Arithmetic Plugin

Posted: Mon 02 Feb 2015, 23:19
by svartöra
Jag råddade runt lite i koden för att kunna beräkna uttryck, så att jag kan räkna ut COP på värmepumpen. Typ så här:
<add key="Configuration" value="
#13:MINUS:#20:#34|
#34:MULT:0,7:@a|
#18:IFLT:0,3:2|
@a:DIV:#18:#35|
0:RETURN:0:0|
0:ASSIGN:0:#35"/>

Alltså skillnaden mellan framledning (datakälla 13) och retur (20) trycks in i datakälla 34 (dT). Multiplicera med 0,7 kJ/Ks eftersom flödet är 0,6 m3/timme. Om datakälla 18 är mindre än 0,3 kW står pumpen stilla; då hoppar man över 2 steg och trycker in 0 i datakälla 35. Annars tar man nyssnämnda produkten, dividerar med värmepumpens effekt och lägger i datakälla 35.

Jag bifogar ett snapshot på koden, som är helt fri från dokumentation och dessutom ostädad.

Re: Data Source Value Arithmetic Plugin

Posted: Tue 03 Feb 2015, 10:14
by Kjellberg
Hej!

Tummen upp för scriptet...
Går det att beräkna daggpunkten med detta??? :help:

Daggpunkten kan beräknas ungefärligt ( +/- 1 grad ca ) med hjälp av denna formel:
Td= Temperatur för daggpunkten
T = Temperatur i rummet
RH = relativ luftfuktighet i rummet
Td = T - ( [ 100-RH ] / 5 )

exempl
Vi har 18 grader inomhus och en relativ luftfuktighet på 40% (normalt vid den här tiden på året)
Daggpunkten blir då: 18 - ( (100-40) / 5 ) = 6 grader

Mvh
Kjellberg

Re: Data Source Value Arithmetic Plugin

Posted: Tue 03 Feb 2015, 15:58
by krambriw
Det här blir ju roligare och roligare...

När det gäller daggpunktstemperaturen så är följande formler bättre approximeringar

Code: Select all

Td = Tc – 0,133 × ( 100 – Rh ) om Rh > 85 %

Td = Tc – 0,2 × ( 95 – Rh ) om Rh < 85 %

Där:
Td = Daggpunktstemperatur (°C)
Tc = Lufttemperatur (°C)
Rh = Relativ fuktighet (%)

Re: Data Source Value Arithmetic Plugin

Posted: Tue 03 Feb 2015, 20:44
by mesomorf
Wow. Som jag väntat!

Enda som jag omedelbart saknar är ju att hämta ut tidigare värden. Tex. om jag vill jämföra en enda datakälla och skillnaden nu och tex 10 värden tidigare (har man satt loggning max 1ggr/min så blir detta alltså 10 minuter tidigare)

Syntax för att räkna ut skillnaden på senaste värdet och värdet som är loggat 10 värden bakåt på en datakälla med ID1 och sedan spara värdet i datakälla med ID5 skulle kunna se ut som såhär: "1[0]:MINUS:1[10]:5"

Tillägget i bef syntax är alltså skrivet i rött.

...skulle det kunna vara något som andra har användning för oxå eller är det bara jag? Just nu har jag det fungerande med externapytonskript som gör detta åt mig men ser ju gärna att jag kan få in det i detta plugin.

Re: Data Source Value Arithmetic Plugin

Posted: Tue 03 Feb 2015, 20:58
by tomas
@svartöra, häftigt :)
@kjellberg, det kan möjligen lösas redan nu med en del trixande, men det blir inte vackert...

Funderar på om man istället skulle lägga in vanliga formler som används i hemautomation-sammanhang i ett nytt plugin där själva beräkningen görs i pluginet (istället för att sätta upp formler i config-strängen).

T ex kan man ju då lägga in krambriw:s daggpunktsformel. Det kanske finns en standardformel även för COP?

@mesomorf, moddar man pluginet så går det att lösa, men jag tror själva pluginet måste hålla historiken själv (vilket betyder att det i ditt exempel tar 10 min innan du får någon uppdatering efter att Switch King server startats - efter det trillar det in uppdateringar hela tiden).

Re: Data Source Value Arithmetic Plugin

Posted: Tue 03 Feb 2015, 21:47
by mesomorf
tomas wrote:i ditt exempel tar 10 min innan du får någon uppdatering
Nej, värden finns ju i databasen oavsett om jag startar om SK. vill jag hämta ut ett värde från ID1 som är loggat för 100 rader sedan så går ju det.

Som sagt, ibland vill man ju jämföra ett värde med ett annat värde som inte är det nyaste. I mitt fall är det att konstant jämföra det senaste med det som var för 10 loggningar sedan.

Re: Data Source Value Arithmetic Plugin

Posted: Wed 04 Feb 2015, 07:53
by Kjellberg
@tomas

Vackert o vacket det spelar ingen roll :P men hu ska jag göra? :help:
Historiken? sparas inte den i SK sedan när den lästs in där?

//Fredrik

Re: Data Source Value Arithmetic Plugin

Posted: Wed 04 Feb 2015, 19:34
by tomas
Kjellberg wrote:Vackert o vacket det spelar ingen roll :P men hu ska jag göra?
Om du använder svartöra:s moddade script så borde du kunna skriva såhär:

Td = Temperatur för daggpunkten
T = Temperatur i rummet
RH = relativ luftfuktighet i rummet
Td = T - ( [ 100-RH ] / 5 )

Exemplet utgår från att du har följande ID för dina datakällor (vilka du behöver byta ut såklart mot dina):
T = data source id 1, #1
RH = data source id 2, #2
Td = data source id 9, #9

Code: Select all

value="100:MINUS:#2:@a|@a:DIV:5:@b|#1:MINUS:@b:#9"
svartöra kanske kan kommentera om det verkar rimligt... Jag har inte provat.

Re: Data Source Value Arithmetic Plugin

Posted: Fri 06 Feb 2015, 08:44
by Kjellberg
tomas wrote:
Kjellberg wrote:Vackert o vacket det spelar ingen roll :P men hu ska jag göra?
Om du använder svartöra:s moddade script så borde du kunna skriva såhär:

Td = Temperatur för daggpunkten
T = Temperatur i rummet
RH = relativ luftfuktighet i rummet
Td = T - ( [ 100-RH ] / 5 )

Exemplet utgår från att du har följande ID för dina datakällor (vilka du behöver byta ut såklart mot dina):
T = data source id 1, #1
RH = data source id 2, #2
Td = data source id 9, #9

Code: Select all

value="100:MINUS:#2:@a|@a:DIV:5:@b|#1:MINUS:@b:#9"
svartöra kanske kan kommentera om det verkar rimligt... Jag har inte provat.

Nja SK servers tjänster stannar bara om man kör den strängen... Får det inte att fungera :help: