Vad är felet? Python

Hjälp med plugins, tillägg (exempelvis webbtillägget) och exempelkod som inte ingår i Switch Kings officiella installationspaket
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
Post Reply
Brage
2 stars
2 stars
Posts: 30
Joined: Tue 06 Aug 2013, 15:10

Vad är felet? Python

Post by Brage » Tue 22 Sep 2015, 11:58

Hallå gott folk!
Har suttit och knåpat lite med ett Pythonscript. Får inte detta att fungera. När samtliga värden är enligt mitt script så fär jag ändå inte mitt resultat att bli aktivt. Kan inte förstå varför...?

Code: Select all

try:
    dummy
    #print systemState
except NameError:
    dummy = 0
    systemState = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] #initierar status för datakällorna

#sätter status för datakällorna 
if eg.event.string.find('house:13619034;unit:10;group:0;method:turnon')>0:
    systemState[0] = 1 #RV Trappa
if eg.event.string.find('house:13619034;unit:10;group:0;method:turnoff')>0:
    systemState[0] = 0 #RV Trappa
if eg.event.string.find('house:13619034;unit:10;group:0;method:turnon')>0:
    systemState[1] = 1 #RV Trappa
if eg.event.string.find('OffDelay.RV_Stairs_Off')>0:
    systemState[1] = 0 #RV Trappa
if eg.event.string.find('house:15137702;unit:10;group:0;method:turnon')>0:
    systemState[2] = 1 #RV Kök
if eg.event.string.find('house:15137702;unit:10;group:0;method:turnoff')>0:
    systemState[2] = 0 #RV Kök
if eg.event.string.find('house:15137702;unit:10;group:0;method:turnon')>0:
    systemState[3] = 1 #RV Kök
if eg.event.string.find('OffDelay.RV_Kitchen_Off')>0:
    systemState[3] = 0 #RV Kök
if eg.event.string.find('house:15663946;unit:10;group:0;method:turnon')>0:
    systemState[4] = 1 #RV Vardagsrum
if eg.event.string.find('house:15663946;unit:10;group:0;method:turnoff')>0:
    systemState[4] = 0 #RV Vardagsrum
if eg.event.string.find('house:15663946;unit:10;group:0;method:turnon')>0:
    systemState[5] = 1 #RV Vardagsrum
if eg.event.string.find('OffDelay.RV_Livingroom_Off')>0:
    systemState[5] = 0 #RV Vardagsrum
if eg.event.string.find('house:15281850;unit:10;group:0;method:turnon')>0:
    systemState[6] = 1 #RV Toalett
if eg.event.string.find('house:15281850;unit:10;group:0;method:turnoff')>0:
    systemState[6] = 0 #RV Toalett
if eg.event.string.find('house:15281850;unit:10;group:0;method:turnon')>0:
    systemState[7] = 1 #RV Toalett
if eg.event.string.find('OffDelay.RV_Toilet_Off')>0:
    systemState[7] = 0 #RV Toalett
if eg.event.string.find('house:13545650;unit:2;group:0;method:turnon')>0:
    systemState[8] = 1 #LARM
if eg.event.string.find('house:13545650;unit:2;group:0;method:turnoff')>0:
    systemState[8] = 0 #LARM
if eg.event.string.find('OnDelay.Larm_On')>0:
    systemState[9] = 1 #LARM EG
if eg.event.string.find('OffDelay.Larm_Off')>0:
    systemState[9] = 0 #LARM EG
if eg.event.string.find('house:15630902;unit:10;group:0;method:turnon')>0:
    systemState[10] = 1 #SOVRUMSDÖRR
if eg.event.string.find('house:15630902;unit:10;group:0;method:turnoff')>0:
    systemState[10] = 0 #SOVRUMSDÖRR
if eg.event.string.find('OnDelay.Door_Open')>0:
    systemState[11] = 1 #SOVRUMSDÖRR
if eg.event.string.find('OffDelay.Door_Closed')>0:
    systemState[11] = 0 #SOVRUMSDÖRR
if eg.event.string.find('house:14394510;unit:1;group:0;method:turnon')>0:
    systemState[12] = 1 #LABB1
if eg.event.string.find('house:14394510;unit:1;group:0;method:turnoff')>0:
    systemState[12] = 0 #LABB1
#utvärderar systemstatus och sätter datakälla i SK
#print systemState
#systemState[0] == 0 and systemState[1] == 0 and systemState[2] == 0 and systemState[3] == 0 and 

if ((systemState[0] == 0 and systemState[1] == 0) and (systemState[2] == 0 and systemState[3] == 0) and (systemState[4] == 0 and systemState[5] == 0) and (systemState[6] == 0 and systemState[7] == 0) and (systemState[8] == 1 and systemState[9] == 0) and (systemState[10] == 1 and systemState[11] == 1)):
   eg.plugins.SwitchkingTellStick.DSSet(u'Scenario BORTA: TurnOn', u'Scenario BORTA', u'TurnOn', 0)
