Techstuff: december 2009 Archives
Hej
Jag har tidigare skrivit om att jag skrivit lite program för att styra elsaker i hemmet och jag tänkte beskriva lite här vad jag gjort och vilken mjukvara jag använder. En del av det jag använder här är "onödigt" komplicerat men jag har valt dessa komponenter för att det passade min miljö och det jag ville göra just då.
Hårdvara: Denna hårdvara har jag använt:
- en dator (Windows, Linux eller Mac) med en USB plats
- en Telldus TellStick. Denna kostar 649:- hos Kjell & Co och 679:- hos Clas Olsson.
- ett par mottagare som man kopplar i elkontakten och sedan kopplar sina elprylar till. Här finns det många olika att prova på, vissa snyggare och andra fulare. Det är lite varierande stöd för de olika då de pratar lite olika protokoll och man kan styra dem på olika sätt. Notera att om du ska styra något annat än t.ex. lampor så måste du ha de lite kraftfullare mottagarna (aningen större och aningen dyrare). Jag har provat med:
- Clas Olsson 36-1183 (styrs via rå-sändning, se nedan)
- Kjell & Co Fjärrströmbrytare
Mjukvara
Det finns ett antal olika mjukvaror att leka med. Telldus har själva släppt Telldus Center som även innehåller drivrutinerna för att prata med stickan. Dvs även om man inte använder deras användargränssnitt så måste man ladda ner och installera deras mjukvara först. Här finns deras mjukvara samt pekare till ett par andra program.Google Window Toolkit, GWT är ett paket för att skapa webapplikationer i Java utan att behöver skriva en enda rad JavaScript utan GWT kompilerar istället Javakoden till JavaScript som sedan laddas av webläsaren. GWT tar även hand om kommunikationen mellan webläsaren och servern, något som annars kan vara lite svårhanterligt.
Lättast att programmera GWT-applikationer är att använda utvecklingsmiljön Eclipse och Google Eclipse Plugin och jag rekommenderar att du installerar dessa innan du går vidare. Pluginen hanterar många av de komplicerade sakerna som t.ex. att ställa in så man får rätt java-bibliotek när man skapar nya projekt samt ett bra interface till den testkörningsmiljö som finns i GWT.
Efter installationen kan ni ladda ner mitt exempelprogram här: zip eller tar.gz och sedan öppna den i Eclipse som ett nytt projekt. Källkodsfilerna hittar ni under src/com/parnes/telldus/ och i client/ finns de filer som kommer att kompileras till JavaScript och köras i webläsaren och i server/ så hittar ni den enda fil som kommer att köras på servern. Den senare innehåller överst ett par variabler som måste ändras beroende på hur din installation ser ut (Mac/Linux eller Windows och var styrfilerna finns).
För att lära dig hur man bygger och kör GWT applikationer inne i Eclipse kan du följa denna guide hos Google.
Styrning med hjälp av tdtool
tdtool är ett program som ingår i Telldus Center som omnämns ovan och är ett program för att prata direkt med Tellstick utan att använda ett grafiskt gränssnitt. Jag har i min applikation valt att skapa små script för de olika kommandona som att slå på och av respektive enhet.
Här kan du plocka ner de olika scripten och datafilerna som behövs för att styra mottagarna: zip eller tar.gz Notera att du kan köra de små scripten utan att använda installera något web-gränsnitt enligt ovan. Kan vara bra när man ska testa om det fungerar. Filen innehåller tdtool.exe som används för styrning på Windows. På Mac och Linux finns programmet i /usr/bin efter att du installerat Telldus Center.
Sista steget som behövs är en webserver som kan leverera gränssnittet och ta hand om att köra serverdelen av vårt program (delen som pratar med Tellsticken). För detta använder jag Apache Tomcat som är en variant av den klassiska Apache-servern.
Till servern Tomcat laddar man upp så kallade web-arkiv, WAR-filer och dessa får man genom att kompilera sin applikation i Eclipse och sedan packa ihop alla filer som finns i biblioteket war. Här är en förkompilerad och förpaketerad WAR-fil för vårt projekt.
Efter installation av Tomcat så går man till Manager interfacet och där laddar man upp WAR-filer under Deploy och sedan kan man gå till interfacet för vår applikation. Dessa två addresser beror på hur man konfigurerat sin server och kommer inte all fungera annat än om du använder default-värdena vid installationen.
Här är en bild hur test-programmets gränssnitt ser ut:
Det var det hela. Inte så komplicerat eller hur? :)
Fråga gärna via kommentarsfunktionen här under. Lycka till!