Logisk programmering... HJÄLP!!!
Forum rules
För att kunna hjälpa dig med supportfrågor behöver vi så mycket information som möjligt.
Innan du skapar en ny tråd, läs gärna:
viewtopic.php?f=10&t=20
För att kunna hjälpa dig med supportfrågor behöver vi så mycket information som möjligt.
Innan du skapar en ny tråd, läs gärna:
viewtopic.php?f=10&t=20
-
- 2 stars
- Posts: 33
- Joined: Tue 06 Aug 2013, 15:10
Logisk programmering... HJÄLP!!!
Hej på er!
Sitter och klurar på ett problem...
Söker en funktion där jag kan sammanställa flera olika datakällor i en logik, för att sedan ta summan av denna logik och sätta till en virtuell data källa.
Exv
Dk1 OCH Dk2
ELLER
Dk3 OCH Dk4
ska vara aktiva
resultatet ska sättas till min virtuella datakälla.
I ren logik motsvarar ju detta AND OR NOT NAND NOR osv
Har letat pluggar till EG utan resultat och misstänker att detta måste lösas genom ett rent Pythonscript.
Ser någon en enkel lösning på detta eller rent av kan hjälpa mig med ett script skulle jag vara mer än tacksam!!!
Sitter och klurar på ett problem...
Söker en funktion där jag kan sammanställa flera olika datakällor i en logik, för att sedan ta summan av denna logik och sätta till en virtuell data källa.
Exv
Dk1 OCH Dk2
ELLER
Dk3 OCH Dk4
ska vara aktiva
resultatet ska sättas till min virtuella datakälla.
I ren logik motsvarar ju detta AND OR NOT NAND NOR osv
Har letat pluggar till EG utan resultat och misstänker att detta måste lösas genom ett rent Pythonscript.
Ser någon en enkel lösning på detta eller rent av kan hjälpa mig med ett script skulle jag vara mer än tacksam!!!
-
- 5 stars
- Posts: 637
- Joined: Tue 09 Nov 2010, 21:51
- Location: Västervik
Re: Logisk programmering... HJÄLP!!!
Beyondmeasure.se med BM kan du enkelt grafiskt koppla trådar och skapa just den logiken du söker. Finns sedan möjlighet att från BM skicka data till SK.
-
- 2 stars
- Posts: 33
- Joined: Tue 06 Aug 2013, 15:10
Re: Logisk programmering... HJÄLP!!!
Lysande!!!
Tackar för hjälpen!
Tackar för hjälpen!
-
- 4 stars
- Posts: 336
- Joined: Thu 19 Jul 2012, 19:41
Re: Logisk programmering... HJÄLP!!!
Går säkert bra med BM
Här är ett python script exempel för EventGhost
Principen:
- vi antar att det finns fem datakällor, Dk1 - Dk4 samt Vk1, definierade i SK och att dom kan ha värdena 1 eller 0
- vi antar vidare att vi skall sätta datakällan Vk1 i SK till 1 eller 0 beroende på olika kombinationer av värdena på Dk1 - Dk4
I EG skapar vi nu ett python script som
a) håller de enskilda datakällornas (Dk1 - Dk4) värden i en vektor (eller lista som det heter i python)
b) fångar in händelser för när dessa datakällor ändrar värde
c) utvärderar de olika kombinationerna och sätter korrekt värde för datakälla Vk1
Konfigurationen i EG:
- det behövs ett makro enligt följande exempel för att fånga in händelserna och köra python scriptet för utvärderingen
- jag skapade ytterligare ett makro för att kunna simulera/sätta värdena i datakällorna manuellt (detta ersätts förmodligen av någon annan mera intelligent metod)
När de olika datakällorna ändrar värde körs scriptet och när/om (Dk1 och Dk2 båda är 1) eller (Dk3 och Dk4 båda är 1) sätts Vk1 till 1, annars till 0
mvh
PS i koden nedan måste naturligtvis namnen på datakällorna korrigeras om dessa inte stämmer
Här är ett python script exempel för EventGhost
Principen:
- vi antar att det finns fem datakällor, Dk1 - Dk4 samt Vk1, definierade i SK och att dom kan ha värdena 1 eller 0
- vi antar vidare att vi skall sätta datakällan Vk1 i SK till 1 eller 0 beroende på olika kombinationer av värdena på Dk1 - Dk4
I EG skapar vi nu ett python script som
a) håller de enskilda datakällornas (Dk1 - Dk4) värden i en vektor (eller lista som det heter i python)
b) fångar in händelser för när dessa datakällor ändrar värde
c) utvärderar de olika kombinationerna och sätter korrekt värde för datakälla Vk1
Konfigurationen i EG:
- det behövs ett makro enligt följande exempel för att fånga in händelserna och köra python scriptet för utvärderingen
- jag skapade ytterligare ett makro för att kunna simulera/sätta värdena i datakällorna manuellt (detta ersätts förmodligen av någon annan mera intelligent metod)
När de olika datakällorna ändrar värde körs scriptet och när/om (Dk1 och Dk2 båda är 1) eller (Dk3 och Dk4 båda är 1) sätts Vk1 till 1, annars till 0
mvh
PS i koden nedan måste naturligtvis namnen på datakällorna korrigeras om dessa inte stämmer
Code: Select all
try:
dummy
#print systemState
except NameError:
dummy = 0
systemState = [0, 0, 0, 0] #initierar status för datakällorna Dk1 -Dk4
#sätter status för datakällorna
if eg.event.string.find('DataSource.Dk1')>0:
if int(eg.event.payload[0]) > 0:
systemState[0] = 1
if int(eg.event.payload[0]) == 0:
systemState[0] = 0
if eg.event.string.find('DataSource.Dk2')>0:
if int(eg.event.payload[0]) > 0:
systemState[1] = 1
if int(eg.event.payload[0]) == 0:
systemState[1] = 0
if eg.event.string.find('DataSource.Dk3')>0:
if int(eg.event.payload[0]) > 0:
systemState[2] = 1
if int(eg.event.payload[0]) == 0:
systemState[2] = 0
if eg.event.string.find('DataSource.Dk4')>0:
if int(eg.event.payload[0]) > 0:
systemState[3] = 1
if int(eg.event.payload[0]) == 0:
systemState[3] = 0
#utvärderar systemstatus och sätter virtuell datakälla i SK
print systemState
if (systemState[0] == 1 and systemState[1] == 1) or (systemState[2] == 1 and systemState[3] == 1):
eg.plugins.SwitchkingTellStick.DSSet(u'Vk1: 1', u'Vk1', u'1', 4)
else:
eg.plugins.SwitchkingTellStick.DSSet(u'Vk1: 1', u'Vk1', u'0', 4)
You do not have the required permissions to view the files attached to this post.
-
- 2 stars
- Posts: 33
- Joined: Tue 06 Aug 2013, 15:10
Re: Logisk programmering... HJÄLP!!!
1000 tack!
Blev lite väl avanserat med förgående progg.
Min enda fundering är bara hur koden ska se ut om jag använder mig av värden som motsvarar TurnOn samt TurnOff istället för 1 och 0?
Blev lite väl avanserat med förgående progg.
Min enda fundering är bara hur koden ska se ut om jag använder mig av värden som motsvarar TurnOn samt TurnOff istället för 1 och 0?
-
- 4 stars
- Posts: 336
- Joined: Thu 19 Jul 2012, 19:41
Re: Logisk programmering... HJÄLP!!!
Jag behöver veta formatet på dina inkommande händelser för Dk1 - Dk4 som du vill använda i logiken, är det dom som är TurnOn respektive TurnOff? Vill du att också Vk1 skall få värdet TurnOn respektive TurnOff?
Om jag har fattat rätt så kan skriptet se ut som nedan
mvh
Om jag har fattat rätt så kan skriptet se ut som nedan
mvh
Code: Select all
try:
dummy
#print systemState
except NameError:
dummy = 0
systemState = [0, 0, 0, 0] #initierar status för datakällorna Dk1 -Dk4
#sätter status för datakällorna
if eg.event.string.find('DataSource.Dk1')>0:
if eg.event.payload == 'TurnOn':
systemState[0] = 1
if eg.event.payload == 'TurnOff':
systemState[0] = 0
if eg.event.string.find('DataSource.Dk2')>0:
if eg.event.payload == 'TurnOn':
systemState[1] = 1
if eg.event.payload == 'TurnOff':
systemState[1] = 0
if eg.event.string.find('DataSource.Dk3')>0:
if eg.event.payload == 'TurnOn':
systemState[2] = 1
if eg.event.payload == 'TurnOff':
systemState[2] = 0
if eg.event.string.find('DataSource.Dk4')>0:
if eg.event.payload == 'TurnOn':
systemState[3] = 1
if eg.event.payload == 'TurnOff':
systemState[3] = 0
#utvärderar systemstatus och sätter virtuell datakälla i SK
#print systemState
if (systemState[0] == 1 and systemState[1] == 1) or (systemState[2] == 1 and systemState[3] == 1):
eg.plugins.SwitchkingTellStick.DSSet(u'Vk1: 1', u'Vk1', u'TurnOn', 4)
else:
eg.plugins.SwitchkingTellStick.DSSet(u'Vk1: 1', u'Vk1', u'TurnOff', 4)
-
- 2 stars
- Posts: 33
- Joined: Tue 06 Aug 2013, 15:10
Re: Logisk programmering... HJÄLP!!!
Japp, mina virtuella dk skall ha värdet TurnOn resp TurnOff
Såhär ser en datakälla ut:
TellStickDuo.RawEvent: class:command;protocol:arctech;model:selflearning;house:14394510;unit:1;group:0;method:turnon;Duo_ID:3
Ex på hur en av mina virtuella datakällor ser ut:
Switchking.DataSource.TEST.REST 'TurnOn'
Såhär ser en datakälla ut:
TellStickDuo.RawEvent: class:command;protocol:arctech;model:selflearning;house:14394510;unit:1;group:0;method:turnon;Duo_ID:3
Ex på hur en av mina virtuella datakällor ser ut:
Switchking.DataSource.TEST.REST 'TurnOn'
-
- 2 stars
- Posts: 33
- Joined: Tue 06 Aug 2013, 15:10
Re: Logisk programmering... HJÄLP!!!
En prt sc
You do not have the required permissions to view the files attached to this post.
-
- 4 stars
- Posts: 336
- Joined: Thu 19 Jul 2012, 19:41
Re: Logisk programmering... HJÄLP!!!
Det blev lite rörigt det här....
Det här är ingen händelse från en ändring av datakälla i SK, det är ett event direkt ifrån TellStickDuo pluginnen i EG. Är det dom du vill använda i logiken för att sätta din datakälla 'TEST REST' i SK? I sådana fall måste naturligtvis python scriptet anpassas för detta.Såhär ser en datakälla ut:
TellStickDuo.RawEvent: class:command;protocol:arctech;model:selflearning;house:14394510;unit:1;group:0;method:turnon;Duo_ID:3
-
- 2 stars
- Posts: 33
- Joined: Tue 06 Aug 2013, 15:10
Re: Logisk programmering... HJÄLP!!!
Hmmm.... Är som sagt rätt rudisk vad gäller detta... Ber om ursäkt för luddig info.
Är som du säger att jag vill använda mig av dessa event för att sedan sätta mitt värde på min datakälla.
Är som du säger att jag vill använda mig av dessa event för att sedan sätta mitt värde på min datakälla.
Who is online
Users browsing this forum: No registered users and 11 guests