if (systemState[8] == 0):
   eg.plugins.SwitchkingTellStick.DSSet(u'Scenario BORTA: TurnOff', u'Scenario BORTA', u'TurnOff', 0)

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

Re: Vad är felet? Python

Post by krambriw » Tue 22 Sep 2015, 15:51

Svårt att säga på rak arm.

Vad är det som inte funkar!??

Ta bort kommentaren framför printsatsen så att systemstate skrivs ut varje gång skriptet körs, kolla då hur statusarna är

Brage
2 stars
2 stars
Posts: 30
Joined: Tue 06 Aug 2013, 15:10

Re: Vad är felet? Python

Post by Brage » Sun 27 Sep 2015, 10:09

Hallå!
Får det att fungera till viss del.
Om jag skalar ner hela scriptet, alltså börjar med en systemstate i taget. Det som verkar ställa till det är när jag använder en systemsate där jag har sk ON/OFF delay. Exv systemsatate 1. Jag får upp händelsen i loggen men jag får inget aktivt resultat...

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

Re: Vad är felet? Python

Post by krambriw » Sun 27 Sep 2015, 18:26

Hur ser händelserna ut som tex innehåller OffDelay.RV_Stairs_Off ???

Brage
2 stars
2 stars
Posts: 30
Joined: Tue 06 Aug 2013, 15:10

Re: Vad är felet? Python

Post by Brage » Mon 28 Sep 2015, 08:42

Gjorde ett mindre script... men med samma problem. Det är uppenbarligen dom timerstyrda händelserna som inte lirar mot scriptet...
När systemstate 1 blir aktivt så sätts inte Scenario MORGON aktivt... Använder jag mig av systemstate 0 istället så fungerar det...
Systemstate 0 är rörelsevaktens värde. Systemstate 2 är bara en knapp för att kunna nolla värdet på scenariot.

Code: Select all

try:
    dummy
    #print systemState
except NameError:
    dummy = 0
    systemState = [0, 0, 0] #initierar status för datakällorna

#sätter status för datakällorna 
if eg.event.string.find('house:15663946;unit:10;group:0;method:turnon')>0:
    systemState[0] = 1
if eg.event.string.find('house:15663946;unit:10;group:0;method:turnoff')>0:
    systemState[0] = 0
if eg.event.string.find('OnDelay.RV_Livingroom_On')>0:
    systemState[1] = 1
if eg.event.string.find('OffDelay.RV_Livingroom_Off')>0:
    systemState[1] = 0
if eg.event.string.find('house:14394510;unit:1;group:0;method:turnon')>0:
    systemState[2] = 1
if eg.event.string.find('house:14394510;unit:1;group:0;method:turnoff')>0:
    systemState[2] = 0
#utvärderar systemstatus och sätter datakälla i SK
#print systemState

if (systemState[1] == 1):
   eg.plugins.SwitchkingTellStick.DSSet(u'Scenario MORGON: TurnOn', u'Scenario MORGON', u'TurnOn', 0)
if (systemState[2] == 1):
   eg.plugins.SwitchkingTellStick.DSSet(u'Scenario MORGON: TurnOff', u'Scenario MORGON', u'TurnOff', 0)
You do not have the required permissions to view the files attached to this post.

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

Re: Vad är felet? Python

Post by krambriw » Mon 28 Sep 2015, 19:20

Vet inte om det löser alla problem men jag har hittat några fel i din skriptkod

Felet ligger i raderna som ser ut så här:

Code: Select all

if eg.event.string.find('OffDelay.RV_Stairs_Off')>0:
if eg.event.string.find('OffDelay.RV_Kitchen_Off')>0:
if eg.event.string.find('OffDelay.RV_Livingroom_Off')>0:
if eg.event.string.find('OffDelay.RV_Toilet_Off')>0:
if eg.event.string.find('OnDelay.Larm_On')>0:
if eg.event.string.find('OffDelay.Larm_Off')>0:
if eg.event.string.find('OnDelay.Door_Open')>0:
if eg.event.string.find('OffDelay.Door_Closed')>0:
Troligtvis kommer villkoren aldrig att uppfyllas eftersom koden hittar strängen just i position 0 (och vi testar ju på >0)
Ändra dessa rader till följande och testa om det blev bättre

Code: Select all

if eg.event.string.find('OffDelay.RV_Stairs_Off')>-1:
if eg.event.string.find('OffDelay.RV_Kitchen_Off')>-1:
if eg.event.string.find('OffDelay.RV_Livingroom_Off')>-1:
if eg.event.string.find('OffDelay.RV_Toilet_Off')>-1:
if eg.event.string.find('OnDelay.Larm_On')>-1:
if eg.event.string.find('OffDelay.Larm_Off')>-1:
if eg.event.string.find('OnDelay.Door_Open')>-1:
if eg.event.string.find('OffDelay.Door_Closed')>-1:

Brage
2 stars
2 stars
Posts: 30
Joined: Tue 06 Aug 2013, 15:10

Re: Vad är felet? Python

Post by Brage » Tue 29 Sep 2015, 06:30

Kanon!!!! :)

Funkar klockrent!

Tack så mycket för hjälpen!

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest