Page 1 of 1

Vad är felet? Python

Posted: Tue 22 Sep 2015, 11:58
by Brage
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)

Re: Vad är felet? Python

Posted: Tue 22 Sep 2015, 15:51
by krambriw
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

Re: Vad är felet? Python

Posted: Sun 27 Sep 2015, 10:09
by Brage
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...

Re: Vad är felet? Python

Posted: Sun 27 Sep 2015, 18:26
by krambriw
Hur ser händelserna ut som tex innehåller OffDelay.RV_Stairs_Off ???

Re: Vad är felet? Python

Posted: Mon 28 Sep 2015, 08:42
by Brage
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)

Re: Vad är felet? Python

Posted: Mon 28 Sep 2015, 19:20
by krambriw
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:

Re: Vad är felet? Python

Posted: Tue 29 Sep 2015, 06:30
by Brage
Kanon!!!! :)

Funkar klockrent!

Tack så mycket för hjälpen!