Event Listener

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
N3rox
1 star
1 star
Posts: 2
Joined: Sun 28 Nov 2010, 21:53

Event Listener

Post by N3rox » Mon 29 Nov 2010, 20:00

Hej,

Jag tänkte använda switch king tillsammans med min dovado router, för att både schema lägga och få en bra översikt samt att kunna smsa in för att styra lampor. Nu till problemet jag får inte switch king att kommunicera med min dovado router, har laddat ner något som kallas dovtelconcmd.exe för att få det att kommunicera med varandra, men får ingen respons alls. Är väldigt novis när det gäller programmering så vet inte riktigt hur jag ska gå till väga. Hittade på ett annat forum att jag kunde använda Nexahome tillsammans med följande commandon

Code: Select all

execFile("C:/apps/dovtelcon/DovTelConCmd.exe");
execParam("--host=RouterIP");
execParam("--pwd=Password");
if (deviceIsOn("10")) {
   execParam("--on=Device10");
} else {
   execParam("--off=Device10");
}
sparade i en .bsh fil som läggs tillsammans med nexahome.xml.
Men det får jag inte att fungera. Vill ju ha switch king, men vet inte hur jag ska gå tillväga.

Tack på förhand
Christopher

Martin
Administrator
Administrator
Posts: 2655
Joined: Tue 09 Nov 2010, 20:25

Re: Event Listener

Post by Martin » Mon 29 Nov 2010, 21:49

Efter att ha labbat lite har jag facit. :)
Beskriver steg för steg, även om du säkert gjort några av dessa redan.

1) Konfigurera Dovado
1.1) Skapa upp dina enheter i Dovado-routern via "Alias". Namnge dina alias till enkla namn utan åäö och mellanslag.
I mitt exempel hette min enhet jag skapade "Cylinderlampa".
1.2) Bekräfta att de fungerar när du skickar ett kommando direkt från routern.

2) Konfigurera Switch Kings enheter
2.1) Skapa de enheter du har i din Dovado-router även i Switch King. Namnet spelar ingen roll här, men kom ihåg namnet eftersom du behöver det senare.
Vilken typ av enhet spelar egentligen ingen roll, men det kan ju vara en bra idé att använda samma enhetstyp och kod som du har i Dovadon.
Om du har en sticka även i servern där du kör Switch King - välj enhetskoder som inte redan finns.
I mitt exempel hette min enhet jag skapade i Switch King "Cylinderlampa allrum".

3) DovTelConCmd
3.1) Hämta hem DovTelConCmd.
3.2) Lägg filen i katalogen C:\DovTelCon.

4) Konfigurera Event Listener (konsollapplikation)
4.1) Öppna konfigurationsfilen EvtConsole.exe.config.
4.2) Leta fram raden nedan och ändra till den IP-adress som datorn har där du kör Switch King Server.

Code: Select all

<add key="SwitchKingServerAddress" value="http://your_ip_here:8080/SwitchKingFrameworkServiceHost"/>
4.3) Leta fram raden nedan:

Code: Select all

<add deviceName="Cylinderlampa allrum" onScript="C:\temp\on.bat" onScriptArgs="Allrum" offScript="C:\temp\off.bat" offScriptArgs="Allrum" waitForExit="false" />
4.4) Justera den så att den ser ut som följer:

Code: Select all

<add deviceName="Cylinderlampa allrum" onScript="C:\DovTelCon\DovTelConCmd.exe" onScriptArgs="--host=192.168.101.1 --pwd=password --on=Cylinderlampa" offScript="C:\DovTelCon\DovTelConCmd.exe" offScriptArgs="--host=192.168.101.1 --pwd=password --off=Cylinderlampa" waitForExit="false" />
Observera att du måste byta ut följande för att få det att funka hos dig:
- host=192.168.101.1 - 192.168.101.1 måste bytas till din routers IP-adress
- pwd=password - password måste bytas till lösenordet i routern
- deviceName="Cylinderlampa allrum" - "Cylinderlampa allrum" måste bytas till namnet du gett enheten i Switch King
- on=Cylinderlampa - "Cylinderlampa" måste bytas till ditt alias på enheten i routern
- off=Cylinderlampa - "Cylinderlampa" måste bytas till ditt alias på enheten i routern

