EasyHome
Denna manual
är inte riktigt färdig ännu... den senaste stora uppdateringen gjordes 2011.
1. Beskrivning
EasyHome ä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:
-
styrning av bland annat
följande fjärrströmbrytare: Nexa, Proove, Sartano,
Waveman
-
schemaläggning,
på/av för enheter som lagts upp med
TelldusCenter
-
kan köras under olika
moder (Hemma, Party, Borta osv)
-
automatisk justering av
angiven tid (slumpartad)
-
kan ange tider i
förhållande till solens upp &
nedgång
-
yttre sensorer kan
användas för att bestämma när det är dags
att slå på/av enheter
-
manuell styrning via internet
med hjälp av en webläsare eller mobiltelefon
(WAP)
-
möjligt att skapa sin
egen hemsida med egendefinierad navigering och valfri bakgrund samt
klickbara bilder
-
på android market finns
två applikationer som kopplar upp sig mot den inbyggda
webservern,
EasyHome
Big Brother och EasyHome Web Browser
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
1.1.2 Devices/Events
1.1.3 Queue
1.1.4 Web
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 EasyHome 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://easyhomeauto.se/NexaHome_4.1.19.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.
1.1.5 Config
1.1.6 "Home Automation" websidor
Standard
Egendefinierad
1.1.7 Android Market
EasyHome Web Browser
EasyHome Big Brother
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
1.3 Nexa fjärrströmbrytare
Exempel på en mottagare som är
kompatibel med TellStick.
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:
-
en
filterfunktion gör det möjligt att enbart visa
händelser som är kopplade till en viss
mottagare
-
tabellerna är synkroniserade, dvs markerar
man en mottagare så markeras även motsvarande rad i
Events tabellen och även tvärt om
-
raderna
i Events tabellen kan fås sorterade genom att klicka på
valfri kolumns rubrik
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 EasyHome
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.
3. Konfiguration
3.1 Ändring av mottagares namn
Inläsning av mottagares namn sker
automatiskt vid programstart. Om ett namn ändras i EasyHome
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...
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.
Devices/Events, exempel:
Function
|
sensor
-
|
Max
HH
|
03
|
Max
MM
|
00
|
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
|
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:
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 EasyHome.
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 EasyHome 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
|
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:
3.9 Remote
Det är möjligt att koppla ihop två
EasyHome, dvs att kunna från en EasyHome fjärrstyra en
annan EasyHome 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 EasyHome 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:
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 EasyHome (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.
3.10.1 Lösenord
För att lösenordsskydda sin EasyHome
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'?>
<EasyHome>
<status>
<devices>
<device
name="Hall (fönster)" id="1"
timestamp=""></device>
<device
name="Kök (bord)" id="2"
timestamp=""></device>
<device
name="Kök (fönster)" id="3" timestamp="2009-12-30
04:05">OFF</device>
<device
name="Vardagsrum (fönster)" id="4" timestamp="2009-12-30
04:05">OFF</device>
<device
name="Motorvärmare" id="5" timestamp="2009-12-30
06:15">ON</device>
<device
name="Kö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>
</EasyHome>
Uppdatering
Webservern kan användas till att ändra
status på en device genom att skicka ett kommando via TellStick.
Exempel:
Web Server Host
|
192.168.0.45
|
För att tex skicka ett ON kommando till device 2 skriver
man in följande i sin webläsare:
http://192.168.0.45:8080/nexahome?device=2&cmd=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
|
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 EasyHome 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
EasyHome 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:
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.
index.html
<!DOCTYPE
HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN">
<html>
<head><title>EasyHome - 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>EasyHome - 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å EasyHome 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 EasyHome
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 EasyHome 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
EasyHome 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 EasyHome 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
EasyHome för att skicka kommando till
EventGhost
Exempel på vad som visas i
konsolfönstret i EasyHome:
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:
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å EasyHome 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://easyhomeauto.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 EasyHome
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.
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&cmd=on
Stänga av
motorvärmaren:
http://server.ip.adress:portnummer/nexahome?device=motorvärmare&cmd=off
4.3 Utan att behöva använda en webläsare
Ett litet javaprogram kan användas till att
skicka kommandon till EasyHome 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:
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 EasyHome 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 EasyHome ä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 EasyHome
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 EasyHome
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
EasyHome 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:
EasyHome
6. Övrigt
6.1 Ordlista
WAP = Wireless Application Protocol
WML = Wireless Markup Language
WBMP = Wireless Bitmap
6.2 Programmets hemsida
6.3 Felsökning
Om man misstänker att EasyHome 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.
Inmatning
|
Beskrivning
|
+02:00
|
flytta fram klockan 2
timmar
|
+15
|
flytta fram klockan 15
minuter
|