NexaHome
Denna manual är inte riktigt färdig ännu... den blev senast uppdaterad 12 feb 2011.
1. Beskrivning
1.1 Skärmdumpar
1.1.1 Freeware
1.1.2 Devices/Events
1.1.3 Queue
1.1.4 Web
1.1.5 Config
1.1.6 "Home Automation" websidor
Standard
Egendefinierad
1.1.7 Android Market
NexaHome Web Browser
NexaHome Big Brother
1.2 Telldus TellStick
1.3 Nexa fjärrströmbrytare
2. Grafiskt användargränssnitt
2.1 Tabeller
2.1.1 Devices/Groups
2.1.2 Events
2.1.3 Queue
2.2 Webserver
3. Konfiguration
3.1 Ändring av mottagares namn
3.2 Inmatning av klockslag
3.2.1 Cmd Group
3.3 Funktioner
3.3.1 sunlight
3.3.2 sunrise, sunset
Exempel
3.3.3 sensor
Motorvärmarfunktion
3.3.4 xx% y-z min
3.4 Grupper av mottagare
3.5 Mode
3.6 Repeat
3.7 IR mottagare
3.8 Extender
3.9 Remote
3.10 Webserver
3.10.1 Lösenord
3.10.2 Device Status
Avläsning
Uppdatering
3.10.3 Konsol fönster
3.10.4 Definition av egen hemsida
Html kod
Bildfiler
Komplett exempel
index.html
fasad.html
3.10.5 Att surfa in på NexaHome websidor
3.11 BeanShell
3.11.1 Device kommandon
3.11.2 Exekvering av kommandofiler
3.11.3 Timers
3.11.4 Metoder att användas i villkorssatser
3.11.5 Debug
3.11.6 Exempel
start.bsh
gmail.bsh
mode.bsh
1.bsh
2.bsh
3.bsh
Att skicka events till EventGhost
3.11.7 Mer information angående bsh scripts
3.12 Linux / Mac OS X
3.12.1 Hur Parameters fältet används
3.13 Temperaturvakt
3.13.1 Specifikation
4. Manuell styrning
4.1 NexaHome
4.1.1 Toolbar
4.1.2 Tabell - Devices/Groups
4.1.3 Knapp - Group Status
4.2 Med hjälp av en webläsare
4.2.1 Bokmärken
4.3 Utan att behöva använda en webläsare
5. Installationsanvisning
5.1 Programparametrar
5.2 Att köra NexaHome som en service
5.3 Bakåtkompabilitet
5.4 Tips
6. Övrigt
6.1 Ordlista
6.2 Programmets hemsida
6.3 Felsökning

1. Beskrivning
NexaHome är ett nyutvecklat program som både är enkelt att komma igång med samtidigt som det har massor av specialfunktioner som passar den som vill kunna styra sina fjärrströmbrytare på många olika sätt.
Programmet fungerar under Windows, Mac OS X samt Linux och dess huvudfunktioner är:
             NexaHome Big Brother och NexaHome Web Browser
graphic
Ett generellt gränssnitt gör det möjligt för den lite mer datorkunniga användaren att knyta samman detta program med andra programvaror i datorn.
1.1 Skärmdumpar
Programmet har ett antal flikar och paneler vars storlek går att anpassa till innehållet:
Flik
Beskrivning
Device/Events
Två tabeller innehållande mottagare samt programmerade händelser (events)
Queue
Tabell samt grafik som bägge visar kommande events
Web
Verktyg för att själv enkelt kunna skapa klickbara web-sidor
Config
Definition av externa program och dess parametrar samt webserver
 
1.1.1 Freeware
graphic
1.1.2 Devices/Events
graphic
1.1.3 Queue
graphic
1.1.4 Web
graphic
Den i programmet inbyggda webservern fungerar som den ska men däremot är denna nya flik för närvarande inte aktiverad, programutveckling/felsökning pågår.
En testversion av NexaHome med Web fliken aktiverad finns att hämta, detta trots att programkoden inte är färdig ännu, för den som är nyfiken på funktionaliteten som dyker upp i nästa version.
http://nexahome.se/NexaHome_2.2.2.jar
Den kan trots begränsad funktionalitet användas av den som skapar egna websidor men vill ha hjälp med att flytta runt lampsymboler till rätt plats.
graphic
1.1.5 Config
graphic
1.1.6 "Home Automation" websidor
Standard
graphic
Egendefinierad
graphic
graphic
1.1.7 Android Market
NexaHome Web Browser
graphic
.
 
NexaHome Big Brother
graphic
1.2 Telldus TellStick
TellStick är sändaren som du ansluter till din dators USB-port:
Frekvens          433,92MHz
Räckvidd          Upp till 30 meter
Anslutning      USB 1.1 / USB 2.0
graphic
www.telldus.se      www.kjell.com
1.3 Nexa fjärrströmbrytare
Exempel på en mottagare som är kompatibel med TellStick.
graphic
www.jula.se

2. Grafiskt användargränssnitt
Med hjälp av menyalternativ 'View --> Advanced User Interface' kan man påverka hur mycket av programmets olika funktioner/finesser som ska visas.
2.1 Tabeller
Specialfunktioner i Devices/Groups och Events tabellerna:
2.1.1 Devices/Groups
Kolumn
Beskrivning
Status
Click on icon to toggle device on/off
Level
Blank or xx %
Timestamp
HH:MM:SS
Name
Device name
Max HH
Maximum time switched On (hours)
Max MM
Maximum time switched On (minutes)
Id
Device id
Grp
Part of selected group
Group Members
Group members for a device group (eg. "1, 2")
Function
Default device function
All
Included in "Turn on/off all devices"
Dimmable
Turn off command is sent before turning on device / dim command is sent
Synchronize
Synchronize device when program start processing event
Repeat
Number of additional commands to send
Extender
External signal extender
Server URL
URL to other NexaHome application
Parameters
Device specific parameters, $1 = on/off/dim, $2 = device id, $3 = dim level, eg. /dev/ttyUSB0 NEXA P 5 $1
ON Sensor Result
Value given by formula
OFF Sensor Result
Value given by formula
Sensor Value
Value fetched from external sensor
Sensor Default
Sensor default value (to be used if no value is retrieved from external sensor)
ON Sensor Formula
How to calculate value (HH:MM or yes/no)
OFF Sensor Formula
How to calculate value (HH:MM or yes/no)
Sensor Path
Path to executable
 