Skapa en ny rad liknande:

Code: Select all

<add deviceName="Cylinderlampa allrum" onScript="C:\DovTelCon\DovTelConCmd.exe" onScriptArgs="--host=192.168.101.1 --pwd=password --on=Cylinderlampa" offScript="C:\DovTelCon\DovTelConCmd.exe" offScriptArgs="--host=192.168.101.1 --pwd=password --off=Cylinderlampa" waitForExit="false" />
...för varje enhet du har i din router och i Switch King.

4.5) Justera svarstid
Leta eventuellt upp raden nedan:

Code: Select all

<add key="checkInterval" value="3500"/>
Ändra värdet till exempelvis 1000 för att få en snabbare respons från det att du klickar på "On" i Switch King tills att lampan tänds.

5) Starta
5.1) Starta EvtConsole.exe från en dosprompt.

När du bekräftat att allt fungerar kan du installera tjänsten istället så att du slipper köra via dosprompten.
Martin | Switch King

Martin
Administrator
Administrator
Posts: 2655
Joined: Tue 09 Nov 2010, 20:25

Re: Event Listener

Post by Martin » Mon 29 Nov 2010, 21:56

Bifogar en bild på hur det kan se ut i konsollfönstret när det skickas kommandon till Dovadon efter att en enhet tänts eller släckts i Switch King.
EventListenerScreen.png
You do not have the required permissions to view the files attached to this post.
Martin | Switch King

N3rox
1 star
1 star
Posts: 2
Joined: Sun 28 Nov 2010, 21:53

Re: Event Listener

Post by N3rox » Mon 29 Nov 2010, 22:09

Löste det, ersatte den redigerade filen med orginal och började om från början med att ändra koderna, och nu verkar det lira. Om man nu väljer och installera tjänsten eller vad man ska kalla det, och sedan vill lägga till fler enheter hur gör man då? Tackar

Martin
Administrator
Administrator
Posts: 2655
Joined: Tue 09 Nov 2010, 20:25

Re: Event Listener

Post by Martin » Mon 29 Nov 2010, 22:57

Lägg till en ny rad i konfigurationsfilen för varje ny enhet.
Starta om tjänsten efter ändring.

Konfigurationsfilen för tjänsten är utformad på samma sätt som för konsollapplikationen. Funkar det i en så bör det funka i den andra...
Martin | Switch King

pl1sk3n
2 stars
2 stars
Posts: 17
Joined: Sat 12 Mar 2011, 20:46

Re: Event Listener

Post by pl1sk3n » Sat 12 Mar 2011, 21:12

Hejsan,

Först av allt vill jag tacka er för ett utmärkt program :clap:

Nu till mitt problem; Har Dovado 4GR med senaste fw + tellstick i usb'n.
Vart glad då jag hittade denna tråd då jag tycker att dovados konf i routern är klart sämre än SK.
Fastnar dock på punkt 4, event listener, var hittar/får jag igång det?
Prova via cmd men den hitta inget...

Vet inte om detta är det bästa sättet men jag vill köra tellsticken i dovadon, bl.a för att slippa ha en dator igång.
Vore då kanon att kunna lägga upp allt i SK, enheter & scheman då det är mycket mer överskådligt.

Tack på förhand :wave:

Martin
Administrator
Administrator
Posts: 2655
Joined: Tue 09 Nov 2010, 20:25

Re: Event Listener

Post by Martin » Sat 12 Mar 2011, 21:24

Tack :)

Jag gissar dock att jag måste göra dig besviken... Det är nämligen inte möjligt att först lägga upp enheter, scheman etc i Switch King och därefter helt stänga av datorn om det är så att stickan sitter i Dovado-routern.
Switch Kings schemamotor, som är det som driver allt, finns ju på "en dator någonstans" och den måste antingen vara igång, eller vara satt i "sleep". En dator kommer du alltså inte ifrån...

