Page 1 of 1

Logiskt Plugin

Posted: Mon 01 Oct 2012, 14:04
by gorhak
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

Re: Logiskt Plugin

Posted: Mon 01 Oct 2012, 14:13
by Isaksson
Tycker jag låter intressant. :wave:

Re: Logiskt Plugin

Posted: Thu 04 Oct 2012, 06:28
by Martin75a
Låter helt klart intressant. :D

mvh
Martin

Re: Logiskt Plugin

Posted: Wed 14 Nov 2012, 12:04
by albinsson
Mycket mycket intressant :D

Jag svarade just i din andra tråd gällande att justera värden på mina termometrar som visar olika fel vid olika temp.

Men det här ser nästan lite bättre ut =)

Då kan jag justera med nåt liknande som nedan (obs, det är en "tasker" logik men basen är väl densamme. Att man har variabler,add,if osv):

Variable set "%rawtemp" to "avlästvärde" (Vi tar en in-temperatur som 70grader som exempel)

Variable set "%temprange" to "0" IF "%rawtemp" >0
Variable set "%temprange" to "1" IF "%rawtemp" >10
Variable set "%temprange" to "2" IF "%rawtemp" >20
Variable set "%temprange" to "3" IF "%rawtemp" >30
Variable set "%temprange" to "4" IF "%rawtemp" >40
Variable set "%temprange" to "5" IF "%rawtemp" >50
Variable set "%temprange" to "6" IF "%rawtemp" >60 (i exempelfallet 70grader skuller variabeln %temprange=6 (mer än 60 men
Variable set "%temprange" to "7" IF "%rawtemp" >70 inte mer än 70)
Variable set "%temprange" to "8" IF "%rawtemp" >80
Variable set "%temprange" to "9" IF "%rawtemp" >90

variable set "%modifiedtemp" to "%rawtemp+2" IF "%tempgrade" MATCHES 0
variable set "%modifiedtemp" to "%rawtemp+4" IF "%tempgrade" MATCHES 1
variable set "%modifiedtemp" to "%rawtemp+4" IF "%tempgrade" MATCHES 2
variable set "%modifiedtemp" to "%rawtemp+5" IF "%tempgrade" MATCHES 3
variable set "%modifiedtemp" to "%rawtemp+6" IF "%tempgrade" MATCHES 4
variable set "%modifiedtemp" to "%rawtemp+6" IF "%tempgrade" MATCHES 5
variable set "%modifiedtemp" to "%rawtemp+9" IF "%tempgrade" MATCHES 6 ------(i exempelfallet skulle tempraturen justeras med
variable set "%modifiedtemp" to "%rawtemp+10" IF "%tempgrade" MATCHES 7 --------------------9 grader)
variable set "%modifiedtemp" to "%rawtemp+14" IF "%tempgrade" MATCHES 8
variable set "%modifiedtemp" to "%rawtemp+14" IF "%tempgrade" MATCHES 9

Logiskt Plugin

Posted: Wed 14 Nov 2012, 13:48
by gorhak
Det ser fullt möjligt ut att kunna beräknas med detta Plugin. Mina testversioner kör jag på en gammal laptop från 2001, och den har inga problem med att orka med. Så en RPi borde oxå klara av detta såvida mono stödjer XML.
Det enda kruxet är att jag ska få till en första levererar version.
/Göran

Sv: Re: Logiskt Plugin

Posted: Wed 14 Nov 2012, 19:43
by albinsson
gorhak wrote:Det ser fullt möjligt ut att kunna beräknas med detta Plugin. Mina testversioner kör jag på en gammal laptop från 2001, och den har inga problem med att orka med. Så en RPi borde oxå klara av detta såvida mono stödjer XML.
Det enda kruxet är att jag ska få till en första levererar version.
/Göran
Låter spännande!

Största problemet med RPi nu verkar vara att mono bara fungerar för armel (soft float), och inte för armhf ( hard float).. Men det är lite off topic :-)
Jag ser fram emot att testa ditt plugin på min win 7 server så länge!

Skickat från min GT-I9300 via Tapatalk 2

Re: Logiskt Plugin

Posted: Tue 04 Dec 2012, 12:56
by fredrik78
När kommer en fungerande version? Verkar väldigt intressant detta! :D

Re: Logiskt Plugin

Posted: Fri 04 Jan 2013, 15:18
by albinsson
fredrik78 wrote:När kommer en fungerande version? Verkar väldigt intressant detta! :D
+1 på det :D :D :D

Re: Logiskt Plugin

Posted: Tue 16 Apr 2013, 20:49
by claes_hellgren
När kommer en fungerande version? Är väldigt intresserad av den...