2.1.2 Events
Kolumn
Beskrivning
Event
Event number
Active
Flag
Device
Device name
Cmd
On/Off icon
Level
Blank or xx %
HH
hours, absolute or relative time entered
MM
minutes, absolute or relative time entered
Default
Default device function
Function
Specific function
- MM
-Random minutes
+ MM
+Random minutes
Cmd Group
Enter the same value for two or more events to prevent the OFF command to be executed before ON.   eg. A
Mon
Monday
Tue
Tuesday
Wed
Wednesday
Thu
Thursday
Fri
Friday
Sat
Saturday
Sun
Sunday
+ Mode
Included in all modes or specified mode only
- Mode
Excluded in mode
Start Date
Time period...
Stop Date
...Time period
 
2.1.3 Queue
Kolumn
Beskrivning
Next
Time left (HH:MM) to next command to be executed
Time
 
 
Cmd
 
 
Device
 
 
Active
Active in current mode (this can be overridden by selecting the tickbox)
Sensor
 
 
Cmd Group
 
 
Event
 
 
 
 
2.2 Webserver
På websidan visas aktuell status för samtliga mottagare samt den kan även användas för att manuellt styra valfri mottagare.
See related topics and documents

3. Konfiguration
3.1 Ändring av mottagares namn
Inläsning av mottagares namn sker automatiskt vid programstart. Om ett namn ändras i NexaHome så blir det även uppdaterat i Telldus konfigurationsprogram TelldusCenter (gäller för närvarande endast Windows/Linux).
3.2 Inmatning av klockslag
Om man har angivit 17:00 (HH, MM) som tillslagstidpunkt och lagt till random -5 minuter (- MM) samt random +10 minuter (+ MM) så kommer tillslaget att ske någon gång mellan 16:55 och 17:10. Allt för att försöka lura eventuella tjuvar...
3.2.1 Cmd Group
För att undvika att tänd och släck tiderna passerar varandra så ska man tala om för programmet att dom hör till samma kommandogrupp 'Cmd Group', dvs samma text ska skrivas in för både ON och OFF (exempelvis bokstaven A).
3.3 Funktioner
"Default device function" är till för att man ska slippa att varje gång behöva ange vilken funktion som man vill använda vid programmering av en viss mottagare.
Funktionerna 'sunrise' och 'sunlight' samt ytterligare några stycken dyker upp i Function listan först efter att man har valt menyalternativ 'View -->Advanced User Interface'.
3.3.1 sunlight
För att använda sunlight funktionen till att ha en lampa tänd mellan 05.00 - 23.00 men inte när solen är uppe så behövs fyra events:
1) ON 05:00, Function = sunlight
2) OFF 12:00, Function = sunlight
3) ON 12:01, Function = sunlight
4) OFF 23:00, Function = sunlight
mm + / - används för att lamporna inte ska tändas och släckas på exakt samma klockslag varje gång.

+ 15 --> slumpen avgör hur mycket ett event ska senareläggas, maximalt 15 minuter
Observera att events måste definieras parvis samt med Function = sunlight
3.3.2 sunrise, sunset
Funktionerna sunrise och sunset används då man vill ange ett klockslag relativt solens upp/ned- gång.
Vad menas med sunset +/- och mm +/- ?

+ = efter solnedgången
- = före solnedgången

sunset + 01:05 --> 1 timme och 5 minuter efter solnedgången
sunset - 00:45 --> 45 minuter före solnedgången

mm + / - används för att lamporna inte ska tändas och släckas på exakt samma klockslag varje gång.

+ 15 --> slumpen avgör hur mycket ett event ska senareläggas, maximalt 15 minuter
Exempel
Med följande exempel blir den uträknade tiden någon gång mellan 00:35 och 00:50 före solnedgången.
Function
sunset -
HH
00
MM
45
- MM
05
+ MM
10
Med följande exempel blir den uträknade tiden någon gång mellan 01:00 och 01:15 efter solnedgången.
Function
sunset +
HH
01
MM
05
- MM
05
+ MM
10
  
3.3.3 sensor
Motorvärmarfunktion
Tanken med motorvärmarfunktionen är att man med det första eventet (on) anger när man har tänkt att åka iväg och med hjälp av det andra (off) anger hur länge bilen ska hållas varm. Glöm ej att sätta en bock i Default fältet, gör man inte det så kommer motorvärmaren att sättas igång alldeles för sent...
graphic

Lägg dom två eventen i samma Cmd Group, skriv in bokstaven A eller någon annan ej tidigare använd textsträng i Cmd Group fältet på dom två events raderna .

Tidpunkten för påslaget beräknas med hjälp av en inmatad formel som användaren själv kan modifiera. Vid -12 grader sker påslaget (enligt nedanstående exempel) 1 timme och 20 minuter före angivet klockslag.
graphic
graphic
Devices/Events, exempel:
Function
sensor -
Max HH
03
Max MM
00
Sensor Default
-5
ON Sensor Formula
< -20 # 02:00, < -15 # 01:30, < -10 # 01:20, < -5 # 01:10, < 0 # 01:00, < 5 # 00:45, < 10 # 00:20, >= 10 # 00:00
Sensor Path
C:\apps\nexahome\weather_msn.bat
http://nexahome.se/weather_msn.bat
http://nexahome.se/WeatherDataMsn.class
http://nexahome.se/WeatherDataMsn.java
Bor man i Stockholm så är weather_msn.bat som finns på programmets hemsida redan färdig att användas.

Om man bor på någon annan ort så är det enklaste sättet att ta reda på just "din" parameter:
1) klistra in parametern för Stockholm i din webläsare
http://vader.se.msn.com/local.aspx?wealocations=wc:SWXX0031&q=Stockholm
2) sök på websidan efter din egen ort
3) kopiera den uppdaterade länken från websidan
4) lägg in den nya parametern i bat filen (mellan dubbelfnuttarna)

