Data Source Value Arithmetic Plugin

Plugins skapade av Switch Kings användare | Plugins created by Switch King users
tomas
Administrator
Administrator
Posts: 419
Joined: Tue 09 Nov 2010, 20:41

Data Source Value Arithmetic Plugin

Post by tomas » Thu 29 Jan 2015, 22:00

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.)
You do not have the required permissions to view the files attached to this post.
Tomas | Switch King

svartöra
3 stars
3 stars
Posts: 70
Joined: Sun 20 Nov 2011, 00:38

Re: Data Source Value Arithmetic Plugin

Post by svartöra » Mon 02 Feb 2015, 23:19

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.
You do not have the required permissions to view the files attached to this post.
Server 3.2.1.0 (databas 2.5.5) på Win7; klient 3.1.0.0

Kjellberg
3 stars
3 stars
Posts: 173
Joined: Fri 17 Dec 2010, 17:36
Contact:

Re: Data Source Value Arithmetic Plugin

Post by Kjellberg » Tue 03 Feb 2015, 10:14

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
Tellstick duo, Switchking, Abell Security, EMC, WMR200.
Synology DS716+II
http://bote.se:8080 Powerd by EMC
http://bote.se/vader (WMR200) powerd by Cumulus MX

krambriw
4 stars
4 stars
Posts: 336
Joined: Thu 19 Jul 2012, 19:41

Re: Data Source Value Arithmetic Plugin

Post by krambriw » Tue 03 Feb 2015, 15:58

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 (%)

mesomorf
3 stars
3 stars
Posts: 70
Joined: Sat 11 Jun 2011, 19:31

Re: Data Source Value Arithmetic Plugin

Post by mesomorf » Tue 03 Feb 2015, 20:44

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.

tomas
Administrator
Administrator
Posts: 419
Joined: Tue 09 Nov 2010, 20:41

Re: Data Source Value Arithmetic Plugin

Post by tomas » Tue 03 Feb 2015, 20:58

@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).
Tomas | Switch King

mesomorf
3 stars
3 stars
Posts: 70
Joined: Sat 11 Jun 2011, 19:31

Re: Data Source Value Arithmetic Plugin

Post by mesomorf » Tue 03 Feb 2015, 21:47

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.

Kjellberg
3 stars
3 stars
Posts: 173
Joined: Fri 17 Dec 2010, 17:36
Contact:

Re: Data Source Value Arithmetic Plugin

Post by Kjellberg » Wed 04 Feb 2015, 07:53

@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
Tellstick duo, Switchking, Abell Security, EMC, WMR200.
Synology DS716+II
http://bote.se:8080 Powerd by EMC
http://bote.se/vader (WMR200) powerd by Cumulus MX

tomas
Administrator
Administrator
Posts: 419
Joined: Tue 09 Nov 2010, 20:41

Re: Data Source Value Arithmetic Plugin

Post by tomas » Wed 04 Feb 2015, 19:34

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.
Tomas | Switch King

Kjellberg
3 stars
3 stars
Posts: 173
Joined: Fri 17 Dec 2010, 17:36
Contact:

Re: Data Source Value Arithmetic Plugin

Post by Kjellberg » Fri 06 Feb 2015, 08:44

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:
Tellstick duo, Switchking, Abell Security, EMC, WMR200.
Synology DS716+II
http://bote.se:8080 Powerd by EMC
http://bote.se/vader (WMR200) powerd by Cumulus MX

Post Reply

Who is online

Users browsing this forum: No registered users and 11 guests