Event Listener fanns tidigare som en applikation eller Windows-tjänst. Den kommunicerade med Switch King och kunde då se när en enhets status hade förändrats och därefter starta ett program eller liknande.

I och med att v0.9 av Switch King dök upp så omvandlades Event Listener till ett plugin till Switch King. Det gör det lite smidigare att hantera och ger en mycket bättre respons än den gamla metoden.
Den fick också ett nytt namn - "Switch King Script Executor" - och du hittar mer information om pluginen här:
http://www.switchking.se/sv/extensions
Martin | Switch King

pl1sk3n
2 stars
2 stars
Posts: 17
Joined: Sat 12 Mar 2011, 20:46

Re: Event Listener

Post by pl1sk3n » Sat 12 Mar 2011, 23:20

Tack för svaret Martin

Antar att datorn väcks från sleep mode per automatik när ett schema ska startas?

Ska hur som testa programmet i länken.

Tack igen :wave:

pl1sk3n
2 stars
2 stars
Posts: 17
Joined: Sat 12 Mar 2011, 20:46

Re: Event Listener

Post by pl1sk3n » Sun 13 Mar 2011, 10:44

Vet inte riktigt vad jag gör för fel, i win loggen får jag detta,

Loggnamn: Application
Källa: SwitchKingScriptExecutorPlugin
Datum: 2011-03-13 10:27:24
Händelse-ID: 0
Aktivitetskategori:Ingen
Nivå: Fel
Nyckelord: Klassiskt
Användare: Saknas
Dator: Kent-dator
Beskrivning:
Failed to read configuration item. Error: Det finns flera rotelement. Rad 35, position 2. (C:\Program Files\Switch King\Switch King Server\Plugins\ScriptExecutorPlugin.dll.config line 35)
Händelsens XML-data:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="SwitchKingScriptExecutorPlugin" />
<EventID Qualifiers="0">0</EventID>
<Level>2</Level>
<Task>0</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2011-03-13T09:27:24.000Z" />
<EventRecordID>7579</EventRecordID>
<Channel>Application</Channel>
<Computer>Kent-dator</Computer>
<Security />
</System>
<EventData>
<Data>Failed to read configuration item. Error: Det finns flera rotelement. Rad 35, position 2. (C:\Program Files\Switch King\Switch King Server\Plugins\ScriptExecutorPlugin.dll.config line 35)</Data>
</EventData>
</Event>

Så här ser mitt script ut med endast 1 mottagare & samma namn i Dovadon & Switchking, vrum1.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="switchKing.scriptExecutorPlugin" type="SwitchKing.Server.Plugins.ScriptExecutor.Configuration.ListenerSection, ScriptExecutorPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" allowDefinition="Everywhere" allowExeDefinition="MachineToApplication" restartOnExternalChanges="true" />
</configSections>
<switchKing.scriptExecutorPlugin name="Scripts">
<devices>
<!-- Use the tag below to set scripts and arguments for your devices. -->
<!-- Attributes as follows: -->
<!-- deviceName: The name of the device to trigger script for. Must be the same as set in Switch King Client. -->
<!-- onScript: The full path to the executable file to run when device is turned on. -->
<!-- onScriptArgs: Arguments passed to the executable file (example: arg1 and arg2): C:\temp\on.bat arg1 arg2 -->
<!-- offScript: The full path to the executable file to run when device is turned off. -->
<!-- offScriptArgs: Arguments passed to the executable file (example: arg1 and arg2): C:\temp\off.bat arg1 arg2 -->
<!-- dimScript: The full path to the executable file to run when device is dimmed. -->
<!-- use [level] or [dimlevel] in the file name to have different files when dimmed to different -->
<!-- levels, for example C:\temp\dim[level].bat, where level is the dim level in percent. -->
<!-- dimScriptArgs: Arguments passed to the executable file (example: arg1 and arg2): C:\temp\dim.bat arg1 arg2 -->
<!-- waitForExit: Waits for the script to fully execute before continuing the work. (true/false) -->
<add deviceName="Lekrum - Fönsterlampa"
onScript="C:\temp\on.bat" onScriptArgs="Allrum"
offScript="C:\temp\off.bat" offScriptArgs="Allrum"
dimScript="C:\temp\on[level].bat" dimScriptArgs="Allrum"
intercept="false"
waitForExit="false" />
<add deviceName="Köksskåp"
onScript="C:\temp\on.bat" onScriptArgs="Allrum"
offScript="C:\temp\off.bat" offScriptArgs="Allrum"
intercept="true"
waitForExit="false" />
</devices>
</switchKing.scriptExecutorPlugin>
</configuration>

