Exponering av Tellstick via RESTful (web services)

Moderator: Telldus

Post Reply
gein
Posts: 437
Joined: Fri Mar 17, 2023 9:45 am

Exponering av Tellstick via RESTful (web services)

Post by gein »

Håller på att implementera ett python-program för att exponera Tellstickens gränsytor via RESTful (web services) genom att använda telldus-core-biblioteket.

Projektet heter remotestick-server och koden hittar ni här: http://github.com/pakerfeldt/remotestick (under remotestick-server/)

Checka gärna ut de båda python-skripten och provkör. Det finns en hel del kvar att göra fortfarande dock. T.ex. så är autentiseringen just nu hårdkodad till test / test. Autentisering sker just nu med vanlig Basic Authentication i HTTP.

En annan grej att fixa är mer sofistikerad inläsning av telldus-core. Just nu letar den efter "telldus-core" vilket gör att den "out-of-the-box" bara fungerar i Linux under förutsättning att LD_LIBRARY_PATH innehåller sökväg dit libtelldus-core.so ligger. Tills vidare går det dock bra att editera RemoteStickServer.py och ändra "telldus-core" till t.ex. "TelldusCore" för att det ska fungera i Mac OS X.

Hittills så fungerar följande metoder:

GET /devices.xml
Hämtar alla devices

GET /devices/X.xml
Hämtar en specifik device.
X är device ID.

POST /devices.xml
skapar en ny device. Post-parametrarna som godtas är:
name, model, protocol och parameters.
parameters i sin tur är en space-separerad lista med paramnyckel=paramvärde par.
T.ex: name=name=Test&model=selflearning-dimmer:nexa&protocol=arctech&parameters=house=A unit=1

PUT /devices/X.xml
Ändrar en device.
X är device ID. Övriga parametrar läses in som POST precis som i fallet ovan.

DELETE /devices/X.xml
Tar bort device med ID X.

GET /devices/X/on.xml
Slår på device med ID X.

GET /devices/X/off.xml
Slår av device med ID X.

GET /devices/X/dim/LEVEL.xml
Sätter dimmern för device med ID X till LEVEL.

Mer utförlig och up-to-date dokumentation av gränsytorna kommer ut på wikin på github så fort jag hinner. Men som sagt, det återstår en hel del arbete kvar att göra det riktigt generellt.
gein
Posts: 437
Joined: Fri Mar 17, 2023 9:45 am

Post by gein »

Eftersom jag inte fick så mycket gehör så tänkte jag beskriva lite mer i detalj hur det fungerar.

Programmet agerar i princip som en webserver som lyssnar på HTTP-anrop. API:t beskriver vilka anrop man kan göra och vilket svar man kan förvänta sig. Eftersom det är baserat på HTTP så är det väldigt lätt att använda eftersom det finns färdiga HTTP-bibliotek till i princip vartenda språk. Vissa av anropen man kan göra går t.o.m. att utföra i en webbläsare. T.ex genom att surfa in på:
http://127.0.0.1:8080/devices.xml
Föfrågan skulle skickas till remotestick-server som i sin tur frågar telldus-core efter alla devices och ger en lista tillbaka i XML-format som presenteras i webbläsaren.

Jag håller samtidigt på att göra en "referensimplementation" för Android. Dvs en android-app som agerar klient mot remotestick-server. Koden för detta projekt ligger också på github men räkna inte med att det är speciellt körbart ännu. Tids nog lägger jag ut det på Market hade jag tänkt.

Mer om REST finns att läsa här: http://en.wikipedia.org/wiki/Representa ... e_Transfer
snav
Posts: 31
Joined: Fri Mar 17, 2023 9:45 am

Post by snav »

Bra initiativ med webservices, det blir ju betydligt enklare att knåpa ihop ett eget gränssnitt på detta sättet.
gein
Posts: 437
Joined: Fri Mar 17, 2023 9:45 am

Post by gein »

Nu iom första releasen (v0.1) så startade jag en ny tråd på engelska istället för att nå ut till en bredare publik: http://www.telldus.se/forum/viewtopic.php?t=687
Post Reply