Exempel, om man bor i Lund ska följande parameter användas:
http://vader.se.msn.com/local.aspx?wealocations=wc:19469&q=Lund%2c+Sk%c3%a5ne

Om inte programmet lyckas gå ut på Internet och hämta den aktuella temperaturen så används ett default temperaturvärde som användaren själv har angivit.

Man bör även ange en maximal inkopplingstid.
3.3.4 xx% y-z min
Med hjälp av denna funktion är det slumpen som avgör om ON/OFF kommandon ska skapas... Function:
25% 1-2 min
25% 2-5 min
25% 5-15 min
25% 15-45 min
50% 1-2 min
50% 2-5 min
50% 5-15 min
50% 15-45 min
75% 1-2 min
75% 2-5 min
75% 5-15 min
75% 15-45 min
Tanken är att man ska kunna ge sken av att vara hemma genom att tex. tända en sängbordslampa eller en badrumslampa på lite udda tider...
Om man har definierat ett ON event med Function "50% 5-15 min" så är det 50% chans att det läggs upp ett ON event som följs av ett OFF event 5 till 15 minuter senare.
3.4 Grupper av mottagare
Varje mottagare i en grupp expanderas till att få sin egen rad i Queue tabellen. Detta görs för att alla mottagare i en grupp inte ska få samma slumptid vid till/från slag.
3.5 Mode
Två stycken moder finns från början... (Home, Away), lägg gärna till fler eller ändra till svensk text. Config flik, "Modes:"
Modes
Hemma, Party, Borta

För att tala om för programmet vilka av dom programmerade händelserna som ska "specialbehandlas" så ska man gå in i Events tabellen och klicka på +Mode eller -Mode fälten.
+Mode
används för att ange att ett event enbart ska utföras i angiven mode
-Mode
                  - " -                         aldrig                  - " -
Under Queue fliken kan man i Active kolumnen se vilka event som kommer att utföras. Det går även att överrida denna funktion genom att manuellt klicka på fältet för att själv sätta eller ta bort "bocken".
3.6 Repeat
Siffran i Repeat kolumnen talar om för programmet hur många extra kommandon som ska sändas. En fjärrströmbrytare kopplad till en motorvärmare kan finnas långt bort från TellStick sändaren och ha svårt att snappa upp radiosignalen, skickar man några extra kommandon så ökar sannolikheten att den har tagit emot kommandot.

Exempel:
Repeat
2
2009-02-17 19:26:13 :ON 1(3): Turning on device: 3 Motorvärmare - ok
2009-02-17 19:26:17 :ON 2(3): Turning on device: 3 Motorvärmare - ok
2009-02-17 19:26:21 :ON 3(3): Turning on device: 3 Motorvärmare - ok
3.7 IR mottagare
Har man en Tellstick Duo så tas kommandon från IR mottagare och fjärrkontroller emot och behandlas av NexaHome.
Läs gärna mer i avsnittet BeanShell för att ta reda på hur metoden executedByCmd används (Metoder att användas i villkorssatser).
IR mottagare kan oftast programmeras så att släck-kommandot fördröjs, detta är till för att förhindra att onödigt många tänd/släck-kommandon skickas.
Man kan lägga in ett speciellt utformat "dummy" event i NexaHome för att på så sett tala om hur mycket den registrerade tiden för off-kommandot ska korrigeras.
Villkoret för att Off tidpunkten ska flyttas tillbaka är att Device namnet inleds med bokstäverna 'IR' samt att man har lagt upp ett ej aktiverat Off event.
Antal minuter tidpunkten ska flyttas tillbaka läggs in i HH/MM fälten, lämpligt värde är fördröjningen minus 1 minut.
Event:
Active
Device
Cmd
HH
MM
false
IR Kylskåp
Off
0
9
 
See related topics and documents
3.8 Extender
Om man har satt ett kryss i Extender fältet så kommer programmet vänta några sekunder innan den skickar nästa kommando, dvs allt för att undvika att TellStick och extendern pratar i munnen på varandra.
Exempel:
Extender
x
  
3.9 Remote
Det är möjligt att koppla ihop två NexaHome, dvs att kunna från en NexaHome fjärrstyra en annan NexaHome som finns i en dator på en annan våning i samma hus eller på andra sidan jordklotet...

Klicka på 'Add' (Devices/Groups) och välj device REMOTE. Skriv sedan in web-adressen till den NexaHome som du vill fjärrstyra i fältet 'Server URL' samt parametrarna i 'Parameters' fältet (separera parametrar med kommatecken).
Exempel:
Server URL
192.168.0.46:8080
Parameters
psw=secret, device=2
 
3.10 Webserver
För att få igång webservern så måste man ange en port, det gör man under Config fliken, testa med att ange 8080.
Exempel:
Web Server Port
8080

Om man till en början bara vill komma åt websidan från sin egen dator så kan man med fördel ange localhost som Web Server Host:

Web Server Host: localhost

Då ska det gå att komma åt websidan på följande adress:

http://localhost:8080/nexahome
För att komma åt websidan från en annan dator i samma hus så ska man skriva in ip- adressen till datorn som kör NexaHome (adressen hittar man enklast genom att klicka på Config fliken och titta på vad som står på raden med texten "Web Server Host".

Exempel:
Web Server Host
192.168.0.45

Då ska man skriva in följande i sin webläsare:
http://192.168.0.45:8080/nexahome

För att komma åt webservern även från internet så måste man ange fullständig ip-adress samt sätta upp port forwarding i sin router.
See related topics and documents
3.10.1 Lösenord
För att lösenordsskydda sin NexaHome websida så ska man skriva in ett lösenord under Config fliken och sedan kroka på det som en parameter efter webadressen.
Exempel:
Web Server Password
secret

http://192.168.0.45:8080/nexahome?psw=secret
3.10.2 Device Status
Avläsning
Webservern kan fås att returnera en XML fil med aktuell status för samtliga mottagare.
Exempel:
Web Server Host
192.168.0.45

Då ska man skriva in följande i sin webläsare:
http://192.168.0.45:8080/nexahome?status=yes
Webservern svarar då med att returnera en XML fil.
<?xml version='1.0' encoding='UTF-8'?>
<NexaHome>
  <status>
    <devices>
      <device name="Hall (f&#246;nster)" id="1" timestamp=""></device>
      <device name="K&#246;k (bord)" id="2" timestamp=""></device>
      <device name="K&#246;k (f&#246;nster)" id="3" timestamp="2009-12-30 04:05">OFF</device>
      <device name="Vardagsrum (f&#246;nster)" id="4" timestamp="2009-12-30 04:05">OFF</device>
      <device name="Motorv&#228;rmare" id="5" timestamp="2009-12-30 06:15">ON</device>
      <device name="K&#246;k" id="97" timestamp="">OFF</device>
      <device name="Inne" id="98" timestamp="">OFF</device>
      <device name="Ute" id="99" timestamp="2009-12-30 06:15">ON</device>
    </devices>
  </status>
</NexaHome>
Uppdatering
Webservern kan användas till att ändra status på en device utan att skicka ett kommando via TellStick.
Exempel:
Web Server Host
192.168.0.45

För att tex ändra status på device 2 till ON skriver man in följande i sin webläsare:
http://192.168.0.45:8080/nexahome?device=2&status=on
3.10.3 Konsol fönster
Webservern kan fås att returnera innehållet i konsolen.
Exempel:
Web Server Host
192.168.0.45
Host
8080

Skriv in följande i webläsaren:
http://192.168.0.45:8080/nexahome?console=yes
Webservern svarar då med att returnera en textfil.
3.10.4 Definition av egen hemsida
Detta är en funktion för den som inte nöjer sig med den vanliga NexaHome websidan och dess klickbara knappar. Alla skapa sin egen hemsida med egendefinierad navigering och valfri bakgrund samt klickbara bilder.
För att få igång den egna hemsidan så måste man skapa ett bibliotek på den egna hårddisken där man lägger html och bildfiler. Därefter talar man om för programmet var bibliotek finns, detta görs under Config fliken.
Exempel:
My Web Server Directory
C:\apps\nexahome\mywebserver
Observera att det krävs en omstart av NexaHome eller att man klickar på 'Reload' knappen (som finns under fliken 'Web') för att nya websidesdefinitioner ska läsas in.
Html kod
Definition av bilder tillhörande olika mottagare:
<!-- device="Kök (bord)" on="on.png" off="off.png" onoff="onoff.png" -->
<!-- device="Vardagsrum" on="on.png" off="off.png" onoff="onoff.png" -->
<!-- device="Sovrum (fönster)" on="on.png" off="off.png" onoff="onoff.png" -->
Följande textsträngar byts ut mot aktuella värden:
      #URL#
      #CMD#<device>#
      #IMAGE#<device>#
      #PSW#
      #RND#
      #TIMESTAMP#
      #RETURN#
Exempel på hur bakgrunden med planlösningen kan definieras:
<img style="position:absolute;top:0px;left:0px" src="/nexahome/ritning.png">
Exempel på hur koordinaterna för en mottagare och dess klickbara knapp definieras:
<div style="position: absolute; top: 176px; left: 291px">
<form action="nexahome" method="get">
<input type=hidden name="mypage" value="yes">
<input type=hidden name="device" value="Kök (bord)">
<input type=hidden name="cmd" value="#CMD#Kök (bord)#">
<input type=hidden name="psw" value="#PSW#">
<input type=hidden name="rnd" value="#RND#">
<input type=image title="Kök (bord)" alt="?" src="#IMAGE#Kök (bord)#">
</form>
</div>
Bildfiler
Programmet har stöd för jpg, png och gif bilder.
Komplett exempel
Filerna till detta exempel finns att hämta på programmets hemsida:
http://nexahome.se/mywebserver.zip
graphic
Observera att device namn måste ändras till att vara dina egna för att rätt lampsymboler ska visas samt att det ska gå att styra din egen belysning.
graphic
index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head><title>NexaHome - Life Made Easy With Home Automation</title>
<link rel="Shortcut Icon" href="http://nexahome.se/favicon32x32.ico">
<meta http-equiv="refresh" content="60;#URL#?mypage=demo&psw=#PSW#">
</head>
<!-- device="Kök (bord)" on="on.png" off="off.png" onoff="onoff.png" -->
<!-- device="Vardagsrum" on="on.png" off="off.png" onoff="onoff.png" -->
<!-- device="Sovrum (fönster)" on="on.png" off="off.png" onoff="onoff.png" -->
<body bgcolor="#ffffff" background="/nexahome/nexahome_bg.jpg">
<img style="position:absolute;top:0px;left:0px" src="/nexahome/ritning.png">
<div style="position: absolute; top: 176px; left: 291px">
<form action="nexahome" method="get">
<input type=hidden name="mypage" value="demo">
<input type=hidden name="device" value="Kök (bord)">
<input type=hidden name="cmd" value="#CMD#Kök (bord)#">
<input type=hidden name="psw" value="#PSW#">
<input type=hidden name="rnd" value="#RND#">
<input type=image title="Kök (bord)" alt="?" src="#IMAGE#Kök (bord)#">
</form>
</div>
<div style="position: absolute; top: 205px; left: 105px">
<form action="nexahome" method="get">
<input type=hidden name="mypage" value="yes">
<input type=hidden name="device" value="Vardagsrum">
<input type=hidden name="cmd" value="#CMD#Vardagsrum#">
<input type=hidden name="psw" value="#PSW#">
<input type=hidden name="rnd" value="#RND#">
<input type=image title="Vardagsrum" alt="?" src="#IMAGE#Vardagsrum#">
</form>
</div>
<div style="position: absolute; top: 21px; left: 296px">
<form action="nexahome" method="get">
<input type=hidden name="mypage" value="demo">
<input type=hidden name="device" value="Sovrum (fönster)">
<input type=hidden name="cmd" value="#CMD#Sovrum (fönster)#">
<input type=hidden name="psw" value="#PSW#">
<input type=hidden name="rnd" value="#RND#">
<input type=image title="Sovrum (fönster)" alt= "?" src="#IMAGE#Sovrum (fönster)#">
</form>
</div>
<div style="position: absolute; top: 153px; left: 156px">
<form action="nexahome" method="get">
<input type=hidden name="mypage" value="demo">
<input type=hidden name="psw" value="#PSW#">
<input type=hidden name="rnd" value="#RND#">
<input type=image title="Gå upp till nästa våning" alt= "?" src="/nexahome/trapp.png" onClick="alert('Övervåningen är oinredd!')";>
</form>
</div>
<div style="position: absolute; top: 211px; left: 195px">
<form action="nexahome" method="get">
<input type=hidden name="mypage" value="fasad">
<input type=hidden name="return" value="demo">
<input type=hidden name="psw" value="#PSW#">
<input type=hidden name="rnd" value="#RND#">
<input type=image title="Gå ut" alt= "?" src="/nexahome/ut.png">
</form>
</div>
<div style="position: absolute; top: 310px; left: 25px;">
<form action="nexahome" method="get">
<input type=hidden name="mypage" value="yes">
<input type=hidden name="psw" value="#PSW#">
<input type=hidden name="rnd" value="#RND#">
<input type=submit value="#TIMESTAMP#">
</form>
</div>
</body>
</html>
fasad.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head><title>NexaHome - Life Made Easy With Home Automation</title>
<link rel="Shortcut Icon" href="http://nexahome.se/favicon32x32.ico">
<meta http-equiv="refresh" content="60;#URL#?mypage=fasad&psw=#PSW#">
</head>
<!-- device="Kök (bord)" on="on.png" off="off.png" onoff="onoff.png" -->
<!-- device="Vardagsrum" on="on.png" off="off.png" onoff="onoff.png" -->
<body bgcolor="#ffffff" background="/nexahome/nexahome_bg.jpg">
<img style="position:absolute;top:0px;left:0px" src="/nexahome/skiss_no_819.png">
<div style="position: absolute; top: 155px; left: 289px">
<form action="nexahome" method="get">
<input type=hidden name="mypage" value="fasad">
<input type=hidden name="device" value="Kök (bord)">
<input type=hidden name="cmd" value="#CMD#Kök (bord)#">
<input type=hidden name="psw" value="#PSW#">
<input type=hidden name="rnd" value="#RND#">
<input type=image title="Kök (bord)" alt="?" src="#IMAGE#Kök (bord)#">
</form>
</div>
<div style="position: absolute; top: 165px; left: 161px">
<form action="nexahome" method="get">
<input type=hidden name="mypage" value="fasad">
<input type=hidden name="device" value="Vardagsrum">
<input type=hidden name="cmd" value="#CMD#Vardagsrum#">
<input type=hidden name="psw" value="#PSW#">
<input type=hidden name="rnd" value="#RND#">
<input type=image title="Vardagsrum" alt="?" src="#IMAGE#Vardagsrum#">
</form>
</div>
<div style="position: absolute; top: 141px; left: 215px">
<form action="nexahome" method="get">
<input type=hidden name="mypage" value="yes">
<input type=hidden name="psw" value="#PSW#">
<input type=hidden name="rnd" value="#RND#">
<input type=image title="Gå in" alt= "Gå in" src="/nexahome/in.png">
</form>
</div>
<div style="position: absolute; top: 42px; left: 217px">
<form action="nexahome" method="get">
<input type=hidden name="mypage" value="fasad">
<input type=hidden name="psw" value="#PSW#">
<input type=hidden name="rnd" value="#RND#">
<input type=image title="Gå till husleverantörens hemsida" alt= "Gå till husleverantörens websida" src="/nexahome/trad.png" onClick="window.open('http://www.trivselhus.se/SingleHusskiss.aspx?id=3&houseid=1602')";>
</form>
</div>
<div style="position: absolute; top: 250px; left: 25px;">
<form action="nexahome" method="get">
<input type=hidden name="mypage" value="fasad">
<input type=hidden name="psw" value="#PSW#">
<input type=hidden name="rnd" value="#RND#">
<input type=submit value="#TIMESTAMP#">
</form>
</div>
</body>
</html>
3.10.5 Att surfa in på NexaHome websidor
Standard "Home Automation" sida:
http://server.ip.adress:portnummer/nexahome
http://server.ip.adress:portnummer/nexahome?psw=thesecretpassword
Din egen "Home Automation" sida:
http://server.ip.adress:portnummer/nexahome?mypage=yes
http://server.ip.adress:portnummer/nexahome?mypage=yes&psw=thesecretpassword
Ett förtydligande angående mypage parametern och kopplingen till dess html sida:
mypage=<namn> --> <namn>.html
Exempel:
mypage=yes --> index.html
mypage=index --> index.html
mypage=demo --> demo.html
 
3.11 BeanShell
Scripten anropas efter att Mode ändrats eller ett kommando har skickats till en mottagare. Det finns inget krav på att bsh filerna måste finnas men om NexaHome hittar filer döpta till start.bsh, mode.bsh, 1.bsh, 2.bsh, 3.bsh osv på samma ställe som NexaHome.xml finns så anropas dessa.
Kan innehålla ett flertal kommandon för att tända/släcka lampor eller exekvera filer.
 
3.11.1 Device kommandon
Namn eller Id kan användas för att referera till en Device.
deviceOn("Vardagsrum");
deviceOff("Vardagsrum");
deviceLevel("Vardagsrum", "25%"); 
deviceOn(3);
deviceOff(3);
deviceLevel(3, "25%"); 
3.11.2 Exekvering av kommandofiler
Det är först efter att hela bsh filen är processad som exekvering av beordrade filexekveringar utförs.
execFile("C:/apps/nexahome/test.bat");
execParam("parameter_1");
execParam("parameter_2");
execParam("parameter_3");
 
3.11.3 Timers
Timers kan döpas efter eget tycke och smak, enda villkoret är att det ska finnas en fil med samma namn (plus filändelsen .bsh) som programmet kan anropa.
Metoden randomValue returnerar ett värde slumpartat mellan ett min och max värde (antal sekunder).
startTimer("t15", randomValue(20, 30));
stopTimer("t15");
Följande metod används för att veta om bsh filen processas pga att en timer löst ut (returnerar värdet True eller False).
executedByTimer()
Nedanstående metod används för att kontrollera om en timer har löst ut eller fortfarande är aktiv.
timerIsRunning("t15")
 
3.11.4 Metoder att användas i villkorssatser
Nedanstående metoder kan användas i villkorssatser.
modeIs("Away")
deviceIsOn("Vardagsrum")
deviceIsOff("Vardagsrum")
deviceIsOnOff("Vardagsrum")
deviceLevelIs("Vardagsrum", "25%")
deviceLevelIsGreaterThan("Vardagsrum", "25%")
deviceLevelIsLessThan("Vardagsrum", "25%")
todayIs("Monday, Wednesday")
hourIs(21)
hourIsGreaterThan(21)
hourIsLessThan(21)
timerIsRunning("t15")
executedByTimer()
executedByCmd()
Metoden executedByCmd används för att ta reda på om aktuell bsh fil processas pga att NexaHome har utfört ett device kommando eller om Tellstick Duo har registrerat att en fjärrkontroll eller IR mottagare har används för att skicka ett kommando.
if (hourIsGreaterThan(22)) {
   echo("Dags att gå och lägga sig!");
} else {
   echo("Tid över att knappa lite på datorn?");
}
 
3.11.5 Debug
Metoden echo används till att skriva ut text i konsolfönstret.
echo("Skymningsrelä - ON");
3.11.6 Exempel
Använd nedanstående i villkorssatser:
Villkor
Betydelse
&&
och
||
eller
!
icke
 
if (!deviceIsOn("Kökslampa")) {
   echo("Kökslampan är inte tänd!");
}
För att få exemplet med gmail scriptet, som kontrollerar om det finns olästa mail, att fungera så måste nedanstående fil placeras i samma folder på disken som NexaHome.jar finns (samt refereras till i scriptet):
http://nexahome.se/BshAddOn.jar
start.bsh
startTimer("gmail", 4 * 60);  // 4 minutes
gmail.bsh
// Change to your own gmail account, user name and password
usr = "user";
psw = "password";
// Change the timeout if needed
timeout = 4 * 60;  // 4 minutes
// Set location for the BshAddOn code
addClassPath("C:/apps/nexahome/BshAddOn.jar");
page = BshAddOn.fetchWebContent("https://mail.google.com/mail/feed/atom", usr, psw);
if (page != null && page.indexOf("<fullcount>") != -1) {
   if (page.indexOf("<fullcount>0</fullcount>") != -1) {
      echo("Sorry, no unread mail found...");
      if (deviceIsOn("5")) {
         deviceOff("5");
      }
   } else {
      echo("You've got mail!");
      if (!deviceIsOn("5")) {
         deviceOn("5");
      } else {
         timeout *= 3;  // 12 minutes
      }
   }
} else {
   echo("Unable to check the gmail account!");
}
startTimer("gmail", timeout);
 
mode.bsh
if (modeIs("Away") && deviceIsOn("Sovrum (fönster)")) {
   deviceOff("Sovrum (fönster)");
   deviceOff("Sovrum (sängbord)");
} else if (modeIs("Home") && deviceIsOff("Sovrum (fönster)")) {
   deviceOn("Sovrum (fönster)");
   deviceLevel("Sovrum (sängbord)", "25%");
}
1.bsh
if (deviceIsOn("Power Hemmbio") && (deviceIsOn("Taklampa Vardagsrum") || deviceIsOn("Fönster lampa Vardagsrum"))) {
   deviceLevel(Taklampa Vardagsrum", "25%");
   deviceLevel(Fönster lampa Vardagsrum", "25%");
} else if (deviceIsOff("Power Hemmbio") &&(deviceIsOn("Taklampa Vardagsrum") || deviceIsOn("Fönster lampa Vardagsrum"))) {
   deviceLevel(Taklampa Vardagsrum", "100%");
   deviceLevel(Fönster lampa Vardagsrum", "100%");
}
2.bsh
execFile("C:/apps/dovtelcon/DovTelConCmd.exe");
execParam("--host=RouterIP");
execParam("--pwd=Password");
if (deviceIsOn("2")) {
   execParam("--on=Device2");
} else {
   execParam("--off=Device2");
}
 
3.bsh
// Exempel: filen 3.bsh är kopplad till mottagaren med id = '3' och namn = 'Skymningsrelä' skulle kunna se ut så här...
if (hourIsGreaterThan(12) && hourIsLessThan(22)) {
   if (deviceIsOn("Skymningsrelä")) {
      echo("Skymningsrelä- ON");
      if (deviceIsOff("Vardagsrum (soffbord)")) {
         deviceOn("4");
      }
      if (deviceIsOff("Vardagsrum (fönster)")) {
         deviceOn("5");
      }
      if (deviceIsOff("Vardagsrum (skänk)")) {
         deviceOn("6");
      }
   } else {
      echo("Skymningsrelä- OFF");
   }
}
 
Att skicka events till EventGhost
NexaHome kan prata med EventGhost med hjälp av bsh scripts.
Man kan t.ex styra en värmepump som har en IR fjärr. Om värmepumpens fjärrkontroll har 2 knappar, den ena för "Underhållsvärme" +10 den andra för "komfortvärme +22" så kan man pendla mellan två IR kommandon med hjälp av NexaHome och EventGhost genom att utföra följande:
1) skapa en "dummy" mottagare med hjälp av TelldusCenter samt döp den till:
Komfortvärme +22
2) skapa en fil vars namn är samma som det id den nya mottagaren fick och med filtyp .bsh
Placera filen i samma bibliotek som där NexaHome.xml ligger, t.ex:
C:\apps\nexahome\14.bsh
Filens innehåll:
execFile("C:/Program Files/EventGhost/EventGhost.exe");
execParam("-e");
if (deviceIsOn("Komfortvärme +22")) {
   execParam("Task.Set.Temperature.22");
} else {
   execParam("Task.Set.Temperature.10");
}
3) konfigurera EventGhost så att den lyssnar på två nya events:
Task.Set.Temperature.22
Task.Set.Temperature.10
4) klicka på "Komfortvärme +22" i NexaHome för att skicka kommando till EventGhost
Exempel på vad som visas i konsolfönstret i NexaHome:
2010-10-21 08:05:27 :ON: Turning on device: 14 Komfortvärme +22 - ok
2010-10-21 08:05:28 Script executed (14.bsh), result: [[exec, C:/Program Files/EventGhost/EventGhost.exe, -e, Task.Set.Temperature.22]]
2010-10-21 08:05:28 Exec (C:/Program Files/EventGhost/EventGhost.exe)
2010-10-21 08:07:23 :OFF: Turning off device: 14 Komfortvärme +22 - ok
2010-10-21 08:07:23 Script executed (14.bsh), result: [[exec, C:/Program Files/EventGhost/EventGhost.exe, -e, Task.Set.Temperature.10]]
2010-10-21 08:07:23 Exec (C:/Program Files/EventGhost/EventGhost.exe)
Exempel på vad som visas i logfönstret i EventGhost:
Main.Task.Set.Temperature.22
Main.Task.Set.Temperature.10
3.11.7 Mer information angående bsh scripts
BeanShell, Lightweight Scripting for Java:
http://www.beanshell.org/home.html
3.12 Linux / Mac OS X
Även den som inte använder Windows kan använda detta program.
3.12.1 Hur Parameters fältet används
Kolumnen 'Parameters' användes i tidigare programversioner för att göra det möjligt att även styra mottagare i Linux då fullt stöd för denna miljö saknades.
Nedanstående finns kvar i manualen för att fältet eventuellt ska kunna användas till något annat.
Man kan låta programmet anropa kommandofiler och skicka med parametrar.
Exempel, tellstick_cmd.sh:
#!/bin/sh
echo $*
En riktig kommandofil kan se ut enligt nedanstående exempel:
#!/bin/sh
rfcmd /dev/ttyUSB0 NEXA P $2 $1

För att få NexaHome att anropa den så ska man ändra lite på det som finns under Config fliken.
Exempel:
Executable
/home/granede/tellstick_cmd.sh
Parameter On
1
Parameter Off
0
I ett fält per mottagare 'Parameters' specificerar man de parametrar som behövs för att styra mottagaren.
Exempel:
Parameters
/dev/ttyUSB0 NEXA P 5 $1 $3

Översättningstabell för specialparametrar:
$1
on/off parameter som är definierad under Config fliken.
$2
device id
$3
dim level
 
3.13 Temperaturvakt
NexaHomeCmdGuard är ett separat program som körs i ett dos fönster och kan användas som en termostat:
http://nexahome.se/NexaHomeCmdGuard.zip
Nedanstående exempel ger några ledtrådar till hur man kan få fjärrmottagare 5 att slå till/från när temperaturen passerar nollan.
java NexaHomeCmdGuard "file:///C:/apps/nexahome/1-wire.csv?row=2&column=2&delimiter=," 0 lt 60 3600 --on 5 C:\apps\nexahome\NexaHome.xml
2011-01-31 13:19:06 :ON: (-8.81)
osv...
java NexaHomeCmdGuard "file:///C:/apps/nexahome/last.txt" 0 lt 60 3600 --on 5 C:\apps\nexahome\NexaHome.xml
2011-01-31 13:19:23 :ON: (-8.81)
osv...
java NexaHomeCmdGuard "http://bjornhallgren.vishet.se/temperatur/LogTemp/last.txt" 0 lt 60 3600 --on 5 C:\apps\nexahome\Nex    aHome.xml
2011-01-31 13:55:38 :ON: (-2.0)
osv...
Parametrarna 60 och 3600 används för att få kontrollen att utföras varje minut samt att ett kommando ska gå iväg åtminstone varje timme.
 
3.13.1 Specifikation
Usage:
java NexaHomeCmdGuard [ parameters ] [ NexaHomeCmd options/parameters ]
Parameters: [ temperature url ] [ temperature limit ] [ formula ] [ rate seconds ] [ minimum command rate seconds ]
Parameters:
    temperature url
          eg. file:///c:/data/temperature.txt
              http://some.site.se/temperature
    temperature limit
          eg. 5
    formula
          eg. gt
              lt
    rate seconds
          eg. 60
    minimum command rate seconds
          eg. 3600
Plus the NexaHomeCmd stuff!
Options: [--on device] [--off device]
Parameters: [url] [xml-file]
Options:
       --on device
             Turns on device. device should be an integer of the device-id.
       --off device
             Turns off device. device should be an integer of the device-id.
Parameters:
       device
             eg. 5
       url
             eg. http://192.168.0.45:8080/nexahome
       xml-file
             eg. c:\apps\nexahome\NexaHome.xml
 

4. Manuell styrning
4.1 NexaHome
4.1.1 Toolbar
Knapp
Beskrivning
Turn all ON
Turn on all devices that are selected in the All column
Turn all OFF
Turn off all devices that are selected in the All column
Synchronize all
Synchronize all devices that are selected in the Synchronize column and have a known status (on/off)
 
4.1.2 Tabell - Devices/Groups
Klicka på lampbilden i Status kolumnen för att toggla status on/off.
4.1.3 Knapp - Group Status
Klicka på en "Group Status" knapp för att toggla alla mottagare on/off som ingår i den gruppen.
4.2 Med hjälp av en webläsare
På websidan visas aktuell status för samtliga mottagare samt den kan även användas för att manuellt styra valfri mottagare.
Tips: Om du använder Microsoft Windows kan du få upp programmets "Home Automation" sida genom att klicka på rätt ställe i About dialogen.
graphic
Standard "Home Automation" sida:
http://server.ip.adress:portnummer/nexahome
http://server.ip.adress:portnummer/nexahome?psw=thesecretpassword
Din egen "Home Automation" sida:
http://server.ip.adress:portnummer/nexahome?mypage=yes
http://server.ip.adress:portnummer/nexahome?mypage=yes&psw=thesecretpassword
Läs gärna avsnittet som beskriver hur webservern konfigureras, Webserver
4.2.1 Bokmärken
Den som får upp nexahome sidan på sin WAP telefon men som sedan har problem med att få iväg ett kommando kan med fördel lägga upp ett bokmärke för att på så sätt skicka iväg ett styrkommando.
Toggla motorvärmaren (av/på):
http://server.ip.adress:portnummer/nexahome?device=motorvärmare
Sätta på motorvärmaren:
http://server.ip.adress:portnummer/nexahome?device=motorvärmare&status=on
Stänga av motorvärmaren:
http://server.ip.adress:portnummer/nexahome?device=motorvärmare&status=off
4.3 Utan att behöva använda en webläsare
Ett litet javaprogram kan användas till att skicka kommandon till NexaHome via dess webserver.

 
NexaHomeCmd:
Usage:
java NexaHomeCmd [ options ] [ parameters ]

Options: [--on device] [--off device]

Parameters: [password] [url] [xml-file]

Options:
--on device
Turns on device. device should be an integer of the device-id.

--off device
Turns off device. device should be an integer of the device-id.

Parameters:
password
eg. psw=secret
device
eg. 5
url
eg. http://192.168.0.45:8080/nexahome

xml-file
eg. c:\apps\nexahome\NexaHome.xml
Programmet går att ladda ner från hemsidan:
http://nexahome.se/NexaHomeCmd.class
http://nexahome.se/NexaHomeCmd.java
Exempel på hur man kan tända och släcka device 5:
java NexaHomeCmd --on 5 http://192.168.0.45:8080/nexahome
java NexaHomeCmd --off 5 c:\apps\nexahome\NexaHome.xml
java NexaHomeCmd 5 c:\apps\nexahome\NexaHome.xml
 

5. Installationsanvisning
Om du inte redan har programvaran 'Java Runtime Environment' installerad på din dator så ska du ladda ner den från java.com.
Börja med att konfigurera dina fjärrströmbrytare med hjälp av TelldusCenter.
Hämta sedan hem programmet och lägg det i ett bibliotek samt klicka på jar-filen för att starta... eller ge följande kommando vid eventuella problem:
java -jar NexaHome.jar 
5.1 Programparametrar
Programparametrar och dess betydelse:
-no_wml - no_wbmp
Webservern ska alltid skicka html sidor, dvs aldrig wap (wml) sidor
-minimized
Starta med programfönstret minimerat
  
5.2 Att köra NexaHome som en service
Kortfattad instruktion:
1) Gå till:
http://yajsw.sourceforge.net/
2) Läs gärna följande avsnitt:
Example 2. Installation of a java application
3) Hämta senaste yajsw version (yajsw-beta-10.1.zip):
http://sourceforge.net/projects/yajsw/files/
4) Packa upp zip filen till ett underbibliotek där NexaHome är installerad:
C:\apps\nexahome\yajsw-beta-10.1
5) Öppna ett kommandofönster i följande bibliotek:
C:\apps\nexahome\yajsw-beta-10.1\bat
6) Öppna en "Task Manager" och anteckna PID för eventuellt redan startade java applikationer (java.exe samt javaw.exe):
7) Starta NexaHome
8 ) Anteckna PID för den nya java applikationen (java.exe eller javaw.exe):
9) Kör kommandofilen genConfig.bat med PID som parameter:
Följande rad är ett exempel:
genConfig.bat 768
Följande rader skrivs ut:
-----------------
Output file: C:\apps\nexahome\yajsw-beta-10.1\bat\..\conf\wrapper.conf
-----------------
NOTE: check/edit the following properties in the config file!
wrapper.app.account, wrapper.app.password: either set the password or remove the account
wrapper.java.command
wrapper.working.dir
wrapper.ntservice.name, wrapper.ntservice.displayname, wrapper.ntservice.description
-----------------
Press any key to continue . . .
10) Stoppa NexaHome
11) Editera filen C:\apps\nexahome\yajsw-beta-10.1\conf\wrapper.conf
Uppdatera wrapper.app.password eller kommentera bort wrapper.app.account genom att skriva in ett # som första tecken på raden.
Uppdatera eller lägg till följande rader om dom saknas:
wrapper.console.title=NexaHome Service
wrapper.ntservice.name=NexaHome Service
wrapper.ntservice.displayname =NexaHome Service
wrapper.ntservice.description =Life Made Easy With Home Automation
wrapper.java.app.mainclass =NexaHomeService
wrapper.java.classpath.2 =NexaHome.jar
wrapper.app.parameter.1=.\\NexaHome.xml
Observera att det är en tvåa i slutet på wrapper.java.classpath.2, om det redan finns en sådan använd nästa lediga.
12) Exekvera installService.bat
13) Exekvera startService.bat
5.3 Bakåtkompabilitet
Stöd för äldre stickor som inte kan skicka dim kommandon
Den som har definierat någon annan Executable än TelldusCore.dll samt även talat om för NexaHome att en mottagaren är dimbar kan lägga in attributet dimSupported="no" i filen NexaHome.xml (efter attributet dimmable).
dimmable="yes" dimSupported="no" previous="Off"
Om man lägger in det nya attributet så kommer programmet skicka off + on istället för dim kommandot.  Man slipper även att se dimnivåer i "dropdown" menyer.
5.4 Tips
Gå gärna in i forumet på Telldus och läs i tråden som handlar om programmet: NexaHome

6. Övrigt
6.1 Ordlista
WAP = Wireless Application Protocol
WML = Wireless Markup Language
WBMP = Wireless Bitmap
6.2 Programmets hemsida
http://hem.bredband.net/hekj/nexahome
6.3 Felsökning
Om man misstänker att NexaHome inte uppför sig som det är tänkt kan man innan programstart lägga in en extra rad efter "<config>" i filen NexaHome.xml
Man anger ett + eller - värde som ska användas av programmet för att justera aktuell tid (HH:MM).
<?xml version='1.0' encoding='UTF-8'?>
<NexaHome>
  <config>
    <adjust hh="-4" mm="0"/>
Man får då upp ett nytt menyalternativ som ska användas för justera tiden ytterligare så att man slipper sitta och vänta på att schemalagda aktiviteter utförs.
graphic
graphic

 
Inmatning
Beskrivning
+02:00
flytta fram klockan 2 timmar
+15
flytta fram klockan 15 minuter