Logiskt Plugin
Posted: Mon 01 Oct 2012, 14:04
Hej,
Undrar om det finns något intresse för ett plugin som möjliggör beräknande av logiska funktioner utifrån enheters och datakällors status? Det kan även räkna decimala värden. (I framtiden har jag planer på att oxå kunna hantera datum och tid vilket skulle kunna ge möjlighet för olika typer av timer-funktionaliteter.) men...
Jag jobbar på ett första utkast, eller snarare en conceptlösning, av ett plugin som tänks klara:
- beräkna en enhets status utifrån logiska samband för andra enheter och datakällor, klarar AND,OR,XOR,NAND,NOR,XNOR,NOT
- använda variabler som består av egna logiska samband
- parallell-koppla, tex trappa eller korridor, och serie-koppla, tex huvudbrytare och sensor
- tända en enhet en viss tid, kan vara beräknad, från tillslag
- beräkna decimala värden utifrån en eller flera datakällor, klarar +,-,*,/
- göra tabelluppslagning för mer komplicerade decimala funktioner
- göra tabelluppslagning av sträng-värden, tex TurnOn->Öppen(magnetbrytare för dörr)
- spara värden till fil
- återmata beräknade enheters status till SK via REST-anrop
All konfiguration sker via xml-filer, tex:
<?xml version="1.0" encoding="utf-8"?>
<!-- <=< >=> &=& -->
<Plugin Version="0.0.0.1">
<Definitions>
<Target>
<Name>D19</Name>
<Type>Object</Type>
<Formula>S12&&Trappbrytare</Formula>
</Target>
<Variable>
<Name>Trappbrytare</Name>
<Type>Object</Type>
<Formula>S21||S36</Formula>
</Variable>
</Definitions>
</Plugin>
där
- D19 är Device IDnr:19 och S12, S21 och S36 är dataSource med respektive IDnr från SK
- Trappbrytare är en variabel
- (& = &), && = AND, || = OR
som blir funktionen "D19 = S12 AND (S21 OR S36)" vilket skulle kunna vara att:
"Lampan(D19) är tänd" om "huvudbrytaren(S12) är på" och att "sensor(S21) eller sensor(S36) är på"
eller
<?xml version="1.0" encoding="utf-8"?>
<!-- <:< >:> &:& -->
<Plugin Version="0.0.0.1">
<Definitions>
<Target>
<Name>S27</Name>
<Type>Decimal</Type>
<Formula>S25?L1+S26</Formula>
</Target>
<LookUpTable>
<Name>L1</Name>
<Type>Decimal</Type>
<File>C:\Program Files (x86)\Switch King\Switch King Server\Plugins\L1.xml</File>
</LookUpTable>
</Definitions>
</Plugin>
som blir "S27 = f(S25)'tabelluppslag från fil L1.xml' + S26"
Intresserad?
/Göran
Undrar om det finns något intresse för ett plugin som möjliggör beräknande av logiska funktioner utifrån enheters och datakällors status? Det kan även räkna decimala värden. (I framtiden har jag planer på att oxå kunna hantera datum och tid vilket skulle kunna ge möjlighet för olika typer av timer-funktionaliteter.) men...
Jag jobbar på ett första utkast, eller snarare en conceptlösning, av ett plugin som tänks klara:
- beräkna en enhets status utifrån logiska samband för andra enheter och datakällor, klarar AND,OR,XOR,NAND,NOR,XNOR,NOT
- använda variabler som består av egna logiska samband
- parallell-koppla, tex trappa eller korridor, och serie-koppla, tex huvudbrytare och sensor
- tända en enhet en viss tid, kan vara beräknad, från tillslag
- beräkna decimala värden utifrån en eller flera datakällor, klarar +,-,*,/
- göra tabelluppslagning för mer komplicerade decimala funktioner
- göra tabelluppslagning av sträng-värden, tex TurnOn->Öppen(magnetbrytare för dörr)
- spara värden till fil
- återmata beräknade enheters status till SK via REST-anrop
All konfiguration sker via xml-filer, tex:
<?xml version="1.0" encoding="utf-8"?>
<!-- <=< >=> &=& -->
<Plugin Version="0.0.0.1">
<Definitions>
<Target>
<Name>D19</Name>
<Type>Object</Type>
<Formula>S12&&Trappbrytare</Formula>
</Target>
<Variable>
<Name>Trappbrytare</Name>
<Type>Object</Type>
<Formula>S21||S36</Formula>
</Variable>
</Definitions>
</Plugin>
där
- D19 är Device IDnr:19 och S12, S21 och S36 är dataSource med respektive IDnr från SK
- Trappbrytare är en variabel
- (& = &), && = AND, || = OR
som blir funktionen "D19 = S12 AND (S21 OR S36)" vilket skulle kunna vara att:
"Lampan(D19) är tänd" om "huvudbrytaren(S12) är på" och att "sensor(S21) eller sensor(S36) är på"
eller
<?xml version="1.0" encoding="utf-8"?>
<!-- <:< >:> &:& -->
<Plugin Version="0.0.0.1">
<Definitions>
<Target>
<Name>S27</Name>
<Type>Decimal</Type>
<Formula>S25?L1+S26</Formula>
</Target>
<LookUpTable>
<Name>L1</Name>
<Type>Decimal</Type>
<File>C:\Program Files (x86)\Switch King\Switch King Server\Plugins\L1.xml</File>
</LookUpTable>
</Definitions>
</Plugin>
som blir "S27 = f(S25)'tabelluppslag från fil L1.xml' + S26"
Intresserad?
/Göran