<add
deviceName="vrum1"
onScript="C:\temp\on.bat" onScriptArgs="vrum1"
offScript="C:\temp\off.bat" offScriptArgs="vrum1"
dimScript="C:\temp\on[60].bat" dimScriptArgs="vrum1"
intercept="false"
waitForExit="false" />

Behöver :help: med detta, har ingen anning om var mina körbara filer ligger.
Kopierade därför i mångt & mycket texten i guiden för pluginet.

Tack på förhand :wave:

Martin
Administrator
Administrator
Posts: 2655
Joined: Tue 09 Nov 2010, 20:25

Re: Event Listener

Post by Martin » Sun 13 Mar 2011, 13:03

Den här delen spökar...

Code: Select all

<add
     deviceName="vrum1"
     onScript="C:\temp\on.bat" onScriptArgs="vrum1"
     offScript="C:\temp\off.bat" offScriptArgs="vrum1"
     dimScript="C:\temp\on[60].bat" dimScriptArgs="vrum1"
     intercept="false"
     waitForExit="false" />
Den måste in istället för de andra två enheterna (eller om de två ska tas bort), inte som nu - sist i filen.

Code: Select all

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
     <configSections>
          <section name="switchKing.scriptExecutorPlugin" type="SwitchKing.Server.Plugins.ScriptExecutor.Configuration.ListenerSection, ScriptExecutorPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" allowDefinition="Everywhere" allowExeDefinition="MachineToApplication" restartOnExternalChanges="true" />
     </configSections>
     <switchKing.scriptExecutorPlugin name="Scripts">
          <devices>
               <!-- Use the tag below to set scripts and arguments for your devices. -->
               <!-- Attributes as follows: -->
               <!-- deviceName: The name of the device to trigger script for. Must be the same as set in Switch King Client. -->
               <!-- onScript: The full path to the executable file to run when device is turned on. -->
               <!-- onScriptArgs: Arguments passed to the executable file (example: arg1 and arg2): C:\temp\on.bat arg1 arg2 -->
               <!-- offScript: The full path to the executable file to run when device is turned off. -->
               <!-- offScriptArgs: Arguments passed to the executable file (example: arg1 and arg2): C:\temp\off.bat arg1 arg2 -->
               <!-- dimScript: The full path to the executable file to run when device is dimmed. -->
               <!-- use [level] or [dimlevel] in the file name to have different files when dimmed to different -->
               <!-- levels, for example C:\temp\dim[level].bat, where level is the dim level in percent. -->
               <!-- dimScriptArgs: Arguments passed to the executable file (example: arg1 and arg2): C:\temp\dim.bat arg1 arg2 -->
               <!-- waitForExit: Waits for the script to fully execute before continuing the work. (true/false) -->
               <add
                    deviceName="vrum1"
                    onScript="C:\temp\on.bat" onScriptArgs="vrum1"
                    offScript="C:\temp\off.bat" offScriptArgs="vrum1"
                    dimScript="C:\temp\on[60].bat" dimScriptArgs="vrum1"
                    intercept="false"
                    waitForExit="false" />
          </devices>
     </switchKing.scriptExecutorPlugin>
</configuration>
Tänk också på att byta ut "on[60]" mot "on[level]" ovan, annars kommer det inte att rulla. Vid 10% dimnivå körs då "on10.bat", vid 20% körs "on20.bat" etc...
Martin | Switch King

Post Reply

Who is online

Users browsing this forum: No registered users and 5 guests